word-games-theme 3.4.1 → 3.4.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 79bee8b54c6a4e2fbdb89c7aa7c289e52700bd3562d0e120d424eec2b27ff44f
4
- data.tar.gz: d541a2d62fbe4cf4fe47a0156c729d75d4c6f932e88d7dba705dc56a2638e392
3
+ metadata.gz: 5ddabbdde572d57fdf490cf5a42db369a5f3c2a40933592186427f266d47447b
4
+ data.tar.gz: ef91c183cc426133ae109b86c01291717b12c968e9ef7659e47ee047e8ac13c7
5
5
  SHA512:
6
- metadata.gz: b54788a47d6f3d387a96c358d5b280104add1fc697dca7fea4cdf4bdc38d45edce973c4dcff493b826581c0274d7af6c2d8e5078b34caa01ad8dc4ea21f27700
7
- data.tar.gz: 7af616d7944872ec510fb77fb5bdaad2613a50a6f9a798083d0cb84f61e23100de5af7bb8eb152f0d02532534a310618070b69cc789ff929673b0ee37282baf4
6
+ metadata.gz: ba7dba8d18498264af888f2cf9c4718a0a7eb60dd06ebc2827fea9f699426e3519c299fc8dfada314ec2f84a093164407a290fa8242f939353c6b7620d1af26c
7
+ data.tar.gz: e3e3dba5fdf58ef83aad047ba07f29e6acc474cfcb4da280f134c3e4757fdf929606ee850627b01029115ac83ec0350f529b41c3153532ec40399f3bbd43ef45
@@ -0,0 +1,46 @@
1
+ <head>
2
+ {%- comment -%}Single author page head. Expects pName / pBio from the layout.{%- endcomment -%}
3
+ {%- capture authorPageTitle -%}{{ pName }} - {{ pBio | strip }}{%- endcapture -%}
4
+ {% assign favicon = site.favicon %}
5
+
6
+ <meta charset="UTF-8" />
7
+ <link rel="shortcut icon" href="{{favicon}}" />
8
+ <link rel="canonical" href="{{site.url | append: page.url}}" />
9
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
10
+ <meta name="keywords" content="{{site.keyboard}}" />
11
+ <meta name="description" content="{{ authorPageTitle | slice: 0, 155 | default: page.description }}" />
12
+ <meta name="og:description" content="{{ authorPageTitle | slice: 0, 155 | default: page.description }}" />
13
+ <meta property="og:title" content="{{ pName | default: page.title }}" />
14
+ <meta property="og:type" content="profile" />
15
+ <meta property="og:locale" content="en_US" />
16
+ <meta property="og:site_name" content="{{site.name}}" />
17
+ <meta property="og:url" content="{{site.url | append: page.url}}" />
18
+ {%- if pImage -%}
19
+ <meta property="og:image" content="{{site.url | append: pImage}}" />
20
+ {%- endif -%}
21
+ <meta name="author" content="{{ pName | default: page.title }}" />
22
+ <title>{{ authorPageTitle | default: page.title }}</title>
23
+ {%- if site.removeBootstrapIcons != true -%}
24
+ <link rel="stylesheet" href="/assets/css/bootstrap-icons.css" />
25
+ {%- endif -%}
26
+ <link rel="stylesheet" href="/assets/css/bootstrap.min.css">
27
+ <link rel="stylesheet" href="/assets/css/wordgames-variables.css" />
28
+ <link rel="stylesheet" href="/assets/css/wordgames-theme.css" />
29
+ <link rel="stylesheet" href="/assets/css/wordgames-home-v2.css" />
30
+ <link rel="stylesheet" href="/assets/css/wordgames-blog-v2.css" />
31
+ {%- include google-analytics.html -%}
32
+
33
+ <script type="application/ld+json">
34
+ {
35
+ "@context": "https://schema.org",
36
+ "@type": "ProfilePage",
37
+ "mainEntity": {
38
+ "@type": "Person",
39
+ "name": "{{ pName | escape }}",
40
+ "description": "{{ pBio | strip | escape }}",
41
+ {%- if pImage -%}"image": "{{ site.url | append: pImage }}",{%- endif -%}
42
+ "url": "{{ site.url | append: page.url }}"
43
+ }
44
+ }
45
+ </script>
46
+ </head>
@@ -0,0 +1,170 @@
1
+ {%- include authors/authors.html -%}
2
+ {%- assign pageAuthorName = page.authorName | split: " " -%}
3
+ {%- assign pageAuthorKey = pageAuthorName.first | downcase -%}
4
+ {%- assign pageLabel = page.label | downcase -%}
5
+ {%- assign collectionData = [pageAuthorKey] -%}
6
+ {%- for item in collectionData -%}
7
+ {%- if forloop.index == 1 -%}{%- assign pName = item -%}
8
+ {%- elsif forloop.index == 2 -%}{%- assign pImage = item -%}
9
+ {%- elsif forloop.index == 3 -%}{%- assign pBio = item -%}
10
+ {%- elsif forloop.index == 4 -%}{%- assign pTwitter = item | strip -%}
11
+ {%- endif -%}
12
+ {%- endfor -%}
13
+ {%- assign pName = pName | default: page.authorName -%}
14
+
15
+ {%- comment -%}Feature pages this author wrote or contributed to (from each page's data json).{%- endcomment -%}
16
+ {%- capture authoredLinks -%}
17
+ {%- for file in site.pages -%}
18
+ {%- assign json_data = site.data[file.folderName][file.lang][file.fileName] -%}
19
+ {%- assign seocontentAuthor = json_data.author | join: " " | downcase -%}
20
+ {%- if seocontentAuthor contains pageLabel -%}
21
+ {%- if file.permalink contains '/' -%}{%- assign link = file.permalink -%}{%- else -%}{%- assign link = file.permalink | prepend: "/" -%}{%- endif -%}
22
+ <li><a href="{{ link }}">{{ file.permalink | replace: '-', ' ' | replace: '/', ' ' | strip | capitalize }}</a></li>
23
+ {%- endif -%}
24
+ {%- endfor -%}
25
+ {%- endcapture -%}
26
+ {%- capture contributedLinks -%}
27
+ {%- for file in site.pages -%}
28
+ {%- assign json_data = site.data[file.folderName][file.lang][file.fileName] -%}
29
+ {%- for item in json_data.contributors -%}
30
+ {%- assign contributeAuthor = item.name | downcase -%}
31
+ {%- if contributeAuthor contains pageLabel -%}
32
+ {%- if file.permalink contains '/' -%}{%- assign link = file.permalink -%}{%- else -%}{%- assign link = file.permalink | prepend: "/" -%}{%- endif -%}
33
+ <li><a href="{{ link }}">{{ file.permalink | replace: '-', ' ' | replace: '/', ' ' | strip | capitalize }}</a></li>
34
+ {%- endif -%}
35
+ {%- endfor -%}
36
+ {%- endfor -%}
37
+ {%- endcapture -%}
38
+
39
+ {%- assign authoredPosts = "" | split: "" -%}
40
+ {%- assign contributedPosts = "" | split: "" -%}
41
+ {%- for post in site.posts -%}
42
+ {%- assign postAuthor = post.author | downcase -%}
43
+ {%- if postAuthor contains pageLabel -%}
44
+ {%- assign authoredPosts = authoredPosts | push: post -%}
45
+ {%- endif -%}
46
+ {%- for item in post.contributors -%}
47
+ {%- assign contributorAuthor = item.name | downcase -%}
48
+ {%- if contributorAuthor contains pageLabel -%}
49
+ {%- assign contributedPosts = contributedPosts | push: post -%}
50
+ {%- break -%}
51
+ {%- endif -%}
52
+ {%- endfor -%}
53
+ {%- endfor -%}
54
+ <!DOCTYPE html>
55
+ <html lang="en">
56
+ {%- include wordgames-v2/head/authorhead.html -%}
57
+
58
+ <body class="wg-home wg-blog wg-post wg-author">
59
+ <a class="wg-skip" href="#main-content">Skip to content</a>
60
+ {%- include home/header.html -%}
61
+
62
+ <main id="main-content">
63
+ <section class="wg-blog__hero wg-author__hero">
64
+ <div class="wg-page">
65
+ <nav class="wg-post__crumbs wg-author__crumbs" aria-label="Breadcrumb">
66
+ <a href="/">Home</a><span aria-hidden="true">/</span><a href="/authors">Authors</a>
67
+ </nav>
68
+ <div class="wg-author__intro">
69
+ <img class="wg-author__img" src="{{ pImage | default: '/assets/images/avatar.jpeg' }}" alt="{{ pName }}" width="140" height="140">
70
+ <div>
71
+ <h1>{{ pName }}</h1>
72
+ {%- if pBio -%}<p>{{ pBio | strip }}</p>{%- endif -%}
73
+ <ul class="wg-author__stats">
74
+ {%- if authoredPosts.size > 0 -%}<li><b>{{ authoredPosts.size }}</b> {% if authoredPosts.size == 1 %}article{% else %}articles{% endif %}</li>{%- endif -%}
75
+ {%- if contributedPosts.size > 0 -%}<li><b>{{ contributedPosts.size }}</b> contributed</li>{%- endif -%}
76
+ {%- if pTwitter and pTwitter != "N/A" -%}<li><a href="{{ pTwitter }}" target="_blank" rel="noopener">Follow on X / Twitter</a></li>{%- endif -%}
77
+ </ul>
78
+ </div>
79
+ </div>
80
+ </div>
81
+ </section>
82
+
83
+ <div class="wg-page wg-post__layout wg-author__layout">
84
+ <div class="wg-author__main">
85
+ {%- if authoredPosts.size > 0 -%}
86
+ <section class="wg-author__section">
87
+ <h2 class="wg-author__heading">Authored articles</h2>
88
+ <div class="wg-author__grid">
89
+ {%- for post in authoredPosts -%}
90
+ {%- include authors/authors.html -%}
91
+ {%- include home/blog-card.html i=forloop.index0 -%}
92
+ {%- endfor -%}
93
+ </div>
94
+ </section>
95
+ {%- endif -%}
96
+
97
+ {%- if contributedPosts.size > 0 -%}
98
+ <section class="wg-author__section">
99
+ <h2 class="wg-author__heading">Contributed articles</h2>
100
+ <div class="wg-author__grid">
101
+ {%- for post in contributedPosts -%}
102
+ {%- include authors/authors.html -%}
103
+ {%- include home/blog-card.html i=forloop.index0 -%}
104
+ {%- endfor -%}
105
+ </div>
106
+ </section>
107
+ {%- endif -%}
108
+
109
+ {%- if authoredPosts.size == 0 and contributedPosts.size == 0 -%}
110
+ <p class="wg-author__empty">No articles from {{ pName }} yet.</p>
111
+ {%- endif -%}
112
+ </div>
113
+
114
+ <aside class="wg-post__side wg-author__side">
115
+ {%- assign authoredLinks = authoredLinks | strip -%}
116
+ {%- if authoredLinks != "" -%}
117
+ <div class="wg-post__card">
118
+ <h2>Authored tools &amp; pages</h2>
119
+ <ul class="wg-post__links">{{ authoredLinks }}</ul>
120
+ </div>
121
+ {%- endif -%}
122
+
123
+ {%- assign contributedLinks = contributedLinks | strip -%}
124
+ {%- if contributedLinks != "" -%}
125
+ <div class="wg-post__card">
126
+ <h2>Contributed to</h2>
127
+ <ul class="wg-post__links">{{ contributedLinks }}</ul>
128
+ </div>
129
+ {%- endif -%}
130
+
131
+ {%- if site.data.blog.share -%}
132
+ <div class="wg-post__card">
133
+ <h2>Share</h2>
134
+ <div class="wg-post__share">
135
+ {%- capture title -%}{{ pName }}{%- endcapture -%}
136
+ {%- assign url = page.url | relative_url | prepend: site.url -%}
137
+ {%- for share in site.data.blog.share.platforms -%}
138
+ {%- assign link = share.link | replace: 'TITLE', title | replace: 'URL', url -%}
139
+ <a href="{{ link }}" target="_blank" rel="noopener" title="{{ share.type }}" aria-label="Share on {{ share.type }}">
140
+ <img src="{{ share.icon }}" alt="" width="20" height="20">
141
+ </a>
142
+ {%- endfor -%}
143
+ </div>
144
+ </div>
145
+ {%- endif -%}
146
+
147
+ <div class="wg-post__card">
148
+ <h2>More</h2>
149
+ <ul class="wg-post__links">
150
+ <li><a href="/authors">All authors</a></li>
151
+ <li><a href="/blog">Blog</a></li>
152
+ {%- if site.name -%}<li><a href="https://{{ site.name }}">{{ site.name }}</a></li>{%- endif -%}
153
+ </ul>
154
+ </div>
155
+ </aside>
156
+ </div>
157
+ </main>
158
+
159
+ {%- include home/footer.html -%}
160
+
161
+ <button class="wg-top" id="wg-top" type="button" aria-label="Back to top" hidden>
162
+ <svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" d="M12 19V5M5 12l7-7 7 7"/></svg>
163
+ </button>
164
+
165
+ {%- include wordgames/scripts/scripts.html -%}
166
+ <script data-lang="{{ page.lang }}" defer src="/assets/js/theme.js"></script>
167
+ <script defer src="/assets/js/home-ui.js"></script>
168
+ </body>
169
+
170
+ </html>
@@ -0,0 +1,93 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ {%- include wordgames-v2/head/bloghead.html -%}
4
+
5
+ <body class="wg-home wg-blog wg-authors">
6
+ <a class="wg-skip" href="#main-content">Skip to content</a>
7
+ {%- include home/header.html -%}
8
+
9
+ {%- include authors/authors.html -%}
10
+
11
+ {%- comment -%}
12
+ Everyone who wrote a feature page, contributed to one, or wrote a post. authors/authors.html
13
+ keys each person by their lowercased first name, so dedupe on that key.
14
+ {%- endcomment -%}
15
+ {%- assign authorKeys = "" | split: "" -%}
16
+ {%- for file in site.pages -%}
17
+ {%- assign json_data = site.data[file.folderName][file.lang][file.fileName] -%}
18
+ {%- for author in json_data.author -%}
19
+ {%- assign splitAuthor = author | split: " " -%}
20
+ {%- assign authorKeys = authorKeys | push: splitAuthor.first -%}
21
+ {%- endfor -%}
22
+ {%- for contributor in json_data.contributors -%}
23
+ {%- assign splitAuthor = contributor.name | split: " " -%}
24
+ {%- assign authorKeys = authorKeys | push: splitAuthor.first -%}
25
+ {%- endfor -%}
26
+ {%- endfor -%}
27
+ {%- for post in site.posts -%}
28
+ {%- if post.author != "" and post.author -%}
29
+ {%- assign splitAuthor = post.author | split: " " -%}
30
+ {%- assign authorKeys = authorKeys | push: splitAuthor.first -%}
31
+ {%- endif -%}
32
+ {%- endfor -%}
33
+ {%- assign authorKeys = authorKeys | join: "," | downcase | split: "," | uniq -%}
34
+
35
+ <main id="main-content">
36
+ <section class="wg-blog__hero">
37
+ <div class="wg-page">
38
+ <h1>{{ page.title | default: "Our Authors" }}</h1>
39
+ {%- if page.description -%}<p>{{ page.description }}</p>{%- endif -%}
40
+ </div>
41
+ </section>
42
+
43
+ <div class="wg-page wg-blog__body">
44
+ <div class="wg-authors__grid">
45
+ {%- for authorKey in authorKeys -%}
46
+ {%- if authorKey != "" -%}
47
+ {%- assign authorName = nil -%}
48
+ {%- assign image = nil -%}
49
+ {%- assign bio = nil -%}
50
+ {%- assign collectionData = [authorKey] -%}
51
+ {%- for item in collectionData -%}
52
+ {%- if forloop.index == 1 -%}{%- assign authorName = item -%}
53
+ {%- elsif forloop.index == 2 -%}{%- assign image = item -%}
54
+ {%- elsif forloop.index == 3 -%}{%- assign bio = item -%}
55
+ {%- endif -%}
56
+ {%- endfor -%}
57
+ {%- if authorName -%}
58
+ {%- assign authorUrl = authorName | downcase | replace: ' ', '-' | prepend: '/authors/' -%}
59
+ {%- assign postCount = 0 -%}
60
+ {%- for post in site.posts -%}
61
+ {%- assign postAuthor = post.author | downcase -%}
62
+ {%- if postAuthor contains authorKey -%}{%- assign postCount = postCount | plus: 1 -%}{%- endif -%}
63
+ {%- endfor -%}
64
+ <article class="wg-author-card">
65
+ <a class="wg-author-card__link" href="{{ authorUrl }}">
66
+ <img class="wg-author-card__img" src="{{ image | default: '/assets/images/avatar.jpeg' }}" alt="{{ authorName }}" width="96" height="96" loading="lazy">
67
+ <h2>{{ authorName }}</h2>
68
+ {%- if postCount > 0 -%}
69
+ <span class="wg-author-card__count">{{ postCount }} {% if postCount == 1 %}article{% else %}articles{% endif %}</span>
70
+ {%- endif -%}
71
+ {%- if bio -%}<p>{{ bio | strip }}</p>{%- endif -%}
72
+ <span class="wg-author-card__more">View profile <span aria-hidden="true">&rarr;</span></span>
73
+ </a>
74
+ </article>
75
+ {%- endif -%}
76
+ {%- endif -%}
77
+ {%- endfor -%}
78
+ </div>
79
+ </div>
80
+ </main>
81
+
82
+ {%- include home/footer.html -%}
83
+
84
+ <button class="wg-top" id="wg-top" type="button" aria-label="Back to top" hidden>
85
+ <svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" d="M12 19V5M5 12l7-7 7 7"/></svg>
86
+ </button>
87
+
88
+ {%- include wordgames/scripts/scripts.html -%}
89
+ <script data-lang="{{ page.lang }}" defer src="/assets/js/theme.js"></script>
90
+ <script defer src="/assets/js/home-ui.js"></script>
91
+ </body>
92
+
93
+ </html>
@@ -0,0 +1,107 @@
1
+ {% assign file = page.fileName %}
2
+ {% assign lang = page.lang %}
3
+ {% assign folder = page.folderName %}
4
+
5
+ <!DOCTYPE html>
6
+ <html lang="en">
7
+
8
+ {%- include wordgames-v2/head/head.html -%}
9
+
10
+ <body class="wg-home wg-tools wg-meaning">
11
+ <a class="wg-skip" href="#main-content">Skip to content</a>
12
+ {%- include home/header.html -%}
13
+
14
+ <main id="main-content">
15
+ <div class="main-header wg-hero tools_headings">
16
+ {% include wordgames-v2/headings/headings.html %}
17
+ </div>
18
+
19
+ {%- comment -%}
20
+ scrabbleDictonary.js looks up .txtBox, #Defintions, #noun/#verb/#adj/#adv, #loaderMeaning,
21
+ #loaderMeaning1, #err and the three .found-word/.word-score pairs (by index), so keep them all.
22
+ {%- endcomment -%}
23
+ <section class="wg-tool" aria-label="{{ dataToShow.h1 | default: dataToShow.title | escape }}">
24
+ <div class="wg-page">
25
+ <div class="wg-tool-card wg-tool__card">
26
+ <form class="wm-search" action="/word-meaning" id="form" method="GET" role="search">
27
+ <input type="text" class="wm-search__input txtBox" name="search" maxlength="15" required
28
+ autocomplete="off" placeholder="Enter a word…" aria-label="Word">
29
+ <button type="submit" class="wm-search__btn">
30
+ <span>Search</span>
31
+ <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
32
+ </button>
33
+ </form>
34
+
35
+ <div class="wm-block">
36
+ <h2 class="wm-block__title">Word Games</h2>
37
+ <div class="wm-dicts">
38
+ <div class="wm-dict dictionary-item">
39
+ <span class="wm-dict__name">Scrabble US (TWL06)</span>
40
+ <span class="found-word"></span>
41
+ <span class="word-score"></span>
42
+ </div>
43
+ <div class="wm-dict dictionary-item">
44
+ <span class="wm-dict__name">Scrabble UK (SOWPODS)</span>
45
+ <span class="found-word"></span>
46
+ <span class="word-score"></span>
47
+ </div>
48
+ <div class="wm-dict dictionary-item">
49
+ <span class="wm-dict__name">Words With Friends (Enable)</span>
50
+ <span class="found-word"></span>
51
+ <span class="word-score"></span>
52
+ </div>
53
+ </div>
54
+ </div>
55
+
56
+ <div class="wm-block" id="defintions">
57
+ <h2 class="wm-block__title" id="Defintions">Defintion(s)</h2>
58
+ <div class="wm-loading">
59
+ <span class="spinner-border spinner-border-sm" id="loaderMeaning1" role="status"></span>
60
+ <span id="loaderMeaning">Loading…</span>
61
+ </div>
62
+ <p class="wm-empty" id="err" style="display: none;">No definition found!</p>
63
+ <div class="wm-pos" id="noun" style="display: none;"><h3 class="wm-pos__label">Noun</h3></div>
64
+ <div class="wm-pos" id="verb" style="display: none;"><h3 class="wm-pos__label">Verb</h3></div>
65
+ <div class="wm-pos" id="adj" style="display: none;"><h3 class="wm-pos__label">Adjective</h3></div>
66
+ <div class="wm-pos" id="adv" style="display: none;"><h3 class="wm-pos__label">Adverb</h3></div>
67
+ <div id="result"></div>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </section>
72
+
73
+ {% include wordgames/adblocker/adblocker.html %}
74
+
75
+ {%- assign langen = "en" -%}
76
+ {%- if site.data[folder][langen][file].categories -%}
77
+ {% assign categories= site.data[folder][langen][file].categories %}
78
+ {%- else -%}
79
+ {% assign categories= page.categories %}
80
+ {%- endif -%}
81
+ {%- if site.data[folder][langen][file].tags -%}
82
+ {% assign tags= site.data[folder][langen][file].tags %}
83
+ {%- else -%}
84
+ {% assign tags= page.tags %}
85
+ {%- endif -%}
86
+ {%- if categories.size> 0 or tags.size>0-%}
87
+ {%- include home/related-posts.html -%}
88
+ {%- else -%}
89
+ {%- include home/recent-posts.html -%}
90
+ {% endif %}
91
+ </main>
92
+
93
+ <div class="footer-section">
94
+ {%- include home/footer.html -%}
95
+ </div>
96
+
97
+ <button class="wg-top" id="wg-top" type="button" aria-label="Back to top" hidden>
98
+ <svg viewBox="0 0 24 24" width="22" height="22" aria-hidden="true"><path fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" d="M12 19V5M5 12l7-7 7 7"/></svg>
99
+ </button>
100
+
101
+ {%- include wordgames/scripts/scripts.html -%}
102
+ <script data-lang="{{page.lang}}" defer src="/assets/js/theme.js"></script>
103
+ <script defer src="/assets/js/home-ui.js"></script>
104
+ <script src="/assets/js/scrabbleDictonary.js"></script>
105
+ </body>
106
+
107
+ </html>
@@ -0,0 +1,76 @@
1
+ /* ---------- Word meaning (v2) ---------- */
2
+ /* hero + card come from wordgames-tools-v2.css; this file styles the search, dictionaries and definitions */
3
+ .wg-meaning .wg-tool__card { max-width: 820px; }
4
+
5
+ /* search */
6
+ .wg-meaning .wm-search { display: flex; gap: 10px; margin: 0 0 28px; }
7
+ .wg-meaning .wm-search__input {
8
+ flex: 1 1 auto; min-width: 0; height: 60px; padding: 0 20px; border: 2px solid var(--wg-line); border-radius: 16px;
9
+ background: var(--wg-surface-2); color: var(--wg-text); font-size: 20px; font-weight: 800; letter-spacing: .04em;
10
+ transition: border-color .15s, box-shadow .15s, background .15s;
11
+ }
12
+ .wg-meaning .wm-search__input::placeholder { color: var(--wg-muted); font-size: 16px; font-weight: 600; letter-spacing: normal; }
13
+ .wg-meaning .wm-search__input:focus { outline: none; border-color: var(--wg-primary); background: var(--wg-surface); box-shadow: 0 0 0 4px var(--wg-ring); }
14
+ .wg-meaning .wm-search__btn {
15
+ display: inline-flex; flex: none; align-items: center; justify-content: center; gap: 8px; height: 60px; padding: 0 28px;
16
+ border: 0; border-radius: 16px; background: var(--wg-hero); color: #fff; font-size: 16px; font-weight: 800;
17
+ box-shadow: 0 10px 22px -10px rgba(109, 40, 217, .8); cursor: pointer; transition: transform .15s, filter .15s;
18
+ }
19
+ .wg-meaning .wm-search__btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
20
+ .wg-meaning .wm-search__btn:focus-visible { outline: 3px solid var(--wg-ring); outline-offset: 2px; }
21
+
22
+ /* section blocks */
23
+ .wg-meaning .wm-block + .wm-block { margin-top: 28px; padding-top: 28px; border-top: 1px solid var(--wg-line); }
24
+ .wg-meaning .wm-block__title { margin: 0 0 16px; color: var(--wg-text); font-size: clamp(19px, 2.4vw, 22px); font-weight: 900; }
25
+
26
+ /* dictionaries */
27
+ .wg-meaning .wm-dicts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
28
+ .wg-meaning .wm-dict {
29
+ display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 16px;
30
+ border: 1px solid var(--wg-line); border-radius: var(--wg-r); background: var(--wg-surface);
31
+ }
32
+ .wg-meaning .wm-dict__name { color: var(--wg-muted); font-size: 14px; font-weight: 700; }
33
+ /* scrabbleDictonary.js fills these in; "No" gets an inline red background */
34
+ .wg-meaning .found-word { padding: 4px 12px; border-radius: 999px; background: #16a34a; color: #fff; font-size: 14px; font-weight: 800; }
35
+ .wg-meaning .found-word:empty { width: 56px; height: 26px; padding: 0; background: var(--wg-surface-2); animation: wm-pulse 1.2s ease-in-out infinite; }
36
+ .wg-meaning .word-score { color: var(--wg-text); font-size: 15px; font-weight: 800; }
37
+ .wg-meaning .word-score:empty { display: none; }
38
+
39
+ /* definitions */
40
+ .wg-meaning .wm-loading { display: flex; align-items: center; gap: 10px; color: var(--wg-muted); font-weight: 700; }
41
+ .wg-meaning .wm-loading .spinner-border { color: var(--wg-primary); }
42
+ .wg-meaning .wm-empty { margin: 0; padding: 16px; border-radius: var(--wg-r-sm); background: #fef2f2; color: #b91c1c; font-weight: 700; }
43
+ .wg-meaning .wm-pos + .wm-pos { margin-top: 20px; }
44
+ .wg-meaning .wm-pos__label {
45
+ display: inline-block; margin: 0 0 10px; padding: 4px 12px; border-radius: 999px;
46
+ background: var(--wg-primary-soft); color: var(--wg-primary); font-size: 14px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em;
47
+ }
48
+ .wg-meaning .wm-pos ol { margin: 0; padding: 0; list-style: none; counter-reset: wm; }
49
+ .wg-meaning .wm-pos .list-group-item {
50
+ display: block !important; position: relative; margin: 0 0 8px !important; padding: 12px 14px 12px 48px;
51
+ border: 1px solid var(--wg-line); border-radius: var(--wg-r-sm) !important; background: var(--wg-surface);
52
+ color: var(--wg-text); font-size: 16px; line-height: 1.55; counter-increment: wm;
53
+ }
54
+ .wg-meaning .wm-pos .list-group-item::before {
55
+ content: counter(wm); position: absolute; top: 12px; left: 14px; width: 24px; height: 24px; border-radius: 50%;
56
+ background: var(--wg-primary); color: #fff; font-size: 12px; font-weight: 800; line-height: 24px; text-align: center;
57
+ }
58
+
59
+ @keyframes wm-pulse { 50% { opacity: .45; } }
60
+
61
+ @media (max-width: 767.98px) {
62
+ .wg-meaning .wm-dicts { grid-template-columns: 1fr; gap: 8px; }
63
+ .wg-meaning .wm-dict { flex-direction: row; flex-wrap: wrap; align-items: center; padding: 12px 14px; }
64
+ .wg-meaning .wm-dict__name { flex: 1 1 100%; }
65
+ }
66
+
67
+ @media (max-width: 479.98px) {
68
+ .wg-meaning .wm-search { flex-direction: column; }
69
+ .wg-meaning .wm-search__btn { width: 100%; }
70
+ .wg-meaning .wm-pos .list-group-item { padding-left: 44px; font-size: 15px; }
71
+ }
72
+
73
+ @media (prefers-reduced-motion: reduce) {
74
+ .wg-meaning .found-word:empty { animation: none; }
75
+ .wg-meaning .wm-search__btn { transition: none; transform: none !important; }
76
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: word-games-theme
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.1
4
+ version: 3.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - manpreet-appscms
@@ -199,6 +199,7 @@ files:
199
199
  - _includes/wordgames-v2/advanced-filter/advanced-filter.html
200
200
  - _includes/wordgames-v2/faqs/faqs.html
201
201
  - _includes/wordgames-v2/featurehighlights/featurehighlights.html
202
+ - _includes/wordgames-v2/head/authorhead.html
202
203
  - _includes/wordgames-v2/head/bloghead.html
203
204
  - _includes/wordgames-v2/head/head.html
204
205
  - _includes/wordgames-v2/headings/headings.html
@@ -265,7 +266,9 @@ files:
265
266
  - _layouts/wordMeaning.html
266
267
  - _layouts/wordgames-about.html
267
268
  - _layouts/wordgames-allpages.html
269
+ - _layouts/wordgames-author-v2.html
268
270
  - _layouts/wordgames-author.html
271
+ - _layouts/wordgames-authors-v2.html
269
272
  - _layouts/wordgames-authors.html
270
273
  - _layouts/wordgames-autogencontent.html
271
274
  - _layouts/wordgames-blog-v2.html
@@ -281,6 +284,7 @@ files:
281
284
  - _layouts/wordgames-terms-and-conditions.html
282
285
  - _layouts/wordgames-tools-v2.html
283
286
  - _layouts/wordgames-tools.html
287
+ - _layouts/wordgames-word-meaning-v2.html
284
288
  - _layouts/wordgames-word-meaning.html
285
289
  - _layouts/wordgames-xyz.html
286
290
  - _layouts/wordgames.categories.html
@@ -314,6 +318,7 @@ files:
314
318
  - assets/css/wordgames-theme.css
315
319
  - assets/css/wordgames-tools-v2.css
316
320
  - assets/css/wordgames-variables.css
321
+ - assets/css/wordgames-word-meaning-v2.css
317
322
  - assets/css/wordle-solver.css
318
323
  - assets/css/wordleSolver.css
319
324
  - assets/css/wordsInCertainPosition.css