@hytopia.com/examples 1.0.17 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -372,12 +372,75 @@ window.ItemTooltips = (function() {
372
372
  if (existingTooltip) existingTooltip.remove();
373
373
  }
374
374
 
375
+ // Mobile tooltip handling
376
+ let mobileTooltipActive = false;
377
+
378
+ function initializeMobileTooltips() {
379
+ // Check if we're on mobile
380
+ const isMobile = document.body.classList.contains('mobile');
381
+ if (!isMobile) return;
382
+
383
+ // Add click handler to document for event delegation
384
+ document.addEventListener('click', handleMobileTooltipClick, true);
385
+ }
386
+
387
+ function handleMobileTooltipClick(e) {
388
+ // List of tooltip container selectors - include quest reward enabled class
389
+ const tooltipContainers = [
390
+ '.backpack-slot', '.backpack-hotbar-slot', '.backpack-wearable-slot',
391
+ '.hud-hotbar-slot', '.merchant-slot', '.merchant-hotbar-slot',
392
+ '.crafting-slot', '.crafting-requirement-item',
393
+ '.quests-reward-item', '.quests-reward-item-tooltip-enabled'
394
+ ];
395
+
396
+ // Check if click is on a tooltip container
397
+ const container = e.target.closest(tooltipContainers.join(', '));
398
+
399
+ if (container) {
400
+ // Find tooltip in this container
401
+ const tooltip = container.querySelector([
402
+ '.item-tooltip', '.backpack-item-tooltip', '.merchant-item-tooltip',
403
+ '.crafting-item-tooltip', '.crafting-requirement-tooltip', '.quests-reward-item-tooltip'
404
+ ].join(', '));
405
+
406
+ if (tooltip) {
407
+ // Close any other open tooltips
408
+ closeAllMobileTooltips();
409
+
410
+ // Show this tooltip
411
+ tooltip.classList.add('mobile-tooltip-visible');
412
+ mobileTooltipActive = true;
413
+ }
414
+ } else {
415
+ // Click outside any container - close all tooltips
416
+ closeAllMobileTooltips();
417
+ }
418
+ }
419
+
420
+ function closeAllMobileTooltips() {
421
+ const visibleTooltips = document.querySelectorAll('.mobile-tooltip-visible');
422
+ if (visibleTooltips.length > 0) {
423
+ visibleTooltips.forEach(tooltip => {
424
+ tooltip.classList.remove('mobile-tooltip-visible');
425
+ });
426
+ mobileTooltipActive = false;
427
+ }
428
+ }
429
+
430
+ // Initialize mobile tooltips when DOM is ready
431
+ if (document.readyState === 'loading') {
432
+ document.addEventListener('DOMContentLoaded', initializeMobileTooltips);
433
+ } else {
434
+ initializeMobileTooltips();
435
+ }
436
+
375
437
  // Public API
376
438
  return {
377
439
  parseText: parseText,
378
440
  hasTooltipData: hasTooltipData,
379
441
  createTooltip: createTooltip,
380
- removeTooltip: removeTooltip
442
+ removeTooltip: removeTooltip,
443
+ closeAllMobileTooltips: closeAllMobileTooltips
381
444
  };
382
445
  })();
383
446
  </script>
