youssefreda9 commited on
Commit
87fcd8c
·
1 Parent(s): 1e18ad2

Revert "fix: resolve toolbar clipping, footer tooltips, and focus mode width"

Browse files
Files changed (1) hide show
  1. src/css/components.css +3541 -0
src/css/components.css CHANGED
@@ -408,6 +408,3547 @@
408
  opacity: 1;
409
  visibility: visible;
410
  transform: translateX(-50%) translateY(0);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
411
  padding: 8px 16px;
412
  background: rgba(124, 131, 237, 0.08);
413
  border-radius: 0 6px 6px 0;
 
408
  opacity: 1;
409
  visibility: visible;
410
  transform: translateX(-50%) translateY(0);
411
+ }
412
+
413
+ /* ── Formatting Toolbar ── */
414
+ .format-toolbar {
415
+ display: flex;
416
+ flex-wrap: nowrap;
417
+ align-items: center;
418
+ justify-content: center;
419
+ gap: 3px;
420
+ padding: 6px 10px;
421
+ overflow-x: auto;
422
+ scrollbar-width: none; /* Hide scrollbar Firefox */
423
+ border-bottom: 1px solid var(--color-border);
424
+ background: var(--color-surface);
425
+ overflow: visible;
426
+ position: relative;
427
+ z-index: 50;
428
+ flex-shrink: 0;
429
+ }
430
+
431
+ .format-toolbar::-webkit-scrollbar {
432
+ display: none;
433
+ }
434
+
435
+ .fmt-group {
436
+ display: flex;
437
+ flex-wrap: nowrap;
438
+ align-items: center;
439
+ gap: 1px;
440
+ background: var(--color-border);
441
+ border-radius: 7px;
442
+ overflow: hidden;
443
+ }
444
+
445
+ .fmt-section {
446
+ display: flex;
447
+ align-items: center;
448
+ }
449
+
450
+ .fmt-label {
451
+ display: none;
452
+ }
453
+
454
+ /* Active state for format buttons */
455
+ .fmt-btn.fmt-active {
456
+ background: var(--color-primary) !important;
457
+ color: #fff !important;
458
+ }
459
+
460
+ .fmt-group--font {
461
+ background: transparent;
462
+ gap: 5px;
463
+ overflow: visible;
464
+ }
465
+
466
+ .fmt-btn {
467
+ display: flex;
468
+ align-items: center;
469
+ justify-content: center;
470
+ width: 30px;
471
+ height: 30px;
472
+ border: none;
473
+ background: var(--color-surface);
474
+ color: var(--color-text-secondary);
475
+ cursor: pointer;
476
+ font-family: 'Georgia', 'Times New Roman', serif;
477
+ font-size: 13px;
478
+ transition: all 0.15s ease;
479
+ position: relative;
480
+ border-radius: 6px;
481
+ }
482
+
483
+ .fmt-group .fmt-btn {
484
+ border-radius: 0;
485
+ }
486
+
487
+ .fmt-btn:hover {
488
+ background: var(--color-surface-elevated);
489
+ color: var(--color-text-primary);
490
+ }
491
+
492
+ .fmt-btn.fmt-active {
493
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
494
+ color: #fff;
495
+ }
496
+
497
+ .fmt-btn svg {
498
+ flex-shrink: 0;
499
+ }
500
+
501
+ .fmt-divider {
502
+ width: 1px;
503
+ height: 22px;
504
+ background: var(--color-border);
505
+ margin: 0 3px;
506
+ flex-shrink: 0;
507
+ opacity: 0.5;
508
+ }
509
+
510
+ /* ── Custom Dropdowns ── */
511
+ .fmt-dropdown {
512
+ position: relative;
513
+ }
514
+
515
+ .fmt-dropdown__trigger {
516
+ display: flex;
517
+ align-items: center;
518
+ gap: 5px;
519
+ padding: 4px 8px;
520
+ border: 1px solid var(--color-border);
521
+ border-radius: 6px;
522
+ background: var(--color-surface);
523
+ color: var(--color-text-primary);
524
+ font-family: inherit;
525
+ font-size: 12px;
526
+ font-weight: 500;
527
+ cursor: pointer;
528
+ height: 30px;
529
+ min-width: 90px;
530
+ transition: all 0.15s ease;
531
+ white-space: nowrap;
532
+ }
533
+
534
+ .fmt-dropdown__trigger:hover {
535
+ border-color: var(--color-primary);
536
+ background: var(--color-surface-elevated);
537
+ }
538
+
539
+ .fmt-dropdown__trigger--size {
540
+ min-width: 56px;
541
+ justify-content: center;
542
+ font-variant-numeric: tabular-nums;
543
+ font-weight: 600;
544
+ }
545
+
546
+ .fmt-dropdown__icon {
547
+ flex-shrink: 0;
548
+ color: var(--color-text-secondary);
549
+ }
550
+
551
+ .fmt-dropdown__chevron {
552
+ flex-shrink: 0;
553
+ color: var(--color-text-secondary);
554
+ transition: transform 0.2s ease;
555
+ margin-inline-start: auto;
556
+ }
557
+
558
+ .fmt-dropdown.open .fmt-dropdown__chevron {
559
+ transform: rotate(180deg);
560
+ }
561
+
562
+ .fmt-dropdown__menu {
563
+ position: absolute;
564
+ top: calc(100% + 4px);
565
+ right: 0;
566
+ min-width: 180px;
567
+ max-height: 280px;
568
+ overflow-y: auto;
569
+ background: var(--color-surface);
570
+ border: 1px solid var(--color-border);
571
+ border-radius: 8px;
572
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
573
+ padding: 4px;
574
+ z-index: 200;
575
+ opacity: 0;
576
+ visibility: hidden;
577
+ transform: translateY(-8px);
578
+ transition: all 0.2s ease;
579
+ }
580
+
581
+ .fmt-dropdown.open .fmt-dropdown__menu {
582
+ opacity: 1;
583
+ visibility: visible;
584
+ transform: translateY(0);
585
+ }
586
+
587
+ .fmt-dropdown__menu--size {
588
+ min-width: 100px;
589
+ }
590
+
591
+ .fmt-dropdown__item {
592
+ display: flex;
593
+ align-items: center;
594
+ gap: 8px;
595
+ width: 100%;
596
+ padding: 8px 12px;
597
+ border: none;
598
+ border-radius: 6px;
599
+ background: transparent;
600
+ color: var(--color-text-primary);
601
+ font-family: inherit;
602
+ font-size: 13px;
603
+ cursor: pointer;
604
+ transition: background 0.12s ease;
605
+ text-align: right;
606
+ }
607
+
608
+ .fmt-dropdown__item:hover {
609
+ background: var(--color-surface-elevated);
610
+ }
611
+
612
+ .fmt-dropdown__item--active {
613
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
614
+ color: #fff;
615
+ }
616
+
617
+ .fmt-dropdown__item--active:hover {
618
+ opacity: 0.9;
619
+ }
620
+
621
+ .fmt-size-preview {
622
+ display: inline-block;
623
+ width: 40px;
624
+ text-align: center;
625
+ font-weight: 700;
626
+ color: var(--color-text-secondary);
627
+ line-height: 1;
628
+ }
629
+
630
+ .fmt-dropdown__item--active .fmt-size-preview {
631
+ color: #fff;
632
+ }
633
+
634
+ .editor-surface {
635
+ position: relative;
636
+ background: var(--color-editor);
637
+ color: var(--color-text-primary);
638
+ min-height: 50vh;
639
+ padding: var(--spacing-lg) var(--spacing-xl);
640
+ font-size: var(--font-size-editor);
641
+ font-weight: var(--font-weight-regular);
642
+ line-height: var(--line-height-editor);
643
+ letter-spacing: var(--letter-spacing-arabic);
644
+ direction: rtl;
645
+ text-align: right;
646
+ white-space: pre-wrap;
647
+ word-wrap: break-word;
648
+ overflow-y: auto;
649
+ border-radius: 0;
650
+ margin: 0;
651
+ border: none;
652
+ border-top: 1px solid var(--color-border);
653
+ box-shadow: none;
654
+ transition: none;
655
+ flex: 1;
656
+ }
657
+
658
+ @media (min-width: 768px) {
659
+ .editor-surface {
660
+ min-height: 60vh;
661
+ }
662
+ }
663
+
664
+ @media (min-width: 1024px) {
665
+ .editor-surface {
666
+ min-height: 500px;
667
+ }
668
+ }
669
+
670
+ .editor-surface:focus {
671
+ outline: none;
672
+ }
673
+
674
+
675
+
676
+ .editor-surface[data-empty="true"]::before {
677
+ content: attr(data-placeholder);
678
+ color: var(--color-placeholder);
679
+ opacity: 0.5;
680
+ font-weight: 300;
681
+ pointer-events: none;
682
+ position: absolute;
683
+ top: var(--spacing-lg);
684
+ right: var(--spacing-xl);
685
+ left: var(--spacing-xl);
686
+ text-align: right;
687
+ direction: rtl;
688
+ }
689
+
690
+ .editor-surface.analyzing {
691
+ opacity: 0.92;
692
+ }
693
+
694
+ .editor-footer {
695
+ display: flex;
696
+ flex-wrap: nowrap;
697
+ align-items: center;
698
+ justify-content: space-between;
699
+ gap: var(--spacing-md);
700
+ padding: var(--spacing-md);
701
+ border-top: 1px solid var(--color-border);
702
+ background: var(--color-surface);
703
+ overflow-x: auto;
704
+ scrollbar-width: none;
705
+ }
706
+ .editor-footer::-webkit-scrollbar {
707
+ display: none;
708
+ }
709
+
710
+ .editor-stats {
711
+ display: flex;
712
+ flex-wrap: nowrap;
713
+ gap: var(--spacing-md);
714
+ align-items: center;
715
+ }
716
+
717
+ .stat-dot {
718
+ width: 10px;
719
+ height: 10px;
720
+ border-radius: 50%;
721
+ flex-shrink: 0;
722
+ }
723
+
724
+ .stat-dot--spelling {
725
+ background: var(--color-error);
726
+ }
727
+
728
+ .stat-dot--grammar {
729
+ background: var(--color-warning);
730
+ }
731
+
732
+ .stat-dot--punctuation {
733
+ background: var(--color-success);
734
+ }
735
+
736
+ .editor-actions {
737
+ display: flex;
738
+ flex-wrap: nowrap;
739
+ gap: var(--spacing-sm);
740
+ }
741
+
742
+ .editor-actions .btn-ghost,
743
+ .editor-actions .doc-dropdown .btn-ghost {
744
+ width: 40px;
745
+ height: 40px;
746
+ min-height: 40px;
747
+ padding: 0;
748
+ display: inline-flex;
749
+ align-items: center;
750
+ justify-content: center;
751
+ flex-shrink: 0;
752
+ }
753
+
754
+ /* ── Buttons ── */
755
+ .btn-ghost {
756
+ padding: var(--spacing-sm) var(--spacing-md);
757
+ border-radius: var(--radius-md);
758
+ font-weight: var(--font-weight-bold);
759
+ font-size: var(--font-size-caption);
760
+ border: 1px solid var(--color-border);
761
+ background: transparent;
762
+ color: var(--color-text-secondary);
763
+ cursor: pointer;
764
+ font-family: inherit;
765
+ min-height: 44px;
766
+ transition: color var(--transition-base), border-color var(--transition-base), background var(--transition-base);
767
+ }
768
+
769
+ .btn-ghost:hover {
770
+ color: var(--color-text-primary);
771
+ border-color: var(--color-border-strong);
772
+ background: var(--color-surface-elevated);
773
+ }
774
+
775
+ .btn-primary {
776
+ padding: var(--spacing-sm) var(--spacing-md);
777
+ border-radius: var(--radius-md);
778
+ font-weight: var(--font-weight-bold);
779
+ font-size: var(--font-size-caption);
780
+ border: none;
781
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
782
+ color: var(--color-text-inverse);
783
+ cursor: pointer;
784
+ font-family: inherit;
785
+ min-height: 44px;
786
+ transition: opacity var(--transition-base), transform var(--transition-fast);
787
+ }
788
+
789
+ .btn-primary:hover {
790
+ opacity: 0.92;
791
+ }
792
+
793
+ .btn-primary:active {
794
+ transform: scale(0.98);
795
+ }
796
+
797
+ .btn-primary:disabled {
798
+ opacity: 0.5;
799
+ cursor: not-allowed;
800
+ }
801
+
802
+ .btn-primary.is-hidden,
803
+ .apply-all-btn.is-hidden,
804
+ .is-hidden {
805
+ display: none;
806
+ }
807
+
808
+ /* ── Error highlights ── */
809
+ .spelling-error,
810
+ .grammar-error,
811
+ .punctuation-suggestion {
812
+ cursor: pointer;
813
+ padding: 0 2px;
814
+ border-radius: 2px;
815
+ transition: background var(--transition-fast), filter var(--transition-fast);
816
+ }
817
+
818
+ .spelling-error {
819
+ background: var(--highlight-spelling-bg);
820
+ border-bottom: 2px solid var(--highlight-spelling-border);
821
+ }
822
+
823
+ .grammar-error {
824
+ background: var(--highlight-grammar-bg);
825
+ border-bottom: 2px solid var(--highlight-grammar-border);
826
+ }
827
+
828
+ .punctuation-suggestion {
829
+ background: var(--highlight-punctuation-bg);
830
+ border-bottom: 2px solid var(--highlight-punctuation-border);
831
+ }
832
+
833
+ .spelling-error:hover,
834
+ .grammar-error:hover,
835
+ .punctuation-suggestion:hover,
836
+ .highlight-active {
837
+ filter: brightness(1.08);
838
+ }
839
+
840
+ /* ── Suggestion popover ── */
841
+ .suggestion-popover {
842
+ position: fixed;
843
+ z-index: 1000;
844
+ background: var(--color-surface-elevated);
845
+ border: 1px solid var(--color-border-strong);
846
+ border-radius: var(--radius-card);
847
+ padding: var(--spacing-md);
848
+ box-shadow: var(--shadow-popover);
849
+ max-width: 320px;
850
+ display: none;
851
+ opacity: 0;
852
+ transform: translateY(4px);
853
+ transition: opacity var(--transition-base), transform var(--transition-base);
854
+ }
855
+
856
+ .suggestion-popover.show {
857
+ display: block;
858
+ opacity: 1;
859
+ transform: translateY(0);
860
+ }
861
+
862
+ .popover-type {
863
+ font-size: var(--font-size-label);
864
+ font-weight: var(--font-weight-bold);
865
+ margin-bottom: var(--spacing-sm);
866
+ display: flex;
867
+ align-items: center;
868
+ gap: var(--spacing-sm);
869
+ }
870
+
871
+ .popover-type--spelling {
872
+ color: var(--color-error);
873
+ }
874
+
875
+ .popover-type--grammar {
876
+ color: var(--color-warning);
877
+ }
878
+
879
+ .popover-type--punctuation {
880
+ color: var(--color-success);
881
+ }
882
+
883
+ .popover-original-word {
884
+ font-size: var(--font-size-sm);
885
+ color: var(--color-text-secondary);
886
+ margin-bottom: var(--spacing-sm);
887
+ text-align: right;
888
+ }
889
+
890
+ .popover-original-word .popover-label {
891
+ font-weight: var(--font-weight-bold);
892
+ }
893
+
894
+ #tooltip-original {
895
+ text-decoration: none;
896
+ color: var(--color-text-secondary);
897
+ }
898
+
899
+ .popover-alternatives {
900
+ display: flex;
901
+ flex-direction: column;
902
+ gap: 6px;
903
+ margin-bottom: var(--spacing-sm);
904
+ }
905
+
906
+ .popover-alt-btn {
907
+ width: 100%;
908
+ padding: 8px 12px;
909
+ border: 1px solid var(--color-border);
910
+ border-radius: var(--radius-md);
911
+ background: var(--color-surface);
912
+ color: var(--color-text-primary);
913
+ font-weight: var(--font-weight-semibold);
914
+ cursor: pointer;
915
+ font-family: inherit;
916
+ font-size: var(--font-size-base);
917
+ text-align: right;
918
+ transition: all var(--transition-base);
919
+ min-height: 40px;
920
+ }
921
+
922
+ .popover-alt-btn:hover {
923
+ background: var(--color-surface-elevated);
924
+ border-color: var(--color-primary);
925
+ transform: translateX(-2px);
926
+ }
927
+
928
+ .popover-alt-main {
929
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
930
+ color: var(--color-text-inverse);
931
+ border-color: transparent;
932
+ font-weight: var(--font-weight-bold);
933
+ }
934
+
935
+ .popover-alt-main:hover {
936
+ opacity: 0.92;
937
+ transform: translateX(-2px);
938
+ border-color: transparent;
939
+ }
940
+
941
+ .popover-alt-keep {
942
+ background: transparent;
943
+ border: 1px dashed var(--color-border);
944
+ color: var(--color-text-muted);
945
+ font-size: var(--font-size-caption);
946
+ font-weight: var(--font-weight-medium);
947
+ text-align: center;
948
+ min-height: 36px;
949
+ padding: 6px 12px;
950
+ margin-top: 2px;
951
+ }
952
+
953
+ .popover-alt-keep:hover {
954
+ color: var(--color-text-primary);
955
+ border-color: var(--color-text-secondary);
956
+ background: var(--color-surface-elevated);
957
+ }
958
+
959
+ .popover-hint {
960
+ font-size: var(--font-size-label);
961
+ color: var(--color-text-muted);
962
+ text-align: center;
963
+ margin-top: var(--spacing-sm);
964
+ }
965
+
966
+ .popover-dismiss {
967
+ display: block;
968
+ width: 100%;
969
+ padding: 6px 0;
970
+ margin-top: 6px;
971
+ background: none;
972
+ border: 1px dashed var(--color-border-strong);
973
+ border-radius: var(--radius-sm);
974
+ color: var(--color-text-muted);
975
+ font-size: var(--font-size-label);
976
+ font-family: inherit;
977
+ cursor: pointer;
978
+ transition: all var(--transition-fast);
979
+ }
980
+
981
+ .popover-dismiss:hover {
982
+ color: var(--color-error);
983
+ border-color: var(--color-error);
984
+ background: rgba(232, 138, 138, 0.08);
985
+ }
986
+
987
+ /* ── Type Icon ── */
988
+ .popover-type-icon {
989
+ font-size: 16px;
990
+ line-height: 1;
991
+ }
992
+
993
+ /* ── Original Label ── */
994
+ #tooltip-original {
995
+ text-decoration: none;
996
+ color: var(--color-text-secondary);
997
+ margin-bottom: var(--spacing-sm);
998
+ font-size: var(--font-size-sm);
999
+ }
1000
+
1001
+ .popover-original-label {
1002
+ font-weight: var(--font-weight-bold);
1003
+ color: var(--color-text-muted);
1004
+ font-size: var(--font-size-label);
1005
+ }
1006
+
1007
+ .popover-original-word {
1008
+ text-decoration: none;
1009
+ color: var(--color-text-primary);
1010
+ font-weight: var(--font-weight-semibold);
1011
+ }
1012
+
1013
+ /* ── Feedback Buttons ── */
1014
+ .popover-feedback {
1015
+ display: flex;
1016
+ align-items: center;
1017
+ gap: 8px;
1018
+ margin-top: 8px;
1019
+ padding-top: 8px;
1020
+ border-top: 1px solid var(--color-border);
1021
+ justify-content: center;
1022
+ }
1023
+
1024
+ .popover-feedback-label {
1025
+ font-size: var(--font-size-label);
1026
+ color: var(--color-text-muted);
1027
+ }
1028
+
1029
+ .popover-feedback-btn {
1030
+ width: 32px;
1031
+ height: 32px;
1032
+ border: 1px solid var(--color-border);
1033
+ border-radius: 50%;
1034
+ background: var(--color-surface);
1035
+ cursor: pointer;
1036
+ font-size: 14px;
1037
+ display: flex;
1038
+ align-items: center;
1039
+ justify-content: center;
1040
+ transition: all 0.2s ease;
1041
+ }
1042
+
1043
+ .popover-feedback-yes:hover {
1044
+ background: rgba(34, 197, 94, 0.15);
1045
+ border-color: #22c55e;
1046
+ transform: scale(1.1);
1047
+ }
1048
+
1049
+ .popover-feedback-no:hover {
1050
+ background: rgba(239, 68, 68, 0.15);
1051
+ border-color: #ef4444;
1052
+ transform: scale(1.1);
1053
+ }
1054
+
1055
+ .popover-feedback-thanks {
1056
+ font-size: var(--font-size-label);
1057
+ color: #22c55e;
1058
+ font-weight: var(--font-weight-bold);
1059
+ animation: fadeIn 0.3s ease;
1060
+ }
1061
+
1062
+ @keyframes fadeIn {
1063
+ from {
1064
+ opacity: 0;
1065
+ transform: translateY(4px);
1066
+ }
1067
+
1068
+ to {
1069
+ opacity: 1;
1070
+ transform: translateY(0);
1071
+ }
1072
+ }
1073
+
1074
+
1075
+ /* ── Alt chips in suggestion cards ── */
1076
+ .suggestion-card-alts {
1077
+ display: flex;
1078
+ flex-wrap: wrap;
1079
+ gap: 6px;
1080
+ margin-top: 8px;
1081
+ }
1082
+
1083
+ .alt-chip {
1084
+ padding: 4px 10px;
1085
+ border-radius: 100px;
1086
+ border: 1px solid var(--color-border);
1087
+ background: var(--color-surface);
1088
+ color: var(--color-text-secondary);
1089
+ font-size: var(--font-size-label);
1090
+ cursor: pointer;
1091
+ font-family: inherit;
1092
+ transition: all var(--transition-base);
1093
+ }
1094
+
1095
+ .alt-chip:hover {
1096
+ border-color: var(--color-primary);
1097
+ color: var(--color-text-primary);
1098
+ background: var(--color-surface-elevated);
1099
+ }
1100
+
1101
+ .alt-chip--main {
1102
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
1103
+ color: var(--color-text-inverse);
1104
+ border-color: transparent;
1105
+ font-weight: var(--font-weight-bold);
1106
+ }
1107
+
1108
+ .alt-chip--main:hover {
1109
+ opacity: 0.9;
1110
+ border-color: transparent;
1111
+ }
1112
+
1113
+ .alt-chip--keep {
1114
+ border-style: dashed;
1115
+ color: var(--color-text-muted);
1116
+ font-size: 0.7rem;
1117
+ }
1118
+
1119
+ .alt-chip--keep:hover {
1120
+ color: var(--color-text-primary);
1121
+ }
1122
+
1123
+ /* ── Suggestion cards ── */
1124
+ .suggestion-card {
1125
+ padding: var(--spacing-md);
1126
+ padding-right: calc(var(--spacing-md) + 4px);
1127
+ border-radius: var(--radius-md);
1128
+ border: 1px solid var(--color-border);
1129
+ border-right: 4px solid var(--color-border-strong);
1130
+ background: var(--color-surface-elevated);
1131
+ cursor: pointer;
1132
+ transition: border-color var(--transition-base), background var(--transition-base), transform var(--transition-base);
1133
+ text-align: right;
1134
+ }
1135
+
1136
+ .suggestion-card[data-suggestion-type="spelling"],
1137
+ .suggestion-card:has(.badge-spelling) {
1138
+ border-right-color: var(--color-error);
1139
+ }
1140
+
1141
+ .suggestion-card[data-suggestion-type="grammar"],
1142
+ .suggestion-card:has(.badge-grammar) {
1143
+ border-right-color: var(--color-warning);
1144
+ }
1145
+
1146
+ .suggestion-card[data-suggestion-type="punctuation"],
1147
+ .suggestion-card:has(.badge-punctuation) {
1148
+ border-right-color: var(--color-success);
1149
+ }
1150
+
1151
+ .suggestion-card:hover,
1152
+ .suggestion-card.focused {
1153
+ border-color: var(--color-primary);
1154
+ background: var(--color-suggestion-hover-bg);
1155
+ transform: translateX(-2px);
1156
+ }
1157
+
1158
+ .suggestion-card-badge {
1159
+ display: inline-block;
1160
+ font-size: var(--font-size-label);
1161
+ font-weight: var(--font-weight-bold);
1162
+ padding: 2px 8px;
1163
+ border-radius: 999px;
1164
+ margin-bottom: var(--spacing-sm);
1165
+ }
1166
+
1167
+ .badge-spelling {
1168
+ background: var(--color-badge-spelling-bg);
1169
+ color: var(--color-error);
1170
+ }
1171
+
1172
+ .badge-grammar {
1173
+ background: var(--color-badge-grammar-bg);
1174
+ color: var(--color-warning);
1175
+ }
1176
+
1177
+ .badge-punctuation {
1178
+ background: var(--color-badge-punctuation-bg);
1179
+ color: var(--color-success);
1180
+ }
1181
+
1182
+ .suggestion-card-change {
1183
+ font-size: var(--font-size-caption);
1184
+ margin-bottom: 4px;
1185
+ color: var(--color-text-primary);
1186
+ }
1187
+
1188
+ .suggestion-card-original {
1189
+ text-decoration: line-through;
1190
+ color: var(--color-text-muted);
1191
+ }
1192
+
1193
+ .suggestion-card-arrow {
1194
+ margin: 0 var(--spacing-sm);
1195
+ color: var(--color-text-muted);
1196
+ }
1197
+
1198
+ .suggestion-card-fix {
1199
+ color: var(--color-success);
1200
+ font-weight: var(--font-weight-semibold);
1201
+ }
1202
+
1203
+ .suggestion-card-apply {
1204
+ float: left;
1205
+ padding: 4px 10px;
1206
+ border: none;
1207
+ border-radius: var(--radius-sm);
1208
+ background: var(--color-primary);
1209
+ color: var(--color-text-inverse);
1210
+ font-size: var(--font-size-label);
1211
+ font-weight: var(--font-weight-bold);
1212
+ cursor: pointer;
1213
+ font-family: inherit;
1214
+ min-height: 32px;
1215
+ transition: opacity var(--transition-base);
1216
+ }
1217
+
1218
+ .suggestion-card-apply:hover {
1219
+ opacity: 0.9;
1220
+ }
1221
+
1222
+ /* ── Score ring ── */
1223
+ .score-ring-wrap {
1224
+ position: relative;
1225
+ width: 140px;
1226
+ height: 140px;
1227
+ margin: 0 auto var(--spacing-md);
1228
+ }
1229
+
1230
+ .score-circle {
1231
+ transition: stroke-dashoffset 0.6s ease-in-out;
1232
+ }
1233
+
1234
+ .score-value {
1235
+ position: absolute;
1236
+ inset: 0;
1237
+ display: flex;
1238
+ align-items: center;
1239
+ justify-content: center;
1240
+ font-size: var(--font-size-h1);
1241
+ font-weight: var(--font-weight-bold);
1242
+ color: var(--color-text-primary);
1243
+ }
1244
+
1245
+ /* ── Empty state ── */
1246
+ .empty-state {
1247
+ text-align: center;
1248
+ padding: var(--spacing-xl) var(--spacing-md);
1249
+ color: var(--color-text-muted);
1250
+ }
1251
+
1252
+ .empty-state-icon {
1253
+ width: 64px;
1254
+ height: 64px;
1255
+ margin: 0 auto var(--spacing-md);
1256
+ opacity: 0.35;
1257
+ color: var(--color-text-muted);
1258
+ }
1259
+
1260
+ /* ── Sidebar ── */
1261
+ .sidebar-panel {
1262
+ display: flex;
1263
+ flex-direction: column;
1264
+ gap: var(--spacing-md);
1265
+ max-height: calc(100vh - 140px);
1266
+ overflow-y: auto;
1267
+ scrollbar-width: thin;
1268
+ }
1269
+
1270
+ .sidebar-card {
1271
+ padding: var(--spacing-lg);
1272
+ }
1273
+
1274
+ .suggestions-scroll {
1275
+ max-height: 320px;
1276
+ overflow-y: auto;
1277
+ display: flex;
1278
+ flex-direction: column;
1279
+ gap: var(--spacing-sm);
1280
+ }
1281
+
1282
+ .apply-all-btn {
1283
+ width: 100%;
1284
+ margin-top: var(--spacing-sm);
1285
+ }
1286
+
1287
+ /* ── Summarize panel ── */
1288
+ .summarize-panel {
1289
+ padding: var(--spacing-lg);
1290
+ }
1291
+
1292
+ .summary-card {
1293
+ padding: var(--spacing-lg);
1294
+ border-radius: var(--radius-card);
1295
+ background: var(--color-surface);
1296
+ border: 1px solid var(--color-summary-accent-border);
1297
+ box-shadow: var(--shadow-card);
1298
+ overflow: visible;
1299
+ }
1300
+
1301
+ /* Summary export dropdown opens upward */
1302
+ .summary-card .doc-dropdown__menu {
1303
+ top: auto;
1304
+ bottom: calc(100% + 6px);
1305
+ }
1306
+
1307
+ .summary-card__title {
1308
+ color: var(--color-secondary);
1309
+ }
1310
+
1311
+ .summary-loading {
1312
+ text-align: center;
1313
+ padding: var(--spacing-lg);
1314
+ }
1315
+
1316
+ .summary-loading__spinner {
1317
+ display: inline-block;
1318
+ width: 40px;
1319
+ height: 40px;
1320
+ border: 4px solid var(--color-summary-accent-border);
1321
+ border-top-color: var(--color-secondary);
1322
+ border-radius: 50%;
1323
+ animation: spin 1s linear infinite;
1324
+ }
1325
+
1326
+ .summary-error {
1327
+ color: var(--color-error);
1328
+ margin-bottom: var(--spacing-sm);
1329
+ }
1330
+
1331
+ .summary-loading__text {
1332
+ margin-top: var(--spacing-md);
1333
+ color: var(--color-text-secondary);
1334
+ }
1335
+
1336
+ .summary-preview {
1337
+ max-height: 0;
1338
+ overflow: hidden;
1339
+ transition: max-height var(--transition-slow);
1340
+ }
1341
+
1342
+ .summary-preview.show {
1343
+ max-height: 500px;
1344
+ overflow: visible;
1345
+ }
1346
+
1347
+ /* ── Mobile bottom sheet ── */
1348
+ .mobile-sheet-trigger {
1349
+ display: none;
1350
+ width: 100%;
1351
+ padding: var(--spacing-md);
1352
+ border: 1px solid var(--color-border);
1353
+ border-radius: var(--radius-md);
1354
+ background: var(--color-surface);
1355
+ color: var(--color-text-primary);
1356
+ font-weight: var(--font-weight-bold);
1357
+ cursor: pointer;
1358
+ font-family: inherit;
1359
+ min-height: 44px;
1360
+ margin-top: var(--spacing-md);
1361
+ transition: background var(--transition-base);
1362
+ }
1363
+
1364
+ .mobile-sheet-trigger:hover {
1365
+ background: var(--color-surface-elevated);
1366
+ }
1367
+
1368
+ @media (max-width: 1023px) {
1369
+ .mobile-sheet-trigger {
1370
+ display: flex;
1371
+ align-items: center;
1372
+ justify-content: space-between;
1373
+ }
1374
+
1375
+ .sidebar-desktop {
1376
+ display: none;
1377
+ }
1378
+ }
1379
+
1380
+ .bottom-sheet {
1381
+ position: fixed;
1382
+ inset: 0;
1383
+ z-index: 90;
1384
+ pointer-events: none;
1385
+ visibility: hidden;
1386
+ }
1387
+
1388
+ .bottom-sheet.open {
1389
+ pointer-events: auto;
1390
+ visibility: visible;
1391
+ }
1392
+
1393
+ .bottom-sheet-backdrop {
1394
+ position: absolute;
1395
+ inset: 0;
1396
+ background: var(--color-overlay);
1397
+ opacity: 0;
1398
+ transition: opacity var(--transition-slow);
1399
+ }
1400
+
1401
+ .bottom-sheet.open .bottom-sheet-backdrop {
1402
+ opacity: 1;
1403
+ }
1404
+
1405
+ .bottom-sheet-panel {
1406
+ position: absolute;
1407
+ bottom: 0;
1408
+ left: 0;
1409
+ right: 0;
1410
+ max-height: 70vh;
1411
+ background: var(--color-surface);
1412
+ border-top: 1px solid var(--color-border-strong);
1413
+ border-radius: var(--radius-card) var(--radius-card) 0 0;
1414
+ padding: var(--spacing-lg);
1415
+ transform: translateY(100%);
1416
+ transition: transform var(--transition-slow);
1417
+ overflow-y: auto;
1418
+ box-shadow: var(--shadow-popover);
1419
+ }
1420
+
1421
+ .bottom-sheet.open .bottom-sheet-panel {
1422
+ transform: translateY(0);
1423
+ }
1424
+
1425
+ .bottom-sheet-handle {
1426
+ width: 40px;
1427
+ height: 4px;
1428
+ background: var(--color-border-strong);
1429
+ border-radius: 2px;
1430
+ margin: 0 auto var(--spacing-md);
1431
+ }
1432
+
1433
+ /* ── Analysis loading ── */
1434
+ .analyzing-indicator {
1435
+ display: none;
1436
+ align-items: center;
1437
+ gap: var(--spacing-sm);
1438
+ font-size: var(--font-size-caption);
1439
+ color: var(--color-text-secondary);
1440
+ }
1441
+
1442
+ .analyzing-indicator.active {
1443
+ display: flex;
1444
+ animation: pulse-subtle 1.2s ease infinite;
1445
+ }
1446
+
1447
+ .analyzing-spinner {
1448
+ width: 14px;
1449
+ height: 14px;
1450
+ border: 2px solid var(--color-border);
1451
+ border-top-color: var(--color-accent);
1452
+ border-radius: 50%;
1453
+ animation: spin 0.8s linear infinite;
1454
+ }
1455
+
1456
+ /* ── Range input ── */
1457
+ input[type="range"] {
1458
+ -webkit-appearance: none;
1459
+ appearance: none;
1460
+ background: transparent;
1461
+ cursor: pointer;
1462
+ flex: 1;
1463
+ }
1464
+
1465
+ input[type="range"]::-webkit-slider-track {
1466
+ background: var(--color-border-strong);
1467
+ height: 6px;
1468
+ border-radius: 3px;
1469
+ }
1470
+
1471
+ input[type="range"]::-webkit-slider-thumb {
1472
+ -webkit-appearance: none;
1473
+ width: 18px;
1474
+ height: 18px;
1475
+ border-radius: 50%;
1476
+ background: var(--color-primary);
1477
+ margin-top: -6px;
1478
+ }
1479
+
1480
+ /* ── Editor layout ── */
1481
+ .editor-layout {
1482
+ display: grid;
1483
+ gap: var(--spacing-md);
1484
+ padding: var(--spacing-md);
1485
+ }
1486
+
1487
+ @media (min-width: 1024px) {
1488
+ .editor-layout {
1489
+ grid-template-columns: 220px 1fr 340px;
1490
+ padding: var(--spacing-lg);
1491
+ }
1492
+ }
1493
+
1494
+ @media (min-width: 1280px) {
1495
+ .editor-layout {
1496
+ grid-template-columns: 240px 1fr 380px;
1497
+ }
1498
+ }
1499
+
1500
+ /* Tools mode: single column, no sidebars — for summarize/dialect/quran tabs */
1501
+ .editor-layout.tools-mode {
1502
+ grid-template-columns: 1fr !important;
1503
+ }
1504
+
1505
+ .editor-layout.tools-mode>.docs-panel-desktop,
1506
+ .editor-layout.tools-mode>.sidebar-panel {
1507
+ display: none !important;
1508
+ }
1509
+
1510
+ /* ── Documents Panel (inline, always visible on desktop) ── */
1511
+ .docs-panel {
1512
+ display: none;
1513
+ }
1514
+
1515
+ .docs-panel-desktop {
1516
+ display: none;
1517
+ }
1518
+
1519
+ @media (min-width: 1024px) {
1520
+ .docs-panel-desktop {
1521
+ display: flex;
1522
+ flex-direction: column;
1523
+ background: var(--color-surface);
1524
+ border: 1px solid var(--color-border);
1525
+ border-radius: var(--radius-card);
1526
+ overflow: hidden;
1527
+ max-height: calc(100vh - 100px);
1528
+ position: sticky;
1529
+ top: 80px;
1530
+ }
1531
+ }
1532
+
1533
+ .docs-panel__header {
1534
+ display: flex;
1535
+ align-items: center;
1536
+ gap: var(--spacing-sm);
1537
+ padding: var(--spacing-md) var(--spacing-lg);
1538
+ border-bottom: 1px solid var(--color-border);
1539
+ flex-shrink: 0;
1540
+ }
1541
+
1542
+ .docs-panel__icon {
1543
+ color: var(--color-text-secondary);
1544
+ flex-shrink: 0;
1545
+ }
1546
+
1547
+ .docs-panel__title {
1548
+ font-size: var(--font-size-caption);
1549
+ font-weight: var(--font-weight-bold);
1550
+ color: var(--color-text-secondary);
1551
+ text-transform: uppercase;
1552
+ letter-spacing: 0.06em;
1553
+ }
1554
+
1555
+ .docs-panel__body {
1556
+ flex: 1;
1557
+ overflow-y: auto;
1558
+ padding: var(--spacing-sm);
1559
+ }
1560
+
1561
+ /* ── Toolbar separator ── */
1562
+ .toolbar-separator {
1563
+ width: 1px;
1564
+ height: 24px;
1565
+ background: var(--color-border);
1566
+ margin: 0 8px;
1567
+ opacity: 0.4;
1568
+ }
1569
+
1570
+ /* ── Save button (icon only) ── */
1571
+ .doc-save-btn-icon {
1572
+ display: flex;
1573
+ align-items: center;
1574
+ justify-content: center;
1575
+ padding: 4px;
1576
+ border-radius: var(--radius-md);
1577
+ min-height: 32px;
1578
+ min-width: 32px;
1579
+ }
1580
+
1581
+ /* ── Mobile docs toggle (hide on desktop where panel is inline) ── */
1582
+ .docs-sidebar-toggle-mobile {
1583
+ display: flex;
1584
+ align-items: center;
1585
+ justify-content: center;
1586
+ padding: 4px;
1587
+ min-height: 32px;
1588
+ min-width: 32px;
1589
+ }
1590
+
1591
+ @media (min-width: 1024px) {
1592
+ .docs-sidebar-toggle-mobile {
1593
+ display: none;
1594
+ }
1595
+ }
1596
+
1597
+ /* ── Sidebar Import/Export card ── */
1598
+ .sidebar-io {
1599
+ padding: var(--spacing-md) var(--spacing-lg);
1600
+ }
1601
+
1602
+ .sidebar-io__title {
1603
+ font-size: var(--font-size-caption);
1604
+ font-weight: var(--font-weight-bold);
1605
+ color: var(--color-text-secondary);
1606
+ text-transform: uppercase;
1607
+ letter-spacing: 0.06em;
1608
+ margin-bottom: var(--spacing-sm);
1609
+ }
1610
+
1611
+ .sidebar-io__actions {
1612
+ display: flex;
1613
+ gap: var(--spacing-sm);
1614
+ }
1615
+
1616
+ .sidebar-io__btn {
1617
+ flex: 1;
1618
+ display: flex;
1619
+ align-items: center;
1620
+ justify-content: center;
1621
+ gap: var(--spacing-xs);
1622
+ padding: 8px 12px;
1623
+ border: 1px solid var(--color-border);
1624
+ border-radius: var(--radius-md);
1625
+ background: var(--color-surface);
1626
+ color: var(--color-text-secondary);
1627
+ font-family: inherit;
1628
+ font-size: var(--font-size-caption);
1629
+ font-weight: var(--font-weight-semibold);
1630
+ cursor: pointer;
1631
+ transition: all var(--transition-base);
1632
+ min-height: 40px;
1633
+ }
1634
+
1635
+ .sidebar-io__btn:hover {
1636
+ border-color: var(--color-primary);
1637
+ color: var(--color-text-primary);
1638
+ background: var(--color-surface-elevated);
1639
+ }
1640
+
1641
+ .sidebar-io__dropdown {
1642
+ flex: 1;
1643
+ position: relative;
1644
+ }
1645
+
1646
+ /* ── Marketing token utilities ── */
1647
+ .marketing-card {
1648
+ background: var(--color-surface);
1649
+ border: 1px solid var(--color-border);
1650
+ }
1651
+
1652
+ .marketing-divider {
1653
+ background: var(--color-border-strong);
1654
+ }
1655
+
1656
+ .badge-pill {
1657
+ background: var(--color-primary-subtle-bg);
1658
+ color: var(--color-primary);
1659
+ border: 1px solid var(--color-primary-subtle-border);
1660
+ }
1661
+
1662
+ .check-icon {
1663
+ color: var(--color-success);
1664
+ }
1665
+
1666
+ .muted-icon {
1667
+ color: var(--color-text-muted);
1668
+ }
1669
+
1670
+ .demo-editor-surface {
1671
+ background: var(--color-editor);
1672
+ color: var(--color-text-primary);
1673
+ }
1674
+
1675
+ .demo-callout--spelling {
1676
+ background: var(--highlight-spelling-bg);
1677
+ border-right: 4px solid var(--highlight-spelling-border);
1678
+ }
1679
+
1680
+ .demo-callout--grammar {
1681
+ background: var(--highlight-grammar-bg);
1682
+ border-right: 4px solid var(--highlight-grammar-border);
1683
+ }
1684
+
1685
+ .demo-callout--punctuation {
1686
+ background: var(--highlight-punctuation-bg);
1687
+ border-right: 4px solid var(--highlight-punctuation-border);
1688
+ }
1689
+
1690
+ .demo-callout--summarize {
1691
+ background: var(--color-summary-accent-bg);
1692
+ border-right: 4px solid var(--color-secondary);
1693
+ }
1694
+
1695
+ .footer-bar {
1696
+ background: var(--color-bg);
1697
+ border-color: var(--color-border);
1698
+ }
1699
+
1700
+ /* ── Document management (Phase 4) ── */
1701
+ .doc-toolbar-actions {
1702
+ display: flex;
1703
+ align-items: center;
1704
+ gap: var(--spacing-sm);
1705
+ }
1706
+
1707
+ .doc-dropdown {
1708
+ position: relative;
1709
+ }
1710
+
1711
+ .doc-dropdown__trigger {
1712
+ min-height: 44px;
1713
+ }
1714
+
1715
+ .doc-dropdown__menu {
1716
+ position: absolute;
1717
+ top: calc(100% + 6px);
1718
+ left: 0;
1719
+ min-width: 200px;
1720
+ background: var(--color-surface-elevated);
1721
+ border: 1px solid var(--color-border-strong);
1722
+ border-radius: var(--radius-md);
1723
+ box-shadow: var(--shadow-popover);
1724
+ padding: var(--spacing-sm);
1725
+ display: none;
1726
+ z-index: 200;
1727
+ }
1728
+
1729
+ .doc-dropdown__menu.is-open {
1730
+ display: block;
1731
+ }
1732
+
1733
+ .doc-dropdown__item {
1734
+ display: block;
1735
+ width: 100%;
1736
+ text-align: right;
1737
+ padding: var(--spacing-sm) var(--spacing-md);
1738
+ border: none;
1739
+ border-radius: var(--radius-sm);
1740
+ background: transparent;
1741
+ color: var(--color-text-primary);
1742
+ font-family: inherit;
1743
+ font-size: var(--font-size-caption);
1744
+ font-weight: var(--font-weight-semibold);
1745
+ cursor: pointer;
1746
+ min-height: 44px;
1747
+ transition: background var(--transition-base);
1748
+ }
1749
+
1750
+ .doc-dropdown__item:hover:not(:disabled) {
1751
+ background: var(--color-suggestion-hover-bg);
1752
+ }
1753
+
1754
+ .doc-dropdown__item:disabled {
1755
+ opacity: 0.45;
1756
+ cursor: not-allowed;
1757
+ }
1758
+
1759
+ .analysis-limit-banner {
1760
+ margin: 0 var(--spacing-md) var(--spacing-sm);
1761
+ padding: var(--spacing-sm) var(--spacing-md);
1762
+ border-radius: var(--radius-md);
1763
+ background: var(--color-primary-subtle-bg);
1764
+ border: 1px solid var(--color-primary-subtle-border);
1765
+ color: var(--color-text-secondary);
1766
+ font-size: var(--font-size-caption);
1767
+ text-align: right;
1768
+ }
1769
+
1770
+ .doc-toast {
1771
+ position: fixed;
1772
+ bottom: var(--spacing-lg);
1773
+ left: 50%;
1774
+ transform: translateX(-50%) translateY(20px);
1775
+ padding: var(--spacing-sm) var(--spacing-lg);
1776
+ border-radius: var(--radius-md);
1777
+ background: var(--color-surface-elevated);
1778
+ border: 1px solid var(--color-border-strong);
1779
+ color: var(--color-text-primary);
1780
+ box-shadow: var(--shadow-popover);
1781
+ font-size: var(--font-size-caption);
1782
+ font-weight: var(--font-weight-semibold);
1783
+ z-index: 300;
1784
+ opacity: 0;
1785
+ pointer-events: none;
1786
+ transition: opacity var(--transition-base), transform var(--transition-base);
1787
+ }
1788
+
1789
+ .doc-toast.is-visible {
1790
+ opacity: 1;
1791
+ transform: translateX(-50%) translateY(0);
1792
+ }
1793
+
1794
+ .doc-toast--success {
1795
+ border-color: var(--color-success);
1796
+ }
1797
+
1798
+ .doc-toast--error {
1799
+ border-color: var(--color-error);
1800
+ }
1801
+
1802
+ /* PDF export styles are applied inline in buildPdfHtmlString for clone reliability */
1803
+
1804
+ .doc-mobile-actions {
1805
+ display: flex;
1806
+ gap: var(--spacing-sm);
1807
+ width: 100%;
1808
+ margin-top: var(--spacing-sm);
1809
+ }
1810
+
1811
+ @media (max-width: 639px) {
1812
+ .doc-toolbar-actions--desktop {
1813
+ display: none !important;
1814
+ }
1815
+ }
1816
+
1817
+ @media (min-width: 640px) {
1818
+ .doc-mobile-actions {
1819
+ display: none;
1820
+ }
1821
+ }
1822
+
1823
+ /* ── Authentication (Phase 5) ── */
1824
+ .auth-offline-banner {
1825
+ position: fixed;
1826
+ top: 64px;
1827
+ left: 0;
1828
+ right: 0;
1829
+ z-index: 45;
1830
+ padding: var(--spacing-sm) var(--spacing-md);
1831
+ text-align: center;
1832
+ font-size: var(--font-size-caption);
1833
+ background: var(--color-primary-subtle-bg);
1834
+ border-bottom: 1px solid var(--color-primary-subtle-border);
1835
+ color: var(--color-text-secondary);
1836
+ }
1837
+
1838
+ .auth-gate {
1839
+ position: fixed;
1840
+ inset: 0;
1841
+ z-index: 400;
1842
+ display: none;
1843
+ align-items: center;
1844
+ justify-content: center;
1845
+ }
1846
+
1847
+ .auth-gate.is-open {
1848
+ display: flex;
1849
+ }
1850
+
1851
+ .auth-gate-backdrop {
1852
+ position: absolute;
1853
+ inset: 0;
1854
+ background: rgba(0, 0, 0, 0.55);
1855
+ backdrop-filter: blur(4px);
1856
+ }
1857
+
1858
+ .auth-gate-panel {
1859
+ position: relative;
1860
+ z-index: 1;
1861
+ background: var(--color-surface-elevated);
1862
+ border: 1px solid var(--color-border-strong);
1863
+ border-radius: var(--radius-lg);
1864
+ box-shadow: var(--shadow-popover);
1865
+ padding: var(--spacing-xl);
1866
+ max-width: 420px;
1867
+ width: calc(100% - 2rem);
1868
+ text-align: center;
1869
+ }
1870
+
1871
+ .auth-gate-panel--mobile {
1872
+ display: none;
1873
+ }
1874
+
1875
+ .auth-gate-title {
1876
+ font-size: var(--font-size-h2);
1877
+ font-weight: var(--font-weight-bold);
1878
+ margin: 0 0 var(--spacing-sm);
1879
+ color: var(--color-text-primary);
1880
+ }
1881
+
1882
+ .auth-gate-subtitle {
1883
+ font-size: var(--font-size-body);
1884
+ color: var(--color-text-secondary);
1885
+ margin: 0 0 var(--spacing-lg);
1886
+ }
1887
+
1888
+ .auth-gate-actions {
1889
+ display: flex;
1890
+ flex-direction: column;
1891
+ gap: var(--spacing-sm);
1892
+ }
1893
+
1894
+ .auth-gate-btn {
1895
+ width: 100%;
1896
+ min-height: 48px;
1897
+ justify-content: center;
1898
+ }
1899
+
1900
+ .auth-gate-btn--google {
1901
+ display: inline-flex;
1902
+ align-items: center;
1903
+ gap: var(--spacing-sm);
1904
+ }
1905
+
1906
+ .auth-menu-wrap.is-hidden {
1907
+ display: none;
1908
+ }
1909
+
1910
+ .auth-dropdown {
1911
+ position: relative;
1912
+ }
1913
+
1914
+ .auth-menu-trigger {
1915
+ display: inline-flex;
1916
+ align-items: center;
1917
+ gap: var(--spacing-sm);
1918
+ min-height: 44px;
1919
+ padding: 0 var(--spacing-sm);
1920
+ border: 1px solid var(--color-border);
1921
+ border-radius: var(--radius-md);
1922
+ background: var(--color-surface);
1923
+ color: var(--color-text-primary);
1924
+ cursor: pointer;
1925
+ font-family: inherit;
1926
+ font-size: var(--font-size-caption);
1927
+ }
1928
+
1929
+ .auth-menu-trigger:hover {
1930
+ background: var(--color-surface-elevated);
1931
+ }
1932
+
1933
+ .auth-avatar {
1934
+ display: inline-flex;
1935
+ align-items: center;
1936
+ justify-content: center;
1937
+ width: 32px;
1938
+ height: 32px;
1939
+ border-radius: 50%;
1940
+ background: var(--color-primary-subtle-bg);
1941
+ color: var(--color-primary);
1942
+ font-weight: var(--font-weight-bold);
1943
+ overflow: hidden;
1944
+ }
1945
+
1946
+ .auth-avatar-img {
1947
+ width: 100%;
1948
+ height: 100%;
1949
+ object-fit: cover;
1950
+ }
1951
+
1952
+ .auth-display-name {
1953
+ max-width: 120px;
1954
+ overflow: hidden;
1955
+ text-overflow: ellipsis;
1956
+ white-space: nowrap;
1957
+ }
1958
+
1959
+ .auth-menu-chevron {
1960
+ opacity: 0.6;
1961
+ font-size: 0.75rem;
1962
+ }
1963
+
1964
+ .auth-account-menu {
1965
+ position: absolute;
1966
+ top: calc(100% + 6px);
1967
+ left: 0;
1968
+ min-width: 220px;
1969
+ background: var(--color-surface-elevated);
1970
+ border: 1px solid var(--color-border-strong);
1971
+ border-radius: var(--radius-md);
1972
+ box-shadow: var(--shadow-popover);
1973
+ padding: var(--spacing-sm);
1974
+ display: none;
1975
+ z-index: 200;
1976
+ text-align: right;
1977
+ }
1978
+
1979
+ .auth-account-menu.is-open {
1980
+ display: block;
1981
+ }
1982
+
1983
+ .auth-account-menu__header {
1984
+ padding: var(--spacing-sm) var(--spacing-md);
1985
+ border-bottom: 1px solid var(--color-border);
1986
+ margin-bottom: var(--spacing-sm);
1987
+ }
1988
+
1989
+ .auth-provider-label {
1990
+ font-size: var(--font-size-caption);
1991
+ color: var(--color-text-muted);
1992
+ }
1993
+
1994
+ .auth-account-menu__item {
1995
+ display: block;
1996
+ width: 100%;
1997
+ text-align: right;
1998
+ padding: var(--spacing-sm) var(--spacing-md);
1999
+ border: none;
2000
+ border-radius: var(--radius-sm);
2001
+ background: transparent;
2002
+ color: var(--color-text-primary);
2003
+ font-family: inherit;
2004
+ font-size: var(--font-size-caption);
2005
+ cursor: pointer;
2006
+ min-height: 44px;
2007
+ }
2008
+
2009
+ .auth-account-menu__item:hover {
2010
+ background: var(--color-suggestion-hover-bg);
2011
+ }
2012
+
2013
+ .auth-account-menu__item--danger {
2014
+ color: var(--color-error);
2015
+ }
2016
+
2017
+ .auth-account-menu__item.is-hidden {
2018
+ display: none;
2019
+ }
2020
+
2021
+ .auth-drawer-section {
2022
+ margin-top: var(--spacing-md);
2023
+ padding-top: var(--spacing-md);
2024
+ border-top: 1px solid var(--color-border);
2025
+ }
2026
+
2027
+ .auth-drawer-label {
2028
+ font-size: var(--font-size-caption);
2029
+ color: var(--color-text-muted);
2030
+ margin: 0 0 var(--spacing-xs);
2031
+ }
2032
+
2033
+ .auth-drawer-name {
2034
+ font-weight: var(--font-weight-semibold);
2035
+ margin: 0 0 2px;
2036
+ }
2037
+
2038
+ .auth-drawer-provider {
2039
+ font-size: var(--font-size-caption);
2040
+ color: var(--color-text-secondary);
2041
+ margin: 0 0 var(--spacing-sm);
2042
+ }
2043
+
2044
+ .auth-drawer-action.is-hidden {
2045
+ display: none;
2046
+ }
2047
+
2048
+ @media (max-width: 639px) {
2049
+ .auth-gate-panel--desktop {
2050
+ display: none;
2051
+ }
2052
+
2053
+ .auth-gate-panel--mobile {
2054
+ display: block;
2055
+ position: fixed;
2056
+ bottom: 0;
2057
+ left: 0;
2058
+ right: 0;
2059
+ max-width: none;
2060
+ width: 100%;
2061
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
2062
+ padding-bottom: calc(var(--spacing-xl) + env(safe-area-inset-bottom, 0));
2063
+ }
2064
+
2065
+ .auth-display-name {
2066
+ display: none;
2067
+ }
2068
+ }
2069
+
2070
+ /* ═══════════════════════════════════════════════
2071
+ Phase 6 — Cloud Persistence
2072
+ ═══════════════════════════════════════════════ */
2073
+
2074
+ /* ── Docs Sidebar (collapsible drawer) ── */
2075
+ .docs-sidebar {
2076
+ position: fixed;
2077
+ top: 0;
2078
+ right: 0;
2079
+ bottom: 0;
2080
+ width: 280px;
2081
+ z-index: 80;
2082
+ background: var(--color-surface);
2083
+ border-left: 1px solid var(--color-border);
2084
+ display: flex;
2085
+ flex-direction: column;
2086
+ transform: translateX(100%);
2087
+ transition: transform var(--transition-slow), box-shadow var(--transition-slow);
2088
+ box-shadow: none;
2089
+ padding-top: 64px;
2090
+ /* below nav */
2091
+ }
2092
+
2093
+ .docs-sidebar.is-open {
2094
+ transform: translateX(0);
2095
+ box-shadow: var(--shadow-popover);
2096
+ }
2097
+
2098
+ .docs-sidebar__header {
2099
+ display: flex;
2100
+ align-items: center;
2101
+ justify-content: space-between;
2102
+ padding: var(--spacing-md) var(--spacing-lg);
2103
+ border-bottom: 1px solid var(--color-border);
2104
+ flex-shrink: 0;
2105
+ }
2106
+
2107
+ .docs-sidebar__title {
2108
+ font-size: var(--font-size-caption);
2109
+ font-weight: var(--font-weight-bold);
2110
+ color: var(--color-text-secondary);
2111
+ text-transform: uppercase;
2112
+ letter-spacing: 0.06em;
2113
+ }
2114
+
2115
+ .docs-sidebar__body {
2116
+ flex: 1;
2117
+ overflow-y: auto;
2118
+ padding: var(--spacing-sm);
2119
+ }
2120
+
2121
+ .docs-new-btn {
2122
+ width: 100%;
2123
+ display: flex;
2124
+ align-items: center;
2125
+ gap: var(--spacing-sm);
2126
+ padding: var(--spacing-sm) var(--spacing-md);
2127
+ margin-bottom: var(--spacing-sm);
2128
+ border: 1px dashed var(--color-border-strong);
2129
+ border-radius: var(--radius-md);
2130
+ background: transparent;
2131
+ color: var(--color-primary);
2132
+ font-family: inherit;
2133
+ font-size: var(--font-size-caption);
2134
+ font-weight: var(--font-weight-semibold);
2135
+ cursor: pointer;
2136
+ min-height: 44px;
2137
+ transition: background var(--transition-base), border-color var(--transition-base);
2138
+ }
2139
+
2140
+ .docs-new-btn:hover {
2141
+ background: var(--color-primary-subtle-bg);
2142
+ border-color: var(--color-primary);
2143
+ }
2144
+
2145
+ /* ── Doc list items ── */
2146
+ .doc-list-item {
2147
+ display: flex;
2148
+ align-items: center;
2149
+ gap: var(--spacing-xs);
2150
+ border-radius: var(--radius-md);
2151
+ transition: background var(--transition-base);
2152
+ margin-bottom: 2px;
2153
+ }
2154
+
2155
+ .doc-list-item:hover,
2156
+ .doc-list-item--active {
2157
+ background: var(--color-surface-elevated);
2158
+ }
2159
+
2160
+ .doc-list-item--active {
2161
+ border-right: 3px solid var(--color-primary);
2162
+ }
2163
+
2164
+ .doc-list-item__open {
2165
+ flex: 1;
2166
+ display: flex;
2167
+ align-items: center;
2168
+ gap: var(--spacing-sm);
2169
+ padding: var(--spacing-sm) var(--spacing-sm);
2170
+ border: none;
2171
+ background: transparent;
2172
+ color: var(--color-text-primary);
2173
+ font-family: inherit;
2174
+ font-size: var(--font-size-caption);
2175
+ cursor: pointer;
2176
+ text-align: right;
2177
+ min-height: 44px;
2178
+ overflow: hidden;
2179
+ }
2180
+
2181
+ .doc-list-item__icon {
2182
+ flex-shrink: 0;
2183
+ font-size: 1rem;
2184
+ }
2185
+
2186
+ .doc-list-item__title {
2187
+ flex: 1;
2188
+ overflow: hidden;
2189
+ text-overflow: ellipsis;
2190
+ white-space: nowrap;
2191
+ font-weight: var(--font-weight-semibold);
2192
+ }
2193
+
2194
+ .doc-list-item__date {
2195
+ font-size: var(--font-size-label);
2196
+ color: var(--color-text-muted);
2197
+ flex-shrink: 0;
2198
+ }
2199
+
2200
+ .doc-list-item__actions {
2201
+ display: none;
2202
+ gap: 2px;
2203
+ padding-left: var(--spacing-xs);
2204
+ flex-shrink: 0;
2205
+ }
2206
+
2207
+ .doc-list-item:hover .doc-list-item__actions {
2208
+ display: flex;
2209
+ }
2210
+
2211
+ .doc-list-item__action {
2212
+ width: 28px;
2213
+ height: 28px;
2214
+ border: none;
2215
+ border-radius: var(--radius-sm);
2216
+ background: transparent;
2217
+ color: var(--color-text-muted);
2218
+ cursor: pointer;
2219
+ font-family: inherit;
2220
+ font-size: 0.75rem;
2221
+ transition: background var(--transition-base), color var(--transition-base);
2222
+ display: flex;
2223
+ align-items: center;
2224
+ justify-content: center;
2225
+ }
2226
+
2227
+ .doc-list-item__action:hover {
2228
+ background: var(--color-border-strong);
2229
+ color: var(--color-text-primary);
2230
+ }
2231
+
2232
+ .doc-delete-btn:hover {
2233
+ color: var(--color-error) !important;
2234
+ }
2235
+
2236
+ .docs-empty,
2237
+ .docs-loading {
2238
+ font-size: var(--font-size-caption);
2239
+ color: var(--color-text-muted);
2240
+ text-align: center;
2241
+ padding: var(--spacing-lg) var(--spacing-md);
2242
+ }
2243
+
2244
+ .docs-signin-prompt {
2245
+ padding: var(--spacing-lg) var(--spacing-md);
2246
+ text-align: center;
2247
+ display: flex;
2248
+ flex-direction: column;
2249
+ gap: var(--spacing-md);
2250
+ align-items: center;
2251
+ }
2252
+
2253
+ .docs-signin-text {
2254
+ font-size: var(--font-size-caption);
2255
+ color: var(--color-text-secondary);
2256
+ margin: 0;
2257
+ }
2258
+
2259
+ .docs-signin-btn {
2260
+ width: 100%;
2261
+ max-width: 200px;
2262
+ }
2263
+
2264
+ /* ── Doc title bar (in editor toolbar) ── */
2265
+ .doc-title-bar {
2266
+ display: flex;
2267
+ align-items: center;
2268
+ gap: var(--spacing-sm);
2269
+ overflow: hidden;
2270
+ max-width: 200px;
2271
+ }
2272
+
2273
+ .doc-current-title {
2274
+ font-size: var(--font-size-caption);
2275
+ font-weight: var(--font-weight-semibold);
2276
+ color: var(--color-text-secondary);
2277
+ overflow: hidden;
2278
+ text-overflow: ellipsis;
2279
+ white-space: nowrap;
2280
+ cursor: default;
2281
+ }
2282
+
2283
+ .doc-save-btn {
2284
+ width: 32px;
2285
+ height: 32px;
2286
+ border: 1px solid var(--color-border);
2287
+ border-radius: var(--radius-sm);
2288
+ background: transparent;
2289
+ color: var(--color-text-muted);
2290
+ cursor: pointer;
2291
+ font-size: 0.875rem;
2292
+ transition: background var(--transition-base), color var(--transition-base), border-color var(--transition-base);
2293
+ display: flex;
2294
+ align-items: center;
2295
+ justify-content: center;
2296
+ }
2297
+
2298
+ .doc-save-btn:hover {
2299
+ background: var(--color-surface-elevated);
2300
+ color: var(--color-primary);
2301
+ }
2302
+
2303
+ .doc-save-btn--dirty {
2304
+ color: var(--color-warning);
2305
+ border-color: var(--color-warning);
2306
+ animation: pulse-subtle 2s ease infinite;
2307
+ }
2308
+
2309
+ .docs-sidebar-toggle {
2310
+ display: flex;
2311
+ align-items: center;
2312
+ gap: var(--spacing-xs);
2313
+ padding: var(--spacing-xs) var(--spacing-sm);
2314
+ border: 1px solid var(--color-border);
2315
+ border-radius: var(--radius-md);
2316
+ background: transparent;
2317
+ color: var(--color-text-secondary);
2318
+ cursor: pointer;
2319
+ font-family: inherit;
2320
+ font-size: var(--font-size-caption);
2321
+ font-weight: var(--font-weight-semibold);
2322
+ min-height: 36px;
2323
+ transition: background var(--transition-base), color var(--transition-base);
2324
+ }
2325
+
2326
+ .docs-sidebar-toggle:hover,
2327
+ .docs-sidebar-toggle[aria-expanded="true"] {
2328
+ background: var(--color-surface-elevated);
2329
+ color: var(--color-text-primary);
2330
+ }
2331
+
2332
+ /* ── Summary history panel ── */
2333
+ .summary-history-section {
2334
+ margin-top: var(--spacing-md);
2335
+ border-top: 1px solid var(--color-border);
2336
+ padding-top: var(--spacing-md);
2337
+ }
2338
+
2339
+ .summary-history-toggle {
2340
+ display: flex;
2341
+ align-items: center;
2342
+ justify-content: space-between;
2343
+ width: 100%;
2344
+ padding: var(--spacing-sm) 0;
2345
+ border: none;
2346
+ background: transparent;
2347
+ color: var(--color-text-secondary);
2348
+ font-family: inherit;
2349
+ font-size: var(--font-size-caption);
2350
+ font-weight: var(--font-weight-bold);
2351
+ cursor: pointer;
2352
+ text-align: right;
2353
+ }
2354
+
2355
+ .summary-history-toggle:hover {
2356
+ color: var(--color-text-primary);
2357
+ }
2358
+
2359
+ .summary-history-toggle-icon {
2360
+ transition: transform var(--transition-base);
2361
+ font-size: 0.75rem;
2362
+ opacity: 0.6;
2363
+ }
2364
+
2365
+ .summary-history-toggle[aria-expanded="true"] .summary-history-toggle-icon {
2366
+ transform: rotate(180deg);
2367
+ }
2368
+
2369
+ .summary-history-panel {
2370
+ max-height: 0;
2371
+ overflow: hidden;
2372
+ transition: max-height var(--transition-slow);
2373
+ }
2374
+
2375
+ .summary-history-panel.is-open {
2376
+ max-height: 400px;
2377
+ overflow-y: auto;
2378
+ }
2379
+
2380
+ .summary-history-list {
2381
+ display: flex;
2382
+ flex-direction: column;
2383
+ gap: var(--spacing-sm);
2384
+ padding-top: var(--spacing-sm);
2385
+ }
2386
+
2387
+ .summary-history-item {
2388
+ border: 1px solid var(--color-border);
2389
+ border-radius: var(--radius-md);
2390
+ padding: var(--spacing-sm) var(--spacing-md);
2391
+ background: var(--color-surface-elevated);
2392
+ display: flex;
2393
+ justify-content: space-between;
2394
+ align-items: flex-start;
2395
+ gap: var(--spacing-sm);
2396
+ transition: border-color var(--transition-base);
2397
+ }
2398
+
2399
+ .summary-history-item:hover {
2400
+ border-color: var(--color-border-strong);
2401
+ }
2402
+
2403
+ .summary-history-item__body {
2404
+ flex: 1;
2405
+ overflow: hidden;
2406
+ }
2407
+
2408
+ .summary-history-item__preview {
2409
+ font-size: var(--font-size-caption);
2410
+ color: var(--color-text-primary);
2411
+ margin: 0 0 4px;
2412
+ line-height: 1.5;
2413
+ display: -webkit-box;
2414
+ -webkit-line-clamp: 2;
2415
+ -webkit-box-orient: vertical;
2416
+ overflow: hidden;
2417
+ text-align: right;
2418
+ direction: rtl;
2419
+ }
2420
+
2421
+ .summary-history-item__date {
2422
+ font-size: var(--font-size-label);
2423
+ color: var(--color-text-muted);
2424
+ }
2425
+
2426
+ .summary-history-item__actions {
2427
+ display: flex;
2428
+ flex-direction: column;
2429
+ gap: var(--spacing-xs);
2430
+ flex-shrink: 0;
2431
+ }
2432
+
2433
+ .summary-open-btn,
2434
+ .summary-delete-btn {
2435
+ padding: 4px 8px;
2436
+ border: 1px solid var(--color-border);
2437
+ border-radius: var(--radius-sm);
2438
+ background: transparent;
2439
+ font-family: inherit;
2440
+ font-size: var(--font-size-label);
2441
+ cursor: pointer;
2442
+ min-height: 28px;
2443
+ transition: background var(--transition-base), color var(--transition-base);
2444
+ }
2445
+
2446
+ .summary-open-btn {
2447
+ color: var(--color-primary);
2448
+ }
2449
+
2450
+ .summary-open-btn:hover {
2451
+ background: var(--color-primary-subtle-bg);
2452
+ }
2453
+
2454
+ .summary-delete-btn {
2455
+ color: var(--color-text-muted);
2456
+ }
2457
+
2458
+ .summary-delete-btn:hover {
2459
+ color: var(--color-error);
2460
+ border-color: var(--color-error);
2461
+ }
2462
+
2463
+ .summary-history-empty {
2464
+ font-size: var(--font-size-caption);
2465
+ color: var(--color-text-muted);
2466
+ text-align: center;
2467
+ padding: var(--spacing-md);
2468
+ }
2469
+
2470
+ .save-summary-btn {
2471
+ margin-top: var(--spacing-sm);
2472
+ }
2473
+
2474
+ /* ── Item 2: Custom Summary Slider ── */
2475
+ .summarize-panel input[type="range"] {
2476
+ -webkit-appearance: none;
2477
+ appearance: none;
2478
+ width: 100%;
2479
+ height: 6px;
2480
+ border-radius: 3px;
2481
+ background: var(--color-border);
2482
+ outline: none;
2483
+ direction: ltr;
2484
+ cursor: pointer;
2485
+ }
2486
+
2487
+ .summarize-panel input[type="range"]::-webkit-slider-thumb {
2488
+ -webkit-appearance: none;
2489
+ width: 22px;
2490
+ height: 22px;
2491
+ border-radius: 50%;
2492
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
2493
+ cursor: pointer;
2494
+ border: 3px solid var(--color-surface);
2495
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
2496
+ transition: transform 0.15s ease;
2497
+ }
2498
+
2499
+ .summarize-panel input[type="range"]::-webkit-slider-thumb:hover {
2500
+ transform: scale(1.15);
2501
+ }
2502
+
2503
+ .summarize-panel input[type="range"]::-moz-range-thumb {
2504
+ width: 22px;
2505
+ height: 22px;
2506
+ border-radius: 50%;
2507
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
2508
+ cursor: pointer;
2509
+ border: 3px solid var(--color-surface);
2510
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
2511
+ }
2512
+
2513
+ /* ── Item 3: Empty States ── */
2514
+ .empty-state {
2515
+ display: flex;
2516
+ flex-direction: column;
2517
+ align-items: center;
2518
+ justify-content: center;
2519
+ padding: var(--spacing-xl) var(--spacing-md);
2520
+ text-align: center;
2521
+ gap: var(--spacing-md);
2522
+ }
2523
+
2524
+ .empty-state__icon {
2525
+ width: 48px;
2526
+ height: 48px;
2527
+ border-radius: 50%;
2528
+ background: var(--color-surface-elevated);
2529
+ display: flex;
2530
+ align-items: center;
2531
+ justify-content: center;
2532
+ color: var(--color-text-muted);
2533
+ }
2534
+
2535
+ .empty-state__title {
2536
+ font-size: var(--font-size-caption);
2537
+ font-weight: var(--font-weight-semibold);
2538
+ color: var(--color-text-secondary);
2539
+ }
2540
+
2541
+ .empty-state__desc {
2542
+ font-size: var(--font-size-label);
2543
+ color: var(--color-text-muted);
2544
+ line-height: 1.6;
2545
+ }
2546
+
2547
+ /* ── Item 4: Enhanced Status Bar ── */
2548
+ .editor-stats {
2549
+ display: flex;
2550
+ flex-wrap: wrap;
2551
+ gap: var(--spacing-sm);
2552
+ align-items: center;
2553
+ }
2554
+
2555
+ .stat-item {
2556
+ display: flex;
2557
+ align-items: center;
2558
+ gap: 4px;
2559
+ font-size: 0.8rem;
2560
+ color: var(--color-text-secondary, var(--color-text-muted));
2561
+ opacity: 0.85;
2562
+ }
2563
+
2564
+ .stat-item--sep {
2565
+ width: 1px;
2566
+ height: 14px;
2567
+ background: var(--color-border);
2568
+ }
2569
+
2570
+ /* ── Item 6: Summary Stats ── */
2571
+ .summary-stats {
2572
+ display: flex;
2573
+ flex-wrap: wrap;
2574
+ gap: var(--spacing-md);
2575
+ padding: var(--spacing-sm) 0;
2576
+ margin-bottom: var(--spacing-md);
2577
+ border-bottom: 1px solid var(--color-border);
2578
+ }
2579
+
2580
+ .summary-stat {
2581
+ display: flex;
2582
+ align-items: center;
2583
+ gap: 6px;
2584
+ font-size: var(--font-size-label);
2585
+ color: var(--color-text-secondary);
2586
+ }
2587
+
2588
+ .summary-stat__value {
2589
+ font-weight: var(--font-weight-bold);
2590
+ color: var(--color-primary);
2591
+ }
2592
+
2593
+ /* ── Item 7: Document Search ── */
2594
+ .docs-search {
2595
+ display: flex;
2596
+ align-items: center;
2597
+ gap: 8px;
2598
+ padding: 6px 10px;
2599
+ border: 1px solid var(--color-border);
2600
+ border-radius: 6px;
2601
+ background: var(--color-surface);
2602
+ margin-bottom: var(--spacing-md);
2603
+ transition: border-color 0.15s ease;
2604
+ }
2605
+
2606
+ .docs-search:focus-within {
2607
+ border-color: var(--color-primary);
2608
+ }
2609
+
2610
+ .docs-search__input {
2611
+ flex: 1;
2612
+ border: none;
2613
+ background: transparent;
2614
+ color: var(--color-text-primary);
2615
+ font-family: inherit;
2616
+ font-size: var(--font-size-caption);
2617
+ outline: none;
2618
+ direction: rtl;
2619
+ }
2620
+
2621
+ .docs-search__input::placeholder {
2622
+ color: var(--color-text-muted);
2623
+ }
2624
+
2625
+ .docs-search__icon {
2626
+ color: var(--color-text-muted);
2627
+ flex-shrink: 0;
2628
+ }
2629
+
2630
+ .doc-item-meta {
2631
+ font-size: 0.65rem;
2632
+ color: var(--color-text-muted);
2633
+ margin-top: 2px;
2634
+ }
2635
+
2636
+ /* ── Item 8: Color Picker ── */
2637
+ .fmt-color-btn {
2638
+ display: flex;
2639
+ align-items: center;
2640
+ justify-content: center;
2641
+ width: 34px;
2642
+ height: 34px;
2643
+ border: none;
2644
+ background: var(--color-surface);
2645
+ cursor: pointer;
2646
+ position: relative;
2647
+ transition: background 0.15s ease;
2648
+ }
2649
+
2650
+ .fmt-color-btn:hover {
2651
+ background: var(--color-surface-elevated);
2652
+ }
2653
+
2654
+ .fmt-color-indicator {
2655
+ position: absolute;
2656
+ bottom: 4px;
2657
+ left: 50%;
2658
+ transform: translateX(-50%);
2659
+ width: 14px;
2660
+ height: 3px;
2661
+ border-radius: 2px;
2662
+ }
2663
+
2664
+ .fmt-color-grid {
2665
+ display: grid;
2666
+ grid-template-columns: repeat(6, 1fr);
2667
+ gap: 4px;
2668
+ padding: 8px;
2669
+ }
2670
+
2671
+ .fmt-color-swatch {
2672
+ width: 24px;
2673
+ height: 24px;
2674
+ border-radius: 4px;
2675
+ border: 2px solid transparent;
2676
+ cursor: pointer;
2677
+ transition: transform 0.12s ease, border-color 0.12s ease;
2678
+ }
2679
+
2680
+ .fmt-color-swatch:hover {
2681
+ transform: scale(1.15);
2682
+ border-color: var(--color-text-primary);
2683
+ }
2684
+
2685
+ .fmt-color-swatch--active {
2686
+ border-color: var(--color-primary);
2687
+ box-shadow: 0 0 0 2px var(--color-primary);
2688
+ }
2689
+
2690
+ .fmt-color-swatch--reset {
2691
+ background: var(--color-surface-elevated) !important;
2692
+ border: 2px dashed var(--color-border-strong);
2693
+ display: flex;
2694
+ align-items: center;
2695
+ justify-content: center;
2696
+ font-size: 14px;
2697
+ font-weight: 700;
2698
+ color: var(--color-text-muted);
2699
+ }
2700
+
2701
+ .fmt-color-swatch--reset:hover {
2702
+ border-color: var(--color-error);
2703
+ color: var(--color-error);
2704
+ }
2705
+
2706
+ /* ── Item 10: Animated Theme Toggle ── */
2707
+ .theme-toggle-animated {
2708
+ display: flex;
2709
+ align-items: center;
2710
+ justify-content: center;
2711
+ width: 40px;
2712
+ height: 40px;
2713
+ border: none;
2714
+ border-radius: 50%;
2715
+ background: var(--color-surface-elevated);
2716
+ color: var(--color-text-secondary);
2717
+ cursor: pointer;
2718
+ transition: background 0.3s ease, transform 0.3s ease, color 0.3s ease;
2719
+ position: relative;
2720
+ overflow: hidden;
2721
+ }
2722
+
2723
+ .theme-toggle-animated:hover {
2724
+ background: var(--color-primary);
2725
+ color: #fff;
2726
+ transform: rotate(15deg);
2727
+ }
2728
+
2729
+ .theme-toggle-animated svg {
2730
+ transition: transform 0.4s ease, opacity 0.3s ease;
2731
+ }
2732
+
2733
+ .theme-toggle-animated .theme-icon-sun,
2734
+ .theme-toggle-animated .theme-icon-moon {
2735
+ position: absolute;
2736
+ transition: transform 0.4s ease, opacity 0.3s ease;
2737
+ }
2738
+
2739
+ [data-theme="dark"] .theme-icon-sun {
2740
+ transform: rotate(90deg) scale(0);
2741
+ opacity: 0;
2742
+ }
2743
+
2744
+ [data-theme="dark"] .theme-icon-moon {
2745
+ transform: rotate(0) scale(1);
2746
+ opacity: 1;
2747
+ }
2748
+
2749
+ [data-theme="light"] .theme-icon-moon {
2750
+ transform: rotate(-90deg) scale(0);
2751
+ opacity: 0;
2752
+ }
2753
+
2754
+ [data-theme="light"] .theme-icon-sun {
2755
+ transform: rotate(0) scale(1);
2756
+ opacity: 1;
2757
+ }
2758
+
2759
+ /* ── Item 11: Summary Mode Toggle ── */
2760
+ .summary-mode-toggle {
2761
+ display: flex;
2762
+ border: 1px solid var(--color-border);
2763
+ border-radius: 8px;
2764
+ overflow: hidden;
2765
+ margin-bottom: var(--spacing-md);
2766
+ }
2767
+
2768
+ .summary-mode-btn {
2769
+ flex: 1;
2770
+ padding: 8px 12px;
2771
+ border: none;
2772
+ background: transparent;
2773
+ color: var(--color-text-secondary);
2774
+ font-family: inherit;
2775
+ font-size: var(--font-size-caption);
2776
+ font-weight: var(--font-weight-semibold);
2777
+ cursor: pointer;
2778
+ transition: all 0.2s ease;
2779
+ display: flex;
2780
+ align-items: center;
2781
+ justify-content: center;
2782
+ gap: 6px;
2783
+ }
2784
+
2785
+ .summary-mode-btn.active {
2786
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
2787
+ color: #fff;
2788
+ }
2789
+
2790
+ .summary-mode-btn:hover:not(.active) {
2791
+ background: var(--color-surface-elevated);
2792
+ }
2793
+
2794
+ /* ── Item 12: Print Styles ── */
2795
+ @media print {
2796
+ body * {
2797
+ visibility: hidden;
2798
+ }
2799
+
2800
+ #editor-container,
2801
+ #editor-container * {
2802
+ visibility: visible;
2803
+ }
2804
+
2805
+ #editor-container {
2806
+ position: absolute;
2807
+ top: 0;
2808
+ left: 0;
2809
+ right: 0;
2810
+ width: 100%;
2811
+ min-height: auto;
2812
+ padding: 2cm;
2813
+ font-size: 14pt;
2814
+ line-height: 2;
2815
+ color: #000;
2816
+ background: #fff;
2817
+ border: none;
2818
+ box-shadow: none;
2819
+ }
2820
+
2821
+ .spelling-error,
2822
+ .grammar-error,
2823
+ .punctuation-suggestion {
2824
+ border: none;
2825
+ background: transparent;
2826
+ text-decoration: none;
2827
+ }
2828
+
2829
+ .site-nav,
2830
+ .format-toolbar,
2831
+ .editor-toolbar,
2832
+ .editor-footer,
2833
+ .sidebar-panel,
2834
+ .docs-sidebar,
2835
+ .bottom-sheet,
2836
+ .suggestion-popover,
2837
+ #analyzing-indicator {
2838
+ display: none !important;
2839
+ }
2840
+ }
2841
+
2842
+ /* ── Custom Range Slider ── */
2843
+ input[type="range"] {
2844
+ -webkit-appearance: none;
2845
+ appearance: none;
2846
+ width: 100%;
2847
+ height: 6px;
2848
+ border-radius: 3px;
2849
+ background: var(--color-border);
2850
+ outline: none;
2851
+ cursor: pointer;
2852
+ }
2853
+
2854
+ input[type="range"]::-webkit-slider-thumb {
2855
+ -webkit-appearance: none;
2856
+ appearance: none;
2857
+ width: 20px;
2858
+ height: 20px;
2859
+ border-radius: 50%;
2860
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
2861
+ cursor: pointer;
2862
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
2863
+ transition: transform 0.15s ease;
2864
+ }
2865
+
2866
+ input[type="range"]::-webkit-slider-thumb:hover {
2867
+ transform: scale(1.2);
2868
+ }
2869
+
2870
+ input[type="range"]::-moz-range-thumb {
2871
+ width: 20px;
2872
+ height: 20px;
2873
+ border-radius: 50%;
2874
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
2875
+ cursor: pointer;
2876
+ border: none;
2877
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
2878
+ }
2879
+
2880
+ /* ── Toast Notifications ── */
2881
+ .toast-container {
2882
+ position: fixed;
2883
+ bottom: 24px;
2884
+ left: 50%;
2885
+ transform: translateX(-50%);
2886
+ z-index: 10000;
2887
+ display: flex;
2888
+ flex-direction: column;
2889
+ gap: 8px;
2890
+ align-items: center;
2891
+ pointer-events: none;
2892
+ }
2893
+
2894
+ .toast {
2895
+ padding: 12px 24px;
2896
+ border-radius: 12px;
2897
+ background: var(--color-surface);
2898
+ color: var(--color-text-primary);
2899
+ border: 1px solid var(--color-border);
2900
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25);
2901
+ font-size: var(--font-size-sm);
2902
+ font-weight: var(--font-weight-semibold);
2903
+ font-family: inherit;
2904
+ display: flex;
2905
+ align-items: center;
2906
+ gap: 8px;
2907
+ pointer-events: auto;
2908
+ animation: toast-in 0.3s ease forwards;
2909
+ }
2910
+
2911
+ .toast.toast-out {
2912
+ animation: toast-out 0.25s ease forwards;
2913
+ }
2914
+
2915
+ .toast--success {
2916
+ border-color: rgba(34, 197, 94, 0.4);
2917
+ }
2918
+
2919
+ .toast--error {
2920
+ border-color: rgba(239, 68, 68, 0.4);
2921
+ }
2922
+
2923
+ @keyframes toast-in {
2924
+ from {
2925
+ opacity: 0;
2926
+ transform: translateY(16px);
2927
+ }
2928
+
2929
+ to {
2930
+ opacity: 1;
2931
+ transform: translateY(0);
2932
+ }
2933
+ }
2934
+
2935
+ @keyframes toast-out {
2936
+ from {
2937
+ opacity: 1;
2938
+ transform: translateY(0);
2939
+ }
2940
+
2941
+ to {
2942
+ opacity: 0;
2943
+ transform: translateY(16px);
2944
+ }
2945
+ }
2946
+
2947
+ /* ── Scroll to Top ── */
2948
+ .scroll-top-btn {
2949
+ position: fixed;
2950
+ bottom: 24px;
2951
+ left: 24px;
2952
+ width: 44px;
2953
+ height: 44px;
2954
+ border-radius: 50%;
2955
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
2956
+ color: white;
2957
+ border: none;
2958
+ cursor: pointer;
2959
+ display: flex;
2960
+ align-items: center;
2961
+ justify-content: center;
2962
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
2963
+ opacity: 0;
2964
+ transform: translateY(16px);
2965
+ transition: opacity 0.3s ease, transform 0.3s ease;
2966
+ z-index: 100;
2967
+ pointer-events: none;
2968
+ }
2969
+
2970
+ .scroll-top-btn.visible {
2971
+ opacity: 1;
2972
+ transform: translateY(0);
2973
+ pointer-events: auto;
2974
+ }
2975
+
2976
+ .scroll-top-btn:hover {
2977
+ transform: translateY(-2px);
2978
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
2979
+ }
2980
+
2981
+ /* ── Loading Skeleton ── */
2982
+ .skeleton {
2983
+ background: linear-gradient(90deg, var(--color-border) 25%, rgba(255, 255, 255, 0.08) 50%, var(--color-border) 75%);
2984
+ background-size: 200% 100%;
2985
+ animation: skeleton-shimmer 1.5s ease infinite;
2986
+ border-radius: 8px;
2987
+ }
2988
+
2989
+ .skeleton-line {
2990
+ height: 14px;
2991
+ margin-bottom: 10px;
2992
+ border-radius: 6px;
2993
+ }
2994
+
2995
+ .skeleton-line:last-child {
2996
+ width: 60%;
2997
+ }
2998
+
2999
+ @keyframes skeleton-shimmer {
3000
+ 0% {
3001
+ background-position: 200% 0;
3002
+ }
3003
+
3004
+ 100% {
3005
+ background-position: -200% 0;
3006
+ }
3007
+ }
3008
+
3009
+ /* ── Word Count Goal ── */
3010
+ .word-goal-badge {
3011
+ display: inline-block;
3012
+ margin-right: 6px;
3013
+ padding: 1px 8px;
3014
+ border-radius: 12px;
3015
+ font-size: 11px;
3016
+ font-weight: 700;
3017
+ background: rgba(107, 163, 224, 0.15);
3018
+ color: var(--primary-color);
3019
+ transition: all 0.3s;
3020
+ }
3021
+
3022
+ .word-goal-badge.goal-reached {
3023
+ background: rgba(34, 197, 94, 0.15);
3024
+ color: #22c55e;
3025
+ }
3026
+
3027
+ /* ── Window Dots (macOS style — decorative only) ── */
3028
+ .window-dots {
3029
+ display: flex;
3030
+ align-items: center;
3031
+ gap: 5px;
3032
+ }
3033
+
3034
+ .window-dots .dot {
3035
+ width: 10px;
3036
+ height: 10px;
3037
+ border-radius: 50%;
3038
+ display: inline-block;
3039
+ opacity: 0.8;
3040
+ }
3041
+
3042
+ .window-dots .dot--red {
3043
+ background: #ef4444;
3044
+ }
3045
+
3046
+ .window-dots .dot--yellow {
3047
+ background: #eab308;
3048
+ }
3049
+
3050
+ .window-dots .dot--green {
3051
+ background: #22c55e;
3052
+ }
3053
+
3054
+ /* ── Fix #5: Punctuation highlight — insertion marker ── */
3055
+ .punctuation-suggestion {
3056
+ background: transparent !important;
3057
+ border-bottom: none !important;
3058
+ border-left: 2.5px solid var(--highlight-punctuation-border);
3059
+ padding: 0 1px;
3060
+ border-radius: 0;
3061
+ animation: punc-blink 1.2s ease-in-out infinite;
3062
+ }
3063
+
3064
+ @keyframes punc-blink {
3065
+
3066
+ 0%,
3067
+ 100% {
3068
+ border-left-color: var(--highlight-punctuation-border);
3069
+ }
3070
+
3071
+ 50% {
3072
+ border-left-color: transparent;
3073
+ }
3074
+ }
3075
+
3076
+ /* ── Fix #6: Document title truncation ── */
3077
+ .doc-current-title {
3078
+ max-width: 200px;
3079
+ overflow: hidden;
3080
+ text-overflow: ellipsis;
3081
+ white-space: nowrap;
3082
+ display: inline-block;
3083
+ vertical-align: middle;
3084
+ }
3085
+
3086
+ /* ── Fix #8: Editor placeholder alignment (Removed hack) ── */
3087
+
3088
+ /* ── Fix #11: Pricing cards equal heights ── */
3089
+ #page-pricing .grid>div {
3090
+ display: flex;
3091
+ flex-direction: column;
3092
+ }
3093
+
3094
+ #page-pricing .grid>div>ul {
3095
+ flex: 1;
3096
+ }
3097
+
3098
+ /* ── Dots: decorative with hover animation ── */
3099
+ .window-dots .dot {
3100
+ cursor: default;
3101
+ transition: transform 0.3s ease, filter 0.3s ease, box-shadow 0.3s ease;
3102
+ }
3103
+
3104
+ .window-dots:hover .dot--red {
3105
+ transform: scale(1.25);
3106
+ box-shadow: 0 0 8px rgba(239, 68, 68, 0.5);
3107
+ }
3108
+
3109
+ .window-dots:hover .dot--yellow {
3110
+ transform: scale(1.25);
3111
+ box-shadow: 0 0 8px rgba(234, 179, 8, 0.5);
3112
+ transition-delay: 0.05s;
3113
+ }
3114
+
3115
+ .window-dots:hover .dot--green {
3116
+ transform: scale(1.25);
3117
+ box-shadow: 0 0 8px rgba(34, 197, 94, 0.5);
3118
+ transition-delay: 0.1s;
3119
+ }
3120
+
3121
+ /* ── Fix #17: Traffic light actions ── */
3122
+ .sidebar-desktop.collapsed {
3123
+ display: none !important;
3124
+ }
3125
+
3126
+ .editor-layout.editor-fullscreen {
3127
+ grid-template-columns: 1fr !important;
3128
+ }
3129
+
3130
+ .editor-layout.editor-fullscreen .sidebar-panel.sidebar-desktop,
3131
+ .editor-layout.editor-fullscreen .docs-panel,
3132
+ .editor-layout.editor-fullscreen .docs-panel-desktop {
3133
+ display: none !important;
3134
+ }
3135
+
3136
+ /* ── Fix #20: Light mode improvements ── */
3137
+ [data-theme="light"] .fmt-btn {
3138
+ color: #3A424E;
3139
+ background: rgba(26, 29, 33, 0.04);
3140
+ }
3141
+
3142
+ [data-theme="light"] .fmt-btn:hover {
3143
+ background: rgba(26, 29, 33, 0.1);
3144
+ color: #1A1D21;
3145
+ }
3146
+
3147
+ [data-theme="light"] .fmt-btn.fmt-active {
3148
+ background: rgba(43, 108, 184, 0.14);
3149
+ color: #2B6CB8;
3150
+ }
3151
+
3152
+ [data-theme="light"] .format-toolbar {
3153
+ background: #FAF9F6;
3154
+ border-bottom-color: rgba(26, 29, 33, 0.12);
3155
+ }
3156
+
3157
+ [data-theme="light"] .surface-card {
3158
+ box-shadow: 0 2px 8px rgba(26, 29, 33, 0.06);
3159
+ border: 1px solid rgba(26, 29, 33, 0.08);
3160
+ }
3161
+
3162
+ [data-theme="light"] .editor-tab {
3163
+ color: #5A6472;
3164
+ }
3165
+
3166
+ [data-theme="light"] .editor-tab:hover {
3167
+ color: #1A1D21;
3168
+ background: rgba(26, 29, 33, 0.06);
3169
+ }
3170
+
3171
+ [data-theme="light"] .editor-tab.active {
3172
+ color: #fff !important;
3173
+ background: linear-gradient(135deg, #4A8FD4, #7C6BC4);
3174
+ box-shadow: 0 2px 8px rgba(74, 143, 212, 0.25);
3175
+ }
3176
+
3177
+ [data-theme="light"] .stat-item {
3178
+ color: #3A424E;
3179
+ opacity: 1;
3180
+ }
3181
+
3182
+ [data-theme="light"] .scroll-top-btn {
3183
+ box-shadow: 0 4px 16px rgba(26, 29, 33, 0.15);
3184
+ }
3185
+
3186
+ /* ═══════════════════════════════════════════════════════════════════
3187
+ NLP-4: AutoComplete — Ghost Text + Dropdown
3188
+ COMPLETELY INDEPENDENT from correction pipeline highlights.
3189
+ ═══════════════════════════════════════════════════════════════════ */
3190
+
3191
+ /* ── Ghost Text Overlay ── */
3192
+ #autocomplete-ghost {
3193
+ position: absolute;
3194
+ pointer-events: none;
3195
+ color: var(--color-text-muted, #6b7280);
3196
+ opacity: 0.45;
3197
+ font-family: inherit;
3198
+ font-size: inherit;
3199
+ line-height: inherit;
3200
+ z-index: 5;
3201
+ white-space: pre;
3202
+ direction: rtl;
3203
+ display: none;
3204
+ user-select: none;
3205
+ -webkit-user-select: none;
3206
+ }
3207
+
3208
+ /* ── Dropdown ── */
3209
+ #autocomplete-dropdown {
3210
+ position: fixed;
3211
+ background: var(--color-surface, #1a1d21);
3212
+ border: 1px solid var(--color-border, rgba(255, 255, 255, 0.1));
3213
+ border-radius: 10px;
3214
+ box-shadow:
3215
+ 0 4px 24px rgba(0, 0, 0, 0.25),
3216
+ 0 0 0 1px rgba(255, 255, 255, 0.05) inset;
3217
+ z-index: 9999;
3218
+ max-height: 220px;
3219
+ overflow-y: auto;
3220
+ direction: rtl;
3221
+ min-width: 160px;
3222
+ padding: 4px;
3223
+ backdrop-filter: blur(12px);
3224
+ -webkit-backdrop-filter: blur(12px);
3225
+ animation: ac-dropdown-in 0.15s ease;
3226
+ }
3227
+
3228
+ @keyframes ac-dropdown-in {
3229
+ from {
3230
+ opacity: 0;
3231
+ transform: translateY(-4px);
3232
+ }
3233
+
3234
+ to {
3235
+ opacity: 1;
3236
+ transform: translateY(0);
3237
+ }
3238
+ }
3239
+
3240
+ /* ── Dropdown Items ── */
3241
+ .ac-dropdown-item {
3242
+ padding: 8px 14px;
3243
+ font-size: 0.95rem;
3244
+ color: var(--color-text-primary, #e5e7eb);
3245
+ cursor: pointer;
3246
+ border-radius: 7px;
3247
+ transition: background 0.12s ease, color 0.12s ease;
3248
+ direction: rtl;
3249
+ text-align: right;
3250
+ font-family: inherit;
3251
+ line-height: 1.5;
3252
+ }
3253
+
3254
+ .ac-dropdown-item:hover,
3255
+ .ac-dropdown-item.ac-selected {
3256
+ background: linear-gradient(135deg,
3257
+ rgba(107, 163, 224, 0.15),
3258
+ rgba(160, 131, 237, 0.12));
3259
+ color: var(--color-primary, #6ba3e0);
3260
+ }
3261
+
3262
+ .ac-dropdown-item.ac-selected {
3263
+ font-weight: 600;
3264
+ }
3265
+
3266
+ /* ── Scrollbar ── */
3267
+ #autocomplete-dropdown::-webkit-scrollbar {
3268
+ width: 4px;
3269
+ }
3270
+
3271
+ #autocomplete-dropdown::-webkit-scrollbar-track {
3272
+ background: transparent;
3273
+ }
3274
+
3275
+ #autocomplete-dropdown::-webkit-scrollbar-thumb {
3276
+ background: rgba(255, 255, 255, 0.12);
3277
+ border-radius: 2px;
3278
+ }
3279
+
3280
+ /* ── Light theme overrides ── */
3281
+ [data-theme="light"] #autocomplete-ghost {
3282
+ color: #9ca3af;
3283
+ opacity: 0.5;
3284
+ }
3285
+
3286
+ [data-theme="light"] #autocomplete-dropdown {
3287
+ background: #ffffff;
3288
+ border-color: rgba(0, 0, 0, 0.1);
3289
+ box-shadow:
3290
+ 0 4px 24px rgba(0, 0, 0, 0.12),
3291
+ 0 0 0 1px rgba(0, 0, 0, 0.04) inset;
3292
+ }
3293
+
3294
+ [data-theme="light"] .ac-dropdown-item {
3295
+ color: #374151;
3296
+ }
3297
+
3298
+ [data-theme="light"] .ac-dropdown-item:hover,
3299
+ [data-theme="light"] .ac-dropdown-item.ac-selected {
3300
+ background: rgba(107, 163, 224, 0.1);
3301
+ color: #2563eb;
3302
+ }
3303
+
3304
+ /* ── Print: hide autocomplete ── */
3305
+ @media print {
3306
+
3307
+ #autocomplete-ghost,
3308
+ #autocomplete-dropdown {
3309
+ display: none !important;
3310
+ }
3311
+ }
3312
+
3313
+ /* ── Quran Verification Modal ── */
3314
+ .quran-modal {
3315
+ position: fixed;
3316
+ inset: 0;
3317
+ z-index: 1000;
3318
+ display: flex;
3319
+ align-items: center;
3320
+ justify-content: center;
3321
+ padding: 1rem;
3322
+ }
3323
+
3324
+ .quran-modal.is-hidden {
3325
+ display: none;
3326
+ }
3327
+
3328
+ /* Quran applied text — protected from analysis */
3329
+ .quran-applied {
3330
+ display: inline;
3331
+ background: rgba(6, 182, 212, 0.1);
3332
+ border-bottom: 2px solid rgba(6, 182, 212, 0.4);
3333
+ border-radius: 4px;
3334
+ padding: 1px 4px;
3335
+ cursor: default;
3336
+ user-select: text;
3337
+ }
3338
+
3339
+ .quran-applied .spelling-error,
3340
+ .quran-applied .grammar-error,
3341
+ .quran-applied .punctuation-suggestion {
3342
+ text-decoration: none !important;
3343
+ border-bottom: none !important;
3344
+ background: none !important;
3345
+ cursor: default !important;
3346
+ }
3347
+
3348
+ .quran-ref-inline {
3349
+ font-size: 0.72em;
3350
+ opacity: 0.6;
3351
+ font-weight: 600;
3352
+ margin-right: 4px;
3353
+ color: #06b6d4;
3354
+ }
3355
+
3356
+ .quran-modal-backdrop {
3357
+ position: absolute;
3358
+ inset: 0;
3359
+ background: rgba(0, 0, 0, 0.6);
3360
+ backdrop-filter: blur(6px);
3361
+ -webkit-backdrop-filter: blur(6px);
3362
+ }
3363
+
3364
+ .quran-modal-panel {
3365
+ position: relative;
3366
+ width: 100%;
3367
+ max-width: 580px;
3368
+ max-height: 85vh;
3369
+ overflow-y: auto;
3370
+ background: var(--color-surface);
3371
+ border-radius: 1.5rem;
3372
+ border: 1px solid var(--color-border);
3373
+ padding: 1.5rem;
3374
+ box-shadow: 0 25px 60px rgba(0, 0, 0, 0.35);
3375
+ animation: quranModalIn 0.25s ease-out;
3376
+ }
3377
+
3378
+ @keyframes quranModalIn {
3379
+ from {
3380
+ opacity: 0;
3381
+ transform: scale(0.95) translateY(10px);
3382
+ }
3383
+
3384
+ to {
3385
+ opacity: 1;
3386
+ transform: scale(1) translateY(0);
3387
+ }
3388
+ }
3389
+
3390
+ .quran-result-card {
3391
+ background: rgba(6, 182, 212, 0.08);
3392
+ border-right: 4px solid #06b6d4;
3393
+ border-radius: 0.75rem;
3394
+ padding: 1.25rem;
3395
+ }
3396
+
3397
+ .quran-uthmani {
3398
+ font-family: 'Amiri Quran', 'Amiri', 'Traditional Arabic', 'Scheherazade New', serif;
3399
+ font-size: 26px;
3400
+ line-height: 2.4;
3401
+ color: var(--color-text-primary);
3402
+ text-align: center;
3403
+ direction: rtl;
3404
+ }
3405
+
3406
+ .quran-reference {
3407
+ color: var(--text-secondary);
3408
+ font-size: 14px;
3409
+ text-align: center;
3410
+ margin-top: 8px;
3411
+ font-weight: 600;
3412
+ }
3413
+
3414
+ .quran-apply-btn {
3415
+ padding: 6px 16px;
3416
+ border-radius: 8px;
3417
+ border: none;
3418
+ background: linear-gradient(135deg, #06b6d4, #0891b2);
3419
+ color: #fff;
3420
+ font-size: 13px;
3421
+ font-weight: 600;
3422
+ font-family: inherit;
3423
+ cursor: pointer;
3424
+ transition: all 0.2s;
3425
+ white-space: nowrap;
3426
+ }
3427
+
3428
+ .quran-apply-btn:hover {
3429
+ transform: scale(1.05);
3430
+ box-shadow: 0 4px 12px rgba(6, 182, 212, 0.35);
3431
+ }
3432
+
3433
+ .quran-apply-btn.is-hidden {
3434
+ display: none;
3435
+ }
3436
+
3437
+ .quran-copy-btn {
3438
+ padding: 6px 10px;
3439
+ border-radius: 8px;
3440
+ border: 1px solid rgba(6, 182, 212, 0.3);
3441
+ background: rgba(6, 182, 212, 0.1);
3442
+ color: var(--color-text-primary);
3443
+ font-size: 16px;
3444
+ cursor: pointer;
3445
+ transition: all 0.2s;
3446
+ line-height: 1;
3447
+ }
3448
+
3449
+ .quran-copy-btn:hover {
3450
+ background: rgba(6, 182, 212, 0.2);
3451
+ transform: scale(1.05);
3452
+ }
3453
+
3454
+ .quran-copy-btn.is-hidden {
3455
+ display: none;
3456
+ }
3457
+
3458
+ .quran-lang-select {
3459
+ padding: 6px 12px;
3460
+ border-radius: 8px;
3461
+ border: 1px solid var(--color-border);
3462
+ background: var(--color-surface);
3463
+ color: var(--color-text-primary);
3464
+ font-size: 14px;
3465
+ font-family: inherit;
3466
+ cursor: pointer;
3467
+ transition: border-color 0.2s;
3468
+ }
3469
+
3470
+ .quran-lang-select:hover {
3471
+ border-color: #06b6d4;
3472
+ }
3473
+
3474
+ .quran-lang-select:focus {
3475
+ outline: none;
3476
+ border-color: #06b6d4;
3477
+ box-shadow: 0 0 0 3px rgba(6, 182, 212, 0.15);
3478
+ }
3479
+
3480
+ @media (max-width: 640px) {
3481
+ .quran-modal-panel {
3482
+ max-width: 100%;
3483
+ border-radius: 1.25rem;
3484
+ padding: 1.25rem;
3485
+ }
3486
+
3487
+ .quran-uthmani {
3488
+ font-size: 20px;
3489
+ }
3490
+ }
3491
+
3492
+ /* ═══════════════════════════════════════════
3493
+ UI/UX Overhaul — New Components
3494
+ ═══════════════════════════════════════════ */
3495
+
3496
+ /* ── Enhanced Nav Glassmorphism ── */
3497
+ .site-nav {
3498
+ backdrop-filter: blur(16px) saturate(180%);
3499
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
3500
+ }
3501
+
3502
+ /* ── Card hover glow ── */
3503
+ .card-hover {
3504
+ transition: transform var(--transition-base), box-shadow var(--transition-base);
3505
+ }
3506
+
3507
+ .card-hover:hover {
3508
+ transform: translateY(-3px);
3509
+ box-shadow: var(--shadow-glow);
3510
+ }
3511
+
3512
+ /* ── Empty State Component ── */
3513
+ .empty-state {
3514
+ display: flex;
3515
+ flex-direction: column;
3516
+ align-items: center;
3517
+ justify-content: center;
3518
+ padding: 2.5rem 1.5rem;
3519
+ text-align: center;
3520
+ gap: 0.75rem;
3521
+ }
3522
+
3523
+ .empty-state__icon {
3524
+ width: 48px;
3525
+ height: 48px;
3526
+ border-radius: var(--radius-lg);
3527
+ display: flex;
3528
+ align-items: center;
3529
+ justify-content: center;
3530
+ background: var(--color-primary-subtle-bg);
3531
+ color: var(--color-primary);
3532
+ margin-bottom: 0.25rem;
3533
+ }
3534
+
3535
+ .empty-state__title {
3536
+ font-size: var(--font-size-body);
3537
+ font-weight: var(--font-weight-semibold);
3538
+ color: var(--color-text-primary);
3539
+ }
3540
+
3541
+ .empty-state__subtitle {
3542
+ font-size: var(--font-size-caption);
3543
+ color: var(--color-text-secondary);
3544
+ max-width: 280px;
3545
+ line-height: 1.6;
3546
+ }
3547
+
3548
+ /* ── Confirmation Dialog ── */
3549
+ .confirm-dialog-overlay {
3550
+ position: fixed;
3551
+ inset: 0;
3552
+ background: var(--color-overlay);
3553
+ z-index: 9999;
3554
+ display: flex;
3555
+ align-items: center;
3556
+ justify-content: center;
3557
+ animation: fadeIn 0.15s ease-out;
3558
+ }
3559
+
3560
+ .confirm-dialog {
3561
+ background: var(--color-surface);
3562
+ border: 1px solid var(--color-border-strong);
3563
+ border-radius: var(--radius-xl);
3564
+ padding: 2rem;
3565
+ max-width: 380px;
3566
+ width: 90%;
3567
+ box-shadow: var(--shadow-popover);
3568
+ text-align: center;
3569
+ animation: modalSlideUp 0.25s ease-out;
3570
+ }
3571
+
3572
+ .confirm-dialog__title {
3573
+ font-size: 1.125rem;
3574
+ font-weight: var(--font-weight-bold);
3575
+ margin-bottom: 0.5rem;
3576
+ }
3577
+
3578
+ .confirm-dialog__message {
3579
+ font-size: var(--font-size-caption);
3580
+ color: var(--color-text-secondary);
3581
+ margin-bottom: 1.5rem;
3582
+ line-height: 1.7;
3583
+ }
3584
+
3585
+ .confirm-dialog__actions {
3586
+ display: flex;
3587
+ gap: 0.75rem;
3588
+ justify-content: center;
3589
+ }
3590
+
3591
+ .confirm-dialog__btn {
3592
+ padding: 0.6rem 1.5rem;
3593
+ border-radius: var(--radius-md);
3594
+ font-size: var(--font-size-caption);
3595
+ font-weight: var(--font-weight-semibold);
3596
+ cursor: pointer;
3597
+ border: 1px solid var(--color-border-strong);
3598
+ background: var(--color-surface-elevated);
3599
+ color: var(--color-text-primary);
3600
+ transition: all var(--transition-fast);
3601
+ font-family: inherit;
3602
+ }
3603
+
3604
+ .confirm-dialog__btn:hover {
3605
+ background: var(--color-border);
3606
+ }
3607
+
3608
+ .confirm-dialog__btn--danger {
3609
+ background: var(--color-error);
3610
+ color: white;
3611
+ border-color: transparent;
3612
+ }
3613
+
3614
+ .confirm-dialog__btn--danger:hover {
3615
+ opacity: 0.9;
3616
+ }
3617
+
3618
+ /* ── Modal entrance animation ── */
3619
+ @keyframes modalSlideUp {
3620
+ from {
3621
+ opacity: 0;
3622
+ transform: translateY(16px) scale(0.97);
3623
+ }
3624
+
3625
+ to {
3626
+ opacity: 1;
3627
+ transform: translateY(0) scale(1);
3628
+ }
3629
+ }
3630
+
3631
+ .quran-modal-panel,
3632
+ .auth-gate-panel,
3633
+ .confirm-dialog {
3634
+ animation: modalSlideUp 0.25s ease-out;
3635
+ }
3636
+
3637
+ /* ── Toast with icons ── */
3638
+ .toast--success::before {
3639
+ content: '✓ ';
3640
+ }
3641
+
3642
+ .toast--error::before {
3643
+ content: '✕ ';
3644
+ }
3645
+
3646
+ .toast--warning::before {
3647
+ content: '⚠ ';
3648
+ }
3649
+
3650
+ /* ── Pricing card glow (active plan) ── */
3651
+ .pricing-glow {
3652
+ position: relative;
3653
+ }
3654
+
3655
+ .pricing-glow::before {
3656
+ content: '';
3657
+ position: absolute;
3658
+ inset: -2px;
3659
+ border-radius: inherit;
3660
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
3661
+ z-index: -1;
3662
+ opacity: 0.5;
3663
+ filter: blur(12px);
3664
+ animation: pricingPulse 3s ease-in-out infinite;
3665
+ }
3666
+
3667
+ @keyframes pricingPulse {
3668
+
3669
+ 0%,
3670
+ 100% {
3671
+ opacity: 0.3;
3672
+ }
3673
+
3674
+ 50% {
3675
+ opacity: 0.6;
3676
+ }
3677
+ }
3678
+
3679
+ /* ── Beta banner shimmer ── */
3680
+ @keyframes betaShimmer {
3681
+ 0% {
3682
+ background-position: -200% center;
3683
+ }
3684
+
3685
+ 100% {
3686
+ background-position: 200% center;
3687
+ }
3688
+ }
3689
+
3690
+ .beta-shimmer {
3691
+ background-size: 200% auto;
3692
+ background-image: linear-gradient(90deg,
3693
+ transparent 0%,
3694
+ rgba(107, 163, 224, 0.06) 40%,
3695
+ rgba(165, 148, 232, 0.08) 60%,
3696
+ transparent 100%);
3697
+ animation: betaShimmer 4s linear infinite;
3698
+ }
3699
+
3700
+ button:disabled,
3701
+ button[disabled] {
3702
+ opacity: 0.55;
3703
+ cursor: not-allowed;
3704
+ filter: grayscale(0.3);
3705
+ }
3706
+
3707
+ /* ── Nav bottom border glow on scroll ── */
3708
+ .site-nav.nav-scrolled {
3709
+ border-bottom: 1px solid var(--color-border);
3710
+ box-shadow: 0 1px 12px rgba(107, 163, 224, 0.08);
3711
+ }
3712
+
3713
+ /* ── Focus-visible ring for all interactive elements ── */
3714
+ button:focus-visible,
3715
+ a:focus-visible,
3716
+ input:focus-visible,
3717
+ select:focus-visible,
3718
+ [contenteditable]:focus-visible {
3719
+ outline: 2px solid var(--focus-ring);
3720
+ outline-offset: 2px;
3721
+ }
3722
+
3723
+ /* ── Floating Selection Toolbar ── */
3724
+ .selection-toolbar {
3725
+ position: absolute;
3726
+ z-index: 1100;
3727
+ display: flex;
3728
+ align-items: center;
3729
+ gap: 2px;
3730
+ padding: 4px 6px;
3731
+ border-radius: 12px;
3732
+ background: var(--color-surface-elevated);
3733
+ border: 1px solid var(--color-border-strong);
3734
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18), 0 0 0 1px rgba(255, 255, 255, 0.05);
3735
+ backdrop-filter: blur(16px);
3736
+ transform: translateX(-50%);
3737
+ animation: selbar-in 0.2s ease;
3738
+ pointer-events: auto;
3739
+ }
3740
+
3741
+ .selection-toolbar.is-hidden {
3742
+ display: none;
3743
+ }
3744
+
3745
+ @keyframes selbar-in {
3746
+ from {
3747
+ opacity: 0;
3748
+ transform: translateX(-50%) translateY(6px);
3749
+ }
3750
+
3751
+ to {
3752
+ opacity: 1;
3753
+ transform: translateX(-50%) translateY(0);
3754
+ }
3755
+ }
3756
+
3757
+ .sel-tool-btn {
3758
+ display: inline-flex;
3759
+ align-items: center;
3760
+ gap: 5px;
3761
+ padding: 6px 12px;
3762
+ border: none;
3763
+ border-radius: 8px;
3764
+ background: transparent;
3765
+ color: var(--color-text-secondary);
3766
+ font-family: inherit;
3767
+ font-size: 12px;
3768
+ font-weight: 600;
3769
+ cursor: pointer;
3770
+ transition: all 0.15s ease;
3771
+ white-space: nowrap;
3772
+ }
3773
+
3774
+ .sel-tool-btn:hover {
3775
+ background: var(--color-surface);
3776
+ color: var(--color-text-primary);
3777
+ }
3778
+
3779
+ .sel-tool-sep {
3780
+ width: 1px;
3781
+ height: 20px;
3782
+ background: var(--color-border);
3783
+ flex-shrink: 0;
3784
+ }
3785
+
3786
+ /* ── Summary Source Toggle ── */
3787
+ .summary-source-toggle {
3788
+ display: flex;
3789
+ gap: 0;
3790
+ border-radius: 10px;
3791
+ background: var(--color-surface-elevated);
3792
+ border: 1px solid var(--color-border);
3793
+ padding: 3px;
3794
+ overflow: hidden;
3795
+ }
3796
+
3797
+ .summary-source-btn {
3798
+ flex: 1;
3799
+ padding: 8px 16px;
3800
+ border: none;
3801
+ border-radius: 8px;
3802
+ background: transparent;
3803
+ color: var(--color-text-secondary);
3804
+ font-family: inherit;
3805
+ font-size: 13px;
3806
+ font-weight: 600;
3807
+ cursor: pointer;
3808
+ transition: all 0.2s ease;
3809
+ }
3810
+
3811
+ .summary-source-btn:hover {
3812
+ color: var(--color-text-primary);
3813
+ }
3814
+
3815
+ .summary-source-btn.active {
3816
+ background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
3817
+ color: var(--color-text-inverse);
3818
+ box-shadow: 0 2px 8px rgba(107, 163, 224, 0.25);
3819
+ }
3820
+
3821
+ /* ── Editor Tab Icons ── */
3822
+ .editor-tab svg {
3823
+ margin-left: 4px;
3824
+ opacity: 0.7;
3825
+ }
3826
+
3827
+ .editor-tab.active svg {
3828
+ opacity: 1;
3829
+ }
3830
+
3831
+ /* ── Error Badge on Tab ── */
3832
+ .tab-badge {
3833
+ display: inline-flex;
3834
+ align-items: center;
3835
+ justify-content: center;
3836
+ min-width: 18px;
3837
+ height: 18px;
3838
+ padding: 0 5px;
3839
+ border-radius: 10px;
3840
+ background: #ef4444;
3841
+ color: #fff;
3842
+ font-size: 10px;
3843
+ font-weight: 700;
3844
+ margin-inline-start: 6px;
3845
+ line-height: 1;
3846
+ animation: badgePulse 2s ease-in-out infinite;
3847
+ }
3848
+ @keyframes badgePulse {
3849
+ 0%, 100% { transform: scale(1); }
3850
+ 50% { transform: scale(1.1); }
3851
+ }
3852
+
3853
+ /* ── Find & Replace Bar ── */
3854
+ .find-replace-bar {
3855
+ padding: 8px 16px;
3856
+ background: var(--color-surface-elevated);
3857
+ border-bottom: 1px solid var(--color-border);
3858
+ display: flex;
3859
+ flex-direction: column;
3860
+ gap: 6px;
3861
+ }
3862
+ .find-replace-row {
3863
+ display: flex;
3864
+ align-items: center;
3865
+ gap: 6px;
3866
+ }
3867
+ .find-input {
3868
+ flex: 1;
3869
+ background: var(--color-bg);
3870
+ border: 1px solid var(--color-border);
3871
+ border-radius: 6px;
3872
+ padding: 6px 10px;
3873
+ color: var(--color-text-primary);
3874
+ font-size: 13px;
3875
+ font-family: inherit;
3876
+ outline: none;
3877
+ transition: border-color 0.2s;
3878
+ }
3879
+ .find-input:focus {
3880
+ border-color: var(--color-primary);
3881
+ }
3882
+ .find-count {
3883
+ font-size: 11px;
3884
+ color: var(--color-text-secondary);
3885
+ min-width: 35px;
3886
+ text-align: center;
3887
+ }
3888
+ .find-btn {
3889
+ background: var(--color-surface);
3890
+ border: 1px solid var(--color-border);
3891
+ border-radius: 5px;
3892
+ color: var(--color-text-secondary);
3893
+ padding: 4px 8px;
3894
+ cursor: pointer;
3895
+ font-size: 12px;
3896
+ transition: all 0.15s;
3897
+ font-family: inherit;
3898
+ }
3899
+ .find-btn:hover {
3900
+ background: var(--color-primary);
3901
+ color: #fff;
3902
+ border-color: var(--color-primary);
3903
+ }
3904
+
3905
+ /* ── Find Highlights ── */
3906
+ .find-highlight {
3907
+ background: rgba(255, 213, 79, 0.3);
3908
+ border-radius: 2px;
3909
+ }
3910
+ .find-highlight--active {
3911
+ background: rgba(255, 152, 0, 0.6);
3912
+ outline: 2px solid var(--color-primary);
3913
+ border-radius: 2px;
3914
+ }
3915
+
3916
+ body.focus-mode .main-nav,
3917
+ body.focus-mode .sidebar-panel,
3918
+ body.focus-mode .docs-panel,
3919
+ body.focus-mode .docs-panel-desktop {
3920
+ display: none !important;
3921
+ }
3922
+
3923
+ body.focus-mode .editor-footer {
3924
+ opacity: 0.2;
3925
+ transition: opacity 0.3s ease;
3926
+ }
3927
+
3928
+ body.focus-mode .editor-footer:hover {
3929
+ opacity: 1;
3930
+ }
3931
+
3932
+ body.focus-mode .editor-layout {
3933
+ grid-template-columns: 1fr !important;
3934
+ }
3935
+ body.focus-mode .format-toolbar {
3936
+ opacity: 0.3;
3937
+ transition: opacity 0.3s;
3938
+ }
3939
+ body.focus-mode .format-toolbar:hover {
3940
+ opacity: 1;
3941
+ }
3942
+ body.focus-mode .editor-surface {
3943
+ max-width: 900px;
3944
+ width: 100%;
3945
+ margin: 0 auto;
3946
+ }
3947
+
3948
+ /* ── Blockquote Styling in Editor ── */
3949
+ #editor-container blockquote {
3950
+ border-right: 4px solid var(--color-primary);
3951
+ margin: 8px 0;
3952
  padding: 8px 16px;
3953
  background: rgba(124, 131, 237, 0.08);
3954
  border-radius: 0 6px 6px 0;