@mideind/netskrafl-react 1.0.1 → 1.1.0

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.
@@ -203,6 +203,22 @@
203
203
  content: "\E332";
204
204
  }
205
205
 
206
+ .glyphicon-stats:before {
207
+ content: "\E041";
208
+ }
209
+
210
+ .glyphicon-tower:before {
211
+ content: "\E421";
212
+ }
213
+
214
+ .glyphicon-certificate:before {
215
+ content: "\E333";
216
+ }
217
+
218
+ .glyphicon-calendar:before {
219
+ content: "\E046";
220
+ }
221
+
206
222
  .glyphicon-show-lines:before {
207
223
  content: "\E159";
208
224
  }
@@ -966,6 +982,8 @@ div.board {
966
982
  background-color: var(--container-bg-color);
967
983
  overflow: auto; /* Must be auto to allow panning/scrolling */
968
984
  width: 100%;
985
+ /* Prevent scroll from propagating to parent */
986
+ overscroll-behavior: contain;
969
987
  }
970
988
 
971
989
  div.tile {
@@ -1323,7 +1341,7 @@ div.recallbtn {
1323
1341
  border-radius: 5px;
1324
1342
  cursor: pointer;
1325
1343
  width: 45px;
1326
- height: 41px;
1344
+ height: 48px;
1327
1345
  background-color: var(--triple-word-color);
1328
1346
  }
1329
1347
 
@@ -1344,7 +1362,7 @@ div.scramblebtn {
1344
1362
  border-radius: 5px;
1345
1363
  cursor: pointer;
1346
1364
  width: 45px;
1347
- height: 41px;
1365
+ height: 48px;
1348
1366
  background-color: var(--malfridur-accent);
1349
1367
  }
1350
1368
 
@@ -1634,6 +1652,8 @@ div.tabbed-page {
1634
1652
  overflow: hidden;
1635
1653
  font-size: 13px;
1636
1654
  line-height: 23px;
1655
+ /* Prevent scroll from propagating to parent */
1656
+ overscroll-behavior: contain;
1637
1657
  }
1638
1658
 
1639
1659
  div.tab-scroll-area {
@@ -2543,6 +2563,8 @@ div#main-tabs > div[role=tabpanel] {
2543
2563
  position: relative;
2544
2564
  top: -8px;
2545
2565
  height: 504px;
2566
+ /* Prevent scroll from propagating to parent */
2567
+ overscroll-behavior: contain;
2546
2568
  }
2547
2569
 
2548
2570
  div#main-tabs div.header-logo {
@@ -3022,6 +3044,8 @@ div #elolist {
3022
3044
  /* 11 lines @ 36px each */
3023
3045
  overflow-y: auto;
3024
3046
  overflow-x: hidden;
3047
+ /* Prevent scroll from propagating to parent */
3048
+ overscroll-behavior-y: contain;
3025
3049
  }
3026
3050
 
3027
3051
  div #gamelist {
@@ -3029,6 +3053,8 @@ div #gamelist {
3029
3053
  /* 13 lines @ 36px each */
3030
3054
  overflow-y: auto;
3031
3055
  overflow-x: hidden;
3056
+ /* Prevent scroll from propagating to parent */
3057
+ overscroll-behavior-y: contain;
3032
3058
  }
3033
3059
 
3034
3060
  div #recentlist {
@@ -3036,6 +3062,8 @@ div #recentlist {
3036
3062
  /* 11 lines @ 36px each */
3037
3063
  overflow-y: auto;
3038
3064
  overflow-x: hidden;
3065
+ /* Prevent scroll from propagating to parent */
3066
+ overscroll-behavior-y: contain;
3039
3067
  }
3040
3068
 
3041
3069
  div #usr-recent {
@@ -3043,6 +3071,8 @@ div #usr-recent {
3043
3071
  /* 12 lines @ 36px each */
3044
3072
  overflow-y: auto;
3045
3073
  overflow-x: hidden;
3074
+ /* Prevent scroll from propagating to parent */
3075
+ overscroll-behavior-y: contain;
3046
3076
  }
3047
3077
 
3048
3078
  div #chall-sent,
@@ -3051,6 +3081,8 @@ div #chall-received {
3051
3081
  /* 6 lines @ 36px each */
3052
3082
  overflow-y: auto;
3053
3083
  overflow-x: hidden;
3084
+ /* Prevent scroll from propagating to parent */
3085
+ overscroll-behavior-y: contain;
3054
3086
  }
3055
3087
 
