starlight-theme-bejamas 0.0.0-canary.0138fd3

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.
@@ -0,0 +1,287 @@
1
+ ---
2
+ import MobileMenuToggle from "virtual:starlight/components/MobileMenuToggle";
3
+
4
+ const { hasSidebar } = Astro.locals.starlightRoute;
5
+ const { template } = Astro.locals.starlightRoute.entry.data;
6
+
7
+ // Splash templates disable Starlight's sidebar by default, but we still want
8
+ // the mobile menu toggle there to expose docs/components navigation.
9
+ const shouldRenderSidebarNav = hasSidebar || template === "splash";
10
+ const isSplashTemplate = template === "splash";
11
+ ---
12
+
13
+ <div
14
+ class:list={[
15
+ "page sl-flex",
16
+ shouldRenderSidebarNav && "page-has-sidebar-nav",
17
+ isSplashTemplate && "page-mobile-sidebar-only",
18
+ ]}
19
+ >
20
+ <header class="header">
21
+ <slot name="header" />
22
+ <div class="fade"></div>
23
+ </header>
24
+ {
25
+ shouldRenderSidebarNav && (
26
+ <nav
27
+ class:list={["sidebar print:hidden", isSplashTemplate && "sidebar-splash"]}
28
+ aria-label={Astro.locals.t("sidebarNav.accessibleLabel")}
29
+ >
30
+ <MobileMenuToggle />
31
+ <script>
32
+ if (!customElements.get("sl-sidebar-pane")) {
33
+ class StarlightSidebarPane extends HTMLElement {
34
+ constructor() {
35
+ super();
36
+
37
+ const desktopMediaQuery = matchMedia("(min-width: 64rem)");
38
+ const updatePopover = () => {
39
+ this.popover = desktopMediaQuery.matches ? null : "auto";
40
+ };
41
+ updatePopover();
42
+ desktopMediaQuery.addEventListener("change", updatePopover);
43
+
44
+ this.addEventListener("toggle", () => {
45
+ const isOpen = this.matches(":popover-open");
46
+ document
47
+ .querySelectorAll<HTMLElement>(".main-frame, .sl-skip-link")
48
+ .forEach((element) => element.toggleAttribute("inert", isOpen));
49
+
50
+ if (isOpen && this.closest(".sidebar-splash")) {
51
+ this.scrollTop = 0;
52
+ }
53
+ });
54
+ }
55
+ }
56
+
57
+ customElements.define("sl-sidebar-pane", StarlightSidebarPane);
58
+ }
59
+ </script>
60
+ <sl-sidebar-pane popover="" id="starlight__sidebar" class="sidebar-pane">
61
+ <div class="sidebar-content sl-flex">
62
+ <slot name="sidebar" />
63
+ </div>
64
+ </sl-sidebar-pane>
65
+ </nav>
66
+ )
67
+ }
68
+
69
+ <div class:list={["main-frame", isSplashTemplate && "main-frame-splash"]}>
70
+ {
71
+ template === "splash" ? (
72
+ <slot />
73
+ ) : (
74
+ <div class="main-frame-inner">
75
+ <slot />
76
+ </div>
77
+ )
78
+ }
79
+ </div>
80
+ </div>
81
+
82
+ <style>
83
+ @layer bejamas {
84
+ .page {
85
+ flex-direction: column;
86
+ }
87
+
88
+ .fade {
89
+ --blur: 4px;
90
+ --stop: 50%;
91
+ --height: 72px;
92
+ position: fixed;
93
+ pointer-events: none;
94
+ width: 100%;
95
+ height: var(--height);
96
+ user-select: none;
97
+ -webkit-user-select: none;
98
+ left: 0;
99
+ -webkit-backdrop-filter: blur(var(--blur));
100
+ backdrop-filter: blur(var(--blur));
101
+
102
+ background: linear-gradient(
103
+ to top,
104
+ transparent,
105
+ var(--sl-page-background)
106
+ );
107
+ mask-image: linear-gradient(
108
+ to bottom,
109
+ var(--sl-page-background) var(--stop),
110
+ transparent
111
+ );
112
+ top: 0;
113
+ }
114
+
115
+ .header {
116
+ z-index: var(--sl-z-index-navbar);
117
+ position: fixed;
118
+ inset-inline-start: 0;
119
+ inset-block-start: 0;
120
+ width: 100%;
121
+ height: var(--sl-nav-height);
122
+ /* border-bottom: 1px solid var(--sl-color-hairline-shade); */
123
+ padding: var(--sl-nav-pad-y) var(--sl-nav-pad-x);
124
+ padding-inline-end: var(--sl-nav-pad-x);
125
+ /* background-color: var(--sl-color-bg-nav); */
126
+ }
127
+
128
+ .header {
129
+ background-color: var(--background);
130
+ }
131
+
132
+ @media (min-width: 64rem) {
133
+ .header {
134
+ background-color: transparent;
135
+ }
136
+ }
137
+
138
+ :global([data-has-sidebar]) .header,
139
+ .page-has-sidebar-nav .header {
140
+ padding-inline-end: calc(
141
+ var(--sl-nav-gap) + var(--sl-nav-pad-x) + var(--sl-menu-button-size)
142
+ );
143
+ }
144
+
145
+ .sidebar-pane {
146
+ border: 0;
147
+ margin: 0;
148
+ color: inherit;
149
+ display: none;
150
+ position: fixed;
151
+ z-index: var(--sl-z-index-menu);
152
+ inset-block: var(--sl-nav-height) 0;
153
+ inset-inline-start: 0;
154
+ width: 100%;
155
+ background-color: var(--background);
156
+ height: calc(100svh - var(--sl-nav-height));
157
+ overflow-y: scroll;
158
+ overflow-x: hidden;
159
+ scrollbar-width: none;
160
+ scroll-behavior: auto;
161
+ -webkit-overflow-scrolling: touch;
162
+ overscroll-behavior: contain;
163
+ overscroll-behavior-y: contain;
164
+ padding: 0;
165
+ }
166
+
167
+ .sidebar-pane:popover-open {
168
+ display: block;
169
+ }
170
+
171
+ .sidebar-content {
172
+ height: 100%;
173
+ min-height: max-content;
174
+ padding: 1rem var(--sl-sidebar-pad-x) 0;
175
+ flex-direction: column;
176
+ gap: 1rem;
177
+ }
178
+
179
+ @media (min-width: 64rem) {
180
+ .sidebar-content::after {
181
+ content: "";
182
+ padding-bottom: 1px;
183
+ }
184
+ }
185
+
186
+ .main-frame {
187
+ padding-top: calc(var(--sl-nav-height) + var(--sl-mobile-toc-height));
188
+ /* padding-inline-start: var(--sl-content-inline-start); */
189
+ }
190
+
191
+ .main-frame-splash {
192
+ position: relative;
193
+ isolation: isolate;
194
+ --sl-splash-frame-top: calc(var(--spacing) * 8);
195
+ --sl-splash-frame-inline: 0;
196
+ }
197
+
198
+ .main-frame-splash > * {
199
+ position: relative;
200
+ z-index: 1;
201
+ }
202
+
203
+ .main-frame-inner {
204
+ position: relative;
205
+ background-color: var(--sl-main-frame-inner-background);
206
+ border: 1px solid var(--sl-main-frame-inner-border);
207
+ border-bottom: 0;
208
+ min-height: calc(100svh - var(--sl-nav-height));
209
+ border-radius: calc(var(--radius) + 12px) calc(var(--radius) + 12px) 0 0;
210
+ margin-inline: calc(var(--spacing) * 1);
211
+ margin-top: calc(var(--spacing) * 4);
212
+ }
213
+
214
+ @media (min-width: 64rem) {
215
+ .main-frame-inner {
216
+ margin-inline: 0;
217
+ margin-top: 0;
218
+ }
219
+ }
220
+
221
+ @media (min-width: 48rem) {
222
+ .main-frame-splash::before {
223
+ content: "";
224
+ position: absolute;
225
+ inset-inline: var(--sl-splash-frame-inline);
226
+ inset-block-start: var(--sl-splash-frame-top);
227
+ inset-block-end: 0;
228
+ border: 1px solid var(--sl-main-frame-inner-border);
229
+ border-bottom: 0;
230
+ border-radius: calc(var(--radius) + 12px) calc(var(--radius) + 12px) 0 0;
231
+ background-color: var(--sl-main-frame-inner-background);
232
+ pointer-events: none;
233
+ z-index: 0;
234
+ }
235
+
236
+ /* Pages with their own local splash frame keep full control. */
237
+ :global(.main-frame-splash:has(.page-bg))::before {
238
+ content: none;
239
+ }
240
+ }
241
+
242
+ /* .main-frame-inner::before,
243
+ .main-frame-inner::after {
244
+ content: "";
245
+ position: absolute;
246
+ width: 1px;
247
+ height: calc(var(--spacing) * 18);
248
+ background: linear-gradient(
249
+ to bottom,
250
+ var(--sl-main-frame-inner-border) 0%,
251
+ var(--muted) 100%
252
+ );
253
+ bottom: 0;
254
+ }
255
+
256
+ .main-frame-inner::before {
257
+ left: -1px;
258
+ }
259
+
260
+ .main-frame-inner::after {
261
+ right: -1px;
262
+ } */
263
+
264
+ @media (min-width: 64rem) {
265
+ .page-mobile-sidebar-only {
266
+ --sl-sidebar-width: 0;
267
+ --sl-content-inline-start: 0;
268
+ }
269
+
270
+ :global([data-has-sidebar]) .header,
271
+ .page-has-sidebar-nav .header {
272
+ padding-inline-end: var(--sl-nav-pad-x);
273
+ }
274
+ .sidebar-pane {
275
+ display: block;
276
+ width: var(--sl-sidebar-width);
277
+ background-color: var(--sl-color-bg-sidebar);
278
+ border-inline-end: 1px solid var(--sl-color-hairline-shade);
279
+ }
280
+
281
+ /* Keep splash templates desktop layout unchanged; only mobile gets menu panel. */
282
+ .sidebar-splash .sidebar-pane {
283
+ display: none;
284
+ }
285
+ }
286
+ }
287
+ </style>
@@ -0,0 +1,142 @@
1
+ ---
2
+ import { Button } from "virtual:starlight-theme-bejamas/components/button";
3
+
4
+ import { ArrowRight, ArrowLeft, ArrowUpRight } from "@lucide/astro";
5
+
6
+ const { dir, pagination, template, entry } = Astro.locals.starlightRoute;
7
+ const { prev, next } = pagination;
8
+ const isRtl = dir === "rtl";
9
+ ---
10
+
11
+ <div
12
+ class:list={[
13
+ "sl-bejamas-docs-title",
14
+ entry.data.template === "splash" && "mt-10",
15
+ entry.data.template === "splash" && "px-0 sm:px-6 md:px-8",
16
+ ]}
17
+ >
18
+ <div class="flex items-center">
19
+ <h1 id="_top" class="tracking-tight">
20
+ {Astro.locals.starlightRoute.entry.data.title}
21
+ </h1>
22
+ {
23
+ entry.data.figmaUrl && (
24
+ <a
25
+ href={entry.data.figmaUrl}
26
+ target="_blank"
27
+ rel="noopener noreferrer"
28
+ class="flex items-center justify-center h-6 w-6"
29
+ >
30
+ <svg
31
+ fill="none"
32
+ height="20"
33
+ viewBox="0 0 38 57"
34
+ width="20"
35
+ xmlns="http://www.w3.org/2000/svg"
36
+ class="text-lg grayscale"
37
+ >
38
+ <>
39
+ <path
40
+ d="M19 28.5a9.5 9.5 0 1 1 19 0 9.5 9.5 0 0 1-19 0Z"
41
+ fill="#1ABCFE"
42
+ />
43
+ <path
44
+ d="M0 47.5A9.5 9.5 0 0 1 9.5 38H19v9.5a9.5 9.5 0 1 1-19 0Z"
45
+ fill="#0ACF83"
46
+ />
47
+ <path d="M19 0v19h9.5a9.5 9.5 0 1 0 0-19H19Z" fill="#FF7262" />
48
+ <path
49
+ d="M0 9.5A9.5 9.5 0 0 0 9.5 19H19V0H9.5A9.5 9.5 0 0 0 0 9.5Z"
50
+ fill="#F24E1E"
51
+ />
52
+ <path
53
+ d="M0 28.5A9.5 9.5 0 0 0 9.5 38H19V19H9.5A9.5 9.5 0 0 0 0 28.5Z"
54
+ fill="#A259FF"
55
+ />
56
+ </>
57
+ </svg>
58
+ </a>
59
+ )
60
+ }
61
+ </div>
62
+
63
+ {
64
+ entry.data.template !== "splash" && (
65
+ <div class="sl-bejamas-docs-title-buttons">
66
+ {prev && (
67
+ <Button
68
+ as="a"
69
+ href={isRtl ? next.href : prev.href}
70
+ variant="outline"
71
+ size="icon-sm"
72
+ >
73
+ <ArrowLeft class="size-4" />
74
+ </Button>
75
+ )}
76
+ {next && (
77
+ <Button
78
+ as="a"
79
+ href={isRtl ? prev.href : next.href}
80
+ variant="outline"
81
+ size="icon-sm"
82
+ >
83
+ <ArrowRight class="size-4" />
84
+ </Button>
85
+ )}
86
+ </div>
87
+ )
88
+ }
89
+
90
+ {
91
+ entry.data.description && (
92
+ <p class="sl-bejamas-description">{entry.data.description}</p>
93
+ )
94
+ }
95
+ </div>
96
+
97
+ <style>
98
+ @layer bejamas {
99
+ .sl-bejamas-docs-title {
100
+ display: flex;
101
+ justify-content: space-between;
102
+ flex-wrap: wrap;
103
+ margin-top: 0;
104
+ align-items: center;
105
+ }
106
+ .sl-bejamas-docs-title-buttons {
107
+ gap: 0.5rem;
108
+ display: none;
109
+ }
110
+
111
+ @media (min-width: 50rem) {
112
+ .sl-bejamas-docs-title-buttons {
113
+ display: flex;
114
+ }
115
+ }
116
+ }
117
+
118
+ .sl-bejamas-description {
119
+ color: var(--muted-foreground);
120
+ text-wrap: balance;
121
+ margin-top: calc(var(--spacing) * 4);
122
+ margin-bottom: calc(var(--spacing) * 2);
123
+ width: 100%;
124
+ max-width: 52ch;
125
+ }
126
+
127
+ @layer starlight.core {
128
+ h1 {
129
+ font-size: 1.875rem;
130
+ line-height: 1.2;
131
+ font-weight: 500;
132
+ color: var(--foreground);
133
+ }
134
+
135
+ @media (min-width: 50rem) {
136
+ h1 {
137
+ font-size: 2.25rem;
138
+ line-height: calc(2.5 / 2.25);
139
+ }
140
+ }
141
+ }
142
+ </style>
@@ -0,0 +1,57 @@
1
+ ---
2
+ import { Button } from "virtual:starlight-theme-bejamas/components/button";
3
+ import { ArrowRight, ArrowLeft } from "@lucide/astro";
4
+
5
+ const { dir, pagination } = Astro.locals.starlightRoute;
6
+ const { prev, next } = pagination;
7
+ const isRtl = dir === "rtl";
8
+ ---
9
+
10
+ <div class="print:hidden z-10 pagination-links" dir={dir}>
11
+ {
12
+ prev && (
13
+ <Button as="a" href={prev.href} rel="prev" variant="outline">
14
+ {isRtl ? <ArrowRight class="size-4" /> : <ArrowLeft class="size-4" />}
15
+ {prev.label}
16
+ </Button>
17
+ )
18
+ }
19
+ {
20
+ next && (
21
+ <Button as="a" href={next.href} rel="next" variant="outline">
22
+ {isRtl ? <ArrowLeft class="size-4" /> : <ArrowRight class="size-4" />}
23
+ {next.label}
24
+ </Button>
25
+ )
26
+ }
27
+ </div>
28
+
29
+ <style>
30
+ @layer starlight.core {
31
+ .pagination-links {
32
+ display: flex;
33
+ justify-content: flex-end;
34
+ gap: 1rem;
35
+ margin-top: calc(var(--spacing) * 5);
36
+ }
37
+
38
+ [rel="next"] {
39
+ justify-content: end;
40
+ text-align: end;
41
+ flex-direction: row-reverse;
42
+ margin-left: auto;
43
+ }
44
+
45
+ svg {
46
+ flex-shrink: 0;
47
+ }
48
+
49
+ .page-footer {
50
+ margin-top: calc(var(--spacing) * 6);
51
+ }
52
+
53
+ .sl-justify-between {
54
+ justify-content: space-between;
55
+ }
56
+ }
57
+ </style>
@@ -0,0 +1,54 @@
1
+ ---
2
+ import MobileMenuFooter from "virtual:starlight/components/MobileMenuFooter";
3
+ import SidebarPersister from "@astrojs/starlight/components/SidebarPersister.astro";
4
+ import SidebarSublist from "@astrojs/starlight/components/SidebarSublist.astro";
5
+
6
+ const { sidebar } = Astro.locals.starlightRoute;
7
+ const { template } = Astro.locals.starlightRoute.entry.data;
8
+ const isSplashTemplate = template === "splash";
9
+ ---
10
+
11
+ {
12
+ isSplashTemplate ? (
13
+ <>
14
+ <div class="fade"></div>
15
+ <SidebarSublist sublist={sidebar} />
16
+ </>
17
+ ) : (
18
+ <SidebarPersister>
19
+ <div class="fade"></div>
20
+ <SidebarSublist sublist={sidebar} />
21
+ </SidebarPersister>
22
+ )
23
+ }
24
+
25
+ <div class="md:sl-hidden">
26
+ <MobileMenuFooter />
27
+ </div>
28
+
29
+ <style>
30
+ @layer bejamas {
31
+ .fade {
32
+ --blur: 4px;
33
+ --stop: 50%;
34
+ --height: 72px;
35
+ position: fixed;
36
+ pointer-events: none;
37
+ width: 100%;
38
+ height: var(--height);
39
+ user-select: none;
40
+ -webkit-user-select: none;
41
+ left: 0;
42
+ -webkit-backdrop-filter: blur(var(--blur));
43
+ backdrop-filter: blur(var(--blur));
44
+
45
+ background: linear-gradient(to top, transparent, var(--background));
46
+ mask-image: linear-gradient(
47
+ to bottom,
48
+ var(--background) var(--stop),
49
+ transparent
50
+ );
51
+ top: 0;
52
+ }
53
+ }
54
+ </style>
@@ -0,0 +1,59 @@
1
+ ---
2
+ import { logos } from "virtual:starlight/user-images";
3
+ import config from "virtual:starlight/user-config";
4
+ const { siteTitle, siteTitleHref } = Astro.locals.starlightRoute;
5
+ ---
6
+
7
+ <a href={siteTitleHref} class="site-title sl-flex text-sm text-foreground">
8
+ {
9
+ config.logo && logos.dark && (
10
+ <>
11
+ <img
12
+ class:list={{
13
+ "light:sl-hidden print:hidden": !("src" in config.logo),
14
+ }}
15
+ alt={config.logo.alt}
16
+ src={logos.dark.src}
17
+ width={logos.dark.width}
18
+ height={logos.dark.height}
19
+ />
20
+ {/* Show light alternate if a user configure both light and dark logos. */}
21
+ {!("src" in config.logo) && (
22
+ <img
23
+ class="dark:sl-hidden print:block"
24
+ alt={config.logo.alt}
25
+ src={logos.light?.src}
26
+ width={logos.light?.width}
27
+ height={logos.light?.height}
28
+ />
29
+ )}
30
+ </>
31
+ )
32
+ }
33
+ <span class:list={{ "sr-only": config.logo?.replacesTitle }} translate="no">
34
+ {siteTitle}
35
+ </span>
36
+ </a>
37
+
38
+ <style>
39
+ @layer starlight.core {
40
+ .site-title {
41
+ align-items: center;
42
+ gap: var(--sl-nav-gap);
43
+ font-weight: 600;
44
+ text-decoration: none;
45
+ white-space: nowrap;
46
+ min-width: 0;
47
+ }
48
+ span {
49
+ overflow: hidden;
50
+ }
51
+ img {
52
+ height: calc(var(--sl-nav-height) - 2 * var(--sl-nav-pad-y));
53
+ width: auto;
54
+ max-width: 100%;
55
+ object-fit: contain;
56
+ object-position: 0 50%;
57
+ }
58
+ }
59
+ </style>
@@ -0,0 +1,88 @@
1
+ ---
2
+ import type { MarkdownHeading } from "astro";
3
+
4
+ interface TocItem extends MarkdownHeading {
5
+ children: TocItem[];
6
+ }
7
+
8
+ interface Props {
9
+ toc: TocItem[];
10
+ depth?: number;
11
+ isMobile?: boolean;
12
+ }
13
+
14
+ const { toc, isMobile = false, depth = 0 } = Astro.props;
15
+ ---
16
+
17
+ <ul class:list={{ isMobile }}>
18
+ {
19
+ toc.map((heading) => (
20
+ <li>
21
+ <a href={"#" + heading.slug}>
22
+ <span>{heading.text}</span>
23
+ </a>
24
+ {heading.children.length > 0 && (
25
+ <Astro.self
26
+ toc={heading.children}
27
+ depth={depth + 1}
28
+ isMobile={isMobile}
29
+ />
30
+ )}
31
+ </li>
32
+ ))
33
+ }
34
+ </ul>
35
+
36
+ <style define:vars={{ depth }}>
37
+ @layer starlight.core {
38
+ ul {
39
+ padding: 0;
40
+ list-style: none;
41
+ }
42
+ a {
43
+ --pad-inline: 0.5rem;
44
+ display: block;
45
+ border-radius: 0.25rem;
46
+ padding-block: 0.25rem;
47
+ padding-inline: calc(1rem * var(--depth) + var(--pad-inline))
48
+ var(--pad-inline);
49
+ line-height: 1.25;
50
+ }
51
+ a[aria-current="true"] {
52
+ color: var(--sl-color-text-accent);
53
+ }
54
+ .isMobile a {
55
+ --pad-inline: 1rem;
56
+ display: flex;
57
+ justify-content: space-between;
58
+ gap: var(--pad-inline);
59
+ border-top: 1px solid var(--sl-color-gray-6);
60
+ border-radius: 0;
61
+ padding-block: 0.5rem;
62
+ color: var(--sl-color-text);
63
+ font-size: var(--sl-text-sm);
64
+ text-decoration: none;
65
+ outline-offset: var(--sl-outline-offset-inside);
66
+ }
67
+ .isMobile:first-child > li:first-child > a {
68
+ border-top: 0;
69
+ }
70
+ .isMobile a[aria-current="true"],
71
+ .isMobile a[aria-current="true"]:hover,
72
+ .isMobile a[aria-current="true"]:focus {
73
+ color: var(--foreground);
74
+ background-color: unset;
75
+ }
76
+ .isMobile a[aria-current="true"]::after {
77
+ content: "";
78
+ width: 1rem;
79
+ background-color: var(--sl-color-text-accent);
80
+ /* Check mark SVG icon */
81
+ -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNCAxNCc+PHBhdGggZD0nTTEwLjkxNCA0LjIwNmEuNTgzLjU4MyAwIDAgMC0uODI4IDBMNS43NCA4LjU1NyAzLjkxNCA2LjcyNmEuNTk2LjU5NiAwIDAgMC0uODI4Ljg1N2wyLjI0IDIuMjRhLjU4My41ODMgMCAwIDAgLjgyOCAwbDQuNzYtNC43NmEuNTgzLjU4MyAwIDAgMCAwLS44NTdaJy8+PC9zdmc+Cg==");
82
+ mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNCAxNCc+PHBhdGggZD0nTTEwLjkxNCA0LjIwNmEuNTgzLjU4MyAwIDAgMC0uODI4IDBMNS43NCA4LjU1NyAzLjkxNCA2LjcyNmEuNTk2LjU5NiAwIDAgMC0uODI4Ljg1N2wyLjI0IDIuMjRhLjU4My41ODMgMCAwIDAgLjgyOCAwbDQuNzYtNC43NmEuNTgzLjU4MyAwIDAgMCAwLS44NTdaJy8+PC9zdmc+Cg==");
83
+ -webkit-mask-repeat: no-repeat;
84
+ mask-repeat: no-repeat;
85
+ flex-shrink: 0;
86
+ }
87
+ }
88
+ </style>