Tamannathakur commited on
Commit
1537685
·
verified ·
1 Parent(s): e1b869a

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +30 -1215
style.css CHANGED
@@ -1,6 +1,4 @@
1
  body,
2
- html {
3
- margin: 0;body,
4
  html {
5
  margin: 0;
6
  padding: 0;
@@ -1216,1240 +1214,57 @@ p[data-testid="block-info"] {
1216
  padding: 10px !important;
1217
  }
1218
 
1219
- /* Remove purple outline from all focus states */
 
1220
  *:focus,
1221
  *:focus-visible,
 
 
1222
  button:focus,
 
 
 
1223
  input:focus,
 
 
1224
  textarea:focus,
 
 
1225
  select:focus,
 
1226
  .gr-button:focus,
 
1227
  .gr-textbox:focus,
 
1228
  .gr-tab:focus,
 
 
1229
  [role="tab"]:focus,
 
1230
  .floating-chat-btn:focus,
1231
  .chat-close-btn:focus,
1232
- .chat-popup-box *:focus {
 
 
1233
  outline: none !important;
1234
  box-shadow: none !important;
 
1235
  }
1236
 
1237
- /* Specifically target tab elements */
1238
- .gr-tab:focus-visible,
1239
- [role="tab"]:focus-visible {
1240
  outline: none !important;
1241
  box-shadow: none !important;
1242
- border-color: inherit !important;
1243
- }
1244
- padding: 0;
1245
- height: 100%;
1246
- overflow-x: hidden;
1247
- }
1248
-
1249
-
1250
- body::before {
1251
- content: '';
1252
- position: fixed;
1253
- top: 0;
1254
- left: 0;
1255
- right: 0;
1256
- bottom: 0;
1257
- background-image:
1258
- linear-gradient(rgba(59, 130, 246, 0.03) 1px, transparent 1px),
1259
- linear-gradient(90deg, rgba(59, 130, 246, 0.03) 1px, transparent 1px);
1260
- background-size: 60px 60px;
1261
- pointer-events: none;
1262
- z-index: 0;
1263
- background:
1264
- radial-gradient(circle at 20% 15%, rgba(59, 130, 246, 0.12), transparent 40%),
1265
- radial-gradient(circle at 80% 25%, rgba(139, 92, 246, 0.1), transparent 45%),
1266
- radial-gradient(circle at 50% 70%, rgba(16, 185, 129, 0.08), transparent 50%),
1267
- radial-gradient(circle at 10% 85%, rgba(236, 72, 153, 0.08), transparent 45%),
1268
- linear-gradient(135deg, #0a0e27 0%, #1a1f3a 25%, #0f1629 50%, #1e2139 75%, #0d1425 100%) !important;
1269
- /* animation: gridScroll 30s linear infinite; */
1270
- }
1271
-
1272
- /* Hexagon pattern overlay */
1273
- body::after {
1274
- content: '';
1275
- position: fixed;
1276
- top: 0;
1277
- left: 0;
1278
- right: 0;
1279
- bottom: 0;
1280
- background-image:
1281
- repeating-linear-gradient(45deg, transparent, transparent 25px, rgba(174, 246, 59, 0.015) 35px, rgba(93, 205, 18, 0.015) 70px),
1282
- repeating-linear-gradient(-45deg, transparent, transparent 25px, rgba(139, 92, 246, 0.015) 35px, rgba(139, 92, 246, 0.015) 70px);
1283
- pointer-events: none;
1284
- z-index: 0;
1285
- opacity: 0.6;
1286
- }
1287
-
1288
- /* ------------------------- */
1289
- /* FORCE GRADIO TO NOT WRAP */
1290
- /* ------------------------- */
1291
-
1292
- /* Outer Gradio container */
1293
- .gradio-container,
1294
- .gradio-container .wrap,
1295
- .gradio-container .contain {
1296
- display: flex !important;
1297
- flex-wrap: nowrap !important;
1298
- justify-content: space-between !important;
1299
- align-items: stretch !important;
1300
- }
1301
-
1302
- /* Prevent Gradio auto-min-width */
1303
- .gradio-container .contain>div[id^="component-"] {
1304
- min-width: auto !important;
1305
- flex: 1 !important;
1306
- }
1307
-
1308
- /* Space between cards */
1309
- .gradio-container .contain>div[id^="component-"]>.gr-group,
1310
- .gradio-container .contain>div[id^="component-"]>div {
1311
- margin: 10px 15px !important;
1312
- }
1313
-
1314
-
1315
- /* .gradio-container {
1316
- max-width: 100% !important;
1317
- width: 100% !important;
1318
- margin: 0 !important;
1319
- padding: 0 !important;
1320
- background-color: #17203D !important;
1321
- min-height: 100vh;
1322
- } */
1323
- .header-box {
1324
- position: relative;
1325
- padding: 0px 30px;
1326
- background:
1327
- radial-gradient(circle at 20% 10%, rgba(255, 255, 255, 0.25), transparent 55%),
1328
- radial-gradient(circle at 85% 20%, rgba(45, 135, 255, 0.22), transparent 70%),
1329
- linear-gradient(135deg, #0e1a2b, #0f1032, #03011a);
1330
- color: white;
1331
- border-bottom-left-radius: 40px;
1332
- border-bottom-right-radius: 40px;
1333
- box-shadow: 0 50px 90px -20px rgba(0, 0, 0, 0.6);
1334
-
1335
- display: flex;
1336
- justify-content: space-;
1337
- align-items: center;
1338
- /* width:100%; */
1339
-
1340
- }
1341
-
1342
- .header-title {
1343
- font-size: 28px;
1344
- font-weight: bold;
1345
- color: white;
1346
- margin: 0;
1347
- text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
1348
- }
1349
-
1350
- .compact-section {
1351
- background-color: rgba(255, 255, 255, 0.95);
1352
- padding: 12px;
1353
- border-radius: 10px;
1354
- margin: 8px;
1355
- height: calc(100vh - 180px);
1356
- overflow-y: auto;
1357
- }
1358
-
1359
- .card-box {
1360
- background-color: rgba(255, 255, 255, 0.95);
1361
- padding: 15px;
1362
- border-radius: 12px;
1363
- margin: 10px;
1364
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
1365
- border: 1px solid #e0e0e0;
1366
  }
1367
 
1368
- /* Compact Upload Box */
1369
- .compact-upload-box {
1370
- background-color: rgba(255, 255, 255, 0.95);
1371
- padding: 12px;
1372
- border-radius: 12px;
1373
- margin: 10px;
1374
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
1375
- border: 1px solid #e0e0e0;
1376
- max-width: 280px;
1377
- }
1378
-
1379
- .compact-upload-box .upload-container {
1380
- height: 180px !important;
1381
- min-height: 180px !important;
1382
- }
1383
-
1384
- .compact-upload-box input[type="file"] {
1385
- height: 140px !important;
1386
- min-height: 140px !important;
1387
- }
1388
-
1389
- .how-to-use h3,
1390
- .how-to-use li {
1391
- color: white;
1392
- }
1393
-
1394
- .how-to-use {
1395
- background: rgba(255, 255, 255, 0.12);
1396
- /* frosted glass transparency */
1397
- backdrop-filter: blur(12px) saturate(160%);
1398
- /* glass blur effect */
1399
- -webkit-backdrop-filter: blur(12px) saturate(160%);
1400
-
1401
- border-radius: 18px;
1402
- border: 1px solid rgba(255, 255, 255, 0.25);
1403
-
1404
- margin-bottom: 20px;
1405
- max-height: 196px;
1406
- height: 100%;
1407
-
1408
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
1409
- /* soft floating shadow */
1410
-
1411
- transition: all 0.3s ease;
1412
- }
1413
-
1414
- .how-to-use:hover {
1415
- background: rgba(255, 255, 255, 0.18);
1416
- border-color: rgba(255, 255, 255, 0.4);
1417
- transform: translateY(-3px);
1418
- }
1419
-
1420
- .upload-card {
1421
- background: rgba(255, 255, 255, 0.12);
1422
- backdrop-filter: blur(14px) saturate(160%);
1423
- -webkit-backdrop-filter: blur(14px) saturate(160%);
1424
- max-height: 100px;
1425
- height: 100%;
1426
- padding: 22px;
1427
- border-radius: 18px;
1428
- border: 1px solid rgba(255, 255, 255, 0.25);
1429
- box-shadow: 0 6px 26px rgba(0, 0, 0, 0.25);
1430
- transition: 0.3s ease;
1431
- }
1432
-
1433
- .first-row {
1434
- max-height: 250px;
1435
- height: 100%;
1436
- }
1437
-
1438
- .upload-card:hover {
1439
- background: rgba(255, 255, 255, 0.18);
1440
- border-color: rgba(255, 255, 255, 0.35);
1441
- }
1442
-
1443
-
1444
-
1445
- /* Floating Ask Me Button */
1446
- button.floating-chat-btn,
1447
- .floating-chat-btn {
1448
- position: fixed !important;
1449
- bottom: 30px !important;
1450
- right: 30px !important;
1451
- z-index: 1000 !important;
1452
- width: 65px !important;
1453
- height: 65px !important;
1454
- min-width: 65px !important;
1455
- min-height: 65px !important;
1456
- max-width: 65px !important;
1457
- max-height: 65px !important;
1458
- border-radius: 50% !important;
1459
- padding: 0 !important;
1460
- margin: 0 !important;
1461
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
1462
- border: 3px solid rgba(255, 255, 255, 0.3) !important;
1463
- box-shadow: 0 8px 24px rgba(102, 126, 234, 0.6) !important;
1464
- cursor: pointer !important;
1465
- font-size: 32px !important;
1466
- line-height: 1 !important;
1467
- transition: all 0.3s ease !important;
1468
- display: flex !important;
1469
- align-items: center !important;
1470
- justify-content: center !important;
1471
- }
1472
-
1473
- button.floating-chat-btn:hover,
1474
- .floating-chat-btn:hover {
1475
- transform: scale(1.15) rotate(5deg) !important;
1476
- box-shadow: 0 10px 30px rgba(102, 126, 234, 0.8) !important;
1477
- border-color: rgba(255, 255, 255, 0.5) !important;
1478
- }
1479
-
1480
- /* Chat Popup Container */
1481
- .chat-popup-box {
1482
- position: fixed !important;
1483
- bottom: 110px !important;
1484
- right: 30px !important;
1485
- width: 480px !important;
1486
- max-height: 75vh !important;
1487
- z-index: 999 !important;
1488
- background: linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(250, 250, 255, 0.98) 100%) !important;
1489
- border-radius: 20px !important;
1490
- box-shadow: 0 12px 45px rgba(0, 0, 0, 0.35), 0 0 0 1px rgba(102, 126, 234, 0.2) !important;
1491
- overflow: hidden !important;
1492
- animation: slideInUp 0.3s ease-out !important;
1493
  }
1494
 
1495
- @keyframes slideInUp {
1496
- from {
1497
- opacity: 0;
1498
- transform: translateY(20px);
1499
- }
1500
-
1501
- to {
1502
- opacity: 1;
1503
- transform: translateY(0);
1504
- }
1505
- }
1506
-
1507
- /* Chat Header */
1508
- .chat-header {
1509
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
1510
- padding: 20px 24px !important;
1511
- color: white !important;
1512
- border-radius: 20px 20px 0 0 !important;
1513
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) !important;
1514
- }
1515
-
1516
- .chat-header h3 {
1517
- margin: 0 !important;
1518
- font-size: 20px !important;
1519
- font-weight: 600 !important;
1520
- color: white !important;
1521
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) !important;
1522
- }
1523
-
1524
- /* Chat Content */
1525
- .chat-content-area {
1526
- padding: 20px !important;
1527
- max-height: calc(75vh - 80px) !important;
1528
- overflow-y: auto !important;
1529
- background: transparent !important;
1530
- pointer-events: auto !important;
1531
- position: relative !important;
1532
- z-index: 1 !important;
1533
- }
1534
-
1535
- .chat-content-area>* {
1536
- margin-bottom: 15px !important;
1537
- }
1538
-
1539
- /* Sample Questions */
1540
- .sample-questions-box {
1541
- background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%) !important;
1542
- border-radius: 12px !important;
1543
- padding: 15px 18px !important;
1544
- margin-bottom: 18px !important;
1545
- border: 1px solid rgba(102, 126, 234, 0.15) !important;
1546
- }
1547
-
1548
- .sample-questions-box h4 {
1549
- margin: 0 0 12px 0 !important;
1550
- color: #333 !important;
1551
- font-size: 15px !important;
1552
- font-weight: 600 !important;
1553
- }
1554
-
1555
- .sample-q-text {
1556
- color: rgb(0, 0, 0) !important;
1557
- font-size: 13px !important;
1558
- margin: 0px !important;
1559
- line-height: 1.15 !important;
1560
- padding: 0px !important;
1561
- }
1562
-
1563
- .sample-q-text p {
1564
- color: rgb(0, 0, 0) !important;
1565
- margin: 0px !important;
1566
- padding: 0px !important;
1567
- }
1568
-
1569
- /* Question Input */
1570
- .question-input-box {
1571
- margin-top: 20px !important;
1572
- margin-bottom: 12px !important;
1573
- }
1574
-
1575
- .question-input-box h4 {
1576
- margin: 0 0 10px 0 !important;
1577
- color: #333 !important;
1578
- font-size: 15px !important;
1579
- font-weight: 600 !important;
1580
- }
1581
-
1582
- /* Minimal textbox styling - let Gradio handle rendering */
1583
- .chat-content-area .chat-question-input {
1584
- margin: 12px 0 !important;
1585
- }
1586
-
1587
- .chat-content-area textarea,
1588
- .chat-content-area input[type="text"] {
1589
- background: #ffffff !important;
1590
- border: 2px solid #667eea !important;
1591
- border-radius: 10px !important;
1592
- padding: 14px !important;
1593
- font-size: 14px !important;
1594
- }
1595
-
1596
- .chat-content-area textarea:focus,
1597
- .chat-content-area input:focus {
1598
- border-color: #764ba2 !important;
1599
- box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.15) !important;
1600
  outline: none !important;