@@ -405,8 +468,7 @@ window.ItemTooltips = (function() {
405
468
  .merchant-hotbar-slot:hover .item-tooltip,
406
469
  .crafting-slot:hover .item-tooltip,
407
470
  .crafting-requirement-item:hover .item-tooltip,
408
- .quests-reward-item:hover .item-tooltip,
409
- /* Tooltip visibility on hover - Specific classes */
471
+
410
472
  .backpack-slot:hover .backpack-item-tooltip,
411
473
  .backpack-hotbar-slot:hover .backpack-item-tooltip,
412
474
  .backpack-wearable-slot:hover .backpack-item-tooltip,
@@ -530,14 +592,72 @@ window.ItemTooltips = (function() {
530
592
  font-size: 11px;
531
593
  }
532
594
 
533
- /* Mobile - Hide tooltips on mobile devices */
595
+ /* Mobile - Control tooltip visibility on mobile devices */
534
596
  body.mobile .item-tooltip,
535
597
  body.mobile .backpack-item-tooltip,
536
598
  body.mobile .merchant-item-tooltip,
537
599
  body.mobile .crafting-item-tooltip,
538
600
  body.mobile .crafting-requirement-tooltip,
539
601
  body.mobile .quests-reward-item-tooltip {
540
- display: none;
602
+ opacity: 0;
603
+ visibility: hidden;
604
+ transform: translateY(-4px);
605
+ transition: all 0.2s ease;
606
+ }
607
+
608
+ /* Mobile tooltip visibility when tapped */
609
+ body.mobile .mobile-tooltip-visible {
610
+ opacity: 1 !important;
611
+ visibility: visible !important;
612
+ transform: translateY(-8px) !important;
613
+ }
614
+
615
+ /* Improve mobile tooltip positioning and touch targets */
616
+ body.mobile .backpack-slot,
617
+ body.mobile .backpack-hotbar-slot,
618
+ body.mobile .backpack-wearable-slot,
619
+ body.mobile .hud-hotbar-slot,
620
+ body.mobile .merchant-slot,
621
+ body.mobile .merchant-hotbar-slot,
622
+ body.mobile .crafting-slot,
623
+ body.mobile .crafting-requirement-item,
624
+ body.mobile .quests-reward-item,
625
+ body.mobile .quests-reward-item-tooltip-enabled {
626
+ cursor: pointer;
627
+ -webkit-tap-highlight-color: rgba(255, 255, 255, 0.1);
628
+ }
629
+
630
+ /* Center carets on mobile tooltips */
631
+ body.mobile .item-tooltip-content::after,
632
+ body.mobile .backpack-item-tooltip-content::after,
633
+ body.mobile .merchant-item-tooltip-content::after,
634
+ body.mobile .crafting-item-tooltip-content::after,
635
+ body.mobile .crafting-requirement-tooltip-content::after,
636
+ body.mobile .quests-reward-item-tooltip-content::after {
637
+ left: 50% !important;
638
+ transform: translateX(-50%) !important;
639
+ }
640
+
641
+ body.mobile .item-tooltip-content::before,
642
+ body.mobile .backpack-item-tooltip-content::before,
643
+ body.mobile .merchant-item-tooltip-content::before,
644
+ body.mobile .crafting-item-tooltip-content::before,
645
+ body.mobile .crafting-requirement-tooltip-content::before,
646
+ body.mobile .quests-reward-item-tooltip-content::before {
647
+ left: 50% !important;
648
+ transform: translateX(-50%) !important;
649
+ }
650
+
651
+ /* Mobile tooltip content sizing */
652
+ body.mobile .item-tooltip-content,
653
+ body.mobile .backpack-item-tooltip-content,
654
+ body.mobile .merchant-item-tooltip-content,
655
+ body.mobile .crafting-item-tooltip-content,
656
+ body.mobile .crafting-requirement-tooltip-content,
657
+ body.mobile .quests-reward-item-tooltip-content {
658
+ max-width: 220px;
659
+ font-size: 11px;
660
+ padding: 8px 10px;
541
661
  }
542
662
 
543
663
  /* Mouse Follower Tooltip (for backpack drag system) */
@@ -631,6 +751,9 @@ window.ItemTooltips = (function() {
631
751
  accessory: 5
632
752
  };
633
753
 
754
+ const mouseFollower = createMouseFollower();
755
+ let heldItem = null;
756
+
634
757
  // Setup hytopia data handlers
635
758
  hytopia.onData(data => {
636
759
  if (data.type === 'toggleBackpack') {
@@ -683,15 +806,8 @@ window.ItemTooltips = (function() {
683
806
  }
684
807
  }
685
808
 
686
- function setupEventListeners() {
687
- const closeButton = document.querySelector('.backpack-close');
688
- closeButton.addEventListener('click', closeBackpack);
689
-
690
- let heldItem = null;
691
- const mouseFollower = createMouseFollower();
692
-
693
- // Helper function to get slot info
694
- function getSlotInfo(slot) {
809
+ // Helper function to get slot info
810
+ function getSlotInfo(slot) {
695
811
  if (slot.dataset.slotIndex) {
696
812
  return { type: 'backpack', index: slot.dataset.slotIndex };
697
813
  } else if (slot.dataset.slot) {
@@ -765,8 +881,14 @@ window.ItemTooltips = (function() {
765
881
  // Copy content to mouse follower
766
882
  mouseFollower.innerHTML = contentHTML;
767
883
 
768
- // Copy tooltip if it exists
884
+ // Copy tooltip if it exists and store reference for later restoration
769
885
  if (tooltip) {
886
+ // Store tooltip data for restoration
887
+ heldItem.tooltipData = {
888
+ element: tooltip.cloneNode(true),
889
+ parentSlot: slot
890
+ };
891
+
770
892
  const tooltipClone = tooltip.cloneNode(true);
771
893
  tooltipClone.style.opacity = '1';
772
894
  tooltipClone.style.visibility = 'visible';
@@ -774,15 +896,26 @@ window.ItemTooltips = (function() {
774
896
  tooltipClone.style.position = 'absolute';
775
897
  tooltipClone.style.bottom = 'auto';
776
898
  tooltipClone.style.top = '-8px';
899
+
900
+ // Remove mobile tooltip classes that might interfere
901
+ tooltipClone.classList.remove('mobile-tooltip-visible');
902
+
777
903
  mouseFollower.appendChild(tooltipClone);
904
+
905
+ // Completely remove original tooltip to prevent ghosting
906
+ tooltip.remove();
778
907
  }
908
+
909
+ // Position mouse follower at center of slot
910
+ const slotRect = slot.getBoundingClientRect();
911
+ const centerX = slotRect.left + slotRect.width / 2;
912
+ const centerY = slotRect.top + slotRect.height / 2;
779
913
 
780
- mouseFollower.style.left = mouseX + 'px';
781
- mouseFollower.style.top = mouseY + 'px';
914
+ mouseFollower.style.left = centerX + 15 + 'px';
915
+ mouseFollower.style.top = centerY - 15 + 'px';
782
916
  mouseFollower.classList.add('active');
783
917
  slot.classList.add('backpack-slot-empty');
784
918
 
785
- console.log(`Picked up from ${slotInfo.type}: ${slotInfo.index}`);
786
919
  return true;
787
920
  }
788
921
 
@@ -801,8 +934,15 @@ window.ItemTooltips = (function() {
801
934
  // Reset held item state
802
935
  function resetHeldItem() {
803
936
  if (!heldItem) return;
804
-
937
+
805
938
  heldItem.sourceSlot.classList.remove('backpack-slot-empty');
939
+
940
+ // Restore original tooltip by recreating it
941
+ if (heldItem.tooltipData) {
942
+ const restoredTooltip = heldItem.tooltipData.element.cloneNode(true);
943
+ heldItem.tooltipData.parentSlot.appendChild(restoredTooltip);
944
+ }
945
+
806
946
  mouseFollower.classList.remove('active');
807
947
  mouseFollower.innerHTML = '';
808
948
  heldItem = null;
@@ -812,10 +952,13 @@ window.ItemTooltips = (function() {
812
952
  function cancelHeldItem() {
813
953
  if (!heldItem) return;
814
954
 
815
- console.log(`Cancelled pickup from ${heldItem.sourceType}: ${heldItem.sourceIndex}`);
816
955
  resetHeldItem();
817
956
  }
818
957
 
958
+ function setupEventListeners() {
959
+ const closeButton = document.querySelector('.backpack-close');
960
+ closeButton.addEventListener('click', closeBackpack);
961
+
819
962
  // Setup slot click handlers
820
963
  document.querySelectorAll('.backpack-slot, .backpack-wearable-slot, .backpack-hotbar-slot')
821
964
  .forEach(slot => {
@@ -870,6 +1013,16 @@ window.ItemTooltips = (function() {
870
1013
  function closeBackpack() {
871
1014
  document.querySelector('.backpack-overlay').style.display = 'none';
872
1015
  hytopia.lockPointer(true);
1016
+
1017
+ // Close any open mobile tooltips
1018
+ if (window.ItemTooltips) {
1019
+ window.ItemTooltips.closeAllMobileTooltips();
1020
+ }
1021
+
1022
+ // Cancel any picked up item
1023
+ if (heldItem) {
1024
+ cancelHeldItem();
1025
+ }
873
1026
  }
874
1027
 
875
1028
  function openBackpack() {
@@ -1334,66 +1487,80 @@ window.ItemTooltips = (function() {
1334
1487
 
1335
1488
  /* Mobile Styles */
1336
1489
  body.mobile {
1337
- --backpack-slot-size: 40px;
1338
- --backpack-hotbar-size: 40px;
1339
- --backpack-icon-size: 20px;
1340
- --backpack-gap: 3px;
1341
- --backpack-padding: 6px;
1490
+ --backpack-slot-size: 44px;
1491
+ --backpack-hotbar-size: 44px;
1492
+ --backpack-icon-size: 32px;
1493
+ --backpack-gap: 4px;
1494
+ --backpack-padding: 8px;
1342
1495
  }
1343
1496
 
1344
1497
  body.mobile .backpack-overlay {
1345
- gap: 8px;
1346
- padding: 4px;
1498
+ gap: 12px;
1499
+ padding: 8px;
1347
1500
  }
1348
1501
 
1349
1502
  body.mobile .backpack-container,
1350
1503
  body.mobile .backpack-hotbar-container {
1351
1504
  width: auto;
1352
- max-width: 500px;
1353
- min-width: 320px;
1505
+ max-width: 520px;
1506
+ min-width: 340px;
1507
+ border-radius: 8px;
1354
1508
  }
1355
1509
 
1356
1510
  body.mobile .backpack-header,
1357
1511
  body.mobile .backpack-hotbar-header {
1358
- padding: 4px 8px;
1512
+ padding: 8px 12px;
1513
+ border-radius: 8px 8px 0 0;
1359
1514
  }
1360
1515
 
1361
1516
  body.mobile .backpack-title,
1362
1517
  body.mobile .backpack-hotbar-title {
1363
- font-size: 12px;
1518
+ font-size: 14px;
1364
1519
  }
1365
1520
 
1366
1521
  body.mobile .backpack-close {
1367
- width: 20px;
1368
- height: 20px;
1369
- font-size: 14px;
1522
+ width: 24px;
1523
+ height: 24px;
1524
+ font-size: 16px;
1525
+ border-radius: 6px;
1370
1526
  }
1371
1527
 
1372
1528
  body.mobile .backpack-content {
1373
- padding: 6px;
1374
- gap: 6px;
1529
+ padding: 12px;
1530
+ gap: 12px;
1375
1531
  }
1376
1532
 
1377
1533
  body.mobile .backpack-wearables-panel {
1378
- flex-direction: row;
1534
+ flex-direction: column;
1379
1535
  min-width: auto;
1536
+ gap: 12px;
1380
1537
  }
1381
1538
 
1382
1539
  body.mobile .backpack-wearables-slots {
1383
1540
  justify-items: center;
1541
+ padding: 8px;
1542
+ border-radius: 6px;
1384
1543
  }
1385
1544
 
1386
- body.mobile .backpack-wearable-slot,
1387
- body.mobile .backpack-slot,
1388
- body.mobile .backpack-hotbar-slot {
1389
- box-sizing: border-box;
1545
+ body.mobile .backpack-grid {
1546
+ padding: 8px;
1547
+ border-radius: 6px;
1390
1548
  }
1391
1549
 
1392
- body.mobile .backpack-grid,
1393
1550
  body.mobile .backpack-hotbar-grid {
1394
1551
  justify-items: center;
1395
1552
  width: fit-content;
1396
1553
  margin: 0 auto;
1554
+ padding: 12px;
1555
+ border-radius: 0 0 6px 6px;
1556
+ }
1557
+
1558
+ body.mobile .backpack-wearable-slot,
1559
+ body.mobile .backpack-slot,
1560
+ body.mobile .backpack-hotbar-slot {
1561
+ box-sizing: border-box;
1562
+ border-radius: 6px;
1563
+ border-width: 2px;
1397
1564
  }
1398
1565
 
1399
1566
  body.mobile .backpack-slot-content,
@@ -1402,36 +1569,58 @@ window.ItemTooltips = (function() {
1402
1569
  }
1403
1570
 
1404
1571
  body.mobile .backpack-item-icon {
1405
- width: 32px;
1406
- height: 32px;
1572
+ width: 36px;
1573
+ height: 36px;
1407
1574
  }
1408
1575
 
1409
1576
  body.mobile .backpack-hotbar-slot-icon {
1410
- width: 32px;
1411
- height: 32px;
1577
+ width: 36px;
1578
+ height: 36px;
1412
1579
  }
1413
1580
 
1414
1581
  body.mobile .backpack-slot-quantity {
1415
- font-size: 7px;
1416
- padding: 1px 2px;
1417
- bottom: 1px;
1418
- right: 1px;
1419
- min-width: 8px;
1582
+ font-size: 8px;
1583
+ padding: 1px 3px;
1584
+ bottom: 2px;
1585
+ right: 2px;
1586
+ min-width: 10px;
1587
+ border-radius: 3px;
1420
1588
  }
1421
1589
 
1422
1590
  body.mobile .backpack-hotbar-slot-quantity {
1423
1591
  font-size: 8px;
1424
1592
  padding: 1px 3px;
1425
- bottom: 1px;
1426
- right: 1px;
1593
+ bottom: 2px;
1594
+ right: 2px;
1595
+ min-width: 12px;
1596
+ border-radius: 3px;
1427
1597
  }
1428
1598
 
1429
- body.mobile .backpack-item-tooltip {
1430
- display: none;
1431
- }
1599
+
1432
1600
 
1433
1601
  body.mobile .backpack-wearable-slot-label {
1434
- font-size: 9px;
1602
+ font-size: 7px;
1603
+ font-weight: 500;
1604
+ }
1605
+
1606
+ body.mobile .backpack-mouse-follower {
1607
+ width: 44px;
1608
+ height: 44px;
1609
+ border-radius: 6px;
1610
+ }
1611
+
1612
+ body.mobile .backpack-mouse-follower img {
1613
+ width: 36px;
1614
+ height: 36px;
1615
+ }
1616
+
1617
+ body.mobile .backpack-mouse-follower .backpack-hotbar-slot-quantity {
1618
+ font-size: 8px;
1619
+ padding: 1px 3px;
1620
+ bottom: 2px;
1621
+ right: 2px;
1622
+ min-width: 10px;
1623
+ border-radius: 3px;
1435
1624
  }
1436
1625
 
1437
1626
  .backpack-mouse-follower {
@@ -1609,6 +1798,9 @@ window.ItemTooltips = (function() {
1609
1798
  function closeSkills() {
1610
1799
  document.querySelector('.skills-overlay').style.display = 'none';
1611
1800
  hytopia.lockPointer(true);
1801
+
1802
+ // Close any open mobile tooltips
1803
+ closeAllMobileTooltips();
1612
1804
  }
1613
1805
 
1614
1806
  // Update Functions
@@ -1639,6 +1831,9 @@ window.ItemTooltips = (function() {
1639
1831
  const skillItem = createSkillItem(skill);
1640
1832
  skillsGrid.appendChild(skillItem);
1641
1833
  });
1834
+
1835
+ // Close any open mobile tooltips after updating skills
1836
+ closeAllMobileTooltips();
1642
1837
  }
1643
1838
 
1644
1839
  function updateSkillsExp(data) {
@@ -1706,6 +1901,54 @@ window.ItemTooltips = (function() {
1706
1901
  // Event Listeners
1707
1902
  function setupEventListeners() {
1708
1903
  document.querySelector('.skills-close').addEventListener('click', closeSkills);
1904
+
1905
+ // Setup mobile tooltip handling
1906
+ setupMobileTooltips();
1907
+ }
1908
+
1909
+ // Mobile tooltip handling
1910
+ function setupMobileTooltips() {
1911
+ // Check if we're on mobile
1912
+ const isMobile = document.body.classList.contains('mobile');
1913
+ if (!isMobile) return;
1914
+
1915
+ // Add click handler to skills container for event delegation
1916
+ document.querySelector('.skills-skills-grid').addEventListener('click', handleMobileTooltipClick);
1917
+
1918
+ // Add click handler to document to close tooltips when clicking outside
1919
+ document.addEventListener('click', handleDocumentClick);
1920
+ }
1921
+
1922
+ function handleMobileTooltipClick(e) {
1923
+ const skillItem = e.target.closest('.skills-skill-item');
1924
+ if (!skillItem) return;
1925
+
1926
+ e.stopPropagation();
1927
+
1928
+ const tooltip = skillItem.querySelector('.skills-skill-tooltip');
1929
+ if (!tooltip) return;
1930
+
1931
+ // Close any other open tooltips
1932
+ closeAllMobileTooltips();
1933
+
1934
+ // Toggle this tooltip
1935
+ tooltip.classList.add('skills-mobile-tooltip-visible');
1936
+ }
1937
+
1938
+ function handleDocumentClick(e) {
1939
+ // Close tooltips when clicking outside
1940
+ if (!e.target.closest('.skills-skill-item')) {
1941
+ closeAllMobileTooltips();
1942
+ }
1943
+ }
1944
+
1945
+ function closeAllMobileTooltips() {
1946
+ const visibleTooltips = document.querySelectorAll('.skills-mobile-tooltip-visible');
1947
+ if (visibleTooltips.length > 0) {
1948
+ visibleTooltips.forEach(tooltip => {
1949
+ tooltip.classList.remove('skills-mobile-tooltip-visible');
1950
+ });
1951
+ }
1709
1952
  }
1710
1953
 
1711
1954
  // Initialize
@@ -2022,97 +2265,136 @@ window.ItemTooltips = (function() {
2022
2265
  /* Mobile Styles */
2023
2266
  body.mobile .skills-container {
2024
2267
  width: auto;
2025
- max-width: 98vw;
2026
- min-width: 300px;
2268
+ max-width: 680px;
2269
+ min-width: 475px;
2270
+ border-radius: 8px;
2027
2271
  }
2028
2272
 
2029
2273
  body.mobile .skills-header {
2030
- padding: 6px 8px;
2274
+ padding: 8px 12px;
2275
+ border-radius: 8px 8px 0 0;
2031
2276
  }
2032
2277
 
2033
2278
  body.mobile .skills-title {
2034
- font-size: 11px;
2279
+ font-size: 14px;
2035
2280
  }
2036
2281
 
2037
2282
  body.mobile .skills-close {
2038
- width: 18px;
2039
- height: 18px;
2040
- font-size: 12px;
2283
+ width: 24px;
2284
+ height: 24px;
2285
+ font-size: 16px;
2286
+ border-radius: 6px;
2041
2287
  }
2042
2288
 
2043
2289
  body.mobile .skills-content {
2044
- padding: 6px;
2290
+ padding: 12px;
2045
2291
  }
2046
2292
 
2047
2293
  body.mobile .skills-player-section,
2048
2294
  body.mobile .skills-skills-section {
2049
- margin-bottom: 8px;
2050
- padding: 6px;
2295
+ padding: 10px;
2296
+ border-radius: 6px;
2051
2297
  }
2052
2298
 
2053
2299
  body.mobile .skills-section-title {
2054
- font-size: 10px;
2055
- margin-bottom: 6px;
2300
+ font-size: 12px;
2301
+ margin-bottom: 8px;
2056
2302
  }
2057
2303
 
2058
2304
  body.mobile .skills-level-display {
2059
- margin-bottom: 4px;
2305
+ margin-bottom: 8px;
2060
2306
  }
2061
2307
 
2062
2308
  body.mobile .skills-level-number {
2063
- font-size: 12px;
2309
+ font-size: 16px;
2064
2310
  }
2065
2311
 
2066
2312
  body.mobile .skills-exp-bar {
2067
- height: 14px;
2313
+ height: 16px;
2314
+ border-radius: 6px;
2068
2315
  }
2069
2316
 
2070
2317
  body.mobile .skills-exp-text {
2071
- font-size: 8px;
2318
+ font-size: 10px;
2072
2319
  }
2073
2320
 
2074
2321
  body.mobile .skills-skills-grid {
2075
- grid-template-columns: 1fr 1fr;
2076
- gap: 4px;
2322
+ grid-template-columns: 1fr 1fr 1fr;
2323
+ gap: 6px;
2077
2324
  }
2078
2325
 
2079
2326
  body.mobile .skills-skill-item {
2080
- gap: 8px;
2081
- padding: 3px;
2327
+ gap: 6px;
2328
+ padding: 4px 8px;
2329
+ border-radius: 6px;
2330
+ min-height: 40px;
2331
+ cursor: pointer;
2332
+ -webkit-tap-highlight-color: rgba(255, 255, 255, 0.1);
2082
2333
  }
2083
2334
 
2084
2335
  body.mobile .skills-skill-icon {
2085
2336
  width: 28px;
2086
2337
  height: 28px;
2087
- }
2088
-
2089
- body.mobile .skills-skill-icon-img {
2090
- width: 100%;
2091
- height: 100%;
2338
+ border-radius: 6px;
2092
2339
  }
2093
2340
 
2094
2341
  body.mobile .skills-skill-header {
2095
- margin-bottom: 3px;
2342
+ margin-bottom: 4px;
2096
2343
  }
2097
2344
 
2098
2345
  body.mobile .skills-skill-name {
2099
- font-size: 9px;
2346
+ font-size: 10px;
2347
+ overflow: hidden;
2348
+ text-overflow: ellipsis;
2349
+ white-space: nowrap;
2100
2350
  }
2101
2351
 
2102
2352
  body.mobile .skills-skill-level {
2103
- font-size: 8px;
2353
+ font-size: 9px;
2354
+ flex-shrink: 0;
2104
2355
  }
2105
2356
 
2106
2357
  body.mobile .skills-skill-exp-bar {
2107
2358
  height: 10px;
2359
+ border-radius: 6px;
2108
2360
  }
2109
2361
 
2110
2362
  body.mobile .skills-skill-exp-text {
2111
- font-size: 6px;
2363
+ font-size: 7px;
2112
2364
  }
2113
2365
 
2114
2366
  body.mobile .skills-skill-tooltip {
2115
- display: none;
2367
+ opacity: 0;
2368
+ visibility: hidden;
2369
+ transform: translateY(-4px);
2370
+ transition: all 0.2s ease;
2371
+ }
2372
+
2373
+ body.mobile .skills-mobile-tooltip-visible {
2374
+ opacity: 1 !important;
2375
+ visibility: visible !important;
2376
+ transform: translateY(-8px) !important;
2377
+ }
2378
+
2379
+ body.mobile .skills-skill-tooltip-content {
2380
+ max-width: 180px;
2381
+ font-size: 10px;
2382
+ }
2383
+
2384
+ /* Center the caret on mobile */
2385
+ body.mobile .skills-skill-tooltip-content::after {
2386
+ left: 50% !important;
2387
+ transform: translateX(-50%) !important;
2388
+ }
2389
+
2390
+ body.mobile .skills-skill-tooltip-content::before {
2391
+ left: 50% !important;
2392
+ transform: translateX(-50%) !important;
2393
+ }
2394
+
2395
+ /* Enable scrolling if needed */
2396
+ body.mobile .skills-content * {
2397
+ touch-action: pan-y !important;
2116
2398
  }
2117
2399
  </style>
2118
2400
 
@@ -2495,94 +2777,72 @@ window.ItemTooltips = (function() {
2495
2777
  flex: 1;
2496
2778
  }
2497
2779
 
2498
- /* Mobile and Small Screen Responsive */
2499
- @media (max-width: 768px) {
2500
- .dialogue-panel {
2501
- bottom: max(16px, env(safe-area-inset-bottom, 16px));
2502
- right: max(12px, env(safe-area-inset-right, 12px));
2503
- width: min(100vw - 24px, calc(100vw - 2 * max(12px, env(safe-area-inset-right, 12px))));
2504
- max-width: 340px;
2505
- max-height: min(70vh, calc(100vh - 32px));
2506
- }
2780
+ /* Mobile Responsive */
2781
+ body.mobile .dialogue-panel {
2782
+ bottom: 20px;
2783
+ right: 20px;
2784
+ width: auto;
2785
+ max-width: 340px;
2786
+ min-width: 280px;
2787
+ max-height: calc(100vh - 40px);
2788
+ }
2507
2789
 
2508
- .dialogue-header {
2509
- padding: 8px 12px;
2510
- }
2790
+ body.mobile .dialogue-header {
2791
+ padding: 8px 12px;
2792
+ border-radius: 8px 8px 0 0;
2793
+ }
2511
2794
 
2512
- .dialogue-npc-avatar {
2513
- width: 28px;
2514
- height: 28px;
2515
- }
2795
+ body.mobile .dialogue-container {
2796
+ border-radius: 8px;
2797
+ }
2516
2798
 
2517
- .dialogue-npc-name {
2518
- font-size: 11px;
2519
- }
2799
+ body.mobile .dialogue-npc-avatar {
2800
+ width: 32px;
2801
+ height: 32px;
2802
+ border-radius: 4px;
2803
+ }
2520
2804
 
2521
- .dialogue-npc-title {
2522
- font-size: 9px;
2523
- }
2524
-
2525
- .dialogue-close {
2526
- width: 18px;
2527
- height: 18px;
2528
- font-size: 10px;
2529
- }
2530
-
2531
- .dialogue-content {
2532
- padding: 10px;
2533
- max-height: calc(min(60vh, calc(100vh - 80px)) - 50px);
2534
- }
2535
-
2536
- .dialogue-message {
2537
- padding: 8px;
2538
- font-size: 11px;
2539
- margin-bottom: 8px;
2540
- }
2541
-
2542
- .dialogue-option {
2543
- padding: 6px 8px;
2544
- font-size: 10px;
2545
- }
2805
+ body.mobile .dialogue-npc-name {
2806
+ font-size: 12px;
2807
+ }
2546
2808
 
2547
- .dialogue-quest-icon {
2548
- width: 14px;
2549
- height: 14px;
2550
- }
2809
+ body.mobile .dialogue-npc-title {
2810
+ font-size: 10px;
2551
2811
  }
2552
2812
 
2553
- /* Very small screens (landscape phones, small devices) */
2554
- @media (max-width: 480px) {
2555
- .dialogue-panel {
2556
- max-height: min(60vh, calc(100vh - 20px));
2557
- max-width: 300px;
2558
- }
2813
+ body.mobile .dialogue-close {
2814
+ width: 20px;
2815
+ height: 20px;
2816
+ font-size: 12px;
2817
+ border-radius: 4px;
2818
+ }
2559
2819
 
2560
- .dialogue-content {
2561
- max-height: calc(min(50vh, calc(100vh - 60px)) - 45px);
2562
- padding: 8px;
2563
- }
2820
+ body.mobile .dialogue-content {
2821
+ padding: 12px;
2822
+ max-height: calc(100vh - 140px);
2823
+ }
2564
2824
 
2565
- .dialogue-message {
2566
- padding: 6px;
2567
- font-size: 10px;
2568
- }
2825
+ body.mobile .dialogue-content * {
2826
+ overflow-y: scroll;
2827
+ touch-action: pan-y !important;
2828
+ }
2569
2829
 
2570
- .dialogue-option {
2571
- padding: 5px 6px;
2572
- font-size: 9px;
2573
- }
2830
+ body.mobile .dialogue-message {
2831
+ padding: 8px;
2832
+ font-size: 11px;
2833
+ margin-bottom: 8px;
2834
+ border-radius: 4px;
2835
+ }
2574
2836
 
2575
- .dialogue-quest-icon {
2576
- width: 12px;
2577
- height: 12px;
2578
- }
2837
+ body.mobile .dialogue-option {
2838
+ padding: 8px 10px;
2839
+ font-size: 11px;
2840
+ border-radius: 4px;
2579
2841
  }
2580
2842
 
2581
- /* Ultra-wide screens - prevent dialogue from being too far left */
2582
- @media (min-width: 1920px) {
2583
- .dialogue-panel {
2584
- right: max(20px, calc((100vw - 1200px) / 4));
2585
- }
2843
+ body.mobile .dialogue-quest-icon {
2844
+ width: 14px;
2845
+ height: 14px;
2586
2846
  }
2587
2847
  </style>
2588
2848
 
@@ -3464,13 +3724,15 @@ window.ItemTooltips = (function() {
3464
3724
  /* Mobile Styles */
3465
3725
  body.mobile .quests-container {
3466
3726
  width: auto;
3467
- max-width: 98vw;
3468
- min-width: 300px;
3469
- height: 90vh;
3727
+ max-width: 600px;
3728
+ min-width: 340px;
3729
+ height: 85vh;
3730
+ border-radius: 8px;
3470
3731
  }
3471
3732
 
3472
3733
  body.mobile .quests-header {
3473
3734
  padding: 8px 12px;
3735
+ border-radius: 8px 8px 0 0;
3474
3736
  }
3475
3737
 
3476
3738
  body.mobile .quests-title {
@@ -3478,72 +3740,193 @@ window.ItemTooltips = (function() {
3478
3740
  }
3479
3741
 
3480
3742
  body.mobile .quests-close {
3481
- width: 20px;
3482
- height: 20px;
3483
- font-size: 14px;
3484
- }
3485
-
3486
- body.mobile .quests-content {
3487
- flex-direction: column;
3743
+ width: 24px;
3744
+ height: 24px;
3745
+ font-size: 16px;
3746
+ border-radius: 6px;
3488
3747
  }
3489
3748
 
3490
3749
  body.mobile .quests-sidebar {
3491
- width: auto;
3492
- max-height: 200px;
3493
- border-right: none;
3494
- border-bottom: 1px solid #444;
3495
- }
3496
-
3497
- body.mobile .quests-section {
3498
- flex: none;
3750
+ width: 175px;
3751
+ min-width: 175px;
3499
3752
  }
3500
3753
 
3501
3754
  body.mobile .quests-section-title {
3502
- padding: 8px 12px 6px;
3503
- font-size: 12px;
3755
+ padding: 8px 10px 6px;
3756
+ font-size: 11px;
3504
3757
  }
3505
3758
 
3506
3759
  body.mobile .quests-list {
3507
3760
  padding: 6px;
3508
- max-height: 120px;
3761
+ }
3762
+
3763
+ body.mobile .quests-list * {
3764
+ touch-action: pan-y !important;
3765
+ overflow-y: scroll;
3509
3766
  }
3510
3767
 
3511
3768
  body.mobile .quests-item {
3512
- padding: 8px;
3513
- margin-bottom: 4px;
3769
+ padding: 3px 8px;
3770
+ margin-bottom: 3px;
3771
+ border-radius: 6px;
3772
+ min-height: 28px;
3514
3773
  }
3515
3774
 
3516
3775
  body.mobile .quests-item-name {
3517
3776
  font-size: 11px;
3777
+ font-weight: 500;
3778
+ overflow: hidden;
3779
+ text-overflow: ellipsis;
3780
+ white-space: nowrap;
3518
3781
  }
3519
3782
 
3520
3783
  body.mobile .quests-item-progress {
3521
- font-size: 10px;
3784
+ font-size: 9px;
3785
+ font-weight: 600;
3522
3786
  }
3523
3787
 
3524
3788
  body.mobile .quests-details-content {
3525
3789
  padding: 12px;
3526
3790
  }
3527
3791
 
3792
+ body.mobile .quests-details-content * {
3793
+ touch-action: pan-y !important;
3794
+ overflow-y: scroll;
3795
+ }
3796
+
3797
+ /* Exception for reward items and tooltips - override the blanket overflow rule */
3798
+ body.mobile .quests-reward-item,
3799
+ body.mobile .quests-reward-item *,
3800
+ body.mobile .quests-reward-item-tooltip,
3801
+ body.mobile .quests-reward-item-tooltip * {
3802
+ overflow: visible !important;
3803
+ }
3804
+
3805
+ /* Ensure all parent containers allow tooltips to escape */
3806
+ body.mobile .quests-rewards-list,
3807
+ body.mobile .quests-detail-rewards,
3808
+ body.mobile .quests-details-panel {
3809
+ overflow: visible !important;
3810
+ }
3811
+
3812
+ body.mobile .quests-rewards-list * {
3813
+ overflow-y: scroll !important;
3814
+ touch-action: pan-y !important;
3815
+ }
3816
+
3817
+ body.mobile .quests-detail-header {
3818
+ margin-bottom: 12px;
3819
+ padding-bottom: 8px;
3820
+ }
3821
+
3528
3822
  body.mobile .quests-detail-name {
3529
- font-size: 16px;
3823
+ font-size: 14px;
3824
+ margin-bottom: 6px;
3825
+ }
3826
+
3827
+ body.mobile .quests-detail-description {
3828
+ margin-bottom: 16px;
3530
3829
  }
3531
3830
 
3532
3831
  body.mobile .quests-detail-description p {
3533
3832
  font-size: 11px;
3833
+ line-height: 1.4;
3534
3834
  }
3535
3835
 
3536
- body.mobile .quests-objectives-title {
3836
+ body.mobile .quests-detail-objectives {
3837
+ margin-bottom: 12px;
3838
+ }
3839
+
3840
+ body.mobile .quests-objectives-title,
3841
+ body.mobile .quests-rewards-title {
3537
3842
  font-size: 12px;
3843
+ margin-bottom: 8px;
3844
+ }
3845
+
3846
+ body.mobile .quests-objectives-list {
3847
+ margin-bottom: 6px;
3848
+ }
3849
+
3850
+ body.mobile .quests-objective {
3851
+ padding: 6px 0;
3852
+ gap: 8px;
3853
+ }
3854
+
3855
+ body.mobile .quests-objective-icon {
3856
+ width: 14px;
3857
+ height: 14px;
3858
+ font-size: 10px;
3538
3859
  }
3539
3860
 
3540
3861
  body.mobile .quests-objective-text {
3541
- font-size: 11px;
3862
+ font-size: 10px;
3863
+ line-height: 1.3;
3864
+ }
3865
+
3866
+ body.mobile .quests-reward-item {
3867
+ padding: 3px 8px;
3868
+ gap: 6px;
3869
+ border-radius: 6px;
3870
+ min-height: 24px;
3871
+ }
3872
+
3873
+ body.mobile .quests-reward-icon {
3874
+ width: 16px;
3875
+ height: 16px;
3876
+ }
3877
+
3878
+ body.mobile .quests-reward-exp-icon {
3879
+ font-size: 12px;
3880
+ width: 16px;
3881
+ }
3882
+
3883
+ body.mobile .quests-reward-text {
3884
+ font-size: 10px;
3885
+ font-weight: 500;
3542
3886
  }
3543
3887
 
3544
3888
  body.mobile .quests-empty-section {
3545
3889
  padding: 12px 8px;
3546
- font-size: 12px;
3890
+ font-size: 10px;
3891
+ line-height: 1.3;
3892
+ }
3893
+
3894
+ body.mobile .quests-empty-content {
3895
+ padding: 16px 12px;
3896
+ }
3897
+
3898
+ body.mobile .quests-empty-icon {
3899
+ font-size: 32px;
3900
+ margin-bottom: 8px;
3901
+ }
3902
+
3903
+ body.mobile .quests-empty-text {
3904
+ font-size: 11px;
3905
+ line-height: 1.3;
3906
+ padding: 0 6px;
3907
+ }
3908
+
3909
+ /* Mobile tooltip adjustments */
3910
+ body.mobile .quests-reward-item-tooltip {
3911
+ opacity: 0;
3912
+ visibility: hidden;
3913
+ transition: all 0.2s ease;
3914
+ }
3915
+
3916
+ body.mobile .quests-reward-item-tooltip.mobile-tooltip-visible {
3917
+ opacity: 1 !important;
3918
+ visibility: visible !important;
3919
+ }
3920
+
3921
+ /* Override mobile caret centering - keep caret over reward icon */
3922
+ body.mobile .quests-reward-item-tooltip-content::after {
3923
+ left: 15px !important;
3924
+ transform: translateX(-50%) !important;
3925
+ }
3926
+
3927
+ body.mobile .quests-reward-item-tooltip-content::before {
3928
+ left: 15px !important;
3929
+ transform: translateX(-50%) !important;
3547
3930
  }
3548
3931
 
3549
3932
 
@@ -4450,155 +4833,149 @@ window.ItemTooltips = (function() {
4450
4833
  .merchant-hotbar-slot.merchant-legendary { border-color: #F59E0B; }
4451
4834
 
4452
4835
  /* Mobile styles */
4453
- @media (max-width: 768px) {
4454
- body.mobile {
4455
- --merchant-slot-size: 40px;
4456
- --merchant-hotbar-size: 40px;
4457
- --merchant-icon-size: 20px;
4458
- --merchant-gap: 3px;
4459
- --merchant-padding: 6px;
4460
- }
4461
-
4462
- body.mobile .merchant-overlay {
4463
- gap: 8px;
4464
- padding: 4px;
4465
- }
4836
+ body.mobile {
4837
+ --merchant-slot-size: 44px;
4838
+ --merchant-hotbar-size: 44px;
4839
+ --merchant-icon-size: 32px;
4840
+ --merchant-gap: 4px;
4841
+ --merchant-padding: 8px;
4842
+ }
4466
4843
 
4467
- body.mobile .merchant-container,
4468
- body.mobile .merchant-hotbar-container {
4469
- width: auto;
4470
- max-width: 500px;
4471
- min-width: 320px;
4472
- }
4844
+ body.mobile .merchant-overlay {
4845
+ gap: 12px;
4846
+ padding: 8px;
4847
+ }
4473
4848
 
4474
- body.mobile .merchant-header {
4475
- padding: 4px 8px;
4476
- }
4849
+ body.mobile .merchant-container,
4850
+ body.mobile .merchant-hotbar-container {
4851
+ width: auto;
4852
+ max-width: 560px;
4853
+ min-width: 340px;
4854
+ border-radius: 8px;
4855
+ }
4477
4856
 
4478
- body.mobile .merchant-info {
4479
- gap: 8px;
4480
- }
4857
+ body.mobile .merchant-header {
4858
+ padding: 8px 12px;
4859
+ border-radius: 8px 8px 0 0;
4860
+ }
4481
4861
 
4482
- body.mobile .merchant-avatar {
4483
- width: 32px;
4484
- height: 32px;
4485
- }
4862
+ body.mobile .merchant-info {
4863
+ gap: 8px;
4864
+ }
4486
4865
 
4487
- body.mobile .merchant-name {
4488
- font-size: 12px;
4489
- }
4866
+ body.mobile .merchant-avatar {
4867
+ width: 32px;
4868
+ height: 32px;
4869
+ }
4490
4870
 
4491
- body.mobile .merchant-title {
4492
- font-size: 10px;
4493
- }
4871
+ body.mobile .merchant-name {
4872
+ font-size: 14px;
4873
+ }
4494
4874
 
4495
- body.mobile .merchant-close {
4496
- width: 20px;
4497
- height: 20px;
4498
- font-size: 14px;
4499
- }
4875
+ body.mobile .merchant-title {
4876
+ font-size: 12px;
4877
+ }
4500
4878
 
4501
- body.mobile .merchant-content {
4502
- padding: 6px;
4503
- flex-direction: column;
4504
- gap: 8px;
4505
- }
4879
+ body.mobile .merchant-close {
4880
+ width: 24px;
4881
+ height: 24px;
4882
+ font-size: 16px;
4883
+ }
4506
4884
 
4507
- body.mobile .merchant-grid,
4508
- body.mobile .merchant-hotbar-grid {
4509
- justify-items: center;
4510
- width: fit-content;
4511
- margin: 0 auto;
4512
- }
4885
+ body.mobile .merchant-content {
4886
+ padding: 12px;
4887
+ gap: 12px;
4888
+ }
4513
4889
 
4514
- body.mobile .merchant-right-panel {
4515
- width: auto;
4516
- flex: 1;
4517
- min-height: 80px;
4518
- padding: var(--merchant-padding);
4519
- }
4890
+ body.mobile .merchant-grid,
4891
+ body.mobile .merchant-hotbar-grid {
4892
+ padding: 8px;
4893
+ border-radius: 6px;
4894
+ }
4520
4895
 
4521
- body.mobile .merchant-panel-placeholder {
4522
- padding: 20px;
4523
- font-size: 12px;
4524
- }
4896
+ body.mobile .merchant-hotbar-grid {
4897
+ justify-items: center;
4898
+ width: fit-content;
4899
+ margin: 0 auto;
4900
+ padding: 12px;
4901
+ border-radius: 0 0 6px 6px;
4902
+ }
4525
4903
 
4526
- body.mobile .merchant-slot-content,
4527
- body.mobile .merchant-hotbar-slot-content {
4528
- font-size: 10px;
4529
- }
4904
+ body.mobile .merchant-right-panel {
4905
+ padding: 8px;
4906
+ border-radius: 6px;
4907
+ flex: 0 0 184px;
4908
+ min-width: 184px;
4909
+ box-sizing: border-box;
4910
+ }
4530
4911
 
4531
- body.mobile .merchant-item-icon {
4532
- width: 32px;
4533
- height: 32px;
4534
- }
4912
+ body.mobile .merchant-panel-placeholder {
4913
+ font-size: 12px;
4914
+ }
4535
4915
 
4536
- body.mobile .merchant-hotbar-slot-icon {
4537
- width: 32px;
4538
- height: 32px;
4539
- }
4916
+ body.mobile .merchant-slot-content,
4917
+ body.mobile .merchant-hotbar-slot-content {
4918
+ font-size: 10px;
4919
+ }
4540
4920
 
4541
- body.mobile .merchant-slot-quantity {
4542
- font-size: 7px;
4543
- padding: 1px 2px;
4544
- bottom: 1px;
4545
- right: 1px;
4546
- min-width: 8px;
4547
- }
4921
+ body.mobile .merchant-item-icon {
4922
+ width: 36px;
4923
+ height: 36px;
4924
+ }
4548
4925
 
4549
- body.mobile .merchant-hotbar-slot-quantity {
4550
- font-size: 8px;
4551
- padding: 1px 3px;
4552
- bottom: 1px;
4553
- right: 1px;
4554
- }
4926
+ body.mobile .merchant-hotbar-slot-icon {
4927
+ width: 36px;
4928
+ height: 36px;
4929
+ }
4555
4930
 
4556
- body.mobile .merchant-item-tooltip {
4557
- display: none;
4558
- }
4931
+ body.mobile .merchant-slot-quantity {
4932
+ font-size: 8px;
4933
+ padding: 1px 3px;
4934
+ bottom: 2px;
4935
+ right: 2px;
4936
+ min-width: 10px;
4937
+ border-radius: 3px;
4938
+ }
4559
4939
 
4560
- /* Mobile item details */
4561
- body.mobile .merchant-item-details {
4562
- gap: 6px;
4563
- }
4940
+ body.mobile .merchant-hotbar-slot-quantity {
4941
+ font-size: 8px;
4942
+ padding: 1px 3px;
4943
+ bottom: 2px;
4944
+ right: 2px;
4945
+ min-width: 12px;
4946
+ border-radius: 3px;
4947
+ }
4564
4948
 
4565
- body.mobile .merchant-item-header {
4566
- gap: 8px;
4567
- padding: 6px;
4568
- }
4569
4949
 
4570
- body.mobile .merchant-item-actions {
4571
- gap: 6px;
4572
- }
4573
4950
 
4574
- body.mobile .merchant-item-icon {
4575
- width: 24px;
4576
- height: 24px;
4577
- }
4951
+ /* Mobile item details */
4952
+ body.mobile .merchant-item-details {
4953
+ min-width: 180px;
4954
+ gap: 8px;
4955
+ }
4578
4956
 
4579
- body.mobile .merchant-item-name {
4580
- font-size: 10px;
4581
- }
4957
+ body.mobile .merchant-item-header {
4958
+ gap: 6px;
4959
+ }
4582
4960
 
4583
- body.mobile .merchant-item-total {
4584
- font-size: 9px;
4585
- }
4961
+ body.mobile .merchant-item-actions {
4962
+ gap: 12px;
4963
+ }
4586
4964
 
4587
- body.mobile .merchant-qty-btn {
4588
- width: 20px;
4589
- height: 20px;
4590
- font-size: 10px;
4591
- }
4965
+ body.mobile .merchant-qty-btn {
4966
+ width: 24px;
4967
+ height: 24px;
4968
+ font-size: 12px;
4969
+ }
4592
4970
 
4593
- body.mobile .merchant-qty-display {
4594
- font-size: 10px;
4595
- min-width: 16px;
4596
- }
4971
+ body.mobile .merchant-qty-display {
4972
+ font-size: 12px;
4973
+ min-width: 20px;
4974
+ }
4597
4975
 
4598
- body.mobile .merchant-action-btn {
4599
- padding: 6px 12px;
4600
- font-size: 10px;
4601
- }
4976
+ body.mobile .merchant-action-btn {
4977
+ padding: 8px 16px;
4978
+ font-size: 12px;
4602
4979
  }
4603
4980
 
4604
4981
  /* Button styles */
@@ -5513,37 +5890,40 @@ window.ItemTooltips = (function() {
5513
5890
 
5514
5891
 
5515
5892
  /* Mobile responsive */
5516
- @media (max-width: 768px) {
5893
+
5517
5894
  body.mobile {
5518
- --crafting-slot-size: 40px;
5519
- --crafting-icon-size: 20px;
5520
- --crafting-gap: 3px;
5521
- --crafting-padding: 6px;
5895
+ --crafting-slot-size: 44px;
5896
+ --crafting-icon-size: 32px;
5897
+ --crafting-gap: 4px;
5898
+ --crafting-padding: 8px;
5522
5899
  }
5523
5900
 
5524
5901
  body.mobile .crafting-container {
5525
5902
  width: auto;
5526
- max-width: 500px;
5527
- min-width: 320px;
5903
+ max-width: 520px;
5904
+ min-width: 340px;
5905
+ border-radius: 8px;
5528
5906
  }
5529
5907
 
5530
5908
  body.mobile .crafting-content {
5531
- padding: 6px;
5532
- flex-direction: column;
5533
- gap: 8px;
5909
+ padding: 12px;
5910
+ gap: 12px;
5534
5911
  }
5535
5912
 
5536
5913
  body.mobile .crafting-grid {
5537
5914
  justify-items: center;
5538
5915
  width: fit-content;
5539
5916
  margin: 0 auto;
5917
+ padding: 8px;
5918
+ border-radius: 6px;
5540
5919
  }
5541
5920
 
5542
5921
  body.mobile .crafting-right-panel {
5543
5922
  width: auto;
5544
5923
  flex: 1;
5545
- min-height: 80px;
5924
+ min-height: 120px;
5546
5925
  padding: var(--crafting-padding);
5926
+ border-radius: 6px;
5547
5927
  }
5548
5928
 
5549
5929
  body.mobile .crafting-panel-content {
@@ -5556,10 +5936,9 @@ window.ItemTooltips = (function() {
5556
5936
  padding: 16px;
5557
5937
  }
5558
5938
 
5559
-
5560
-
5561
5939
  body.mobile .crafting-header {
5562
- padding: 4px 8px;
5940
+ padding: 8px 12px;
5941
+ border-radius: 8px 8px 0 0;
5563
5942
  }
5564
5943
 
5565
5944
  body.mobile .crafting-info {
@@ -5572,15 +5951,21 @@ window.ItemTooltips = (function() {
5572
5951
  }
5573
5952
 
5574
5953
  body.mobile .crafting-name {
5575
- font-size: 12px;
5954
+ font-size: 14px;
5576
5955
  }
5577
5956
 
5578
5957
  body.mobile .crafting-title {
5579
- font-size: 10px;
5958
+ font-size: 12px;
5959
+ }
5960
+
5961
+ body.mobile .crafting-close {
5962
+ width: 24px;
5963
+ height: 24px;
5964
+ font-size: 16px;
5580
5965
  }
5581
5966
 
5582
5967
  body.mobile .crafting-item-details {
5583
- gap: 6px;
5968
+ gap: 8px;
5584
5969
  }
5585
5970
 
5586
5971
  body.mobile .crafting-item-header {
@@ -5590,71 +5975,85 @@ window.ItemTooltips = (function() {
5590
5975
  }
5591
5976
 
5592
5977
  body.mobile .crafting-item-header .crafting-item-icon {
5593
- width: 24px;
5594
- height: 24px;
5978
+ width: 28px;
5979
+ height: 28px;
5595
5980
  }
5596
5981
 
5597
5982
  body.mobile .crafting-item-name {
5598
- font-size: 10px;
5983
+ font-size: 11px;
5599
5984
  }
5600
5985
 
5601
5986
  body.mobile .crafting-requirements-title {
5602
- font-size: 10px;
5987
+ font-size: 11px;
5603
5988
  }
5604
5989
 
5605
5990
  body.mobile .crafting-requirements-list {
5606
5991
  grid-template-columns: repeat(2, 1fr);
5607
- gap: 3px;
5992
+ gap: 4px;
5608
5993
  }
5609
5994
 
5610
5995
  body.mobile .crafting-requirement-item {
5611
- padding: 3px 4px;
5612
- min-height: 28px;
5613
- gap: 4px;
5996
+ padding: 4px 6px;
5997
+ min-height: 32px;
5998
+ gap: 6px;
5999
+ border-radius: 6px;
5614
6000
  }
5615
6001
 
5616
6002
  body.mobile .crafting-requirement-icon {
5617
- width: 16px;
5618
- height: 16px;
6003
+ width: 18px;
6004
+ height: 18px;
5619
6005
  }
5620
6006
 
5621
6007
  body.mobile .crafting-requirement-name {
5622
- font-size: 9px;
6008
+ font-size: 10px;
5623
6009
  }
5624
6010
 
5625
6011
  body.mobile .crafting-requirement-quantity {
5626
- font-size: 8px;
5627
- padding: 1px 2px;
6012
+ font-size: 9px;
6013
+ padding: 1px 3px;
5628
6014
  }
5629
6015
 
5630
6016
  body.mobile .crafting-no-requirements {
5631
- font-size: 10px;
5632
- padding: 12px;
6017
+ font-size: 11px;
6018
+ padding: 14px;
5633
6019
  }
5634
6020
 
5635
6021
  body.mobile .crafting-item-actions {
5636
- padding-top: 6px;
6022
+ padding-top: 8px;
5637
6023
  }
5638
6024
 
5639
6025
  body.mobile .crafting-action-btn {
5640
- padding: 6px 12px;
5641
- font-size: 10px;
6026
+ padding: 8px 14px;
6027
+ font-size: 11px;
5642
6028
  }
5643
6029
 
5644
- body.mobile .crafting-item-stats {
6030
+ body.mobile .crafting-slot-quantity {
5645
6031
  font-size: 8px;
5646
- margin-top: 3px;
6032
+ padding: 1px 3px;
6033
+ bottom: 2px;
6034
+ right: 2px;
6035
+ min-width: 10px;
6036
+ border-radius: 3px;
6037
+ }
6038
+
6039
+ body.mobile .crafting-item-icon {
6040
+ width: 36px;
6041
+ height: 36px;
6042
+ }
6043
+
6044
+ body.mobile .crafting-item-stats {
6045
+ font-size: 9px;
6046
+ margin-top: 4px;
5647
6047
  }
5648
6048
 
5649
6049
  body.mobile .crafting-item-stats .stats-header {
5650
- font-size: 8px;
6050
+ font-size: 9px;
5651
6051
  }
5652
6052
 
5653
6053
  body.mobile .crafting-item-description {
5654
- font-size: 8px;
5655
- margin-top: 3px;
6054
+ font-size: 9px;
6055
+ margin-top: 4px;
5656
6056
  }
5657
- }
5658
6057
  </style>
5659
6058
 
5660
6059
 
@@ -6689,6 +7088,20 @@ window.ItemTooltips = (function() {
6689
7088
  <div class="hud-crosshair-vertical"></div>
6690
7089
  </div>
6691
7090
 
7091
+ <!-- Mobile Control Buttons -->
7092
+ <button class="hud-mobile-button" id="hud-attack-btn">
7093
+ <img src="{{CDN_ASSETS_URL}}/icons/skills/combat.png" alt="Attack" class="hud-mobile-button-icon">
7094
+ </button>
7095
+ <button class="hud-mobile-button" id="hud-dodge-btn">
7096
+ <img src="{{CDN_ASSETS_URL}}/icons/skills/agility.png" alt="Dodge" class="hud-mobile-button-icon">
7097
+ </button>
7098
+ <button class="hud-mobile-button" id="hud-jump-btn">
7099
+ <img src="{{CDN_ASSETS_URL}}/icons/buttons/jump.png" alt="Jump" class="hud-mobile-button-icon">
7100
+ </button>
7101
+ <button class="hud-mobile-button" id="hud-interact-btn">
7102
+ <img src="{{CDN_ASSETS_URL}}/icons/buttons/e-mobile.png" alt="Interact" class="hud-mobile-button-icon">
7103
+ </button>
7104
+
6692
7105
  <!-- Hotbar -->
6693
7106
  <div class="hud-hotbar-container">
6694
7107
  <div class="hud-hotbar-grid">
@@ -6820,6 +7233,17 @@ window.ItemTooltips = (function() {
6820
7233
 
6821
7234
  // Setup death overlay respawn button
6822
7235
  document.getElementById('hud-death-respawn-btn').addEventListener('click', handleRespawn);
7236
+
7237
+ // Setup mobile buttons
7238
+ document.getElementById('hud-attack-btn').addEventListener('touchstart', handleAttackTap);
7239
+ document.getElementById('hud-attack-btn').addEventListener('touchend', stopAutoAttack);
7240
+ document.getElementById('hud-attack-btn').addEventListener('touchcancel', stopAutoAttack);
7241
+ document.getElementById('hud-dodge-btn').addEventListener('touchstart', () => hytopia.pressInput('q', true));
7242
+ document.getElementById('hud-dodge-btn').addEventListener('touchend', () => hytopia.pressInput('q', false));
7243
+ document.getElementById('hud-jump-btn').addEventListener('touchstart', () => hytopia.pressInput('sp', true));
7244
+ document.getElementById('hud-jump-btn').addEventListener('touchend', () => hytopia.pressInput('sp', false));
7245
+ document.getElementById('hud-interact-btn').addEventListener('touchstart', () => hytopia.pressInput('e', true));
7246
+ document.getElementById('hud-interact-btn').addEventListener('touchend', () => hytopia.pressInput('e', false));
6823
7247
  }
6824
7248
 
6825
7249
  function updateHudQuestCount(activeCount, completedCount) {
@@ -7078,6 +7502,49 @@ window.ItemTooltips = (function() {
7078
7502
  }
7079
7503
  }
7080
7504
 
7505
+ // Auto-attack system
7506
+ let autoAttackInterval = null;
7507
+ let lastTapTime = 0;
7508
+
7509
+
7510
+ function handleAttackTap() {
7511
+ const currentTime = Date.now();
7512
+
7513
+ // Double tap detected (within 300ms)
7514
+ if (currentTime - lastTapTime < 300 && lastTapTime > 0) {
7515
+ stopAutoAttack();
7516
+ hytopia.pressInput('mr', true);
7517
+ setTimeout(() => hytopia.pressInput('mr', false), 100);
7518
+ lastTapTime = 0;
7519
+ return;
7520
+ }
7521
+
7522
+ // Single tap - start auto attack
7523
+ lastTapTime = currentTime;
7524
+ startAutoAttack();
7525
+ }
7526
+
7527
+ function startAutoAttack() {
7528
+ if (autoAttackInterval) return;
7529
+
7530
+ // Immediate first attack
7531
+ hytopia.pressInput('ml', true);
7532
+ setTimeout(() => hytopia.pressInput('ml', false), 100);
7533
+
7534
+ // Repeat every 500ms
7535
+ autoAttackInterval = setInterval(() => {
7536
+ hytopia.pressInput('ml', true);
7537
+ setTimeout(() => hytopia.pressInput('ml', false), 100);
7538
+ }, 500);
7539
+ }
7540
+
7541
+ function stopAutoAttack() {
7542
+ if (autoAttackInterval) {
7543
+ clearInterval(autoAttackInterval);
7544
+ autoAttackInterval = null;
7545
+ }
7546
+ }
7547
+
7081
7548
  // Initialize HUD
7082
7549
  initializeHUD();
7083
7550
 
@@ -8003,181 +8470,312 @@ window.ItemTooltips = (function() {
8003
8470
  }
8004
8471
  }
8005
8472
 
8473
+ /* ============================================
8474
+ MOBILE CONTROL BUTTONS
8475
+ ============================================ */
8476
+
8477
+ .hud-mobile-button {
8478
+ width: 50px;
8479
+ height: 50px;
8480
+ background: linear-gradient(145deg, var(--hud-primary), var(--hud-secondary));
8481
+ border: 2px solid var(--hud-border);
8482
+ border-radius: 50%;
8483
+ display: none;
8484
+ align-items: center;
8485
+ justify-content: center;
8486
+ padding: 0;
8487
+ position: absolute;
8488
+ overflow: hidden;
8489
+ transition: all var(--hud-transition);
8490
+ box-shadow: var(--hud-box-shadow), var(--hud-inset-shadow);
8491
+ pointer-events: auto;
8492
+
8493
+ /* Mobile optimizations */
8494
+ -webkit-tap-highlight-color: transparent;
8495
+ -webkit-touch-callout: none;
8496
+ user-select: none;
8497
+ outline: none;
8498
+ }
8499
+
8500
+ /* Individual button positioning */
8501
+ #hud-attack-btn {
8502
+ bottom: 50px;
8503
+ right: 70px;
8504
+ height: 70px;
8505
+ width: 70px;
8506
+ }
8507
+
8508
+ #hud-dodge-btn {
8509
+ bottom: 50px;
8510
+ right: 155px;
8511
+ }
8512
+
8513
+ #hud-jump-btn {
8514
+ bottom: 130px;
8515
+ right: 50px;
8516
+ }
8517
+
8518
+ #hud-interact-btn {
8519
+ bottom: 120px;
8520
+ right: 130px;
8521
+ }
8522
+
8523
+ .hud-mobile-button:active {
8524
+ transform: scale(0.95);
8525
+ box-shadow: var(--hud-box-shadow);
8526
+ }
8527
+
8528
+ .hud-mobile-button-icon {
8529
+ width: 100%;
8530
+ height: 100%;
8531
+ border-radius: 50%;
8532
+ object-fit: contain;
8533
+ opacity: 0.85;
8534
+ transition: opacity var(--hud-transition);
8535
+ filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.8));
8536
+ }
8537
+
8538
+ .hud-mobile-button:active .hud-mobile-button-icon {
8539
+ opacity: 1;
8540
+ }
8541
+
8542
+
8543
+
8006
8544
  /* ============================================
8007
8545
  MOBILE RESPONSIVE
8008
8546
  ============================================ */
8009
8547
 
8010
- @media (max-width: 768px) {
8011
- :root {
8012
- --hud-hotbar-size: 40px;
8013
- --hud-bar-height: 16px;
8014
- --hud-bar-width: 180px;
8015
- --hud-hotbar-gap: 6px;
8016
- --hud-status-gap: 3px;
8017
- --hud-clock-size: 12px;
8018
- }
8548
+ body.mobile {
8549
+ --hud-hotbar-size: 44px;
8550
+ --hud-bar-height: 16px;
8551
+ --hud-bar-width: 160px;
8552
+ --hud-hotbar-gap: 5px;
8553
+ --hud-status-gap: 10px;
8554
+ --hud-clock-size: 10px;
8555
+ --hud-actions-gap: 10px;
8556
+ }
8019
8557
 
8020
- .hud-hotbar-container {
8021
- bottom: 16px;
8022
- }
8558
+ /* Show mobile buttons only on mobile */
8559
+ body.mobile .hud-mobile-button {
8560
+ display: flex;
8561
+ }
8023
8562
 
8024
- .hud-hotbar-grid {
8025
- padding: 8px;
8026
- border-radius: 8px;
8027
- }
8563
+ body.mobile .hud-hotbar-container {
8564
+ bottom: 8px;
8565
+ }
8028
8566
 
8029
- .hud-status-container {
8030
- bottom: 70px;
8031
- }
8567
+ body.mobile .hud-hotbar-grid {
8568
+ padding: 8px;
8569
+ border-radius: 8px;
8570
+ gap: 4px;
8571
+ }
8032
8572
 
8033
- .hud-clock-container {
8034
- top: 16px;
8035
- right: 16px;
8036
- }
8573
+ body.mobile .hud-status-container {
8574
+ bottom: 82px;
8575
+ gap: 16px;
8576
+ }
8037
8577
 
8038
- .hud-clock {
8039
- padding: 8px;
8040
- }
8578
+ body.mobile .hud-clock-container {
8579
+ top: 16px;
8580
+ right: 16px;
8581
+ }
8041
8582
 
8042
- .hud-hotbar-slot-content {
8043
- font-size: 12px;
8044
- }
8583
+ body.mobile .hud-clock {
8584
+ padding: 8px 10px;
8585
+ border-radius: 8px;
8586
+ }
8045
8587
 
8046
- .hud-hotbar-slot-icon {
8047
- width: 28px;
8048
- height: 28px;
8049
- }
8588
+ body.mobile .hud-hotbar-slot {
8589
+ border-radius: 8px;
8590
+ border-width: 2px;
8591
+ }
8050
8592
 
8051
- .hud-hotbar-slot-quantity {
8052
- font-size: 8px;
8053
- padding: 1px 3px;
8054
- }
8593
+ body.mobile .hud-hotbar-slot-content {
8594
+ font-size: 12px;
8595
+ }
8055
8596
 
8056
- .hud-health-text,
8057
- .hud-exp-text {
8058
- font-size: 10px;
8059
- }
8597
+ body.mobile .hud-hotbar-slot-icon {
8598
+ width: 32px;
8599
+ height: 32px;
8600
+ }
8060
8601
 
8061
- .hud-exp-gain {
8062
- font-size: 12px;
8063
- left: calc(var(--hud-bar-width) + var(--hud-status-gap) + var(--hud-bar-width) / 2);
8064
- }
8602
+ body.mobile .hud-hotbar-slot-quantity {
8603
+ font-size: 8px;
8604
+ padding: 1px 3px;
8605
+ bottom: 2px;
8606
+ right: 2px;
8607
+ }
8065
8608
 
8066
- .hud-action-buttons {
8067
- top: 60px;
8068
- right: 16px;
8069
- }
8609
+ body.mobile .hud-health-bar,
8610
+ body.mobile .hud-exp-bar {
8611
+ border-radius: 8px;
8612
+ }
8070
8613
 
8071
- .hud-action-button-icon {
8072
- width: 24px;
8073
- height: 24px;
8074
- }
8614
+ body.mobile .hud-health-text,
8615
+ body.mobile .hud-exp-text {
8616
+ font-size: 10px;
8617
+ }
8075
8618
 
8076
- .hud-action-tooltip {
8077
- display: none;
8078
- }
8619
+ body.mobile .hud-exp-gain {
8620
+ font-size: 12px;
8621
+ left: calc(var(--hud-bar-width) + var(--hud-status-gap) + var(--hud-bar-width) / 2);
8622
+ }
8079
8623
 
8080
- .hud-action-key-indicator {
8081
- width: 16px;
8082
- height: 16px;
8083
- top: -6px;
8084
- right: -6px;
8085
- font-size: 8px;
8086
- }
8624
+ body.mobile .hud-action-buttons {
8625
+ top: 55px;
8626
+ right: 16px;
8627
+ gap: 10px;
8628
+ }
8087
8629
 
8088
- .hud-quest-count-indicator {
8089
- min-width: 14px;
8090
- height: 14px;
8091
- top: -6px;
8092
- left: -6px;
8093
- font-size: 8px;
8094
- }
8630
+ body.mobile .hud-action-button {
8631
+ width: 44px;
8632
+ height: 44px;
8633
+ border-radius: 8px;
8634
+ border-width: 2px;
8635
+ }
8095
8636
 
8096
- .hud-help-icon {
8097
- font-size: 18px;
8098
- }
8637
+ body.mobile .hud-action-button-icon {
8638
+ width: 44px;
8639
+ height: 44px;
8640
+ }
8099
8641
 
8100
- /* Notification Mobile Adjustments */
8101
- .hud-notification-container {
8102
- top: 60px;
8103
- right: 66px;
8104
- gap: 8px;
8105
- }
8642
+ body.mobile .hud-action-tooltip {
8643
+ display: none;
8644
+ }
8106
8645
 
8107
- .hud-notification {
8108
- min-width: 160px;
8109
- max-width: 240px;
8110
- padding: 10px 12px;
8111
- font-size: 11px;
8112
- }
8646
+ body.mobile .hud-action-key-indicator {
8647
+ width: 16px;
8648
+ height: 16px;
8649
+ top: -6px;
8650
+ right: -6px;
8651
+ font-size: 8px;
8652
+ border-radius: 6px;
8653
+ }
8113
8654
 
8114
- .hud-notification-content {
8115
- gap: 8px;
8116
- }
8655
+ body.mobile .hud-quest-count-indicator {
8656
+ width: 16px;
8657
+ height: 16px;
8658
+ top: -6px;
8659
+ left: -6px;
8660
+ font-size: 9px;
8661
+ }
8117
8662
 
8118
- .hud-notification-text {
8119
- font-size: 11px;
8120
- }
8663
+ body.mobile .hud-help-notification-indicator {
8664
+ width: 12px;
8665
+ height: 12px;
8666
+ top: -5px;
8667
+ left: -5px;
8668
+ }
8121
8669
 
8122
- .hud-crosshair-horizontal {
8123
- width: 8px;
8124
- left: -4px;
8125
- }
8670
+ body.mobile .hud-help-icon {
8671
+ font-size: 20px;
8672
+ }
8126
8673
 
8127
- .hud-crosshair-vertical {
8128
- height: 8px;
8129
- top: -4px;
8130
- }
8674
+ /* Notification Mobile Adjustments */
8675
+ body.mobile .hud-notification-container {
8676
+ top: 55px;
8677
+ right: 70px;
8678
+ gap: 8px;
8679
+ }
8131
8680
 
8132
- /* Area Banner Mobile */
8133
- .hud-area-banner-text {
8134
- font-size: clamp(1.8rem, 10vw, 3rem);
8135
- letter-spacing: 0.05em;
8136
- margin: 0 0 4px 0;
8137
- }
8681
+ body.mobile .hud-notification {
8682
+ min-width: 160px;
8683
+ max-width: 240px;
8684
+ padding: 10px 12px;
8685
+ font-size: 10px;
8686
+ border-radius: 8px;
8687
+ }
8138
8688
 
8139
- @keyframes underlineExpand {
8140
- to {
8141
- width: min(300px, 85vw);
8142
- opacity: 1;
8143
- }
8144
- }
8689
+ body.mobile .hud-notification-content {
8690
+ gap: 8px;
8691
+ }
8145
8692
 
8146
- /* Death Overlay Mobile */
8147
- .hud-death-content {
8148
- margin: 0 16px;
8149
- max-width: 90vw;
8150
- }
8693
+ body.mobile .hud-notification-icon {
8694
+ width: 14px;
8695
+ height: 14px;
8696
+ font-size: 10px;
8697
+ }
8151
8698
 
8152
- .hud-death-title {
8153
- font-size: clamp(1.8rem, 10vw, 3.5rem);
8154
- margin: 0 0 4px 0;
8155
- letter-spacing: 0.05em;
8156
- }
8699
+ body.mobile .hud-notification-text {
8700
+ font-size: 10px;
8701
+ }
8157
8702
 
8158
- .hud-death-subtitle {
8159
- font-size: clamp(0.8rem, 4vw, 1rem);
8160
- margin: 0 0 10px 0;
8161
- }
8703
+ body.mobile .hud-crosshair-horizontal {
8704
+ width: 10px;
8705
+ height: 2px;
8706
+ left: -5px;
8707
+ top: -1px;
8708
+ }
8162
8709
 
8163
- .hud-death-underline {
8164
- margin: 0 auto 20px auto;
8165
- }
8710
+ body.mobile .hud-crosshair-vertical {
8711
+ width: 2px;
8712
+ height: 10px;
8713
+ top: -5px;
8714
+ left: -1px;
8715
+ }
8166
8716
 
8167
- @keyframes deathUnderlineExpand {
8168
- to {
8169
- width: min(200px, 80vw);
8170
- opacity: 1;
8171
- }
8717
+ /* Area Banner Mobile */
8718
+ body.mobile .hud-area-banner-text {
8719
+ font-size: clamp(1.8rem, 9vw, 3rem);
8720
+ letter-spacing: 0.05em;
8721
+ margin: 0 0 4px 0;
8722
+ }
8723
+
8724
+ body.mobile .hud-area-banner-underline {
8725
+ height: 4px;
8726
+ }
8727
+
8728
+ body.mobile .hud-area-banner.show .hud-area-banner-underline {
8729
+ animation: underlineExpandMobile 1.2s ease-out 0.8s forwards;
8730
+ }
8731
+
8732
+ @keyframes underlineExpandMobile {
8733
+ to {
8734
+ width: min(300px, 80vw);
8735
+ opacity: 1;
8172
8736
  }
8737
+ }
8173
8738
 
8174
- .hud-death-respawn-btn {
8175
- font-size: 12px;
8176
- padding: 10px 20px;
8177
- min-width: 100px;
8739
+ /* Death Overlay Mobile */
8740
+ body.mobile .hud-death-content {
8741
+ margin: 0 16px;
8742
+ max-width: 90vw;
8743
+ }
8744
+
8745
+ body.mobile .hud-death-title {
8746
+ font-size: clamp(1.8rem, 9vw, 3.5rem);
8747
+ margin: 0 0 4px 0;
8748
+ letter-spacing: 0.05em;
8749
+ }
8750
+
8751
+ body.mobile .hud-death-subtitle {
8752
+ font-size: clamp(0.8rem, 4vw, 1rem);
8753
+ margin: 0 0 10px 0;
8754
+ }
8755
+
8756
+ body.mobile .hud-death-underline {
8757
+ margin: 0 auto 18px auto;
8758
+ height: 3px;
8759
+ }
8760
+
8761
+ body.mobile .hud-death-overlay.show .hud-death-underline {
8762
+ animation: deathUnderlineExpandMobile 1.2s ease-out 0.8s forwards;
8763
+ }
8764
+
8765
+ @keyframes deathUnderlineExpandMobile {
8766
+ to {
8767
+ width: min(220px, 75vw);
8768
+ opacity: 1;
8178
8769
  }
8179
8770
  }
8180
8771
 
8772
+ body.mobile .hud-death-respawn-btn {
8773
+ font-size: 12px;
8774
+ padding: 10px 20px;
8775
+ min-width: 100px;
8776
+ border-radius: 8px;
8777
+ }
8778
+
8181
8779
  /* ============================================
8182
8780
  HIGH DPI DISPLAYS
8183
8781
  ============================================ */