Commit ·
e384bec
1
Parent(s): 7e7ca7c
feat: UI/UX Overhaul Phase 1-9 — CSS modernization, RTL arrows, pricing features, confirm dialog, meta SEO, footer links, hero copy, shimmer/glow/glassmorphism
Browse files- src/css/base.css +28 -0
- src/css/components.css +174 -0
- src/css/tokens.css +7 -0
- src/index.html +39 -13
src/css/base.css
CHANGED
|
@@ -8,6 +8,7 @@
|
|
| 8 |
|
| 9 |
html {
|
| 10 |
font-family: var(--font-family-primary);
|
|
|
|
| 11 |
}
|
| 12 |
|
| 13 |
body {
|
|
@@ -23,6 +24,33 @@ body {
|
|
| 23 |
text-rendering: optimizeLegibility;
|
| 24 |
}
|
| 25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
/* ── Type scale ── */
|
| 27 |
.text-display {
|
| 28 |
font-size: var(--font-size-display);
|
|
|
|
| 8 |
|
| 9 |
html {
|
| 10 |
font-family: var(--font-family-primary);
|
| 11 |
+
scroll-behavior: smooth;
|
| 12 |
}
|
| 13 |
|
| 14 |
body {
|
|
|
|
| 24 |
text-rendering: optimizeLegibility;
|
| 25 |
}
|
| 26 |
|
| 27 |
+
/* ── Selection highlight ── */
|
| 28 |
+
::selection {
|
| 29 |
+
background: rgba(107, 163, 224, 0.3);
|
| 30 |
+
color: inherit;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
/* ── Custom Scrollbar ── */
|
| 34 |
+
::-webkit-scrollbar {
|
| 35 |
+
width: 6px;
|
| 36 |
+
height: 6px;
|
| 37 |
+
}
|
| 38 |
+
::-webkit-scrollbar-track {
|
| 39 |
+
background: transparent;
|
| 40 |
+
}
|
| 41 |
+
::-webkit-scrollbar-thumb {
|
| 42 |
+
background: var(--color-border-strong);
|
| 43 |
+
border-radius: 3px;
|
| 44 |
+
}
|
| 45 |
+
::-webkit-scrollbar-thumb:hover {
|
| 46 |
+
background: var(--color-text-muted);
|
| 47 |
+
}
|
| 48 |
+
/* Firefox */
|
| 49 |
+
* {
|
| 50 |
+
scrollbar-width: thin;
|
| 51 |
+
scrollbar-color: var(--color-border-strong) transparent;
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
/* ── Type scale ── */
|
| 55 |
.text-display {
|
| 56 |
font-size: var(--font-size-display);
|
src/css/components.css
CHANGED
|
@@ -3208,3 +3208,177 @@ input[type="range"]::-moz-range-thumb {
|
|
| 3208 |
font-size: 20px;
|
| 3209 |
}
|
| 3210 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3208 |
font-size: 20px;
|
| 3209 |
}
|
| 3210 |
}
|
| 3211 |
+
|
| 3212 |
+
/* ═══════════════════════════════════════════
|
| 3213 |
+
UI/UX Overhaul — New Components
|
| 3214 |
+
═══════════════════════════════════════════ */
|
| 3215 |
+
|
| 3216 |
+
/* ── Enhanced Nav Glassmorphism ── */
|
| 3217 |
+
.site-nav {
|
| 3218 |
+
backdrop-filter: blur(16px) saturate(180%);
|
| 3219 |
+
-webkit-backdrop-filter: blur(16px) saturate(180%);
|
| 3220 |
+
}
|
| 3221 |
+
|
| 3222 |
+
/* ── Card hover glow ── */
|
| 3223 |
+
.card-hover {
|
| 3224 |
+
transition: transform var(--transition-base), box-shadow var(--transition-base);
|
| 3225 |
+
}
|
| 3226 |
+
.card-hover:hover {
|
| 3227 |
+
transform: translateY(-3px);
|
| 3228 |
+
box-shadow: var(--shadow-glow);
|
| 3229 |
+
}
|
| 3230 |
+
|
| 3231 |
+
/* ── Empty State Component ── */
|
| 3232 |
+
.empty-state {
|
| 3233 |
+
display: flex;
|
| 3234 |
+
flex-direction: column;
|
| 3235 |
+
align-items: center;
|
| 3236 |
+
justify-content: center;
|
| 3237 |
+
padding: 2.5rem 1.5rem;
|
| 3238 |
+
text-align: center;
|
| 3239 |
+
gap: 0.75rem;
|
| 3240 |
+
}
|
| 3241 |
+
.empty-state__icon {
|
| 3242 |
+
width: 48px;
|
| 3243 |
+
height: 48px;
|
| 3244 |
+
border-radius: var(--radius-lg);
|
| 3245 |
+
display: flex;
|
| 3246 |
+
align-items: center;
|
| 3247 |
+
justify-content: center;
|
| 3248 |
+
background: var(--color-primary-subtle-bg);
|
| 3249 |
+
color: var(--color-primary);
|
| 3250 |
+
margin-bottom: 0.25rem;
|
| 3251 |
+
}
|
| 3252 |
+
.empty-state__title {
|
| 3253 |
+
font-size: var(--font-size-body);
|
| 3254 |
+
font-weight: var(--font-weight-semibold);
|
| 3255 |
+
color: var(--color-text-primary);
|
| 3256 |
+
}
|
| 3257 |
+
.empty-state__subtitle {
|
| 3258 |
+
font-size: var(--font-size-caption);
|
| 3259 |
+
color: var(--color-text-secondary);
|
| 3260 |
+
max-width: 280px;
|
| 3261 |
+
line-height: 1.6;
|
| 3262 |
+
}
|
| 3263 |
+
|
| 3264 |
+
/* ── Confirmation Dialog ── */
|
| 3265 |
+
.confirm-dialog-overlay {
|
| 3266 |
+
position: fixed;
|
| 3267 |
+
inset: 0;
|
| 3268 |
+
background: var(--color-overlay);
|
| 3269 |
+
z-index: 9999;
|
| 3270 |
+
display: flex;
|
| 3271 |
+
align-items: center;
|
| 3272 |
+
justify-content: center;
|
| 3273 |
+
animation: fadeIn 0.15s ease-out;
|
| 3274 |
+
}
|
| 3275 |
+
.confirm-dialog {
|
| 3276 |
+
background: var(--color-surface);
|
| 3277 |
+
border: 1px solid var(--color-border-strong);
|
| 3278 |
+
border-radius: var(--radius-xl);
|
| 3279 |
+
padding: 2rem;
|
| 3280 |
+
max-width: 380px;
|
| 3281 |
+
width: 90%;
|
| 3282 |
+
box-shadow: var(--shadow-popover);
|
| 3283 |
+
text-align: center;
|
| 3284 |
+
animation: modalSlideUp 0.25s ease-out;
|
| 3285 |
+
}
|
| 3286 |
+
.confirm-dialog__title {
|
| 3287 |
+
font-size: 1.125rem;
|
| 3288 |
+
font-weight: var(--font-weight-bold);
|
| 3289 |
+
margin-bottom: 0.5rem;
|
| 3290 |
+
}
|
| 3291 |
+
.confirm-dialog__message {
|
| 3292 |
+
font-size: var(--font-size-caption);
|
| 3293 |
+
color: var(--color-text-secondary);
|
| 3294 |
+
margin-bottom: 1.5rem;
|
| 3295 |
+
line-height: 1.7;
|
| 3296 |
+
}
|
| 3297 |
+
.confirm-dialog__actions {
|
| 3298 |
+
display: flex;
|
| 3299 |
+
gap: 0.75rem;
|
| 3300 |
+
justify-content: center;
|
| 3301 |
+
}
|
| 3302 |
+
.confirm-dialog__btn {
|
| 3303 |
+
padding: 0.6rem 1.5rem;
|
| 3304 |
+
border-radius: var(--radius-md);
|
| 3305 |
+
font-size: var(--font-size-caption);
|
| 3306 |
+
font-weight: var(--font-weight-semibold);
|
| 3307 |
+
cursor: pointer;
|
| 3308 |
+
border: 1px solid var(--color-border-strong);
|
| 3309 |
+
background: var(--color-surface-elevated);
|
| 3310 |
+
color: var(--color-text-primary);
|
| 3311 |
+
transition: all var(--transition-fast);
|
| 3312 |
+
font-family: inherit;
|
| 3313 |
+
}
|
| 3314 |
+
.confirm-dialog__btn:hover {
|
| 3315 |
+
background: var(--color-border);
|
| 3316 |
+
}
|
| 3317 |
+
.confirm-dialog__btn--danger {
|
| 3318 |
+
background: var(--color-error);
|
| 3319 |
+
color: white;
|
| 3320 |
+
border-color: transparent;
|
| 3321 |
+
}
|
| 3322 |
+
.confirm-dialog__btn--danger:hover {
|
| 3323 |
+
opacity: 0.9;
|
| 3324 |
+
}
|
| 3325 |
+
|
| 3326 |
+
/* ── Modal entrance animation ── */
|
| 3327 |
+
@keyframes modalSlideUp {
|
| 3328 |
+
from { opacity: 0; transform: translateY(16px) scale(0.97); }
|
| 3329 |
+
to { opacity: 1; transform: translateY(0) scale(1); }
|
| 3330 |
+
}
|
| 3331 |
+
.quran-modal-panel,
|
| 3332 |
+
.auth-gate-panel,
|
| 3333 |
+
.confirm-dialog {
|
| 3334 |
+
animation: modalSlideUp 0.25s ease-out;
|
| 3335 |
+
}
|
| 3336 |
+
|
| 3337 |
+
/* ── Toast with icons ── */
|
| 3338 |
+
.toast--success::before { content: '✓ '; }
|
| 3339 |
+
.toast--error::before { content: '✕ '; }
|
| 3340 |
+
.toast--warning::before { content: '⚠ '; }
|
| 3341 |
+
|
| 3342 |
+
/* ── Pricing card glow (active plan) ── */
|
| 3343 |
+
.pricing-glow {
|
| 3344 |
+
position: relative;
|
| 3345 |
+
}
|
| 3346 |
+
.pricing-glow::before {
|
| 3347 |
+
content: '';
|
| 3348 |
+
position: absolute;
|
| 3349 |
+
inset: -2px;
|
| 3350 |
+
border-radius: inherit;
|
| 3351 |
+
background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
|
| 3352 |
+
z-index: -1;
|
| 3353 |
+
opacity: 0.5;
|
| 3354 |
+
filter: blur(12px);
|
| 3355 |
+
animation: pricingPulse 3s ease-in-out infinite;
|
| 3356 |
+
}
|
| 3357 |
+
@keyframes pricingPulse {
|
| 3358 |
+
0%, 100% { opacity: 0.3; }
|
| 3359 |
+
50% { opacity: 0.6; }
|
| 3360 |
+
}
|
| 3361 |
+
|
| 3362 |
+
/* ── Beta banner shimmer ── */
|
| 3363 |
+
@keyframes betaShimmer {
|
| 3364 |
+
0% { background-position: -200% center; }
|
| 3365 |
+
100% { background-position: 200% center; }
|
| 3366 |
+
}
|
| 3367 |
+
.beta-shimmer {
|
| 3368 |
+
background-size: 200% auto;
|
| 3369 |
+
background-image: linear-gradient(90deg,
|
| 3370 |
+
transparent 0%,
|
| 3371 |
+
rgba(107, 163, 224, 0.06) 40%,
|
| 3372 |
+
rgba(165, 148, 232, 0.08) 60%,
|
| 3373 |
+
transparent 100%
|
| 3374 |
+
);
|
| 3375 |
+
animation: betaShimmer 4s linear infinite;
|
| 3376 |
+
}
|
| 3377 |
+
|
| 3378 |
+
/* ── Disabled button state ── */
|
| 3379 |
+
button:disabled,
|
| 3380 |
+
button[disabled] {
|
| 3381 |
+
opacity: 0.55;
|
| 3382 |
+
cursor: not-allowed;
|
| 3383 |
+
filter: grayscale(0.3);
|
| 3384 |
+
}
|
src/css/tokens.css
CHANGED
|
@@ -30,15 +30,18 @@
|
|
| 30 |
--spacing-md: 1rem;
|
| 31 |
--spacing-lg: 1.5rem;
|
| 32 |
--spacing-xl: 2rem;
|
|
|
|
| 33 |
|
| 34 |
--radius-sm: 0.5rem;
|
| 35 |
--radius-md: 0.75rem;
|
| 36 |
--radius-lg: 1rem;
|
|
|
|
| 37 |
--radius-card: 1rem;
|
| 38 |
|
| 39 |
--transition-fast: 0.15s ease;
|
| 40 |
--transition-base: 0.2s ease;
|
| 41 |
--transition-slow: 0.3s ease;
|
|
|
|
| 42 |
}
|
| 43 |
|
| 44 |
/* ── Dark Theme — soft charcoal, easy on eyes ── */
|
|
@@ -70,9 +73,11 @@
|
|
| 70 |
|
| 71 |
--focus-ring: rgba(107, 163, 224, 0.42);
|
| 72 |
|
|
|
|
| 73 |
--shadow-card: 0 8px 24px rgba(0, 0, 0, 0.28);
|
| 74 |
--shadow-popover: 0 16px 40px rgba(0, 0, 0, 0.38);
|
| 75 |
--shadow-editor: 0 2px 16px rgba(0, 0, 0, 0.2);
|
|
|
|
| 76 |
|
| 77 |
--color-overlay: rgba(8, 10, 14, 0.62);
|
| 78 |
|
|
@@ -133,9 +138,11 @@
|
|
| 133 |
|
| 134 |
--focus-ring: rgba(43, 108, 184, 0.32);
|
| 135 |
|
|
|
|
| 136 |
--shadow-card: 0 6px 20px rgba(26, 29, 33, 0.07);
|
| 137 |
--shadow-popover: 0 14px 36px rgba(26, 29, 33, 0.11);
|
| 138 |
--shadow-editor: 0 1px 8px rgba(26, 29, 33, 0.05);
|
|
|
|
| 139 |
|
| 140 |
--color-overlay: rgba(26, 29, 33, 0.38);
|
| 141 |
|
|
|
|
| 30 |
--spacing-md: 1rem;
|
| 31 |
--spacing-lg: 1.5rem;
|
| 32 |
--spacing-xl: 2rem;
|
| 33 |
+
--spacing-section: 6rem;
|
| 34 |
|
| 35 |
--radius-sm: 0.5rem;
|
| 36 |
--radius-md: 0.75rem;
|
| 37 |
--radius-lg: 1rem;
|
| 38 |
+
--radius-xl: 1.5rem;
|
| 39 |
--radius-card: 1rem;
|
| 40 |
|
| 41 |
--transition-fast: 0.15s ease;
|
| 42 |
--transition-base: 0.2s ease;
|
| 43 |
--transition-slow: 0.3s ease;
|
| 44 |
+
--transition-spring: 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
|
| 45 |
}
|
| 46 |
|
| 47 |
/* ── Dark Theme — soft charcoal, easy on eyes ── */
|
|
|
|
| 73 |
|
| 74 |
--focus-ring: rgba(107, 163, 224, 0.42);
|
| 75 |
|
| 76 |
+
--shadow-xs: 0 1px 3px rgba(0, 0, 0, 0.16);
|
| 77 |
--shadow-card: 0 8px 24px rgba(0, 0, 0, 0.28);
|
| 78 |
--shadow-popover: 0 16px 40px rgba(0, 0, 0, 0.38);
|
| 79 |
--shadow-editor: 0 2px 16px rgba(0, 0, 0, 0.2);
|
| 80 |
+
--shadow-glow: 0 0 20px rgba(107, 163, 224, 0.15);
|
| 81 |
|
| 82 |
--color-overlay: rgba(8, 10, 14, 0.62);
|
| 83 |
|
|
|
|
| 138 |
|
| 139 |
--focus-ring: rgba(43, 108, 184, 0.32);
|
| 140 |
|
| 141 |
+
--shadow-xs: 0 1px 3px rgba(26, 29, 33, 0.05);
|
| 142 |
--shadow-card: 0 6px 20px rgba(26, 29, 33, 0.07);
|
| 143 |
--shadow-popover: 0 14px 36px rgba(26, 29, 33, 0.11);
|
| 144 |
--shadow-editor: 0 1px 8px rgba(26, 29, 33, 0.05);
|
| 145 |
+
--shadow-glow: 0 0 20px rgba(43, 108, 184, 0.1);
|
| 146 |
|
| 147 |
--color-overlay: rgba(26, 29, 33, 0.38);
|
| 148 |
|
src/index.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
| 6 |
<meta name="supabase-url" content="">
|
| 7 |
<meta name="supabase-anon-key" content="">
|
| 8 |
<title>بيان - مساعد الكتابة العربية الذكي</title>
|
| 9 |
-
<meta name="description" content="بيان — منصة ذكاء اصطناعي متكاملة لتصحيح الإملاء والنحو والترقيم وتلخيص النصوص والإكمال التلقائي — مصمّمة خصيصًا للغة العربية. جرّبه مجاناً!">
|
| 10 |
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
| 11 |
<script src="https://cdn.tailwindcss.com"></script>
|
| 12 |
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
@@ -162,8 +162,8 @@
|
|
| 162 |
<div class="text-center lg:text-right animate-fade-in">
|
| 163 |
|
| 164 |
<h1 id="hero-headline" class="text-5xl lg:text-7xl font-bold leading-tight mb-6" style="line-height: 1.4;">اكتب العربية<br><span class="text-gradient">بثقة واحتراف</span></h1>
|
| 165 |
-
<p id="hero-subheadline" class="text-xl lg:text-2xl leading-relaxed mb-10" style="color: var(--text-secondary); line-height: 1.9;">
|
| 166 |
-
<div class="flex flex-col sm:flex-row gap-4 justify-center lg:justify-start mb-12"><button id="hero-cta-primary" onclick="showPage('editor')" class="px-8 py-4 rounded-2xl text-lg font-bold text-white gradient-accent transition-all hover:scale-105 hover:shadow-2xl">ابدأ الكتابة مجانًا
|
| 167 |
</div><!-- Stats -->
|
| 168 |
<div class="flex items-center gap-8 justify-center lg:justify-start">
|
| 169 |
<div class="text-center">
|
|
@@ -307,7 +307,7 @@
|
|
| 307 |
<p class="text-sm leading-relaxed" style="color: var(--text-secondary); line-height: 1.8;">بوابتك للقرآن والتفسير والسنة والمصادر السردية الموثقة</p>
|
| 308 |
</div>
|
| 309 |
</div>
|
| 310 |
-
<div class="text-center mt-12"><button onclick="showPage('features')" class="px-8 py-4 rounded-2xl text-lg font-bold border-2 transition-all hover:scale-105" style="border-color: var(--primary-color); color: var(--primary-color);">
|
| 311 |
</div>
|
| 312 |
</div>
|
| 313 |
</section>
|
|
@@ -348,7 +348,7 @@
|
|
| 348 |
</div>
|
| 349 |
</div>
|
| 350 |
<div class="text-center mt-12">
|
| 351 |
-
<button onclick="showPage('editor')" class="px-8 py-4 rounded-2xl text-lg font-bold text-white gradient-accent transition-all hover:scale-105 hover:shadow-2xl">جرّب المحرر الآن
|
| 352 |
</div>
|
| 353 |
</div>
|
| 354 |
</section>
|
|
@@ -679,9 +679,9 @@
|
|
| 679 |
</div>
|
| 680 |
<span id="auto-save-status" class="text-xs text-secondary" style="opacity:0;transition:opacity 0.3s;"></span>
|
| 681 |
<div class="window-dots" aria-hidden="true">
|
| 682 |
-
<span class="dot dot--red" title="
|
| 683 |
-
<span class="dot dot--yellow" title="طي الاقتراحات" onclick="document.querySelector('.sidebar-desktop')?.classList.toggle('collapsed')" style="cursor:pointer;"></span>
|
| 684 |
-
<span class="dot dot--green" title="توسيع المحرر" onclick="document.querySelector('.editor-layout')?.classList.toggle('editor-fullscreen')" style="cursor:pointer;"></span>
|
| 685 |
</div>
|
| 686 |
</div>
|
| 687 |
</div>
|
|
@@ -980,7 +980,7 @@
|
|
| 980 |
<p class="text-xl max-w-3xl mx-auto" style="color: var(--text-secondary); line-height: 1.9;">جميع الميزات متاحة مجانًا خلال الإصدار التجريبي. الخطط المدفوعة قادمة قريبًا.</p>
|
| 981 |
</div>
|
| 982 |
<!-- Beta Banner -->
|
| 983 |
-
<div class="text-center mb-12 p-6 rounded-2xl" style="background: linear-gradient(135deg, rgba(107, 163, 224, 0.1), rgba(165, 148, 232, 0.1)); border: 1px solid rgba(107, 163, 224, 0.2);">
|
| 984 |
<div class="flex items-center justify-center gap-2 mb-2">
|
| 985 |
<span class="text-sm font-bold px-3 py-1 rounded-full text-white gradient-accent">BETA</span>
|
| 986 |
<span class="text-lg font-bold">الإصدار التجريبي — مجاني بالكامل</span>
|
|
@@ -988,7 +988,7 @@
|
|
| 988 |
<p class="text-base" style="color: var(--text-secondary);">استمتع بجميع ميزات بيان بدون أي قيود أثناء فترة التطوير</p>
|
| 989 |
</div>
|
| 990 |
<div class="grid md:grid-cols-3 gap-8 max-w-6xl mx-auto"><!-- Current: Beta Free -->
|
| 991 |
-
<div class="p-8 rounded-3xl transition-all hover:scale-105 relative shadow-2xl" style="background: linear-gradient(165deg, var(--surface-color) 0%, rgba(59, 130, 246, 0.1) 100%); border: 2px solid var(--primary-color);">
|
| 992 |
<div class="pricing-badge gradient-accent text-white">
|
| 993 |
متاح الآن
|
| 994 |
</div>
|
|
@@ -1011,9 +1011,13 @@
|
|
| 1011 |
<svg class="w-5 h-5" style="color: #22c55e;" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg><span class="text-base">الإكمال التلقائي الذكي</span></li>
|
| 1012 |
<li class="flex items-center gap-3">
|
| 1013 |
<svg class="w-5 h-5" style="color: #22c55e;" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg><span class="text-base">تصدير PDF و Word</span></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1014 |
<li class="flex items-center gap-3">
|
| 1015 |
<svg class="w-5 h-5" style="color: #22c55e;" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg><span class="text-base">كلمات غير محدود��</span></li>
|
| 1016 |
-
</ul><button onclick="showPage('editor')" class="w-full py-4 rounded-2xl text-lg font-bold text-white gradient-accent transition-all hover:scale-105 hover:shadow-2xl">ابدأ الكتابة مجانًا
|
| 1017 |
</div><!-- Future: Pro Plan -->
|
| 1018 |
<div class="p-8 rounded-3xl transition-all hover:scale-105 relative" style="background: var(--surface-color); border: 1px solid rgba(255, 255, 255, 0.08); opacity: 0.7;">
|
| 1019 |
<div class="pricing-badge" style="background: var(--color-surface-elevated); color: var(--color-text-secondary);">
|
|
@@ -1077,7 +1081,7 @@
|
|
| 1077 |
<div class="text-8xl font-bold text-gradient mb-6">٤٠٤</div>
|
| 1078 |
<h2 class="text-3xl font-bold mb-4">الصفحة غير موجودة</h2>
|
| 1079 |
<p class="text-lg mb-8" style="color: var(--text-secondary);">يبدو أن الصفحة التي تبحث عنها غير متاحة.</p>
|
| 1080 |
-
<button onclick="showPage('home')" class="px-8 py-4 rounded-2xl text-lg font-bold text-white gradient-accent transition-all hover:scale-105">العودة للرئيسية
|
| 1081 |
</div>
|
| 1082 |
</section>
|
| 1083 |
</div><!-- Footer -->
|
|
@@ -1088,7 +1092,7 @@
|
|
| 1088 |
<div class="flex items-center gap-3 mb-4">
|
| 1089 |
<svg width="24" height="24" fill="none" stroke="url(#grad1)" viewBox="0 0 24 24" style="flex-shrink:0;"><defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:var(--color-primary)"/><stop offset="100%" style="stop-color:var(--color-secondary)"/></linearGradient></defs><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"/></svg><span id="footer-brand" class="text-2xl font-bold text-gradient">بيان</span>
|
| 1090 |
</div>
|
| 1091 |
-
<p class="text-sm leading-relaxed" style="color: var(--text-secondary); line-height: 1.8;">منصة ذكاء اصطناعي للكتابة العربية — تدقيق إملائي ونحوي، ترقيم، تلخيص،
|
| 1092 |
</div>
|
| 1093 |
<div>
|
| 1094 |
<h4 class="text-base font-bold mb-4">المنتج</h4>
|
|
@@ -1133,6 +1137,28 @@
|
|
| 1133 |
}, duration);
|
| 1134 |
}
|
| 1135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1136 |
// Scroll to top
|
| 1137 |
(function() {
|
| 1138 |
const btn = document.getElementById('scroll-top-btn');
|
|
|
|
| 6 |
<meta name="supabase-url" content="">
|
| 7 |
<meta name="supabase-anon-key" content="">
|
| 8 |
<title>بيان - مساعد الكتابة العربية الذكي</title>
|
| 9 |
+
<meta name="description" content="بيان — منصة ذكاء اصطناعي متكاملة لتصحيح الإملاء والنحو والترقيم وتلخيص النصوص والإكمال التلقائي وتدقيق القرآن الكريم وتحويل اللهجات — مصمّمة خصيصًا للغة العربية. جرّبه مجاناً!">
|
| 10 |
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
| 11 |
<script src="https://cdn.tailwindcss.com"></script>
|
| 12 |
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
|
|
| 162 |
<div class="text-center lg:text-right animate-fade-in">
|
| 163 |
|
| 164 |
<h1 id="hero-headline" class="text-5xl lg:text-7xl font-bold leading-tight mb-6" style="line-height: 1.4;">اكتب العربية<br><span class="text-gradient">بثقة واحتراف</span></h1>
|
| 165 |
+
<p id="hero-subheadline" class="text-xl lg:text-2xl leading-relaxed mb-10" style="color: var(--text-secondary); line-height: 1.9;">تدقيق إملائي ونحوي وترقيم، تلخيص ذكي، إكمال تلقائي، تدقيق القرآن الكريم، وتحويل اللهجات — كل ذلك بالذكاء الاصطناعي، وباللغة العربية.</p>
|
| 166 |
+
<div class="flex flex-col sm:flex-row gap-4 justify-center lg:justify-start mb-12"><button id="hero-cta-primary" onclick="showPage('editor')" class="px-8 py-4 rounded-2xl text-lg font-bold text-white gradient-accent transition-all hover:scale-105 hover:shadow-2xl">← ابدأ الكتابة مجانًا</button> <button onclick="showPage('features')" class="px-8 py-4 rounded-2xl text-lg font-bold transition-all hover:scale-105 border-2" style="border-color: rgba(255, 255, 255, 0.35); color: var(--text-color); box-shadow: 0 0 20px rgba(107, 163, 224, 0.12);">اكتشف الميزات</button>
|
| 167 |
</div><!-- Stats -->
|
| 168 |
<div class="flex items-center gap-8 justify-center lg:justify-start">
|
| 169 |
<div class="text-center">
|
|
|
|
| 307 |
<p class="text-sm leading-relaxed" style="color: var(--text-secondary); line-height: 1.8;">بوابتك للقرآن والتفسير والسنة والمصادر السردية الموثقة</p>
|
| 308 |
</div>
|
| 309 |
</div>
|
| 310 |
+
<div class="text-center mt-12"><button onclick="showPage('features')" class="px-8 py-4 rounded-2xl text-lg font-bold border-2 transition-all hover:scale-105" style="border-color: var(--primary-color); color: var(--primary-color);">← اكتشف جميع الميزات</button>
|
| 311 |
</div>
|
| 312 |
</div>
|
| 313 |
</section>
|
|
|
|
| 348 |
</div>
|
| 349 |
</div>
|
| 350 |
<div class="text-center mt-12">
|
| 351 |
+
<button onclick="showPage('editor')" class="px-8 py-4 rounded-2xl text-lg font-bold text-white gradient-accent transition-all hover:scale-105 hover:shadow-2xl">← جرّب المحرر الآن</button>
|
| 352 |
</div>
|
| 353 |
</div>
|
| 354 |
</section>
|
|
|
|
| 679 |
</div>
|
| 680 |
<span id="auto-save-status" class="text-xs text-secondary" style="opacity:0;transition:opacity 0.3s;"></span>
|
| 681 |
<div class="window-dots" aria-hidden="true">
|
| 682 |
+
<span class="dot dot--red" title="مسح المحرر" onclick="showConfirmDialog('مسح المحرر','هل تريد مسح جميع محتويات المحرر؟ لا يمكن التراجع عن هذا.',function(){document.getElementById('editor-surface').innerHTML='';if(typeof updatePlaceholder==='function')updatePlaceholder();if(typeof updateEditorStats==='function')updateEditorStats()})" style="cursor:pointer;"></span>
|
| 683 |
+
<span class="dot dot--yellow" title="طي لوحة الاقتراحات" onclick="document.querySelector('.sidebar-desktop')?.classList.toggle('collapsed')" style="cursor:pointer;"></span>
|
| 684 |
+
<span class="dot dot--green" title="توسيع المحرر للعرض الكامل" onclick="document.querySelector('.editor-layout')?.classList.toggle('editor-fullscreen')" style="cursor:pointer;"></span>
|
| 685 |
</div>
|
| 686 |
</div>
|
| 687 |
</div>
|
|
|
|
| 980 |
<p class="text-xl max-w-3xl mx-auto" style="color: var(--text-secondary); line-height: 1.9;">جميع الميزات متاحة مجانًا خلال الإصدار التجريبي. الخطط المدفوعة قادمة قريبًا.</p>
|
| 981 |
</div>
|
| 982 |
<!-- Beta Banner -->
|
| 983 |
+
<div class="text-center mb-12 p-6 rounded-2xl beta-shimmer" style="background: linear-gradient(135deg, rgba(107, 163, 224, 0.1), rgba(165, 148, 232, 0.1)); border: 1px solid rgba(107, 163, 224, 0.2);">
|
| 984 |
<div class="flex items-center justify-center gap-2 mb-2">
|
| 985 |
<span class="text-sm font-bold px-3 py-1 rounded-full text-white gradient-accent">BETA</span>
|
| 986 |
<span class="text-lg font-bold">الإصدار التجريبي — مجاني بالكامل</span>
|
|
|
|
| 988 |
<p class="text-base" style="color: var(--text-secondary);">استمتع بجميع ميزات بيان بدون أي قيود أثناء فترة التطوير</p>
|
| 989 |
</div>
|
| 990 |
<div class="grid md:grid-cols-3 gap-8 max-w-6xl mx-auto"><!-- Current: Beta Free -->
|
| 991 |
+
<div class="p-8 rounded-3xl transition-all hover:scale-105 relative shadow-2xl pricing-glow" style="background: linear-gradient(165deg, var(--surface-color) 0%, rgba(59, 130, 246, 0.1) 100%); border: 2px solid var(--primary-color);">
|
| 992 |
<div class="pricing-badge gradient-accent text-white">
|
| 993 |
متاح الآن
|
| 994 |
</div>
|
|
|
|
| 1011 |
<svg class="w-5 h-5" style="color: #22c55e;" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg><span class="text-base">الإكمال التلقائي الذكي</span></li>
|
| 1012 |
<li class="flex items-center gap-3">
|
| 1013 |
<svg class="w-5 h-5" style="color: #22c55e;" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg><span class="text-base">تصدير PDF و Word</span></li>
|
| 1014 |
+
<li class="flex items-center gap-3">
|
| 1015 |
+
<svg class="w-5 h-5" style="color: #22c55e;" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg><span class="text-base">تدقيق النص القرآني + ترجمة</span></li>
|
| 1016 |
+
<li class="flex items-center gap-3">
|
| 1017 |
+
<svg class="w-5 h-5" style="color: #22c55e;" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg><span class="text-base">تحويل اللهجات إلى الفصحى</span></li>
|
| 1018 |
<li class="flex items-center gap-3">
|
| 1019 |
<svg class="w-5 h-5" style="color: #22c55e;" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7" /></svg><span class="text-base">كلمات غير محدود��</span></li>
|
| 1020 |
+
</ul><button onclick="showPage('editor')" class="w-full py-4 rounded-2xl text-lg font-bold text-white gradient-accent transition-all hover:scale-105 hover:shadow-2xl">← ابدأ الكتابة مجانًا</button>
|
| 1021 |
</div><!-- Future: Pro Plan -->
|
| 1022 |
<div class="p-8 rounded-3xl transition-all hover:scale-105 relative" style="background: var(--surface-color); border: 1px solid rgba(255, 255, 255, 0.08); opacity: 0.7;">
|
| 1023 |
<div class="pricing-badge" style="background: var(--color-surface-elevated); color: var(--color-text-secondary);">
|
|
|
|
| 1081 |
<div class="text-8xl font-bold text-gradient mb-6">٤٠٤</div>
|
| 1082 |
<h2 class="text-3xl font-bold mb-4">الصفحة غير موجودة</h2>
|
| 1083 |
<p class="text-lg mb-8" style="color: var(--text-secondary);">يبدو أن الصفحة التي تبحث عنها غير متاحة.</p>
|
| 1084 |
+
<button onclick="showPage('home')" class="px-8 py-4 rounded-2xl text-lg font-bold text-white gradient-accent transition-all hover:scale-105">→ العودة للرئيسية</button>
|
| 1085 |
</div>
|
| 1086 |
</section>
|
| 1087 |
</div><!-- Footer -->
|
|
|
|
| 1092 |
<div class="flex items-center gap-3 mb-4">
|
| 1093 |
<svg width="24" height="24" fill="none" stroke="url(#grad1)" viewBox="0 0 24 24" style="flex-shrink:0;"><defs><linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" style="stop-color:var(--color-primary)"/><stop offset="100%" style="stop-color:var(--color-secondary)"/></linearGradient></defs><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"/></svg><span id="footer-brand" class="text-2xl font-bold text-gradient">بيان</span>
|
| 1094 |
</div>
|
| 1095 |
+
<p class="text-sm leading-relaxed" style="color: var(--text-secondary); line-height: 1.8;">منصة ذكاء اصطناعي للكتابة العربية — تدقيق إملائي ونحوي، ترقيم، تلخيص، إكمال تلقائي، تدقيق القرآن، وتحويل اللهجات.</p>
|
| 1096 |
</div>
|
| 1097 |
<div>
|
| 1098 |
<h4 class="text-base font-bold mb-4">المنتج</h4>
|
|
|
|
| 1137 |
}, duration);
|
| 1138 |
}
|
| 1139 |
|
| 1140 |
+
// Custom confirmation dialog (replaces window.confirm)
|
| 1141 |
+
function showConfirmDialog(title, message, onConfirm) {
|
| 1142 |
+
var overlay = document.createElement('div');
|
| 1143 |
+
overlay.className = 'confirm-dialog-overlay';
|
| 1144 |
+
overlay.innerHTML =
|
| 1145 |
+
'<div class="confirm-dialog" dir="rtl">' +
|
| 1146 |
+
'<div class="confirm-dialog__title">' + title + '</div>' +
|
| 1147 |
+
'<div class="confirm-dialog__message">' + message + '</div>' +
|
| 1148 |
+
'<div class="confirm-dialog__actions">' +
|
| 1149 |
+
'<button class="confirm-dialog__btn" id="confirm-cancel">\u0625\u0644\u063a\u0627\u0621</button>' +
|
| 1150 |
+
'<button class="confirm-dialog__btn confirm-dialog__btn--danger" id="confirm-ok">\u062a\u0623\u0643\u064a\u062f</button>' +
|
| 1151 |
+
'</div>' +
|
| 1152 |
+
'</div>';
|
| 1153 |
+
document.body.appendChild(overlay);
|
| 1154 |
+
overlay.querySelector('#confirm-cancel').onclick = function() { overlay.remove(); };
|
| 1155 |
+
overlay.querySelector('#confirm-ok').onclick = function() { overlay.remove(); if (onConfirm) onConfirm(); };
|
| 1156 |
+
overlay.addEventListener('click', function(e) { if (e.target === overlay) overlay.remove(); });
|
| 1157 |
+
document.addEventListener('keydown', function _esc(e) {
|
| 1158 |
+
if (e.key === 'Escape') { overlay.remove(); document.removeEventListener('keydown', _esc); }
|
| 1159 |
+
});
|
| 1160 |
+
}
|
| 1161 |
+
|
| 1162 |
// Scroll to top
|
| 1163 |
(function() {
|
| 1164 |
const btn = document.getElementById('scroll-top-btn');
|