1601
- }
1602
-
1603
-
1604
-
1605
- /* Submit Button in Chat */
1606
- .chat-submit-btn {
1607
- width: 100% !important;
1608
- padding: 14px !important;
1609
- margin: 15px 0 !important;
1610
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
1611
- border: none !important;
1612
- border-radius: 10px !important;
1613
- color: white !important;
1614
- font-size: 16px !important;
1615
- font-weight: 600 !important;
1616
- cursor: pointer !important;
1617
- transition: all 0.3s ease !important;
1618
- box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3) !important;
1619
- }
1620
-
1621
- .chat-submit-btn:hover {
1622
- transform: translateY(-2px) !important;
1623
- box-shadow: 0 6px 18px rgba(102, 126, 234, 0.5) !important;
1624
- }
1625
-
1626
-
1627
- /* Response Section */
1628
- .response-box {
1629
- margin-top: 20px !important;
1630
- border-top: 2px solid #e9ecef !important;
1631
- padding-top: 20px !important;
1632
- }
1633
-
1634
- .response-box h4 {
1635
- margin: 0 0 15px 0 !important;
1636
- color: #333 !important;
1637
- font-size: 15px !important;
1638
- font-weight: 600 !important;
1639
- }
1640
-
1641
- /* Tabs in Chat */
1642
- .chat-content-area .gr-tabs {
1643
- background: transparent !important;
1644
- border: none !important;
1645
- }
1646
-
1647
- .chat-content-area .gr-tab {
1648
- color: #555 !important;
1649
- background: #f8f9fa !important;
1650
- border: 1px solid #e9ecef !important;
1651
- border-radius: 8px 8px 0 0 !important;
1652
- padding: 10px 16px !important;
1653
- margin-right: 4px !important;
1654
- }
1655
-
1656
- .chat-content-area .gr-tab.selected {
1657
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
1658
- color: white !important;
1659
- border-color: #667eea !important;
1660
- }
1661
-
1662
- /* Output fields in chat */
1663
- .chat-content-area .gr-textbox,
1664
- .chat-content-area .gr-plot,
1665
- .chat-content-area .gr-dataframe {
1666
- background: #ffffff !important;
1667
- border: 1px solid #e9ecef !important;
1668
- border-radius: 10px !important;
1669
- padding: 12px !important;
1670
- }
1671
-
1672
- .chat-content-area .gr-textbox textarea {
1673
- color: #333 !important;
1674
- background: #f8f9fa !important;
1675
- border: 1px solid #e9ecef !important;
1676
- }
1677
-
1678
- /* Scrollbar for chat content */
1679
- .chat-content-area::-webkit-scrollbar {
1680
- width: 6px;
1681
- }
1682
-
1683
- .chat-content-area::-webkit-scrollbar-track {
1684
- background: rgba(0, 0, 0, 0.05);
1685
- border-radius: 10px;
1686
- }
1687
-
1688
- .chat-content-area::-webkit-scrollbar-thumb {
1689
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
1690
- border-radius: 10px;
1691
- }
1692
-
1693
- .chat-content-area::-webkit-scrollbar-thumb:hover {
1694
- background: linear-gradient(135deg, #764ba2 0%, #667eea 100%);
1695
- }
1696
-
1697
- /* ------------------------- */
1698
- /* FORCE GRADIO TO NOT WRAP */
1699
- /* ------------------------- */
1700
-
1701
-
1702
- .first-row,
1703
- .gr-row,
1704
- .gr-column {
1705
- display: flex !important;
1706
- flex-wrap: nowrap !important;
1707
- justify-content: space-between !important;
1708
- align-items: stretch !important;
1709
- }
1710
-
1711
- /* General card layout - VISIBLE BORDERS */
1712
- .upload-section,
1713
- .how-to-use,
1714
- .card-box,
1715
- .upload-card,
1716
- .gr-group,
1717
- .gr-column>.gr-group,
1718
- .gr-column>div.gr-group {
1719
- background: rgba(255, 255, 255, 0.03) !important;
1720
- backdrop-filter: blur(14px) saturate(160%) !important;
1721
- -webkit-backdrop-filter: blur(14px) saturate(160%) !important;
1722
- border-radius: 18px !important;
1723
- border: 3px solid rgba(255, 255, 255, 0.7) !important;
1724
- padding: 20px !important;
1725
- box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25) !important;
1726
- transition: 0.25s ease-in-out !important;
1727
- }
1728
-
1729
- /* Hover effect */
1730
- .upload-section:hover,
1731
- .how-to-use:hover,
1732
- .gr-group:hover {
1733
- transform: translateY(-4px) !important;
1734
- border-color: rgba(255, 255, 255, 0.7) !important;
1735
- background: rgba(255, 255, 255, 0.06) !important;
1736
- }
1737
-
1738
- /* REMOVE borders from specific sections */
1739
- .header-box,
1740
- .header-box * {
1741
- border: none !important;
1742
- }
1743
-
1744
- /* Remove borders from Sample Questions markdown sections */
1745
- .gr-markdown h3:contains("Sample Questions"),
1746
- .gr-markdown:has(h3) {
1747
- border: none !important;
1748
- }
1749
-
1750
- /* Remove borders from Analysis Results and related output sections */
1751
- [id*="output"],
1752
- [id*="answer"],
1753
- [id*="result"],
1754
- .gr-textbox,
1755
- .gr-plot,
1756
- .gr-dataframe {
1757
- border: 1px solid rgba(255, 255, 255, 0.1) !important;
1758
- }
1759
-
1760
- /* TARGET THE EXACT 3 BOXES BY ID - WHITE BORDERS ONLY */
1761
- #display-format-box,
1762
- #analysis-type-box,
1763
- #visualization-box {
1764
- border: 6px solid #FFFFFF !important;
1765
- border-radius: 18px !important;
1766
- padding: 20px !important;
1767
- }
1768
-
1769
- /* ------------------------- */
1770
- /* CARD SIZING & SPACING */
1771
- /* ------------------------- */
1772
-
1773
- .first-row>div,
1774
- .first-row>.gr-column,
1775
- .first-row>.gr-group {
1776
- flex: 1 !important;
1777
- margin: 10px 15px !important;
1778
- }
1779
-
1780
- /* Prevent shrinking */
1781
- .gr-group {
1782
- flex-shrink: 0 !important;
1783
- }
1784
-
1785
- /* Upload + Display + How-to-use row fixes */
1786
- .first-row {
1787
- margin-top: 20px !important;
1788
- padding: 0 25px !important;
1789
- margin-bottom: 80px !important;
1790
- min-height: 200px !important;
1791
- }
1792
-
1793
- /* Second row - fixed spacing */
1794
- .second-row {
1795
- margin-top: 80px !important;
1796
- padding: 0 25px !important;
1797
- clear: both !important;
1798
- }
1799
-
1800
- /* Ensure proper spacing between rows */
1801
- .first-row .gr-group {
1802
- margin-bottom: 20px !important;
1803
- }
1804
-
1805
- /* Upload section dynamic height */
1806
- #upload-wrapper {
1807
- min-height: 180px !important;
1808
- transition: height 0.3s ease !important;
1809
- }
1810
-
1811
- /* When upload info is present, expand */
1812
- #upload-wrapper .upload-info:not(:empty) {
1813
- min-height: 60px !important;
1814
- padding: 10px !important;
1815
- margin-top: 10px !important;
1816
- }
1817
-
1818
- .upload-section {
1819
- width: 100% !important;
1820
- min-height: 165px !important;
1821
- }
1822
-
1823
- /* Display Format card width */
1824
- .display-format-card {
1825
- min-width: 260px !important;
1826
- }
1827
-
1828
- /* ------------------------- */
1829
- /* SECOND ROW (Analysis, Viz, Handling) */
1830
- /* ------------------------- */
1831
-
1832
- .gr-row:nth-of-type(2)>.gr-group {
1833
- flex: 1 !important;
1834
- margin: 10px 15px !important;
1835
- min-height: 170px !important;
1836
- }
1837
-
1838
- /* ------------------------- */
1839
- /* DATA PREVIEW + ANALYSIS */
1840
- /* ------------------------- */
1841
-
1842
- .gr-column>.gr-markdown,
1843
- .gr-dataframe,
1844
- .gr-plot,
1845
- .gr-textbox {
1846
- background: rgba(255, 255, 255, 0.12) !important;
1847
- border-radius: 14px !important;
1848
- padding: 16px !important;
1849
- border: 1px solid rgba(255, 255, 255, 0.15) !important;
1850
- }
1851
-
1852
- /* Improve titles */
1853
- .gr-markdown h3,
1854
- .gr-markdown h1,
1855
- .gr-markdown h2,
1856
- .gr-markdown h4,
1857
- .gr-markdown h5,
1858
- .gr-markdown h6 {
1859
- color: white !important;
1860
- text-shadow: 0 0 6px rgba(255, 255, 255, 0.3) !important;
1861
- }
1862
-
1863
- /* Force all headings white */
1864
- h1,
1865
- h2,
1866
- h3,
1867
- h4,
1868
- h5,
1869
- h6 {
1870
- color: white !important;
1871
- }
1872
-
1873
- /* Specific markdown content */
1874
- .gr-group .gr-markdown,
1875
- .gr-group .gr-markdown * {
1876
- color: white !important;
1877
- }
1878
-
1879
- /* Make internal elements visible with white text */
1880
- .gr-textbox,
1881
- .gr-textbox input,
1882
- .gr-textbox textarea,
1883
- .gr-file,
1884
- .gr-file input {
1885
- background: rgba(255, 255, 255, 0.05) !important;
1886
- border: 1px solid rgba(255, 255, 255, 0.1) !important;
1887
- border-radius: 8px !important;
1888
- color: white !important;
1889
- }
1890
-
1891
- .gr-dropdown:hover,
1892
- .gr-textbox:hover,
1893
- .gr-file:hover {
1894
- background: rgba(255, 255, 255, 0.08) !important;
1895
- border-color: rgba(255, 255, 255, 0.15) !important;
1896
- }
1897
-
1898
- .gr-dropdown:focus-within,
1899
- .gr-textbox:focus-within,
1900
- .gr-file:focus-within {
1901
- background: rgba(255, 255, 255, 0.1) !important;
1902
- border-color: rgba(59, 130, 246, 0.4) !important;
1903
- }
1904
-
1905
- /* Dropdown options */
1906
- .gr-dropdown .dropdown-content,
1907
- .gr-dropdown .dropdown-menu {
1908
- background: rgba(30, 41, 59, 0.95) !important;
1909
- border: 1px solid rgba(255, 255, 255, 0.1) !important;
1910
- backdrop-filter: blur(10px) !important;
1911
- }
1912
-
1913
- /* Labels */
1914
- .gr-form label {
1915
- color: #d1d5db !important;
1916
- }
1917
-
1918
- /* Make all text content white */
1919
- .gr-markdown,
1920
- .gr-markdown h1,
1921
- .gr-markdown h2,
1922
- .gr-markdown h3,
1923
- .gr-markdown h4,
1924
- .gr-markdown p,
1925
- .gr-html,
1926
- .gr-html ul,
1927
- .gr-html li,
1928
- .gr-button,
1929
- .gr-dropdown label,
1930
- .gr-textbox label,
1931
- .gr-file label,
1932
- span,
1933
- div,
1934
- p {
1935
- background: transparent !important;
1936
- color: white !important;
1937
- }
1938
-
1939
- /* Dropdown styling - Force white text */
1940
- .gr-dropdown,
1941
- .gr-dropdown select,
1942
- .gr-dropdown .wrap,
1943
- .gr-dropdown input,
1944
- .gr-dropdown .selected-option {
1945
- background: rgba(0, 0, 0, 0.3) !important;
1946
- color: white !important;
1947
- border: 1px solid rgba(255, 255, 255, 0.3) !important;
1948
- font-weight: 500 !important;
1949
- }
1950
-
1951
- /* Dropdown text visibility */
1952
- .gr-dropdown * {
1953
- color: white !important;
1954
- }
1955
-
1956
- /* Dropdown options menu */
1957
- .gr-dropdown .dropdown-content,
1958
- .gr-dropdown .dropdown-menu,
1959
- .gr-dropdown option,
1960
- .gr-dropdown select option {
1961
- background: rgba(30, 41, 59, 0.95) !important;
1962
- color: white !important;
1963
- border: 1px solid rgba(255, 255, 255, 0.1) !important;
1964
- }
1965
-
1966
- /* Force all dropdown text white - AGGRESSIVE */
1967
- select,
1968
- select option,
1969
- .gr-dropdown select,
1970
- .gr-dropdown select option,
1971
- .gr-dropdown .wrap select,
1972
- .gr-dropdown .wrap,
1973
- .gr-dropdown input[type="text"],
1974
- .gr-dropdown .selected-text,
1975
- .gr-dropdown .current-selection {
1976
- color: white !important;
1977
- background: rgba(0, 0, 0, 0.6) !important;
1978
- -webkit-text-fill-color: white !important;
1979
- text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8) !important;
1980
- }
1981
-
1982
- /* Gradio specific dropdown classes */
1983
- .gr-dropdown .wrap>*,
1984
- .gr-dropdown .wrap input,
1985
- .gr-dropdown .wrap select,
1986
- .gr-dropdown .wrap .selected,
1987
- .gr-dropdown .wrap .value {
1988
- color: white !important;
1989
- background: rgba(0, 0, 0, 0.5) !important;
1990
- -webkit-text-fill-color: white !important;
1991
- }
1992
-
1993
- /* Override any theme colors */
1994
- * [class*="dropdown"] {
1995
- color: white !important;
1996
- }
1997
-
1998
- * [class*="dropdown"] * {
1999
- color: white !important;
2000
- }
2001
-
2002
- /* File upload text */
2003
- .gr-file .file-preview,
2004
- .gr-file .upload-text {
2005
- background: transparent !important;
2006
- color: white !important;
2007
- }
2008
-
2009
- /* Button text and borders - HIGHLY VISIBLE */
2010
- .gr-button,
2011
- button {
2012
- background: rgba(255, 255, 255, 0.05) !important;
2013
- border: 3px solid rgba(255, 255, 255, 0.5) !important;
2014
- color: white !important;
2015
- }
2016
-
2017
- /* ------------------------- */
2018
- /* BUTTON ENHANCEMENTS */
2019
- /* ------------------------- */
2020
- .gr-button-primary,
2021
- button[class*="primary"] {
2022
- background: linear-gradient(135deg, #4f63e4, #7a3cff) !important;
2023
- border-radius: 10px !important;
2024
- border: 3px solid rgba(255, 255, 255, 0.7) !important;
2025
- box-shadow: 0 4px 14px rgba(79, 99, 228, 0.4) !important;
2026
- transition: 0.25s ease !important;
2027
- }
2028
-
2029
- .gr-button-primary:hover,
2030
- button[class*="primary"]:hover {
2031
- transform: translateY(-3px) !important;
2032
- box-shadow: 0 6px 20px rgba(79, 99, 228, 0.55) !important;
2033
- border-color: rgba(255, 255, 255, 0.9) !important;
2034
- }
2035
-
2036
- .gr-button-secondary,
2037
- button[class*="secondary"] {
2038
- background: rgba(255, 255, 255, 0.12) !important;
2039
- border: 3px solid rgba(255, 255, 255, 0.6) !important;
2040
- border-radius: 10px !important;
2041
- }
2042
-
2043
- .gr-button-secondary:hover,
2044
- button[class*="secondary"]:hover {
2045
- background: rgba(255, 255, 255, 0.22) !important;
2046
- border-color: rgba(255, 255, 255, 0.8) !important;
2047
- }
2048
-
2049
- /* ------------------------- */
2050
- /* FIX MISALIGNED ELEMENTS */
2051
- /* ------------------------- */
2052
-
2053
- .gr-group>* {
2054
- width: 100% !important;
2055
- }
2056
-
2057
- .upload-section .gr-markdown {
2058
- margin-bottom: 8px !important;
2059
- }
2060
-
2061
- .overflow-class {
2062
- overflow: visible;
2063
- }
2064
-
2065
- /* ---------- Upload wrapper: force size and glass style ---------- */
2066
- #upload-wrapper {
2067
- width: 100% !important;
2068
- /* full width of its column */
2069
- min-width: 360px !important;
2070
- /* avoid collapsing on narrow screens */
2071
- max-width: 520px !important;
2072
- /* adjust as needed */
2073
- display: flex !important;
2074
- flex-direction: column !important;
2075
- gap: 12px !important;
2076
- padding: 20px !important;
2077
- margin: 8px 12px !important;
2078
- border-radius: 16px !important;
2079
- background: transparent;
2080
- /* border: 1px solid rgba(255,255,255,0.12) !important; */
2081
- backdrop-filter: blur(18px) saturate(140%) !important;
2082
- -webkit-backdrop-filter: blur(18px) saturate(140%) !important;
2083
- box-shadow: 0 12px 30px rgba(2, 6, 23, 0.45) inset, 0 8px 28px rgba(6, 12, 40, 0.45) !important;
2084
- align-self: flex-start !important;
2085
- /* keep it aligned inside row */
2086
- }
2087
-
2088
- /* Make the title look consistent */
2089
- #upload-wrapper .upload-title h3 {
2090
- color: #e6f0ff !important;
2091
- font-weight: 600 !important;
2092
- margin: 0 0 6px 0 !important;
2093
- }
2094
-
2095
- /* Make the file control visually large and centered */
2096
- #upload-wrapper .upload-card,
2097
- #upload-wrapper .gr-file,
2098
- #upload-wrapper input[type="file"] {
2099
- width: 100% !important;
2100
- min-height: 110px !important;
2101
- padding: 16px !important;
2102
- border-radius: 12px !important;
2103
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.02)) !important;
2104
- border: 1px solid rgba(255, 255, 255, 0.06) !important;
2105
- box-shadow: 0 8px 20px rgba(12, 18, 40, 0.35) !important;
2106
- }
2107
-
2108
- /* dataset info text area - BLACK TEXT FOR VISIBILITY */
2109
- #upload-wrapper .upload-info,
2110
- #upload-wrapper .gr-markdown {
2111
- color: #000000 !important;
2112
- background: rgba(255, 255, 255, 0.85) !important;
2113
- padding: 12px !important;
2114
- border-radius: 8px !important;
2115
- font-size: 13px !important;
2116
- }
2117
-
2118
- /* Make the markdown text content black */
2119
- #upload-wrapper .upload-info *,
2120
- #upload-wrapper .gr-markdown *,
2121
- .upload-info,
2122
- .upload-info strong,
2123
- .upload-info p {
2124
- color: #000000 !important;
2125
- }
2126
-
2127
- /* clear button alignment and style */
2128
- #upload-wrapper .upload-clear-btn {
2129
- align-self: flex-end !important;
2130
- margin-top: 6px !important;
2131
- }
2132
-
2133
- /* if Gradio wraps the file input in an inner container */
2134
- #upload-wrapper [class*="file"],
2135
- #upload-wrapper [class*="upload"] {
2136
- width: 100% !important;
2137
- }
2138
-
2139
- /* Ensure it doesn't collapse when Gradio enforces min-width elsewhere */
2140
- #upload-wrapper>* {
2141
- min-width: 0 !important;
2142
- }
2143
-
2144
- /* Optional responsive tweak: allow it to expand on larger screens */
2145
- @media (min-width: 1280px) {
2146
- #upload-wrapper {
2147
- max-width: 640px !important;
2148
- }
2149
- }
2150
-
2151
- /* How to Use Box - Top Right Corner */
2152
- .how-to-use-sidebar {
2153
- position: fixed !important;
2154
- top: 150px !important;
2155
- right: 20px !important;
2156
- left: auto !important;
2157
- transform: none !important;
2158
- width: 260px !important;
2159
- z-index: 1000 !important;
2160
- pointer-events: auto !important;
2161
- }
2162
-
2163
- .how-to-use-content {
2164
- background: rgba(255, 255, 255, 0.12) !important;
2165
- backdrop-filter: blur(12px) saturate(160%) !important;
2166
- -webkit-backdrop-filter: blur(12px) saturate(160%) !important;
2167
- border-radius: 12px !important;
2168
- border: 1px solid rgba(255, 255, 255, 0.25) !important;
2169
- padding: 18px !important;
2170
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25) !important;
2171
- transition: all 0.3s ease !important;
2172
- }
2173
-
2174
- .how-to-use-content:hover {
2175
- background: rgba(255, 255, 255, 0.18) !important;
2176
- border-color: rgba(255, 255, 255, 0.4) !important;
2177
- transform: translateY(-3px) !important;
2178
- }
2179
-
2180
- .how-to-use-content h3 {
2181
- color: white !important;
2182
- margin: 0 0 10px 0 !important;
2183
- font-size: 17px !important;
2184
- font-weight: 600 !important;
2185
- text-shadow: 0 0 6px rgba(255, 255, 255, 0.3) !important;
2186
- }
2187
-
2188
- .how-to-use-content ul {
2189
- list-style: none !important;
2190
- padding: 0 !important;
2191
- margin: 0 !important;
2192
- }
2193
-
2194
- .how-to-use-content li {
2195
- color: white !important;
2196
- margin: 7px 0 !important;
2197
- padding-left: 0 !important;
2198
- line-height: 1.4 !important;
2199
- font-size: 13px !important;
2200
- opacity: 0.9 !important;
2201
- }
2202
-
2203
- /* Main container - Full width to cover left area */
2204
- .gradio-container {
2205
- margin-left: 0 !important;
2206
- padding-left: 20px !important;
2207
- }
2208
-
2209
- /* Responsive: Remove margin on smaller screens */
2210
- @media (max-width: 1200px) {
2211
- .gradio-container {
2212
- margin-left: 0 !important;
2213
- padding-left: 0 !important;
2214
- }
2215
-
2216
- .how-to-use-sidebar {
2217
- display: none !important;
2218
- }
2219
- }
2220
-
2221
- /* Custom Dropdown Styling */
2222
- .custom-dropdown {
2223
- width: 100%;
2224
- }
2225
-
2226
- .custom-dropdown label {
2227
- color: white !important;
2228
- font-size: 14px;
2229
- margin-bottom: 8px;
2230
- display: block;
2231
- }
2232
-
2233
- .dropdown-container {
2234
- position: relative;
2235
- width: 100%;
2236
- }
2237
-
2238
- .dropdown-button {
2239
- background: white;
2240
- border: 1px solid rgba(255, 255, 255, 0.3);
2241
- border-radius: 8px;
2242
- padding: 12px 16px;
2243
- cursor: pointer;
2244
- display: flex;
2245
- justify-content: space-between;
2246
- align-items: center;
2247
- color: #333;
2248
- }
2249
-
2250
- .dropdown-button:hover {
2251
- border-color: rgba(59, 130, 246, 0.5);
2252
- }
2253
-
2254
- .dropdown-arrow {
2255
- color: #666;
2256
- font-size: 12px;
2257
- }
2258
-
2259
- .dropdown-menu {
2260
- display: none;
2261
- position: absolute;
2262
- top: 100%;
2263
- left: 0;
2264
- right: 0;
2265
- background: white;
2266
- border: 1px solid #ccc;
2267
- border-radius: 8px;
2268
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
2269
- max-height: 200px;
2270
- overflow-y: auto;
2271
- z-index: 1000;
2272
- }
2273
-
2274
- .dropdown-item {
2275
- padding: 12px 16px;
2276
- cursor: pointer;
2277
- color: #333;
2278
- border-bottom: 1px solid #eee;
2279
- }
2280
-
2281
- .dropdown-item:hover {
2282
- background: #f0f8ff;
2283
- }
2284
-
2285
- .dropdown-item.selected {
2286
- background: #3b82f6;
2287
- color: white;
2288
- }
2289
-
2290
- .selected-columns {
2291
- margin-top: 8px;
2292
- display: flex;
2293
- flex-wrap: wrap;
2294
- gap: 6px;
2295
- }
2296
-
2297
- .selected-tag {
2298
- background: #3b82f6;
2299
- color: white;
2300
- padding: 4px 8px;
2301
- border-radius: 6px;
2302
- font-size: 12px;
2303
- display: flex;
2304
- align-items: center;
2305
- gap: 4px;
2306
- }
2307
-
2308
- .selected-tag span {
2309
- cursor: pointer;
2310
- font-weight: bold;
2311
- opacity: 0.8;
2312
- }
2313
-
2314
- .selected-tag span:hover {
2315
- opacity: 1;
2316
- }
2317
-
2318
- /* ========================= */
2319
- /* FIX: Prevent Dropdown Text Input */
2320
- /* ========================= */
2321
-
2322
- /* Make dropdown input read-only - prevent typing */
2323
- .gr-dropdown input[type="text"] {
2324
- cursor: pointer !important;
2325
- user-select: none !important;
2326
- caret-color: transparent !important;
2327
- }
2328
-
2329
- /* Allow clicking on the dropdown container itself */
2330
- .gr-dropdown .wrap {
2331
- pointer-events: auto !important;
2332
- cursor: pointer !important;
2333
- }
2334
-
2335
- /* Ensure ALL dropdowns are clickable */
2336
- .gr-dropdown,
2337
- .gr-dropdown *,
2338
- .gr-dropdown button,
2339
- .gr-dropdown .wrap,
2340
- .gr-dropdown select {
2341
- pointer-events: auto !important;
2342
- cursor: pointer !important;
2343
- }
2344
-
2345
- /* Make sure dropdown button/arrow is visible and clickable */
2346
- .gr-dropdown button,
2347
- .gr-dropdown button svg,
2348
- .gr-dropdown .icon,
2349
- button[aria-label*="dropdown"],
2350
- button[class*="dropdown"] {
2351
- display: block !important;
2352
- visibility: visible !important;
2353
- opacity: 1 !important;
2354
- pointer-events: auto !important;
2355
- cursor: pointer !important;
2356
- }
2357
-
2358
- /* Ensure Group containers don't block dropdowns */
2359
- #display-format-box,
2360
- #analysis-type-box,
2361
- #visualization-box {
2362
- pointer-events: auto !important;
2363
- }
2364
-
2365
- #display-format-box *,
2366
- #analysis-type-box *,
2367
- #visualization-box * {
2368
- pointer-events: auto !important;
2369
- }
2370
-
2371
- /* Ensure column selector appears in correct order */
2372
- .gr-checkbox-group {
2373
- order: 0 !important;
2374
- }
2375
-
2376
-
2377
- /* FORCE Column Selector Labels to be BLACK - Very Specific */
2378
- [data-testid="checkbox-group"] label,
2379
- [data-testid="checkbox-group"] label span,
2380
- [data-testid="checkbox-group"] span,
2381
- .wrap[data-testid="checkbox-group"] label,
2382
- .wrap[data-testid="checkbox-group"] span,
2383
- label[class*="svelte"] span,
2384
- .checkbox-group label,
2385
- .checkbox-group span {
2386
- color: #000000 !important;
2387
- -webkit-text-fill-color: #000000 !important;
2388
- }
2389
-
2390
- /* Target any span inside checkbox labels */
2391
- input[type="checkbox"]+span,
2392
- input[type="checkbox"]~span,
2393
- label:has(input[type="checkbox"]) span {
2394
- color: #000000 !important;
2395
- -webkit-text-fill-color: #000000 !important;
2396
- }
2397
-
2398
- /* Force all spans near checkboxes to be black */
2399
- span[class*="svelte"] {
2400
- color: #000000 !important;
2401
- }
2402
-
2403
- /* Transparent background for checkbox container */
2404
- [data-testid="checkbox-group"],
2405
- [data-testid="checkbox-group"]>div {
2406
- background: transparent !important;
2407
- }
2408
-
2409
- /* Match wrap sizes for dropdowns */
2410
- div.wrap.svelte-vomtx {
2411
- min-height: auto !important;
2412
- height: auto !important;
2413
- }
2414
-
2415
- div.wrap.svelte-vomtx,
2416
- div.secondarywrap {
2417
- padding: 8px !important;
2418
- }
2419
-
2420
- /* Make dropdown labels white */
2421
- .gr-dropdown label,
2422
- .gr-dropdown .label {
2423
- color: white !important;
2424
- }
2425
-
2426
-
2427
- /* Display Format dropdown label - white text */
2428
- .gradio-container.gradio-container-4-20-0 .contain span[class*="svelte"] {
2429
- color: rgb(255, 255, 255) !important;
2430
- }
2431
-
2432
-
2433
-
2434
- /* ===========================================================
2435
- FIX: Force white text for the Gradio block-info label
2436
- =========================================================== */
2437
-
2438
- span[data-testid="block-info"],
2439
- .gradio-container span[data-testid="block-info"] {
2440
- color: #ffffff !important;
2441
- -webkit-text-fill-color: #ffffff !important;
2442
- }
2443
-
2444
- /* If the framework switches from <span> to <p>, also cover this */
2445
- p[data-testid="block-info"] {
2446
- color: #ffffff !important;
2447
- -webkit-text-fill-color: #ffffff !important;
2448
- }
2449
-
2450
-
2451
- .svelte-vomtxz.container {
2452
- border: 2px solid white !important;
2453
- border-radius: 8px !important;
2454
- padding: 10px !important;
2455
  }
 