3056
3088
  div.games {
@@ -5627,7 +5659,7 @@ a.nodecorate:hover {
5627
5659
 
5628
5660
  a.iconlink:link {
5629
5661
  text-decoration: none;
5630
- color: var(--header-color);
5662
+ color: var(--malfridur-accent);
5631
5663
  }
5632
5664
 
5633
5665
  a.iconlink:visited {
@@ -5686,6 +5718,13 @@ div#tabs-3 li {
5686
5718
  padding: auto;
5687
5719
  }
5688
5720
 
5721
+ /* Base help container styles - applies to all viewports */
5722
+
5723
+ div.help-container {
5724
+ /* Prevent scroll from propagating to parent */
5725
+ overscroll-behavior: contain;
5726
+ }
5727
+
5689
5728
  div.help-container ol li {
5690
5729
  font-weight: bold;
5691
5730
  }
@@ -6265,12 +6304,17 @@ div.signup-header {
6265
6304
  left: 28px;
6266
6305
  width: 50px;
6267
6306
  height: 50px;
6268
- font-size: 40px;
6307
+ font-size: 46px;
6269
6308
  text-align: center;
6270
6309
  }
6271
6310
  div.info:hover {
6272
6311
  animation: expand 0.4s;
6273
6312
  }
6313
+ div.gatadagsins div.info {
6314
+ top: 40px;
6315
+ left: 26px;
6316
+ bottom: auto;
6317
+ }
6274
6318
  div.login-error {
6275
6319
  position: absolute;
6276
6320
  padding-left: 12px;
@@ -7535,6 +7579,8 @@ div.signup-header {
7535
7579
  height: 612px;
7536
7580
  overflow: auto;
7537
7581
  padding-right: 24px;
7582
+ /* Maintain scroll containment (inherited from base, but explicit for clarity) */
7583
+ overscroll-behavior: contain;
7538
7584
  }
7539
7585
  div.twoletter-area {
7540
7586
  font-size: 16px;
@@ -7552,6 +7598,183 @@ div.signup-header {
7552
7598
 
7553
7599
  /* ================= GÁTA DAGSINS STYLES =============== */
7554
7600
 
7601
+ /* Help dialog styles - Mobile-first approach */
7602
+
7603
+ .modal-dialog.gatadagsins-help {
7604
+ visibility: visible;
7605
+ position: fixed;
7606
+ top: 50%;
7607
+ left: 50%;
7608
+ transform: translate(-50%, -50%);
7609
+ z-index: 10000;
7610
+ background: white;
7611
+ border-radius: 8px;
7612
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
7613
+ width: 95%;
7614
+ max-height: 90vh;
7615
+ display: flex;
7616
+ flex-direction: column;
7617
+ }
7618
+
7619
+ .modal-dialog.gatadagsins-help .modal-content {
7620
+ display: flex;
7621
+ flex-direction: column;
7622
+ height: 100%;
7623
+ }
7624
+
7625
+ .modal-dialog.gatadagsins-help .modal-header {
7626
+ padding: 15px;
7627
+ border-bottom: 1px solid #e0e0e0;
7628
+ display: flex;
7629
+ justify-content: space-between;
7630
+ align-items: center;
7631
+ }
7632
+
7633
+ .modal-dialog.gatadagsins-help .modal-header h2 {
7634
+ margin: 0;
7635
+ font-size: 20px;
7636
+ color: #333;
7637
+ }
7638
+
7639
+ .modal-dialog.gatadagsins-help .modal-header .close {
7640
+ background: none;
7641
+ border: none;
7642
+ font-size: 28px;
7643
+ cursor: pointer;
7644
+ padding: 0;
7645
+ width: 30px;
7646
+ height: 30px;
7647
+ display: flex;
7648
+ align-items: center;
7649
+ justify-content: center;
7650
+ color: #999;
7651
+ }
7652
+
7653
+ .modal-dialog.gatadagsins-help .modal-header .close:hover {
7654
+ color: #333;
7655
+ }
7656
+
7657
+ .modal-dialog.gatadagsins-help .modal-body {
7658
+ padding: 15px;
7659
+ overflow-y: auto;
7660
+ flex: 1;
7661
+ /* Prevent scroll from propagating to parent */
7662
+ overscroll-behavior-y: contain;
7663
+ }
7664
+
7665
+ .modal-dialog.gatadagsins-help .modal-body h3 {
7666
+ margin-top: 20px;
7667
+ margin-bottom: 10px;
7668
+ font-size: 16px;
7669
+ color: #333;
7670
+ }
7671
+
7672
+ .modal-dialog.gatadagsins-help .modal-body h3:first-child {
7673
+ margin-top: 0;
7674
+ }
7675
+
7676
+ .modal-dialog.gatadagsins-help .modal-body p {
7677
+ margin: 10px 0;
7678
+ line-height: 1.6;
7679
+ color: #555;
7680
+ font-size: 14px;
7681
+ }
7682
+
7683
+ .modal-dialog.gatadagsins-help .modal-body ul {
7684
+ margin: 10px 0;
7685
+ padding-left: 25px;
7686
+ }
7687
+
7688
+ .modal-dialog.gatadagsins-help .modal-body li {
7689
+ margin: 8px 0;
7690
+ line-height: 1.6;
7691
+ color: #555;
7692
+ font-size: 14px;
7693
+ }
7694
+
7695
+ .modal-dialog.gatadagsins-help .modal-body a {
7696
+ color: #4a90e2;
7697
+ text-decoration: none;
7698
+ }
7699
+
7700
+ .modal-dialog.gatadagsins-help .modal-body a:hover {
7701
+ text-decoration: underline;
7702
+ }
7703
+
7704
+ .modal-dialog.gatadagsins-help .modal-footer {
7705
+ padding: 15px;
7706
+ border-top: 1px solid #e0e0e0;
7707
+ text-align: right;
7708
+ }
7709
+
7710
+ .modal-dialog.gatadagsins-help .btn {
7711
+ padding: 16px 22px;
7712
+ font-size: 14px;
7713
+ border-radius: 4px;
7714
+ border: none;
7715
+ cursor: pointer;
7716
+ font-weight: 700;
7717
+ height: auto;
7718
+ min-height: auto;
7719
+ }
7720
+
7721
+ .modal-dialog.gatadagsins-help .btn-primary {
7722
+ background-color: #4a90e2;
7723
+ color: white;
7724
+ }
7725
+
7726
+ .modal-dialog.gatadagsins-help .btn-primary:hover {
7727
+ background-color: #357abd;
7728
+ }
7729
+
7730
+ /* Modal backdrop */
7731
+
7732
+ .modal-backdrop {
7733
+ position: fixed;
7734
+ top: 0;
7735
+ left: 0;
7736
+ width: 100%;
7737
+ height: 100%;
7738
+ background-color: rgba(0, 0, 0, 0.5);
7739
+ z-index: 9999;
7740
+ }
7741
+
7742
+ /* Larger screen adjustments */
7743
+
7744
+ @media (min-width: 601px) {
7745
+ .modal-dialog.gatadagsins-help {
7746
+ max-width: 600px;
7747
+ width: 90%;
7748
+ max-height: 80vh;
7749
+ }
7750
+
7751
+ .modal-dialog.gatadagsins-help .modal-header {
7752
+ padding: 20px;
7753
+ }
7754
+
7755
+ .modal-dialog.gatadagsins-help .modal-header h2 {
7756
+ font-size: 24px;
7757
+ }
7758
+
7759
+ .modal-dialog.gatadagsins-help .modal-body {
7760
+ padding: 20px;
7761
+ /* Inherit the overscroll behavior from mobile */
7762
+ }
7763
+
7764
+ .modal-dialog.gatadagsins-help .modal-body h3 {
7765
+ font-size: 18px;
7766
+ }
7767
+
7768
+ .modal-dialog.gatadagsins-help .modal-body p,
7769
+ .modal-dialog.gatadagsins-help .modal-body li {
7770
+ font-size: 15px;
7771
+ }
7772
+
7773
+ .modal-dialog.gatadagsins-help .modal-footer {
7774
+ padding: 15px 20px;
7775
+ }
7776
+ }
7777
+
7555
7778
  /* Mobile styles for Gáta Dagsins */
7556
7779
 
7557
7780
  div#gatadagsins-background {
@@ -7620,7 +7843,7 @@ div.gatadagsins-container table.board {
7620
7843
  }
7621
7844
 
7622
7845
  div.gatadagsins-rack-area {
7623
- flex: 0 0 100px;
7846
+ flex: 0 0 80px;
7624
7847
  display: flex;
7625
7848
  flex-direction: row;
7626
7849
  justify-content: space-evenly;
@@ -7649,7 +7872,7 @@ div.gatadagsins-container div.rack {
7649
7872
 
7650
7873
  div.gatadagsins-container div.recallbtn {
7651
7874
  position: relative;
7652
- margin: 0 5px;
7875
+ margin-left: 8px;
7653
7876
  display: flex;
7654
7877
  bottom: auto;
7655
7878
  left: auto;
@@ -7658,7 +7881,7 @@ div.gatadagsins-container div.recallbtn {
7658
7881
 
7659
7882
  div.gatadagsins-container div.scramblebtn {
7660
7883
  position: relative;
7661
- margin: 0 5px;
7884
+ margin-left: 8px;
7662
7885
  display: flex;
7663
7886
  bottom: auto;
7664
7887
  left: auto;
@@ -7673,23 +7896,78 @@ div.gatadagsins-container div.buttons {
7673
7896
  left: auto;
7674
7897
  }
7675
7898
 
7899
+ /* Desktop score display - hidden on mobile */
7900
+
7676
7901
  div.gata-dagsins-score {
7902
+ display: none;
7903
+ }
7904
+
7905
+ /* Mobile score display */
7906
+
7907
+ div.mobile-score {
7677
7908
  display: flex;
7678
- flex-direction: row;
7909
+ flex-direction: column;
7679
7910
  align-items: center;
7680
7911
  justify-content: center;
7681
- width: 64px;
7682
- height: 26px;
7683
7912
  color: white;
7684
7913
  background-color: var(--tile-background);
7685
- border-radius: 5px;
7686
- margin: 0 5px;
7914
+ width: 60px;
7915
+ height: 60px;
7916
+ border-radius: 50%;
7687
7917
  border-color: transparent;
7688
7918
  border-style: solid;
7689
- border-width: 3px;
7919
+ border-width: 2px;
7690
7920
  transition: color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease;
7691
7921
  }
7692
7922
 
7923
+ /* Mobile score states */
7924
+
7925
+ div.mobile-score.disabled {
7926
+ background-color: white;
7927
+ color: var(--middle-shadow);
7928
+ border-color: var(--middle-shadow);
7929
+ border-style: solid;
7930
+ border-width: 2px;
7931
+ }
7932
+
7933
+ div.mobile-score.illegal {
7934
+ background-color: white;
7935
+ color: black;
7936
+ border-color: var(--logo-primary-light);
7937
+ border-style: solid;
7938
+ border-width: 2px;
7939
+ }
7940
+
7941
+ div.mobile-score.word-bad {
7942
+ background-color: white;
7943
+ color: var(--logo-primary-light);
7944
+ border-color: var(--logo-primary-light);
7945
+ border-style: solid;
7946
+ border-width: 2px;
7947
+ }
7948
+
7949
+ div.mobile-score.cold {
7950
+ background-color: var(--cold);
7951
+ }
7952
+
7953
+ div.mobile-score.warm {
7954
+ background-color: var(--malfridur-secondary);
7955
+ }
7956
+
7957
+ div.mobile-score.hot {
7958
+ background-color: var(--logo-accent);
7959
+ }
7960
+
7961
+ span.mobile-score-legend {
7962
+ display: inline-block;
7963
+ font-family: var(--number-font);
7964
+ font-weight: 700;
7965
+ font-size: 22px;
7966
+ line-height: 22px;
7967
+ }
7968
+
7969
+ /* Desktop score states */
7970
+
7693
7971
  div.gata-dagsins-score.disabled {
7694
7972
  background-color: white;
7695
7973
  color: var(--middle-shadow);
@@ -7722,21 +8000,27 @@ span.gata-dagsins-legend {
7722
8000
  line-height: 22px;
7723
8001
  }
7724
8002
 
7725
- /* Thermometer wrapper - positioned above board on mobile */
8003
+ /* Right side wrapper - positioned above board on mobile */
7726
8004
 
7727
8005
  div.gatadagsins-right-side-wrapper {
7728
8006
  flex: 0 0 80px;
7729
8007
  display: flex;
7730
8008
  flex-direction: row;
7731
8009
  order: -1;
8010
+ margin-top: 10px; /* Accommodate sun corona at the top, to avoid clipping */
7732
8011
  }
7733
8012
 
7734
- div.gatadagsins-thermometer-column {
8013
+ /* Mobile status bar - visible on mobile only */
8014
+
8015
+ div.gatadagsins-mobile-status {
7735
8016
  flex: 1;
7736
8017
  display: flex;
7737
- flex-direction: row;
7738
- align-items: center;
7739
- justify-content: center;
8018
+ }
8019
+
8020
+ /* Thermometer column - hidden on mobile */
8021
+
8022
+ div.gatadagsins-thermometer-column {
8023
+ display: none;
7740
8024
  }
7741
8025
 
7742
8026
  /* Thermometer component styles */
@@ -7748,6 +8032,8 @@ div.gatadagsins-thermometer-column {
7748
8032
  height: 100%;
7749
8033
  width: 100%;
7750
8034
  align-items: center;
8035
+ padding-left: 8px;
8036
+ padding-right: 8px;
7751
8037
  }
7752
8038
 
7753
8039
  .thermometer-best-score {
@@ -7827,6 +8113,18 @@ div.gatadagsins-thermometer-column {
7827
8113
  box-shadow: 0 0 25px rgba(var(--malfridur-secondary), 0.7);
7828
8114
  }
7829
8115
 
8116
+ /* Achieved state styling (when someone else achieved top score) */
8117
+
8118
+ .thermometer-best-score.achieved:not(.celebrate) .thermometer-best-circle {
8119
+ background-color: #ffd700; /* Gold color to indicate achievement */
8120
+ border-color: #e6c200;
8121
+ }
8122
+
8123
+ .thermometer-best-score.achieved:not(.celebrate) .thermometer-best-label {
8124
+ color: #c99700; /* Darker gold for text */
8125
+ font-weight: bold;
8126
+ }
8127
+
7830
8128
  /* Sun corona component styling */
7831
8129
 
7832
8130
  .sun-corona {
@@ -7868,12 +8166,13 @@ div.gatadagsins-thermometer-column {
7868
8166
  }
7869
8167
  }
7870
8168
 
8169
+ /* Horizontal thermometer */
8170
+
7871
8171
  .thermometer-body {
7872
8172
  position: relative;
7873
8173
  align-self: center;
7874
8174
  width: 100%;
7875
8175
  height: 40px;
7876
- margin: 0;
7877
8176
  border-radius: 20px;
7878
8177
  overflow: visible;
7879
8178
  }
@@ -7897,16 +8196,37 @@ div.gatadagsins-thermometer-column {
7897
8196
  .thermometer-zone.hot,
7898
8197
  div.gata-dagsins-score.hot {
7899
8198
  background-color: var(--logo-accent);
8199
+ color: white;
7900
8200
  }
7901
8201
 
7902
8202
  .thermometer-zone.warm,
7903
8203
  div.gata-dagsins-score.warm {
7904
8204
  background-color: var(--malfridur-secondary);
8205
+ color: white;
7905
8206
  }
7906
8207
 
7907
8208
  .thermometer-zone.cold,
7908
8209
  div.gata-dagsins-score.cold {
7909
8210
  background-color: var(--cold);
8211
+ color: white;
8212
+ }
8213
+
8214
+ /* Simple pulse animation for the score circle */
8215
+
8216
+ @keyframes celebrateScore {
8217
+ 0%, 100% {
8218
+ transform: scale(1);
8219
+ box-shadow: 0 0 15px rgba(249, 115, 6, 0.4);
8220
+ }
8221
+ 50% {
8222
+ transform: scale(1.1);
8223
+ box-shadow: 0 0 25px rgba(249, 115, 6, 0.6);
8224
+ }
8225
+ }
8226
+
8227
+ div.gata-dagsins-score.hot.celebrate {
8228
+ animation: celebrateScore 1.5s ease-in-out infinite;
8229
+ transform-origin: center center;
7910
8230
  }
7911
8231
 
7912
8232
  .thermometer-current-circle {
@@ -8003,6 +8323,7 @@ div.gata-dagsins-score.cold {
8003
8323
  font-size: 14px;
8004
8324
  margin-left: 8px;
8005
8325
  white-space: nowrap;
8326
+ display: none; /* Not displayed on mobile */
8006
8327
  }
8007
8328
 
8008
8329
  /* Animation for gentle pulsing effect */
@@ -8033,33 +8354,470 @@ div.gata-dagsins-score.cold {
8033
8354
  display: none;
8034
8355
  }
8035
8356
 
8036
- /* Desktop styles for Gáta Dagsins */
8357
+ /* Mobile status component styles */
8037
8358
 
8038
- @media all and (min-width: 1024px) {
8039
- /* Show all thermometer moves on desktop */
8040
- .thermometer-move-overlay:nth-child(n+2) {
8041
- display: flex;
8042
- }
8359
+ .mobile-status-container {
8360
+ display: flex;
8361
+ flex-direction: row;
8362
+ align-items: center;
8363
+ justify-content: space-around;
8364
+ width: 100%;
8365
+ height: 100%;
8366
+ padding: 0 10px;
8367
+ gap: 10px;
8368
+ }
8043
8369
 
8044
- /* Restore vertical thermometer layout on desktop */
8045
- .thermometer-container {
8046
- flex-direction: column;
8047
- }
8370
+ .mobile-status-item {
8371
+ display: flex;
8372
+ flex-direction: column;
8373
+ align-items: center;
8374
+ justify-content: center;
8375
+ flex: 1;
8376
+ position: relative;
8377
+ }
8048
8378
 
8049
- .thermometer-body {
8050
- width: 40px;
8051
- height: 100%;
8052
- position: absolute;
8053
- left: 0;
8054
- }
8379
+ .mobile-status-item.best-possible {
8380
+ cursor: pointer;
8381
+ position: relative;
8382
+ }
8055
8383
 
8056
- .thermometer-zone {
8057
- left: 0;
8058
- bottom: 0;
8059
- width: 100%;
8060
- height: var(--zone-size);
8061
- transition: height 0.5s ease-in-out;
8062
- }
8384
+ .mobile-status-label {
8385
+ font-size: 11px;
8386
+ font-family: var(--primary-font);
8387
+ color: #666;
8388
+ margin-bottom: 4px;
8389
+ text-align: center;
8390
+ white-space: nowrap;
8391
+ }
8392
+
8393
+ .mobile-status-score {
8394
+ font-size: 24px;
8395
+ font-weight: bold;
8396
+ font-family: var(--number-font);
8397
+ color: var(--tile-background);
8398
+ }
8399
+
8400
+ .mobile-status-item.player-best .mobile-status-score {
8401
+ color: var(--cold);
8402
+ }
8403
+
8404
+ .mobile-status-item.leader .mobile-status-score {
8405
+ color: var(--malfridur-secondary);
8406
+ }
8407
+
8408
+ .mobile-status-item.leader.is-player .mobile-status-score {
8409
+ color: var(--malfridur-green);
8410
+ }
8411
+
8412
+ /* Best possible score - circular display like desktop */
8413
+
8414
+ .mobile-best-score-wrapper {
8415
+ position: relative;
8416
+ width: 60px;
8417
+ height: 60px;
8418
+ flex-shrink: 0;
8419
+ }
8420
+
8421
+ .mobile-best-score-wrapper .mobile-status-score {
8422
+ position: absolute;
8423
+ top: 0;
8424
+ left: 0;
8425
+ background-color: var(--malfridur-green);
8426
+ color: white;
8427
+ border-radius: 50%;
8428
+ width: 60px;
8429
+ height: 60px;
8430
+ display: flex;
8431
+ align-items: center;
8432
+ justify-content: center;
8433
+ font-size: 22px;
8434
+ font-weight: bold;
8435
+ font-family: var(--number-font);
8436
+ transition: background-color 1.0s ease;
8437
+ z-index: 1;
8438
+ }
8439
+
8440
+ /* Mobile sun corona positioning */
8441
+
8442
+ .mobile-best-score-wrapper .sun-corona {
8443
+ position: absolute;
8444
+ top: 50%;
8445
+ left: 50%;
8446
+ transform: translate(-50%, -50%);
8447
+ pointer-events: none;
8448
+ z-index: 2;
8449
+ }
8450
+
8451
+ .mobile-best-score-wrapper .sun-corona.rotating {
8452
+ animation: rotateSunCoronaMobile 6s linear infinite;
8453
+ }
8454
+
8455
+ /* Mobile corona rotation - constant size, just rotation */
8456
+
8457
+ @keyframes rotateSunCoronaMobile {
8458
+ 0% {
8459
+ transform: translate(-50%, -50%) rotate(0deg);
8460
+ }
8461
+ 100% {
8462
+ transform: translate(-50%, -50%) rotate(360deg);
8463
+ }
8464
+ }
8465
+
8466
+ .mobile-best-score-wrapper .mobile-status-score.celebrate,
8467
+ .mobile-status-item.best-possible.celebrate .mobile-best-score-wrapper .mobile-status-score {
8468
+ background-color: var(--malfridur-secondary);
8469
+ animation: celebrationPulse 2s ease-in-out 3;
8470
+ box-shadow: 0 0 25px rgba(var(--malfridur-secondary), 0.7);
8471
+ }
8472
+
8473
+ .mobile-status-item.best-possible.achieved:not(.celebrate) .mobile-best-score-wrapper .mobile-status-score {
8474
+ background-color: #ffd700;
8475
+ }
8476
+
8477
+ /* ================= TAB STRUCTURE =============== */
8478
+
8479
+ .gatadagsins-right-side-tabs {
8480
+ display: flex;
8481
+ flex-direction: column;
8482
+ flex: 1;
8483
+ height: 100%;
8484
+ }
8485
+
8486
+ .tab-content {
8487
+ flex: 1;
8488
+ display: flex;
8489
+ flex-direction: column;
8490
+ overflow: hidden;
8491
+ align-items: center;
8492
+ }
8493
+
8494
+ /* ================= TAB BAR STYLES =============== */
8495
+
8496
+ .tab-bar {
8497
+ display: flex;
8498
+ border-bottom: 2px solid var(--middle-shadow);
8499
+ margin-bottom: 10px;
8500
+ gap: 5px;
8501
+ flex-shrink: 0;
8502
+ }
8503
+
8504
+ .tab-item {
8505
+ flex: 1;
8506
+ padding: 10px 5px;
8507
+ text-align: center;
8508
+ cursor: pointer;
8509
+ border-bottom: 3px solid transparent;
8510
+ border-top-left-radius: 10px;
8511
+ border-top-right-radius: 10px;
8512
+ transition: all 0.3s ease;
8513
+ font-family: var(--primary-font);
8514
+ font-size: 12px;
8515
+ color: var(--malfridur-accent);
8516
+ display: flex;
8517
+ flex-direction: column;
8518
+ align-items: center;
8519
+ gap: 4px;
8520
+ }
8521
+
8522
+ .tab-item.active {
8523
+ color: var(--logo-accent);
8524
+ border-bottom-color: var(--logo-accent);
8525
+ font-weight: 700;
8526
+ }
8527
+
8528
+ .tab-item:hover {
8529
+ background-color: #f0f0f0;
8530
+ }
8531
+
8532
+ .tab-icon {
8533
+ font-size: 16px;
8534
+ line-height: 1;
8535
+ display: flex;
8536
+ align-items: center;
8537
+ justify-content: center;
8538
+ }
8539
+
8540
+ .tab-icon .glyphicon {
8541
+ font-size: 16px;
8542
+ }
8543
+
8544
+ .tab-label {
8545
+ font-size: 11px;
8546
+ white-space: nowrap;
8547
+ }
8548
+
8549
+ /* ================= STATS VIEW STYLES =============== */
8550
+
8551
+ .stats-view {
8552
+ padding: 15px 10px;
8553
+ height: 100%;
8554
+ overflow-y: auto;
8555
+ }
8556
+
8557
+ .stats-view.loading,
8558
+ .stats-view.empty {
8559
+ display: flex;
8560
+ align-items: center;
8561
+ justify-content: center;
8562
+ height: 200px;
8563
+ color: #999;
8564
+ font-style: italic;
8565
+ }
8566
+
8567
+ .stats-grid {
8568
+ display: flex;
8569
+ flex-direction: column;
8570
+ gap: 15px;
8571
+ }
8572
+
8573
+ .stat-item {
8574
+ display: flex;
8575
+ align-items: center;
8576
+ gap: 12px;
8577
+ padding: 12px;
8578
+ background-color: #f8f8f8;
8579
+ border-radius: 8px;
8580
+ transition: all 0.3s ease;
8581
+ }
8582
+
8583
+ .stat-item.highlight {
8584
+ background-color: color-mix(in srgb, var(--double-word-color) 40%, transparent);
8585
+ /* border-left: 4px solid var(--logo-accent); */
8586
+ }
8587
+
8588
+ .stat-icon {
8589
+ font-size: 28px;
8590
+ flex-shrink: 0;
8591
+ display: flex;
8592
+ align-items: center;
8593
+ justify-content: center;
8594
+ width: 40px;
8595
+ color: var(--logo-accent);
8596
+ }
8597
+
8598
+ .stat-icon .glyphicon {
8599
+ font-size: 28px;
8600
+ }
8601
+
8602
+ .stat-info {
8603
+ flex: 1;
8604
+ display: flex;
8605
+ flex-direction: row;
8606
+ align-items: center;
8607
+ justify-content: space-between;
8608
+ gap: 12px;
8609
+ min-width: 0;
8610
+ }
8611
+
8612
+ .stat-label {
8613
+ flex: 0 1 auto;
8614
+ font-size: 12px;
8615
+ color: #666;
8616
+ font-family: var(--primary-font);
8617
+ text-align: left;
8618
+ white-space: nowrap;
8619
+ overflow: hidden;
8620
+ text-overflow: ellipsis;
8621
+ }
8622
+
8623
+ .stat-value {
8624
+ flex-shrink: 0;
8625
+ font-size: 24px;
8626
+ font-weight: bold;
8627
+ color: var(--logo-accent);
8628
+ font-family: var(--number-font);
8629
+ text-align: right;
8630
+ }
8631
+
8632
+ /* ================= LEADERBOARD VIEW STYLES =============== */
8633
+
8634
+ .leaderboard-view {
8635
+ padding: 15px 10px;
8636
+ height: 100%;
8637
+ overflow-y: auto;
8638
+ }
8639
+
8640
+ .leaderboard-view.loading,
8641
+ .leaderboard-view.empty {
8642
+ display: flex;
8643
+ align-items: center;
8644
+ justify-content: center;
8645
+ height: 200px;
8646
+ color: #999;
8647
+ font-style: italic;
8648
+ }
8649
+
8650
+ .leaderboard-header {
8651
+ margin-bottom: 15px;
8652
+ padding-bottom: 10px;
8653
+ display: flex;
8654
+ flex-direction: column;
8655
+ align-items: center;
8656
+ }
8657
+
8658
+ .leaderboard-title {
8659
+ font-size: 16px;
8660
+ font-weight: bold;
8661
+ color: #333;
8662
+ font-family: var(--primary-font);
8663
+ }
8664
+
8665
+ .leaderboard-date {
8666
+ font-size: 12px;
8667
+ color: #666;
8668
+ margin-top: 4px;
8669
+ font-weight: 500;
8670
+ }
8671
+
8672
+ .leaderboard-list {
8673
+ display: flex;
8674
+ flex-direction: column;
8675
+ gap: 8px;
8676
+ }
8677
+
8678
+ .leaderboard-entry {
8679
+ display: flex;
8680
+ align-items: center;
8681
+ gap: 12px;
8682
+ padding: 10px;
8683
+ background-color: #f8f8f8;
8684
+ border-radius: 6px;
8685
+ transition: all 0.3s ease;
8686
+ }
8687
+
8688
+ .leaderboard-entry.current-user {
8689
+ background-color: color-mix(in srgb, var(--double-word-color) 40%, transparent);
8690
+ font-weight: 700;
8691
+ }
8692
+
8693
+ .entry-rank {
8694
+ width: 32px;
8695
+ text-align: center;
8696
+ flex-shrink: 0;
8697
+ }
8698
+
8699
+ .medal {
8700
+ font-size: 20px;
8701
+ }
8702
+
8703
+ .rank-number {
8704
+ font-size: 14px;
8705
+ font-weight: 700;
8706
+ color: #999;
8707
+ font-family: var(--number-font);
8708
+ }
8709
+
8710
+ .entry-name {
8711
+ flex: 1;
8712
+ font-size: 14px;
8713
+ font-family: var(--primary-font);
8714
+ color: #333;
8715
+ overflow: hidden;
8716
+ text-overflow: ellipsis;
8717
+ white-space: nowrap;
8718
+ min-width: 0;
8719
+ }
8720
+
8721
+ .entry-score {
8722
+ font-size: 18px;
8723
+ font-weight: bold;
8724
+ font-family: var(--number-font);
8725
+ color: var(--malfridur-green);
8726
+ }
8727
+
8728
+ /* ================= MOBILE STATS BUTTON =============== */
8729
+
8730
+ .mobile-stats-button {
8731
+ display: flex;
8732
+ align-items: center;
8733
+ justify-content: center;
8734
+ width: 36px;
8735
+ height: 36px;
8736
+ background-color: var(--malfridur-green);
8737
+ border-radius: 50%;
8738
+ cursor: pointer;
8739
+ transition: all 0.3s ease;
8740
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
8741
+ }
8742
+
8743
+ .mobile-stats-button:hover {
8744
+ background-color: var(--malfridur-secondary);
8745
+ transform: scale(1.1);
8746
+ }
8747
+
8748
+ .mobile-stats-button .stats-icon {
8749
+ font-size: 20px;
8750
+ display: flex;
8751
+ align-items: center;
8752
+ justify-content: center;
8753
+ color: white;
8754
+ }
8755
+
8756
+ .mobile-stats-button .stats-icon .glyphicon {
8757
+ font-size: 18px;
8758
+ }
8759
+
8760
+ /* ================= STATS MODAL (MOBILE) =============== */
8761
+
8762
+ .modal-dialog.stats-modal {
8763
+ visibility: visible;
8764
+ position: fixed;
8765
+ top: 50%;
8766
+ left: 50%;
8767
+ transform: translate(-50%, -50%);
8768
+ z-index: 10000;
8769
+ background: white;
8770
+ border-radius: 8px;
8771
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
8772
+ width: 95%;
8773
+ max-width: 500px;
8774
+ max-height: 80vh;
8775
+ display: flex;
8776
+ flex-direction: column;
8777
+ }
8778
+
8779
+ .modal-dialog.stats-modal .tab-bar {
8780
+ margin: 0 15px;
8781
+ margin-top: 10px;
8782
+ }
8783
+
8784
+ .modal-dialog.stats-modal .modal-body {
8785
+ overflow-y: auto;
8786
+ overscroll-behavior-y: contain;
8787
+ }
8788
+
8789
+ /* Desktop styles for Gáta Dagsins */
8790
+
8791
+ @media all and (min-width: 1024px) {
8792
+ /* Show all thermometer moves on desktop */
8793
+ .thermometer-move-overlay:nth-child(n+2) {
8794
+ display: flex;
8795
+ }
8796
+
8797
+ /* Restore vertical thermometer layout on desktop */
8798
+ .thermometer-container {
8799
+ flex-direction: column;
8800
+ padding-left: 0;
8801
+ padding-right: 0;
8802
+ margin-top: 60px;
8803
+ width: 80%;
8804
+ }
8805
+
8806
+ /* Vertical thermometer */
8807
+ .thermometer-body {
8808
+ width: 40px;
8809
+ height: 100%;
8810
+ position: absolute;
8811
+ left: 0;
8812
+ }
8813
+
8814
+ .thermometer-zone {
8815
+ left: 0;
8816
+ bottom: 0;
8817
+ width: 100%;
8818
+ height: var(--zone-size);
8819
+ transition: height 0.5s ease-in-out;
8820
+ }
8063
8821
 
8064
8822
  .thermometer-best-score {
8065
8823
  width: 100%;
@@ -8089,10 +8847,15 @@ div.gata-dagsins-score.cold {
8089
8847
  padding-right: 10px;
8090
8848
  padding-left: 10px;
8091
8849
  }
8850
+
8851
+ .thermometer-move-overlay .thermometer-move-coord {
8852
+ display: block;
8853
+ }
8854
+
8092
8855
  div.gatadagsins-container {
8093
8856
  height: 680px;
8094
8857
  }
8095
-
8858
+
8096
8859
  div.gatadagsins-container div.board {
8097
8860
  /* 16 x 34 pixels, i.e. 15 rows/columns plus row/column id */
8098
8861
  height: 544px;
@@ -8105,12 +8868,64 @@ div.gata-dagsins-score.cold {
8105
8868
  /* gap: 20px; */
8106
8869
  }
8107
8870
 
8871
+ /* Hide mobile status and stats button on desktop */
8872
+ div.gatadagsins-mobile-status {
8873
+ display: none;
8874
+ }
8875
+
8876
+ .mobile-stats-button {
8877
+ display: none;
8878
+ }
8879
+
8880
+ /* Desktop tab styling adjustments */
8881
+ .tab-item {
8882
+ font-size: 13px;
8883
+ }
8884
+
8885
+ .tab-icon .glyphicon {
8886
+ font-size: 24px;
8887
+ }
8888
+
8889
+ .tab-label {
8890
+ margin-top: 2px;
8891
+ font-size: 12px;
8892
+ }
8893
+
8894
+ /* Desktop stats view */
8895
+ .stats-view {
8896
+ padding: 20px 15px;
8897
+ width: 100%;
8898
+ }
8899
+
8900
+ .stats-grid {
8901
+ gap: 18px;
8902
+ }
8903
+
8904
+ /* Desktop leaderboard view */
8905
+ .leaderboard-view {
8906
+ padding: 20px 0px;
8907
+ width: 100%;
8908
+ }
8909
+
8910
+ /* Show thermometer on desktop */
8911
+ div.gatadagsins-thermometer-column {
8912
+ display: flex;
8913
+ flex: 1;
8914
+ flex-direction: column;
8915
+ align-items: stretch;
8916
+ justify-content: flex-start;
8917
+ }
8918
+
8108
8919
  div.gatadagsins-right-side-wrapper {
8109
8920
  flex: 0 0 280px;
8110
8921
  flex-direction: column;
8111
8922
  order: 0;
8923
+ margin-top: 0;
8924
+ padding-top: 8px;
8925
+ padding-bottom: 24px;
8926
+ overflow-x: hidden;
8112
8927
  }
8113
-
8928
+
8114
8929
  div.gatadagsins-rack-area {
8115
8930
  flex: 0 0 120px;
8116
8931
  /* Push left to compensate for row ids
@@ -8118,25 +8933,46 @@ div.gata-dagsins-score.cold {
8118
8933
  padding-left: 36px;
8119
8934
  }
8120
8935
 
8121
- div.gatadagsins-thermometer-column {
8122
- flex-direction: column;
8123
- align-items: stretch;
8124
- justify-content: flex-start;
8125
- padding-top: 60px;
8126
- padding-bottom: 100px;
8127
- }
8128
-
8936
+ /* Show desktop score on desktop */
8129
8937
  div.gata-dagsins-score {
8938
+ display: flex;
8939
+ flex-direction: row;
8940
+ align-items: center;
8941
+ justify-content: center;
8130
8942
  width: 64px;
8131
8943
  height: 64px;
8132
8944
  padding-top: 0;
8133
8945
  border-radius: 50%;
8946
+ margin: 0 5px;
8947
+ border-color: transparent;
8948
+ border-style: solid;
8949
+ border-width: 3px;
8950
+ transition: color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease;
8951
+ }
8952
+
8953
+ div.gata-dagsins-score.cold {
8954
+ background-color: var(--cold);
8955
+ }
8956
+
8957
+ div.gata-dagsins-score.warm {
8958
+ background-color: var(--malfridur-secondary);
8959
+ }
8960
+
8961
+ div.gata-dagsins-score.hot {
8962
+ background-color: var(--logo-accent);
8963
+ }
8964
+
8965
+ div.gata-dagsins-score.hot.celebrate {
8966
+ animation: celebrateScore 2.5s ease-in-out infinite;
8967
+ transform-origin: center center;
8134
8968
  }
8135
8969
 
8136
8970
  div.gatadagsins-container div.scramblebtn,
8137
8971
  div.gatadagsins-container div.recallbtn {
8138
8972
  width: 64px;
8139
8973
  height: 45px;
8974
+ margin-left: 5px;
8975
+ margin-right: 5px;
8140
8976
  }
8141
8977
 
8142
8978
  }