1
  body,
 
 
2
  html {
3
  margin: 0;
4
  padding: 0;
 
1214
  padding: 10px !important;
1215
  }
1216
 
1217
+ /* Remove ALL purple outlines and focus states */
1218
+ *,
1219
  *:focus,
1220
  *:focus-visible,
1221
+ *:active,
1222
+ button,
1223
  button:focus,
1224
+ button:focus-visible,
1225
+ button:active,
1226
+ input,
1227
  input:focus,
1228
+ input:focus-visible,
1229
+ textarea,
1230
  textarea:focus,
1231
+ textarea:focus-visible,
1232
+ select,
1233
  select:focus,
1234
+ .gr-button,
1235
  .gr-button:focus,
1236
+ .gr-textbox,
1237
  .gr-textbox:focus,
1238
+ .gr-tab,
1239
  .gr-tab:focus,
1240
+ .gr-tab:active,
1241
+ [role="tab"],
1242
  [role="tab"]:focus,
1243
+ [role="tab"]:active,
1244
  .floating-chat-btn:focus,
1245
  .chat-close-btn:focus,
1246
+ .chat-popup-box *,
1247
+ .chat-popup-box *:focus,
1248
+ .chat-popup-box *:active {
1249
  outline: none !important;
1250
  box-shadow: none !important;
1251
+ border: none !important;
1252
  }
1253
 
1254
+ /* Force remove Gradio default focus styles */
1255
+ .gradio-container *:focus {
 
1256
  outline: none !important;
1257
  box-shadow: none !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1258
  }
1259
 
1260
+ /* Remove browser default focus ring */
1261
+ :focus {
1262
+ outline: none !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1263
  }
1264
 
1265
+ /* Remove any purple/blue focus indicators */
1266
+ *[style*="outline"],
1267
+ *[style*="box-shadow"] {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1268
  outline: none !important;
1269
+ box-shadow: none !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1270
  }