Files

4613 lines
295 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<html lang="ru">
<head>
<script>
window.__resources = {};
</script>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>MoonWell Launcher</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" />
<style>
/* latin-ext */
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/f59b88c7-7860-45b1-9a0a-52df50217f65")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/2f059136-84c4-4d58-9739-ad7c554fb2fe")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* latin-ext */
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/f59b88c7-7860-45b1-9a0a-52df50217f65")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/2f059136-84c4-4d58-9739-ad7c554fb2fe")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* latin-ext */
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/f59b88c7-7860-45b1-9a0a-52df50217f65")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/2f059136-84c4-4d58-9739-ad7c554fb2fe")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* latin-ext */
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/f59b88c7-7860-45b1-9a0a-52df50217f65")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cinzel";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/2f059136-84c4-4d58-9739-ad7c554fb2fe")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: italic;
font-weight: 400;
font-display: swap;
src: url("blob:null/6572ff93-71aa-46ee-9f2b-a93cdb064065")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Cormorant Garamond";
font-style: italic;
font-weight: 400;
font-display: swap;
src: url("blob:null/929e8ebd-dc00-40e2-867f-0ad2fb0c9564")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* vietnamese */
@font-face {
font-family: "Cormorant Garamond";
font-style: italic;
font-weight: 400;
font-display: swap;
src: url("blob:null/23b9ffb6-88a1-49b4-ab30-cf56280051a3")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: italic;
font-weight: 400;
font-display: swap;
src: url("blob:null/3b4f0ed1-7dca-4456-a024-9c9bfac68df5")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cormorant Garamond";
font-style: italic;
font-weight: 400;
font-display: swap;
src: url("blob:null/04592027-a480-48d5-884c-c3a2045fb388")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* vietnamese */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* vietnamese */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* vietnamese */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* vietnamese */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/f0338ed3-b2ae-4b8c-9c36-41854e5a1a4f")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/5aa9da47-3d80-4a4d-baf3-046a90661d2a")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* vietnamese */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/2b5cece3-84ad-457a-bebf-71b7dd05a17b")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/b9437d3d-db30-4978-9541-02abb5cbc96d")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Cormorant Garamond";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/0cf65e48-10c1-4a87-901a-0a2813822baf")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* greek-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
format("woff2");
unicode-range: U+1F00-1FFF;
} /* greek */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
format("woff2");
unicode-range:
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
U+03A3-03FF;
} /* vietnamese */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* greek-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
format("woff2");
unicode-range: U+1F00-1FFF;
} /* greek */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
format("woff2");
unicode-range:
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
U+03A3-03FF;
} /* vietnamese */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* greek-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
format("woff2");
unicode-range: U+1F00-1FFF;
} /* greek */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
format("woff2");
unicode-range:
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
U+03A3-03FF;
} /* vietnamese */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* greek-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
format("woff2");
unicode-range: U+1F00-1FFF;
} /* greek */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
format("woff2");
unicode-range:
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
U+03A3-03FF;
} /* vietnamese */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/68aa2de6-2b59-4a64-ba3d-bead38f9cdec")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/1594a563-e532-43dc-9f96-ef61188bb8d9")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* greek-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/6cceb341-6981-482f-a459-bc73323796a6")
format("woff2");
unicode-range: U+1F00-1FFF;
} /* greek */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/50bcffa6-9798-41ae-ba1b-d35f39ca9058")
format("woff2");
unicode-range:
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
U+03A3-03FF;
} /* vietnamese */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/da13ea52-fbfc-4d00-bfa0-a380870e7ec5")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/72d08026-2951-4365-9c71-f8a694ca2e27")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "Inter";
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("blob:null/13de52bb-2a17-410d-8bf0-5144cd354ac0")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/4a796ff7-acfa-4008-b79a-ed9d83073557")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/53e4ee87-b751-4948-9b05-449758af2ac8")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* greek */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/24be2f05-f3ed-4120-8ac7-a44df57409ec")
format("woff2");
unicode-range:
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
U+03A3-03FF;
} /* vietnamese */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/d4d17132-9ea1-411c-a59e-9f9a32cf09ac")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/52b3ab63-2285-432c-9a4e-4ee132aeaab0")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("blob:null/e36d161d-9afc-4a07-bcf7-45058dba537f")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
} /* cyrillic-ext */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/4a796ff7-acfa-4008-b79a-ed9d83073557")
format("woff2");
unicode-range:
U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F,
U+FE2E-FE2F;
} /* cyrillic */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/53e4ee87-b751-4948-9b05-449758af2ac8")
format("woff2");
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} /* greek */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/24be2f05-f3ed-4120-8ac7-a44df57409ec")
format("woff2");
unicode-range:
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1,
U+03A3-03FF;
} /* vietnamese */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/d4d17132-9ea1-411c-a59e-9f9a32cf09ac")
format("woff2");
unicode-range:
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
U+1EA0-1EF9, U+20AB;
} /* latin-ext */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/52b3ab63-2285-432c-9a4e-4ee132aeaab0")
format("woff2");
unicode-range:
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
} /* latin */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("blob:null/e36d161d-9afc-4a07-bcf7-45058dba537f")
format("woff2");
unicode-range:
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<style>
:root {
--bg-0: #070a18;
--bg-1: #0a0d1f;
--bg-2: #10142a;
--bg-3: #1a1f3a;
--panel: rgba(20, 25, 48, 0.55);
--panel-border: rgba(127, 184, 212, 0.14);
--panel-border-strong: rgba(127, 184, 212, 0.28);
--arcane: #5b3a8a;
--arcane-2: #8a5cc8;
--moon: #7fb8d4;
--moon-2: #c8e6ff;
--ivory: #ece4d0;
--gold: #d4b878;
--green: #6fc28a;
--amber: #e8a76b;
--red: #d76a78;
--text-soft: rgba(236, 228, 208, 0.78);
--text-mute: rgba(236, 228, 208, 0.5);
--text-dim: rgba(236, 228, 208, 0.32);
--f-display: "Cinzel", serif;
--f-serif: "Cormorant Garamond", serif;
--f-sans: "Inter", system-ui, sans-serif;
--f-mono: "JetBrains Mono", monospace;
--radius: 6px;
--radius-lg: 10px;
--t-fast: 180ms ease;
}
* {
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
background: #04060e;
min-height: 100vh;
color: var(--ivory);
font-family: var(--f-sans);
}
body {
display: flex;
align-items: center;
justify-content: center;
padding: 32px;
background:
radial-gradient(
ellipse at 30% 30%,
rgba(91, 58, 138, 0.12),
transparent 50%
),
radial-gradient(
ellipse at 70% 70%,
rgba(127, 184, 212, 0.08),
transparent 50%
),
#04060e;
} /* ---------- Stage with multiple slide states ---------- */
.stage {
display: flex;
flex-direction: column;
gap: 24px;
align-items: center;
}
.stage-label {
font-family: var(--f-mono);
font-size: 10px;
letter-spacing: 0.24em;
text-transform: uppercase;
color: var(--text-mute);
display: flex;
gap: 14px;
align-items: center;
}
.stage-label .dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--moon);
box-shadow: 0 0 10px var(--moon);
}
.stage-grid {
display: grid;
grid-template-columns: repeat(2, 1280px);
gap: 32px;
padding-bottom: 32px;
} /* ---------- Launcher window ---------- */
.launcher {
width: 1280px;
height: 720px;
position: relative;
background: #06091a;
border-radius: 12px;
overflow: hidden;
box-shadow:
0 60px 160px -30px rgba(0, 0, 0, 0.8),
0 0 0 1px rgba(127, 184, 212, 0.18),
inset 0 0 0 1px rgba(255, 255, 255, 0.02);
font-family: var(--f-sans);
color: var(--ivory);
isolation: isolate;
} /* Theming variants — same as landing */
.launcher[data-variant="forest"] {
--bg-tint: rgba(60, 90, 70, 0.18);
--accent: var(--moon);
}
.launcher[data-variant="temple"] {
--bg-tint: rgba(91, 58, 138, 0.22);
--accent: var(--arcane-2);
} /* ---------- Window chrome ---------- */
.win-titlebar {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 40px;
display: flex;
align-items: center;
padding: 0 12px;
z-index: 30;
-webkit-app-region: drag;
}
.win-title-spacer {
flex: 1;
}
.win-buttons {
display: flex;
gap: 4px;
-webkit-app-region: no-drag;
}
.win-btn {
width: 36px;
height: 28px;
border-radius: 4px;
background: transparent;
border: 0;
color: var(--text-soft);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition:
background var(--t-fast),
color var(--t-fast);
}
.win-btn:hover {
background: rgba(255, 255, 255, 0.06);
color: var(--ivory);
}
.win-btn.close:hover {
background: rgba(215, 106, 120, 0.5);
color: white;
}
.win-btn svg {
width: 14px;
height: 14px;
} /* ---------- Background art (placeholder) ---------- */
.bg-art {
position: absolute;
inset: 0;
z-index: 0;
background:
radial-gradient(ellipse at 60% 30%, var(--bg-tint), transparent 55%),
radial-gradient(
ellipse at 30% 80%,
rgba(127, 184, 212, 0.1),
transparent 55%
),
linear-gradient(180deg, #08102a 0%, #06091a 60%, #050714 100%);
}
.bg-art::after {
/* darken edges for legibility */
content: "";
position: absolute;
inset: 0;
background:
linear-gradient(
90deg,
rgba(6, 9, 26, 0.85) 0%,
rgba(6, 9, 26, 0.2) 30%,
rgba(6, 9, 26, 0) 50%,
rgba(6, 9, 26, 0.5) 100%
),
linear-gradient(
180deg,
rgba(6, 9, 26, 0) 60%,
rgba(6, 9, 26, 0.85) 100%
);
}
.bg-stars {
position: absolute;
inset: 0;
background-image:
radial-gradient(
1.5px 1.5px at 12% 18%,
rgba(232, 220, 192, 0.7),
transparent 50%
),
radial-gradient(
1px 1px at 28% 52%,
rgba(232, 220, 192, 0.5),
transparent 50%
),
radial-gradient(
1.5px 1.5px at 64% 22%,
rgba(127, 184, 212, 0.6),
transparent 50%
),
radial-gradient(
1px 1px at 82% 65%,
rgba(232, 220, 192, 0.5),
transparent 50%
),
radial-gradient(
2px 2px at 48% 12%,
rgba(232, 220, 192, 0.4),
transparent 50%
),
radial-gradient(
1px 1px at 76% 38%,
rgba(232, 220, 192, 0.4),
transparent 50%
);
}
.bg-moon {
position: absolute;
top: 8%;
right: 14%;
width: 180px;
height: 180px;
border-radius: 50%;
background: radial-gradient(
circle at 35% 35%,
rgba(232, 220, 192, 0.95),
rgba(127, 184, 212, 0.4) 60%,
transparent 75%
);
filter: blur(0.5px);
opacity: 0.55;
}
.bg-placeholder-mark {
position: absolute;
inset: 80px 80px 200px 580px;
border: 1px dashed rgba(127, 184, 212, 0.28);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
gap: 8px;
pointer-events: none;
z-index: 1;
}
.bg-placeholder-mark span:first-child {
font-family: var(--f-mono);
font-size: 11px;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--text-mute);
}
.bg-placeholder-mark span:last-child {
font-family: var(--f-serif);
font-style: italic;
font-size: 14px;
color: var(--text-mute);
} /* ---------- Left rail ---------- */
.rail {
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 64px;
background: linear-gradient(
180deg,
rgba(7, 10, 24, 0.55),
rgba(7, 10, 24, 0.35)
);
border-right: 1px solid var(--panel-border);
z-index: 10;
display: flex;
flex-direction: column;
align-items: center;
padding: 48px 0 16px;
gap: 14px;
}
.rail-wide {
width: 240px;
align-items: stretch;
padding: 48px 14px 16px;
gap: 8px;
}
.rail-wide .rail-avatar {
align-self: center;
}
.rail-wide .rail-divider {
align-self: center;
width: 80%;
}
.rail-section-label {
font-family: var(--f-mono);
font-size: 9px;
letter-spacing: 0.24em;
text-transform: uppercase;
color: var(--text-mute);
padding: 8px 8px 4px;
}
.game-tile {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 10px;
background: rgba(127, 184, 212, 0.04);
border: 1px solid var(--panel-border);
border-radius: var(--radius);
cursor: pointer;
text-align: left;
transition: all var(--t-fast);
position: relative;
color: var(--text-soft);
}
.game-tile:hover {
border-color: var(--panel-border-strong);
background: rgba(127, 184, 212, 0.08);
}
.game-tile.active {
background: linear-gradient(
90deg,
rgba(127, 184, 212, 0.18),
rgba(91, 58, 138, 0.12)
);
border-color: var(--accent);
box-shadow:
inset 3px 0 0 var(--accent),
0 0 16px rgba(127, 184, 212, 0.18);
color: var(--ivory);
}
.game-tile.soon {
opacity: 0.6;
}
.game-tile.soon:hover {
opacity: 0.85;
}
.game-tile-mark {
width: 32px;
height: 32px;
flex-shrink: 0;
border-radius: 6px;
background: linear-gradient(135deg, var(--arcane), var(--moon));
display: flex;
align-items: center;
justify-content: center;
font-family: var(--f-display);
font-size: 13px;
letter-spacing: 0.04em;
color: var(--ivory);
border: 1px solid rgba(255, 255, 255, 0.08);
}
.game-tile.soon .game-tile-mark {
background: linear-gradient(
135deg,
rgba(91, 58, 138, 0.4),
rgba(127, 184, 212, 0.25)
);
filter: grayscale(0.4);
}
.game-tile-info {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
flex: 1;
}
.game-tile-name {
font-family: var(--f-display);
font-size: 11px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: inherit;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.game-tile-tag {
font-family: var(--f-mono);
font-size: 9px;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--text-mute);
}
.game-tile.active .game-tile-tag {
color: var(--accent);
}
.game-tile-lock {
position: absolute;
top: 6px;
right: 8px;
font-family: var(--f-mono);
font-size: 8px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--text-mute);
background: rgba(7, 10, 24, 0.6);
padding: 2px 6px;
border-radius: 3px;
border: 1px solid var(--panel-border);
}
.rail-avatar {
width: 40px;
height: 40px;
border-radius: 50%;
background: radial-gradient(
circle at 30% 30%,
rgba(127, 184, 212, 0.5),
rgba(91, 58, 138, 0.6) 70%
);
border: 1px solid var(--accent);
box-shadow: 0 0 12px rgba(127, 184, 212, 0.3);
position: relative;
display: flex;
align-items: center;
justify-content: center;
font-family: var(--f-display);
font-size: 14px;
letter-spacing: 0.04em;
color: var(--ivory);
}
.rail-avatar::after {
content: "";
position: absolute;
bottom: 0;
right: 0;
width: 10px;
height: 10px;
background: var(--green);
border-radius: 50%;
border: 2px solid #06091a;
}
.rail-divider {
width: 24px;
height: 1px;
background: var(--panel-border);
}
.rail-icon {
width: 40px;
height: 40px;
background: transparent;
border: 0;
color: var(--text-mute);
cursor: pointer;
border-radius: var(--radius);
display: flex;
align-items: center;
justify-content: center;
transition: all var(--t-fast);
}
.rail-icon:hover {
color: var(--accent);
background: rgba(127, 184, 212, 0.06);
}
.rail-icon.active {
color: var(--accent);
background: rgba(127, 184, 212, 0.1);
}
.rail-icon svg {
width: 18px;
height: 18px;
}
.rail-spacer {
flex: 1;
} /* ---------- Header (logo + player) ---------- */
.header {
position: absolute;
top: 0;
left: 240px;
right: 0;
height: 96px;
z-index: 20;
padding: 24px 32px 0;
display: flex;
align-items: flex-start;
justify-content: space-between;
pointer-events: none;
}
.header > * {
pointer-events: auto;
}
.brand {
display: flex;
align-items: center;
gap: 14px;
}
.brand-mark {
width: 40px;
height: 40px;
color: var(--accent);
filter: drop-shadow(0 0 12px currentColor);
}
.brand-mark svg {
width: 100%;
height: 100%;
}
.brand-name {
font-family: var(--f-display);
font-size: 22px;
letter-spacing: 0.28em;
color: var(--ivory);
line-height: 1;
}
.brand-name small {
display: block;
font-family: var(--f-mono);
font-size: 9px;
letter-spacing: 0.32em;
color: var(--accent);
margin-top: 4px;
font-weight: 400;
}
.player {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 14px 8px 8px;
background: rgba(7, 10, 24, 0.55);
border: 1px solid var(--panel-border);
border-radius: 100px;
backdrop-filter: blur(8px);
margin-top: 4px;
}
.player-avatar {
width: 36px;
height: 36px;
border-radius: 50%;
background: radial-gradient(
circle at 30% 30%,
var(--moon),
var(--arcane) 70%
);
border: 1px solid var(--accent);
display: flex;
align-items: center;
justify-content: center;
font-family: var(--f-display);
font-size: 13px;
}
.player-info {
display: flex;
flex-direction: column;
gap: 2px;
line-height: 1;
}
.player-name {
font-family: var(--f-display);
font-size: 14px;
letter-spacing: 0.1em;
color: var(--ivory);
}
.player-meta {
font-family: var(--f-mono);
font-size: 9px;
letter-spacing: 0.18em;
color: var(--text-mute);
text-transform: uppercase;
} /* ---------- News panel (right) ---------- */
.news-panel {
position: absolute;
top: 110px;
right: 24px;
bottom: 130px;
width: 360px;
z-index: 15;
background: linear-gradient(
180deg,
rgba(10, 13, 31, 0.78),
rgba(7, 10, 24, 0.78)
);
border: 1px solid var(--panel-border-strong);
border-radius: var(--radius-lg);
backdrop-filter: blur(12px);
display: flex;
flex-direction: column;
overflow: hidden;
}
.news-tabs {
display: flex;
border-bottom: 1px solid var(--panel-border);
}
.news-tab {
flex: 1;
padding: 14px 8px;
background: transparent;
border: 0;
border-bottom: 1px solid transparent;
color: var(--text-mute);
cursor: pointer;
font-family: var(--f-display);
font-size: 11px;
letter-spacing: 0.18em;
text-transform: uppercase;
transition: all var(--t-fast);
}
.news-tab.active {
color: var(--ivory);
border-bottom-color: var(--accent);
background: rgba(127, 184, 212, 0.06);
}
.news-tab:hover:not(.active) {
color: var(--text-soft);
}
.news-list {
flex: 1;
overflow-y: auto;
padding: 8px 4px 8px 16px;
}
.news-list::-webkit-scrollbar {
width: 6px;
}
.news-list::-webkit-scrollbar-thumb {
background: rgba(127, 184, 212, 0.2);
border-radius: 3px;
}
.news-item {
display: block;
padding: 14px 12px 14px 0;
border-bottom: 1px solid var(--panel-border);
cursor: pointer;
transition: background var(--t-fast);
text-decoration: none;
color: inherit;
}
.news-item:hover {
background: rgba(127, 184, 212, 0.04);
}
.news-item:last-child {
border-bottom: 0;
}
.news-item-head {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
margin-bottom: 6px;
}
.news-tag {
font-family: var(--f-mono);
font-size: 9px;
letter-spacing: 0.22em;
text-transform: uppercase;
padding: 3px 8px;
border-radius: 3px;
border: 1px solid currentColor;
}
.news-tag.patch {
color: var(--accent);
}
.news-tag.event {
color: var(--gold);
}
.news-tag.notice {
color: var(--amber);
}
.news-date {
font-family: var(--f-mono);
font-size: 10px;
color: var(--text-mute);
letter-spacing: 0.08em;
}
.news-title {
font-family: var(--f-serif);
font-size: 16px;
line-height: 1.35;
color: var(--ivory);
letter-spacing: 0.01em;
}
.news-item:hover .news-title {
color: var(--accent);
}
.news-foot {
border-top: 1px solid var(--panel-border);
padding: 12px 16px;
display: flex;
justify-content: space-between;
align-items: center;
font-family: var(--f-mono);
font-size: 10px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--text-mute);
}
.news-foot a {
color: var(--accent);
text-decoration: none;
} /* ---------- Hero copy (left over art) ---------- */
.hero-copy {
position: absolute;
left: 272px;
top: 160px;
z-index: 12;
max-width: 540px;
}
.hero-eyebrow {
display: inline-flex;
align-items: center;
gap: 10px;
font-family: var(--f-mono);
font-size: 11px;
letter-spacing: 0.24em;
text-transform: uppercase;
color: var(--accent);
padding: 6px 12px;
border: 1px solid currentColor;
border-radius: 100px;
}
.hero-eyebrow .dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: currentColor;
box-shadow: 0 0 8px currentColor;
}
.hero-headline {
font-family: var(--f-display);
font-size: 56px;
line-height: 1.05;
letter-spacing: 0.04em;
margin: 18px 0 12px;
color: var(--ivory);
text-shadow: 0 4px 30px rgba(0, 0, 0, 0.6);
}
.hero-headline .accent {
color: var(--accent);
font-style: italic;
font-family: var(--f-serif);
font-weight: 400;
}
.hero-sub {
font-family: var(--f-serif);
font-size: 18px;
font-style: italic;
line-height: 1.5;
color: var(--text-soft);
max-width: 460px;
} /* ---------- Bottom action bar ---------- */
.actions {
position: absolute;
left: 240px;
right: 0;
bottom: 0;
height: 110px;
z-index: 18;
padding: 18px 32px 22px;
display: flex;
flex-direction: column;
justify-content: flex-end;
background: linear-gradient(
180deg,
rgba(6, 9, 26, 0) 0%,
rgba(6, 9, 26, 0.85) 30%,
rgba(6, 9, 26, 0.95) 100%
);
}
.action-row {
display: flex;
align-items: center;
gap: 24px;
} /* Realm pill */
.realm-pill {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 16px;
background: rgba(7, 10, 24, 0.6);
border: 1px solid var(--panel-border);
border-radius: var(--radius);
flex-shrink: 0;
}
.realm-pulse {
position: relative;
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--green);
}
.realm-pulse::after {
content: "";
position: absolute;
inset: -4px;
border-radius: 50%;
border: 1px solid var(--green);
animation: pulse 2.5s ease-out infinite;
}
@keyframes pulse {
0% {
transform: scale(0.6);
opacity: 1;
}
100% {
transform: scale(2.4);
opacity: 0;
}
}
.realm-name {
font-family: var(--f-display);
font-size: 12px;
letter-spacing: 0.16em;
color: var(--ivory);
}
.realm-meta {
font-family: var(--f-mono);
font-size: 10px;
letter-spacing: 0.12em;
color: var(--text-mute);
margin-top: 2px;
} /* Progress block */
.progress-block {
flex: 1;
min-width: 0;
}
.progress-head {
display: flex;
justify-content: space-between;
align-items: baseline;
margin-bottom: 8px;
font-family: var(--f-mono);
font-size: 11px;
letter-spacing: 0.14em;
text-transform: uppercase;
}
.progress-state {
color: var(--accent);
}
.progress-pct {
color: var(--ivory);
font-size: 14px;
letter-spacing: 0.04em;
}
.progress-bar {
height: 4px;
background: rgba(127, 184, 212, 0.12);
border-radius: 2px;
overflow: hidden;
position: relative;
}
.progress-fill {
height: 100%;
background: linear-gradient(90deg, var(--arcane-2), var(--accent));
border-radius: 2px;
position: relative;
transition: width 400ms ease;
}
.progress-fill::after {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
width: 30px;
background: linear-gradient(
90deg,
transparent,
rgba(255, 255, 255, 0.4)
);
filter: blur(2px);
}
.progress-meta {
display: flex;
justify-content: space-between;
margin-top: 8px;
font-family: var(--f-mono);
font-size: 10px;
color: var(--text-mute);
letter-spacing: 0.08em;
}
.progress-meta .left {
display: flex;
gap: 18px;
} /* Play button */
.play-btn {
height: 64px;
min-width: 220px;
padding: 0 36px;
border: 0;
border-radius: var(--radius);
font-family: var(--f-display);
font-size: 18px;
letter-spacing: 0.22em;
text-transform: uppercase;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 14px;
transition: all var(--t-fast);
position: relative;
overflow: hidden;
}
.play-btn .icon {
width: 18px;
height: 18px;
display: inline-flex;
}
.play-btn .icon svg {
width: 100%;
height: 100%;
}
.play-btn.ready {
background: linear-gradient(180deg, #6fc28a, #4ea073);
color: #0a1810;
box-shadow:
0 0 40px rgba(111, 194, 138, 0.4),
inset 0 1px 0 rgba(255, 255, 255, 0.3);
}
.play-btn.ready:hover {
transform: translateY(-1px);
box-shadow:
0 0 60px rgba(111, 194, 138, 0.55),
inset 0 1px 0 rgba(255, 255, 255, 0.3);
}
.play-btn.ready::before {
content: "";
position: absolute;
inset: -2px;
border-radius: var(--radius);
background: conic-gradient(
from 0deg,
transparent,
var(--green),
transparent 60%
);
animation: rotate 4s linear infinite;
z-index: -1;
}
@keyframes rotate {
to {
transform: rotate(360deg);
}
}
.play-btn.pause {
background: linear-gradient(180deg, var(--arcane-2), var(--arcane));
color: var(--ivory);
box-shadow:
0 0 30px rgba(138, 92, 200, 0.35),
inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.play-btn.pause:hover {
filter: brightness(1.1);
}
.play-btn.disabled {
background: rgba(127, 184, 212, 0.1);
color: var(--text-mute);
cursor: not-allowed;
border: 1px solid var(--panel-border-strong);
}
.play-btn.error {
background: linear-gradient(180deg, var(--red), #a14750);
color: white;
} /* ---------- Footer status bar ---------- */
.statusbar {
position: absolute;
bottom: 0;
left: 240px;
right: 0;
height: 26px;
z-index: 19;
display: flex;
align-items: center;
padding: 0 32px;
gap: 24px;
font-family: var(--f-mono);
font-size: 10px;
letter-spacing: 0.14em;
color: var(--text-mute);
border-top: 1px solid var(--panel-border);
background: rgba(4, 6, 14, 0.7);
}
.statusbar .sep {
color: var(--text-dim);
}
.statusbar .right {
margin-left: auto;
}
.statusbar strong {
color: var(--text-soft);
font-weight: 400;
} /* ---------- Login screen ---------- */
.login-stack {
position: absolute;
inset: 0;
z-index: 25;
display: flex;
}
.login-art {
flex: 1;
position: relative;
border-right: 1px solid var(--panel-border);
display: flex;
align-items: flex-end;
padding: 64px;
}
.login-art-mark {
position: absolute;
inset: 100px 80px;
border: 1px dashed rgba(127, 184, 212, 0.22);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
gap: 8px;
pointer-events: none;
}
.login-art-mark span:first-child {
font-family: var(--f-mono);
font-size: 11px;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--text-mute);
}
.login-art-mark span:last-child {
font-family: var(--f-serif);
font-style: italic;
font-size: 14px;
color: var(--text-mute);
}
.login-art-quote {
position: relative;
z-index: 2;
max-width: 460px;
font-family: var(--f-serif);
font-style: italic;
font-size: 22px;
line-height: 1.5;
color: var(--text-soft);
}
.login-art-quote::before {
content: "✦";
display: block;
color: var(--accent);
font-style: normal;
font-size: 18px;
margin-bottom: 14px;
}
.login-art-quote cite {
display: block;
margin-top: 18px;
font-family: var(--f-mono);
font-style: normal;
font-size: 10px;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--text-mute);
}
.login-form {
width: 480px;
padding: 64px 56px 48px;
background: linear-gradient(
180deg,
rgba(10, 13, 31, 0.95),
rgba(7, 10, 24, 0.95)
);
display: flex;
flex-direction: column;
overflow-y: auto;
}
.login-form::-webkit-scrollbar {
width: 6px;
}
.login-form::-webkit-scrollbar-thumb {
background: rgba(127, 184, 212, 0.2);
border-radius: 3px;
}
.login-brand {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 24px;
}
.login-brand-mark {
width: 28px;
height: 28px;
color: var(--accent);
}
.login-brand-mark svg {
width: 100%;
height: 100%;
}
.login-brand-name {
font-family: var(--f-display);
letter-spacing: 0.28em;
font-size: 15px;
}
.login-eyebrow {
font-family: var(--f-mono);
font-size: 10px;
letter-spacing: 0.24em;
text-transform: uppercase;
color: var(--accent);
}
.login-h {
font-family: var(--f-display);
font-size: 30px;
letter-spacing: 0.04em;
margin: 10px 0 6px;
color: var(--ivory);
}
.login-sub {
font-family: var(--f-serif);
font-style: italic;
font-size: 15px;
color: var(--text-mute);
margin-bottom: 22px;
line-height: 1.4;
}
.login-tabs {
display: flex;
gap: 0;
margin-bottom: 18px;
border-bottom: 1px solid var(--panel-border);
}
.login-tab {
flex: 1;
padding: 10px 0;
background: transparent;
border: 0;
border-bottom: 1px solid transparent;
color: var(--text-mute);
cursor: pointer;
font-family: var(--f-display);
font-size: 11px;
letter-spacing: 0.18em;
text-transform: uppercase;
transition: all var(--t-fast);
}
.login-tab.active {
color: var(--ivory);
border-bottom-color: var(--accent);
}
.field {
margin-bottom: 12px;
}
.field-label {
display: block;
font-family: var(--f-sans);
font-size: 10px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--ivory);
margin-bottom: 6px;
}
.field-input {
width: 100%;
padding: 10px 12px;
background: rgba(7, 10, 24, 0.7);
border: 1px solid var(--panel-border);
border-radius: var(--radius);
color: var(--ivory);
font-family: var(--f-sans);
font-size: 13px;
transition: all var(--t-fast);
}
.field-input:focus {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px rgba(127, 184, 212, 0.1);
}
.login-row {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
margin: 4px 0 16px;
}
.login-row a {
color: var(--accent);
text-decoration: none;
font-family: var(--f-mono);
font-size: 10px;
letter-spacing: 0.1em;
}
.login-row label {
display: flex;
align-items: center;
gap: 8px;
color: var(--text-soft);
cursor: pointer;
}
.login-row input[type="checkbox"] {
accent-color: var(--accent);
}
.login-submit {
width: 100%;
padding: 14px;
background: linear-gradient(180deg, var(--arcane-2), var(--arcane));
border: 0;
border-radius: var(--radius);
color: var(--ivory);
font-family: var(--f-display);
font-size: 13px;
letter-spacing: 0.22em;
text-transform: uppercase;
cursor: pointer;
transition: all var(--t-fast);
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
flex-shrink: 0;
}
.login-submit svg {
width: 14px;
height: 14px;
flex-shrink: 0;
}
.login-submit:hover {
filter: brightness(1.1);
transform: translateY(-1px);
}
.login-foot {
margin-top: 16px;
padding-top: 16px;
border-top: 1px solid var(--panel-border);
font-family: var(--f-mono);
font-size: 9px;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--text-mute);
text-align: center;
flex-shrink: 0;
} /* ---------- Tweaks ---------- */
.tweaks-host {
position: fixed;
top: 16px;
right: 16px;
z-index: 100;
background: rgba(10, 13, 31, 0.95);
border: 1px solid var(--panel-border-strong);
border-radius: var(--radius-lg);
padding: 16px;
display: flex;
flex-direction: column;
gap: 12px;
font-family: var(--f-sans);
font-size: 12px;
width: 240px;
backdrop-filter: blur(10px);
}
.tweaks-host h4 {
margin: 0 0 4px;
font-family: var(--f-display);
letter-spacing: 0.18em;
font-size: 13px;
}
.tweaks-row {
display: flex;
flex-direction: column;
gap: 6px;
}
.tweaks-row label {
color: var(--text-mute);
font-family: var(--f-mono);
font-size: 10px;
letter-spacing: 0.16em;
text-transform: uppercase;
}
.tweaks-seg {
display: flex;
gap: 4px;
}
.tweaks-seg button {
flex: 1;
padding: 8px;
background: rgba(127, 184, 212, 0.05);
border: 1px solid var(--panel-border);
border-radius: 4px;
color: var(--text-soft);
cursor: pointer;
font-family: var(--f-sans);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.08em;
}
.tweaks-seg button.active {
background: var(--accent);
color: var(--bg-0);
border-color: var(--accent);
}
</style>
<script>
"use strict"; // Icon set for the launcher var LIcons = { min: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M5 12h14" })), close: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M6 6l12 12M18 6L6 18" })), play: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor" }, /*#__PURE__*/React.createElement("path", { d: "M7 5v14l12-7z" })), pause: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor" }, /*#__PURE__*/React.createElement("rect", { x: "6", y: "5", width: "4", height: "14", rx: "1" }), /*#__PURE__*/React.createElement("rect", { x: "14", y: "5", width: "4", height: "14", rx: "1" })), refresh: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M3 12a9 9 0 0 1 15.5-6.3L21 8" }), /*#__PURE__*/React.createElement("path", { d: "M21 3v5h-5" }), /*#__PURE__*/React.createElement("path", { d: "M21 12a9 9 0 0 1-15.5 6.3L3 16" }), /*#__PURE__*/React.createElement("path", { d: "M3 21v-5h5" })), arrow: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M5 12h14M13 6l6 6-6 6" })), cog: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("circle", { cx: "12", cy: "12", r: "3" }), /*#__PURE__*/React.createElement("path", { d: "M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z" })), friends: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }), /*#__PURE__*/React.createElement("circle", { cx: "9", cy: "7", r: "4" }), /*#__PURE__*/React.createElement("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }), /*#__PURE__*/React.createElement("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })), news: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M4 4h13v16H4z" }), /*#__PURE__*/React.createElement("path", { d: "M17 8h3v10a2 2 0 0 1-2 2" }), /*#__PURE__*/React.createElement("path", { d: "M7 8h7M7 12h7M7 16h4" })), shop: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M3 7h18l-2 12H5z" }), /*#__PURE__*/React.createElement("path", { d: "M8 7a4 4 0 0 1 8 0" })), moon: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "currentColor" }, /*#__PURE__*/React.createElement("path", { d: "M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z" })), download: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M12 3v13" }), /*#__PURE__*/React.createElement("path", { d: "M7 11l5 5 5-5" }), /*#__PURE__*/React.createElement("path", { d: "M5 21h14" })), warning: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M12 3l10 18H2z" }), /*#__PURE__*/React.createElement("path", { d: "M12 10v5M12 18v.01" })), arrow_left: /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5" }, /*#__PURE__*/React.createElement("path", { d: "M19 12H5M11 18l-6-6 6-6" })) }; function MoonMark(_ref) { var _ref$size = _ref.size, size = _ref$size === void 0 ? 32 : _ref$size; return /*#__PURE__*/React.createElement("svg", { viewBox: "0 0 64 64", width: size, height: size, fill: "none" }, /*#__PURE__*/React.createElement("circle", { cx: "32", cy: "32", r: "22", stroke: "currentColor", strokeWidth: "1.2", opacity: "0.4" }), /*#__PURE__*/React.createElement("path", { d: "M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z", fill: "currentColor" }), /*#__PURE__*/React.createElement("circle", { cx: "32", cy: "32", r: "30", stroke: "currentColor", strokeWidth: "0.5", opacity: "0.2", strokeDasharray: "2 4" })); } Object.assign(window, { LIcons: LIcons, MoonMark: MoonMark }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMSWNvbnMiLCJtaW4iLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJ2aWV3Qm94IiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwiZCIsImNsb3NlIiwicGxheSIsInBhdXNlIiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsInJ4IiwicmVmcmVzaCIsImFycm93IiwiY29nIiwiY3giLCJjeSIsInIiLCJmcmllbmRzIiwibmV3cyIsInNob3AiLCJtb29uIiwiZG93bmxvYWQiLCJ3YXJuaW5nIiwiYXJyb3dfbGVmdCIsIk1vb25NYXJrIiwiX3JlZiIsIl9yZWYkc2l6ZSIsInNpemUiLCJvcGFjaXR5Iiwic3Ryb2tlRGFzaGFycmF5IiwiT2JqZWN0IiwiYXNzaWduIiwid2luZG93Il0sInNvdXJjZXMiOlsiSW5saW5lIEJhYmVsIHNjcmlwdCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJY29uIHNldCBmb3IgdGhlIGxhdW5jaGVyXG5jb25zdCBMSWNvbnMgPSB7XG4gIG1pbjogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjEuNVwiPjxwYXRoIGQ9XCJNNSAxMmgxNFwiLz48L3N2Zz4sXG4gIGNsb3NlOiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMS41XCI+PHBhdGggZD1cIk02IDZsMTIgMTJNMTggNkw2IDE4XCIvPjwvc3ZnPixcbiAgcGxheTogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjxwYXRoIGQ9XCJNNyA1djE0bDEyLTd6XCIvPjwvc3ZnPixcbiAgcGF1c2U6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48cmVjdCB4PVwiNlwiIHk9XCI1XCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiMTRcIiByeD1cIjFcIi8+PHJlY3QgeD1cIjE0XCIgeT1cIjVcIiB3aWR0aD1cIjRcIiBoZWlnaHQ9XCIxNFwiIHJ4PVwiMVwiLz48L3N2Zz4sXG4gIHJlZnJlc2g6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTMgMTJhOSA5IDAgMCAxIDE1LjUtNi4zTDIxIDhcIi8+PHBhdGggZD1cIk0yMSAzdjVoLTVcIi8+PHBhdGggZD1cIk0yMSAxMmE5IDkgMCAwIDEtMTUuNSA2LjNMMyAxNlwiLz48cGF0aCBkPVwiTTMgMjF2LTVoNVwiLz48L3N2Zz4sXG4gIGFycm93OiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMS41XCI+PHBhdGggZD1cIk01IDEyaDE0TTEzIDZsNiA2LTYgNlwiLz48L3N2Zz4sXG4gIGNvZzogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjEuNVwiPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiM1wiLz48cGF0aCBkPVwiTTE5LjQgMTVhMS43IDEuNyAwIDAgMCAuMyAxLjhsLjEuMWEyIDIgMCAwIDEgMCAyLjggMiAyIDAgMCAxLTIuOCAwbC0uMS0uMWExLjcgMS43IDAgMCAwLTEuOC0uMyAxLjcgMS43IDAgMCAwLTEgMS41VjIxYTIgMiAwIDAgMS00IDB2LS4xYTEuNyAxLjcgMCAwIDAtMS0xLjUgMS43IDEuNyAwIDAgMC0xLjguM2wtLjEuMWEyIDIgMCAwIDEtMi44LTIuOGwuMS0uMWExLjcgMS43IDAgMCAwIC4zLTEuOCAxLjcgMS43IDAgMCAwLTEuNS0xSDNhMiAyIDAgMCAxIDAtNGguMWExLjcgMS43IDAgMCAwIDEuNS0xIDEuNyAxLjcgMCAwIDAtLjMtMS44bC0uMS0uMWEyIDIgMCAwIDEgMi44LTIuOGwuMS4xYTEuNyAxLjcgMCAwIDAgMS44LjMgMS43IDEuNyAwIDAgMCAxLTEuNVYzYTIgMiAwIDAgMSA0IDB2LjFhMS43IDEuNyAwIDAgMCAxIDEuNSAxLjcgMS43IDAgMCAwIDEuOC0uM2wuMS0uMWEyIDIgMCAwIDEgMi44IDIuOGwtLjEuMWExLjcgMS43IDAgMCAwLS4zIDEuOCAxLjcgMS43IDAgMCAwIDEuNSAxSDIxYTIgMiAwIDAgMSAwIDRoLS4xYTEuNyAxLjcgMCAwIDAtMS41IDF6XCIvPjwvc3ZnPixcbiAgZnJpZW5kczogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjEuNVwiPjxwYXRoIGQ9XCJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg2YTQgNCAwIDAgMC00IDR2MlwiLz48Y2lyY2xlIGN4PVwiOVwiIGN5PVwiN1wiIHI9XCI0XCIvPjxwYXRoIGQ9XCJNMjIgMjF2LTJhNCA0IDAgMCAwLTMtMy44N1wiLz48cGF0aCBkPVwiTTE2IDMuMTNhNCA0IDAgMCAxIDAgNy43NVwiLz48L3N2Zz4sXG4gIG5ld3M6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTQgNGgxM3YxNkg0elwiLz48cGF0aCBkPVwiTTE3IDhoM3YxMGEyIDIgMCAwIDEtMiAyXCIvPjxwYXRoIGQ9XCJNNyA4aDdNNyAxMmg3TTcgMTZoNFwiLz48L3N2Zz4sXG4gIHNob3A6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTMgN2gxOGwtMiAxMkg1elwiLz48cGF0aCBkPVwiTTggN2E0IDQgMCAwIDEgOCAwXCIvPjwvc3ZnPixcbiAgbW9vbjogPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPjxwYXRoIGQ9XCJNMjEgMTIuOEE5IDkgMCAxIDEgMTEuMiAzYTcgNyAwIDAgMCA5LjggOS44elwiLz48L3N2Zz4sXG4gIGRvd25sb2FkOiA8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMS41XCI+PHBhdGggZD1cIk0xMiAzdjEzXCIvPjxwYXRoIGQ9XCJNNyAxMWw1IDUgNS01XCIvPjxwYXRoIGQ9XCJNNSAyMWgxNFwiLz48L3N2Zz4sXG4gIHdhcm5pbmc6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTEyIDNsMTAgMThIMnpcIi8+PHBhdGggZD1cIk0xMiAxMHY1TTEyIDE4di4wMVwiLz48L3N2Zz4sXG4gIGFycm93X2xlZnQ6IDxzdmcgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjVcIj48cGF0aCBkPVwiTTE5IDEySDVNMTEgMThsLTYtNiA2LTZcIi8+PC9zdmc+LFxufTtcblxuZnVuY3Rpb24gTW9vbk1hcmsoeyBzaXplID0gMzIgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgdmlld0JveD1cIjAgMCA2NCA2NFwiIHdpZHRoPXtzaXplfSBoZWlnaHQ9e3NpemV9IGZpbGw9XCJub25lXCI+XG4gICAgICA8Y2lyY2xlIGN4PVwiMzJcIiBjeT1cIjMyXCIgcj1cIjIyXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjJcIiBvcGFjaXR5PVwiMC40XCIvPlxuICAgICAgPHBhdGggZD1cIk00MCAxNCBBMjIgMjIgMCAxIDAgNDAgNTAgQTE2IDE2IDAgMSAxIDQwIDE0IFpcIiBmaWxsPVwiY3VycmVudENvbG9yXCIvPlxuICAgICAgPGNpcmNsZSBjeD1cIjMyXCIgY3k9XCIzMlwiIHI9XCIzMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMC41XCIgb3BhY2l0eT1cIjAuMlwiIHN0cm9rZURhc2hhcnJheT1cIjIgNFwiLz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cblxuT2JqZWN0LmFzc2lnbih3aW5kb3csIHsgTEljb25zLCBNb29uTWFyayB9KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLElBQU1BLE1BQU0sR0FBRztFQUNiQyxHQUFHLGVBQUVDLEtBQUEsQ0FBQUMsYUFBQTtJQUFLQyxPQUFPLEVBQUMsV0FBVztJQUFDQyxJQUFJLEVBQUMsTUFBTTtJQUFDQyxNQUFNLEVBQUMsY0FBYztJQUFDQyxXQUFXLEVBQUM7RUFBSyxnQkFBQ0wsS0FBQSxDQUFBQyxhQUFBO0lBQU1LLENBQUMsRUFBQztFQUFVLENBQUMsQ0FBTSxDQUFDO0VBQzVHQyxLQUFLLGVBQUVQLEtBQUEsQ0FBQUMsYUFBQTtJQUFLQyxPQUFPLEVBQUMsV0FBVztJQUFDQyxJQUFJLEVBQUMsTUFBTTtJQUFDQyxNQUFNLEVBQUMsY0FBYztJQUFDQyxXQUFXLEVBQUM7RUFBSyxnQkFBQ0wsS0FBQSxDQUFBQyxhQUFBO0lBQU1LLENBQUMsRUFBQztFQUFzQixDQUFDLENBQU0sQ0FBQztFQUMxSEUsSUFBSSxlQUFFUixLQUFBLENBQUFDLGFBQUE7SUFBS0MsT0FBTyxFQUFDLFdBQVc7SUFBQ0MsSUFBSSxFQUFDO0VBQWMsZ0JBQUNILEtBQUEsQ0FBQUMsYUFBQTtJQUFNSyxDQUFDLEVBQUM7RUFBZSxDQUFDLENBQU0sQ0FBQztFQUNsRkcsS0FBSyxlQUFFVCxLQUFBLENBQUFDLGFBQUE7SUFBS0MsT0FBTyxFQUFDLFdBQVc7SUFBQ0MsSUFBSSxFQUFDO0VBQWMsZ0JBQUNILEtBQUEsQ0FBQUMsYUFBQTtJQUFNUyxDQUFDLEVBQUMsR0FBRztJQUFD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
</script>
<script>
"use strict";
function _slicedToArray(r, e) {
return (
_arrayWithHoles(r) ||
_iterableToArrayLimit(r, e) ||
_unsupportedIterableToArray(r, e) ||
_nonIterableRest()
);
}
function _nonIterableRest() {
throw new TypeError(
"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.",
);
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return (
"Object" === t && r.constructor && (t = r.constructor.name),
"Map" === t || "Set" === t
? Array.from(r)
: "Arguments" === t ||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
? _arrayLikeToArray(r, a)
: void 0
);
}
}
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _iterableToArrayLimit(r, l) {
var t =
null == r
? null
: ("undefined" != typeof Symbol && r[Symbol.iterator]) ||
r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (((i = (t = t.call(r)).next), 0 === l)) {
if (Object(t) !== t) return;
f = !1;
} else
for (
;
!(f = (e = i.call(t)).done) &&
(a.push(e.value), a.length !== l);
f = !0
);
} catch (r) {
((o = !0), (n = r));
} finally {
try {
if (
!f &&
null != t["return"] &&
((u = t["return"]()), Object(u) !== u)
)
return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
} // Main launcher window var _React = React, useState = _React.useState; var GAMES = [{ id: "wow", "short": "MW", name: "MoonWell · WoW", tag: "Open Beta", subtitle: "Wrath of the Lich King · приватный сервер", live: true }, { id: "karts", "short": "K", name: "MoonWell Karts", tag: "Closed Alpha", subtitle: "Аркадные гонки в нашей вселенной", live: false }, { id: "tides", "short": "T", name: "Tides of Elune", tag: "В разработке", subtitle: "Карточная стратегия по мотивам сервера", live: false }, { id: "verge", "short": "V", name: "Project Verge", tag: "Анонс", subtitle: "ARPG-песочница · собственный движок", live: false }]; function LauncherWindow(_ref) { var _ref$variant = _ref.variant, variant = _ref$variant === void 0 ? "forest" : _ref$variant, _ref$state = _ref.state, state = _ref$state === void 0 ? "ready" : _ref$state, _ref$title = _ref.title, title = _ref$title === void 0 ? "Главный — готов играть" : _ref$title, _ref$game = _ref.game, game = _ref$game === void 0 ? "wow" : _ref$game; var _useState = useState("news"), _useState2 = _slicedToArray(_useState, 2), tab = _useState2[0], setTab = _useState2[1]; var activeGame = GAMES.find(function (g) { return g.id === game; }) || GAMES[0]; var news = { news: [{ tag: "patch", tagLabel: "Патч", date: "29.04", title: "Открытая бета: первый сезон стартует на этой неделе" }, { tag: "event", tagLabel: "Событие", date: "27.04", title: "Лунные стражи: PvP-уикенд с тройным рейтингом" }, { tag: "patch", tagLabel: "Патч", date: "24.04", title: "1.4.2 — балансировка соло-данжей и фикс Mythic+" }, { tag: "notice", tagLabel: "Объявление", date: "22.04", title: "Запланированное обслуживание реалмов 24.04 03:00 UTC" }], events: [{ tag: "event", tagLabel: "Событие", date: "01.05", title: "Канун Лунной ночи — задания и временный босс в Тельдрассиле" }, { tag: "event", tagLabel: "Событие", date: "29.04", title: "Лунные стражи: PvP-уикенд с тройным рейтингом" }], patch: [{ tag: "patch", tagLabel: "1.4.2", date: "24.04", title: "Балансировка соло-данжей: Heroic Stratholme" }, { tag: "patch", tagLabel: "1.4.1", date: "18.04", title: "Mythic+ — новые аффиксы недели" }, { tag: "patch", tagLabel: "1.4.0", date: "10.04", title: "Старт открытой беты Wrath" }] }; // Determine visible action UI per state var isReady = state === "ready"; var isDownloading = state === "downloading"; var isPaused = state === "paused"; var isVerify = state === "verify"; var isUpdate = state === "update"; var stateMeta = { ready: { label: "Готов к запуску", pct: 100 }, downloading: { label: "Загрузка", pct: 6 }, paused: { label: "Пауза", pct: 6 }, verify: { label: "Проверка файлов", pct: 38 }, update: { label: "Обновление клиента", pct: 72 } }[state]; var playBtn = function () { if (isReady) return /*#__PURE__*/React.createElement("button", { className: "play-btn ready" }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.play), " \u0418\u0433\u0440\u0430\u0442\u044C"); if (isDownloading) return /*#__PURE__*/React.createElement("button", { className: "play-btn pause" }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.pause), " \u041F\u0430\u0443\u0437\u0430"); if (isPaused) return /*#__PURE__*/React.createElement("button", { className: "play-btn pause" }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.play), " \u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C"); if (isVerify) return /*#__PURE__*/React.createElement("button", { className: "play-btn disabled", disabled: true }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.refresh), " \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430\u2026"); if (isUpdate) return /*#__PURE__*/React.createElement("button", { className: "play-btn pause" }, /*#__PURE__*/React.createElement("span", { className: "icon" }, LIcons.download), " \u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435"); return null; }(); return /*#__PURE__*/React.createElement("div", { className: "stage-cell" }, /*#__PURE__*/React.createElement("div", { className: "stage-label" }, /*#__PURE__*/React.createElement("span", { className: "dot" }), /*#__PURE__*/React.createElement("span", null, title)), /*#__PURE__*/React.createElement("div", { style: { height: 12 } }), /*#__PURE__*/React.createElement("div", { className: "launcher", "data-variant": variant }, /*#__PURE__*/React.createElement("div", { className: "bg-art" }), /*#__PURE__*/React.createElement("div", { className: "bg-stars" }), /*#__PURE__*/React.createElement("div", { className: "bg-moon" }), /*#__PURE__*/React.createElement("div", { className: "bg-placeholder-mark" }, /*#__PURE__*/React.createElement("span", null, "Place key art here"), /*#__PURE__*/React.createElement("span", null, "2560\xD71440 \xB7 \u043D\u043E\u0447\u043D\u044B\u0435 \u044D\u043B\u044C\u0444\u044B / \u0422\u0435\u043B\u044C\u0434\u0440\u0430\u0441\u0441\u0438\u043B")), /*#__PURE__*/React.createElement("div", { className: "win-titlebar" }, /*#__PURE__*/React.createElement("div", { className: "win-title-spacer" }), /*#__PURE__*/React.createElement("div", { className: "win-buttons" }, /*#__PURE__*/React.createElement("button", { className: "win-btn" }, LIcons.min), /*#__PURE__*/React.createElement("button", { className: "win-btn close" }, LIcons.close))), /*#__PURE__*/React.createElement("aside", { className: "rail rail-wide" }, /*#__PURE__*/React.createElement("div", { className: "rail-avatar" }, "A"), /*#__PURE__*/React.createElement("div", { className: "rail-divider" }), /*#__PURE__*/React.createElement("div", { className: "rail-section-label" }, "\u0418\u0433\u0440\u044B"), GAMES.map(function (g) { return /*#__PURE__*/React.createElement("button", { key: g.id, className: "game-tile ".concat(g.id === activeGame.id ? "active" : "", " ").concat(g.live ? "" : "soon"), title: "".concat(g.name, " \u2014 ").concat(g.tag) }, /*#__PURE__*/React.createElement("span", { className: "game-tile-mark" }, g["short"]), /*#__PURE__*/React.createElement("span", { className: "game-tile-info" }, /*#__PURE__*/React.createElement("span", { className: "game-tile-name" }, g.name), /*#__PURE__*/React.createElement("span", { className: "game-tile-tag" }, g.tag)), !g.live && /*#__PURE__*/React.createElement("span", { className: "game-tile-lock" }, "soon")); }), /*#__PURE__*/React.createElement("div", { className: "rail-spacer" }), /*#__PURE__*/React.createElement("div", { className: "rail-divider" }), /*#__PURE__*/React.createElement("button", { className: "rail-icon", title: "\u0414\u0440\u0443\u0437\u044C\u044F" }, LIcons.friends), /*#__PURE__*/React.createElement("button", { className: "rail-icon", title: "\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438" }, LIcons.cog)), /*#__PURE__*/React.createElement("header", { className: "header" }, /*#__PURE__*/React.createElement("div", { className: "brand" }, /*#__PURE__*/React.createElement("span", { className: "brand-mark" }, /*#__PURE__*/React.createElement(MoonMark, { size: 40 })), /*#__PURE__*/React.createElement("div", { className: "brand-name" }, "MOONWELL", /*#__PURE__*/React.createElement("small", null, "LUNAR \xB7 LAUNCHER"))), /*#__PURE__*/React.createElement("div", { className: "player" }, /*#__PURE__*/React.createElement("div", { className: "player-avatar" }, "\xC6"), /*#__PURE__*/React.createElement("div", { className: "player-info" }, /*#__PURE__*/React.createElement("span", { className: "player-name" }, "Aranthel"), /*#__PURE__*/React.createElement("span", { className: "player-meta" }, "\u0425\u0440\u0430\u043D\u0438\u0442\u0435\u043B\u044C \u0440\u043E\u0449\u0438 \xB7 47 \u0443\u0440.")))), /*#__PURE__*/React.createElement("div", { className: "hero-copy" }, /*#__PURE__*/React.createElement("span", { className: "hero-eyebrow" }, /*#__PURE__*/React.createElement("span", { className: "dot" }), " ", activeGame.tag), /*#__PURE__*/React.createElement("h1", { className: "hero-headline" }, activeGame.id === "wow" && /*#__PURE__*/React.createElement(React.Fragment, null, "\u0421\u0432\u0435\u0442 \u043A\u043E\u043B\u043E\u0434\u0446\u0430", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "accent" }, "\u0437\u043E\u0432\u0451\u0442 \u0442\u0435\u0431\u044F \u0434\u043E\u043C\u043E\u0439.")), activeGame.id === "karts" && /*#__PURE__*/React.createElement(React.Fragment, null, "\u0413\u043E\u043D\u043A\u0438 \u043F\u043E\u0434", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "accent" }, "\u043B\u0443\u043D\u043D\u044B\u043C \u0441\u0432\u0435\u0442\u043E\u043C.")), activeGame.id === "tides" && /*#__PURE__*/React.createElement(React.Fragment, null, "\u041A\u043E\u043B\u043E\u0434\u0430 \u0441\u0443\u0434\u044C\u0431\u044B", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "accent" }, "\u0432 \u0442\u0432\u043E\u0438\u0445 \u0440\u0443\u043A\u0430\u0445.")), activeGame.id === "verge" && /*#__PURE__*/React.createElement(React.Fragment, null, "\u0417\u0430 \u0433\u0440\u0430\u043D\u044C\u044E", /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("span", { className: "accent" }, "\u043F\u0440\u0438\u0432\u044B\u0447\u043D\u043E\u0433\u043E \u043C\u0438\u0440\u0430."))), /*#__PURE__*/React.createElement("p", { className: "hero-sub" }, activeGame.subtitle)), /*#__PURE__*/React.createElement("aside", { className: "news-panel" }, /*#__PURE__*/React.createElement("div", { className: "news-tabs" }, /*#__PURE__*/React.createElement("button", { className: "news-tab ".concat(tab === 'news' ? 'active' : ''), onClick: function onClick() { return setTab('news'); } }, "\u041D\u043E\u0432\u043E\u0441\u0442\u0438"), /*#__PURE__*/React.createElement("button", { className: "news-tab ".concat(tab === 'events' ? 'active' : ''), onClick: function onClick() { return setTab('events'); } }, "\u0421\u043E\u0431\u044B\u0442\u0438\u044F"), /*#__PURE__*/React.createElement("button", { className: "news-tab ".concat(tab === 'patch' ? 'active' : ''), onClick: function onClick() { return setTab('patch'); } }, "\u041F\u0430\u0442\u0447\u0438")), /*#__PURE__*/React.createElement("div", { className: "news-list" }, news[tab].map(function (n, i) { return /*#__PURE__*/React.createElement("a", { key: i, className: "news-item", href: "#" }, /*#__PURE__*/React.createElement("div", { className: "news-item-head" }, /*#__PURE__*/React.createElement("span", { className: "news-tag ".concat(n.tag) }, n.tagLabel), /*#__PURE__*/React.createElement("span", { className: "news-date" }, n.date)), /*#__PURE__*/React.createElement("div", { className: "news-title" }, n.title)); })), /*#__PURE__*/React.createElement("div", { className: "news-foot" }, /*#__PURE__*/React.createElement("span", null, "moonwell.gg"), /*#__PURE__*/React.createElement("a", { href: "#" }, "\u0412\u0441\u0435 \u2192"))), /*#__PURE__*/React.createElement("div", { className: "actions" }, /*#__PURE__*/React.createElement("div", { className: "action-row" }, /*#__PURE__*/React.createElement("div", { className: "realm-pill" }, /*#__PURE__*/React.createElement("div", { className: "realm-pulse" }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { className: "realm-name" }, "ELUNE'S GRACE"), /*#__PURE__*/React.createElement("div", { className: "realm-meta" }, "Online \xB7 1247 players \xB7 38ms"))), /*#__PURE__*/React.createElement("div", { className: "progress-block" }, /*#__PURE__*/React.createElement("div", { className: "progress-head" }, /*#__PURE__*/React.createElement("span", { className: "progress-state" }, stateMeta.label), /*#__PURE__*/React.createElement("span", { className: "progress-pct" }, stateMeta.pct, "%")), /*#__PURE__*/React.createElement("div", { className: "progress-bar" }, /*#__PURE__*/React.createElement("div", { className: "progress-fill", style: { width: stateMeta.pct + '%' } })), /*#__PURE__*/React.createElement("div", { className: "progress-meta" }, /*#__PURE__*/React.createElement("div", { className: "left" }, isDownloading && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "3.22 / 48.80 GB"), /*#__PURE__*/React.createElement("span", null, "4.95 MB/s")), isPaused && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "3.22 / 48.80 GB"), /*#__PURE__*/React.createElement("span", null, "\u2014")), isVerify && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "18 432 / 48 121 \u0444\u0430\u0439\u043B\u043E\u0432"), /*#__PURE__*/React.createElement("span", null, "SHA-256")), isUpdate && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "1.4.1 \u2192 1.4.2"), /*#__PURE__*/React.createElement("span", null, "180 MB / 250 MB")), isReady && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "\u0412\u0435\u0440\u0441\u0438\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0430 1.4.2"), /*#__PURE__*/React.createElement("span", null, "\u0412\u0441\u0435 \u0444\u0430\u0439\u043B\u044B \u0446\u0435\u043B\u044B"))), /*#__PURE__*/React.createElement("div", { className: "right" }, isDownloading && /*#__PURE__*/React.createElement("span", null, "\u041E\u0441\u0442\u0430\u043B\u043E\u0441\u044C ~2:37:11"), isPaused && /*#__PURE__*/React.createElement("span", null, "\u0412\u043E\u0437\u043E\u0431\u043D\u043E\u0432\u0438, \u0447\u0442\u043E\u0431\u044B \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C"), isVerify && /*#__PURE__*/React.createElement("span", null, "~1 \u043C\u0438\u043D"), isUpdate && /*#__PURE__*/React.createElement("span", null, "~30 \u0441\u0435\u043A"), isReady && /*#__PURE__*/React.createElement("span", null, "\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u044F\u044F \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430: \u0442\u043E\u043B\u044C\u043A\u043E \u0447\u0442\u043E")))), playBtn)), /*#__PURE__*/React.createElement("div", { className: "statusbar" }, /*#__PURE__*/React.createElement("span", null, "\u0412\u0435\u0440\u0441\u0438\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0430 ", /*#__PURE__*/React.createElement("strong", null, "1.4.2")), /*#__PURE__*/React.createElement("span", { className: "sep" }, "\xB7"), /*#__PURE__*/React.createElement("span", null, "Realmlist ", /*#__PURE__*/React.createElement("strong", null, "login.moonwell.gg")), /*#__PURE__*/React.createElement("span", { className: "sep" }, "\xB7"), /*#__PURE__*/React.createElement("span", null, "\u0420\u0435\u0433\u0438\u043E\u043D ", /*#__PURE__*/React.createElement("strong", null, "EU")), /*#__PURE__*/React.createElement("span", { className: "right" }, "\u041B\u0430\u0443\u043D\u0447\u0435\u0440 v1.4.2")))); } Object.assign(window, { LauncherWindow: LauncherWindow }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUmVhY3QiLCJSZWFjdCIsInVzZVN0YXRlIiwiR0FNRVMiLCJpZCIsIm5hbWUiLCJ0YWciLCJzdWJ0aXRsZSIsImxpdmUiLCJMYXVuY2hlcldpbmRvdyIsIl9yZWYiLCJfcmVmJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3JlZiRzdGF0ZSIsInN0YXRlIiwiX3JlZiR0aXRsZSIsInRpdGxlIiwiX3JlZiRnYW1lIiwiZ2FtZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInRhYiIsInNldFRhYiIsImFjdGl2ZUdhbWUiLCJmaW5kIiwiZyIsIm5ld3MiLCJ0YWdMYWJlbCIsImRhdGUiLCJldmVudHMiLCJwYXRjaCIsImlzUmVhZHkiLCJpc0Rvd25sb2FkaW5nIiwiaXNQYXVzZWQiLCJpc1ZlcmlmeSIsImlzVXBkYXRlIiwic3RhdGVNZXRhIiwicmVhZHkiLCJsYWJlbCIsInBjdCIsImRvd25sb2FkaW5nIiwicGF1c2VkIiwidmVyaWZ5IiwidXBkYXRlIiwicGxheUJ0biIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJMSWNvbnMiLCJwbGF5IiwicGF1c2UiLCJkaXNhYmxlZCIsInJlZnJlc2giLCJkb3dubG9hZCIsInN0eWxlIiwiaGVpZ2h0IiwibWluIiwiY2xvc2UiLCJtYXAiLCJrZXkiLCJjb25jYXQiLCJmcmllbmRzIiwiY29nIiwiTW9vbk1hcmsiLCJzaXplIiwiRnJhZ21lbnQiLCJvbkNsaWNrIiwibiIsImkiLCJocmVmIiwid2lkdGgiLCJPYmplY3QiLCJhc3NpZ24iLCJ3aW5kb3ciXSwic291cmNlcyI6WyJJbmxpbmUgQmFiZWwgc2NyaXB0ICgyKSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNYWluIGxhdW5jaGVyIHdpbmRvd1xuY29uc3QgeyB1c2VTdGF0ZSB9ID0gUmVhY3Q7XG5cbmNvbnN0IEdBTUVTID0gW1xuICB7IGlkOiBcIndvd1wiLCAgICBzaG9ydDogXCJNV1wiLCBuYW1lOiBcIk1vb25XZWxsIMK3IFdvV1wiLCAgIHRhZzogXCJPcGVuIEJldGFcIiwgICAgIHN1YnRpdGxlOiBcIldyYXRoIG9mIHRoZSBMaWNoIEtpbmcgwrcg0L/RgNC40LLQsNGC0L3Ri9C5INGB0LXRgNCy0LXRgFwiLCBsaXZlOiB0cnVlIH0sXG4gIHsgaWQ6IFwia2FydHNcIiwgIHNob3J0OiBcIktcIiwgIG5hbWU6IFwiTW9vbldlbGwgS2FydHNcIiwgICB0YWc6IFwiQ2xvc2VkIEFscGhhXCIsICBzdWJ0aXRsZTogXCLQkNGA0LrQsNC00L3Ri9C1INCz0L7QvdC60Lgg0LIg0L3QsNGI0LXQuSDQstGB0LXQu9C10L3QvdC+0LlcIiwgICAgICAgICAgICBsaXZlOiBmYWxzZSB9LFxuICB7IGlkOiBcInRpZGVzXCIsICBzaG9ydDogXCJUXCIsICBuYW1lOiBcIlRpZGVzIG9mIEVsdW5lXCIsICAgdGFnOiBcItCSINGA0LDQt9GA0LDQsdC+0YLQutC1XCIsICBzdWJ0aXRsZTogXCLQmtCw0YDRgtC+0YfQvdCw0Y8g0YHRgtGA0LDRgtC10LPQuNGPINC/0L4g0LzQvtGC0LjQstCw0Lwg0YHQtdGA0LLQtdGA0LBcIiwgICAgICBsaXZlOiBmYWxzZSB9LFxuICB7IGlkOiBcInZlcmdlXCIsICBzaG9ydDogXCJWXCIsICBuYW1lOiBcIlByb2plY3QgVmVyZ2VcIiwgICAgdGFnOiBcItCQ0L3QvtC90YFcIiwgICAgICAgICBzdWJ0aXRsZTogXCJBUlBHLdC/0LXRgdC+0YfQvdC40YbQsCDCtyDRgdC+0LHRgdGC0LLQtdC90L3Ri9C5INC00LLQuNC20L7QulwiLCAgICAgICAgIGxpdmU6IGZhbHNlIH0sXG5dO1xuXG5mdW5jdGlvbiBMYXVuY2hlcldpbmRvdyh7IHZhcmlhbnQgPSBcImZvcmVzdFwiLCBzdGF0ZSA9IFwicmVhZHlcIiwgdGl0bGUgPSBcItCT0LvQsNCy0L3Ri9C5IOKAlCDQs9C+0YLQvtCyINC40LPRgNCw0YLRjFwiLCBnYW1lID0gXCJ3b3dcIiB9KSB7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShcIm5ld3NcIik7XG4gIGNvbnN0IGFjdGl2ZUdhbWUgPSBHQU1FUy5maW5kKChnKSA9PiBnLmlkID09PSBnYW1lKSB8fCBHQU1FU1swXTtcblxuICBjb25zdCBuZXdzID0ge1xuICAgIG5ld3M6IFtcbiAgICAgIHsgdGFnOiBcInBhdGNoXCIsIHRhZ0xhYmVsOiBcItCf0LDRgtGHXCIsIGRhdGU6IFwiMjkuMDRcIiwgdGl0bGU6IFwi0J7RgtC60YDRi9GC0LDRjyDQsdC10YLQsDog0L/QtdGA0LLRi9C5INGB0LXQt9C+0L0g0YHRgtCw0YDRgtGD0LXRgiDQvdCwINGN0YLQvtC5INC90LXQtNC10LvQtVwiIH0sXG4gICAgICB7IHRhZzogXCJldmVudFwiLCB0YWdMYWJlbDogXCLQodC+0LHRi9GC0LjQtVwiLCBkYXRlOiBcIjI3LjA0XCIsIHRpdGxlOiBcItCb0YPQvdC90YvQtSDRgdGC0YDQsNC20Lg6IFB2UC3Rg9C40LrQtdC90LQg0YEg0YLRgNC+0LnQvdGL0Lwg0YDQtdC50YLQuNC90LPQvtC8XCIgfSxcbiAgICAgIHsgdGFnOiBcInBhdGNoXCIsIHRhZ0xhYmVsOiBcItCf0LDRgtGHXCIsIGRhdGU6IFwiMjQuMDRcIiwgdGl0bGU6IFwiMS40LjIg4oCUINCx0LDQu9Cw0L3RgdC40YDQvtCy0LrQsCDRgdC+0LvQvi3QtNCw0L3QttC10Lkg0Lgg0YTQuNC60YEgTXl0aGljK1wiIH0sXG4gICAgICB7IHRhZzogXCJub3RpY2VcIiwgdGFnTGFiZWw6IFwi0J7QsdGK0Y/QstC70LXQvdC40LVcIiwgZGF0ZTogXCIyMi4wNFwiLCB0aXRsZTogXCLQl9Cw0L/Qu9Cw0L3QuNGA0L7QstCw0L3QvdC+0LUg0L7QsdGB0LvRg9C20LjQstCw0L3QuNC1INGA0LXQsNC70LzQvtCyIDI0LjA0IDAzOjAwIFVUQ1wiIH0sXG4gICAgXSxcbiAgICBldmVudHM6IFtcbiAgICAgIHsgdGFnOiBcImV2ZW50XCIsIHRhZ0xhYmVsOiBcItCh0L7QsdGL0YLQuNC1XCIsIGRhdGU6IFwiMDEuMDVcIiwgdGl0bGU6IFwi0JrQsNC90YPQvSDQm9GD0L3QvdC+0Lkg0L3QvtGH0Lgg4oCUINC30LDQtNCw0L3QuNGPINC4INCy0YDQtdC80LXQvdC90YvQuSDQsdC+0YHRgSDQsiDQotC10LvRjNC00YDQsNGB0YHQuNC70LVcIiB9LFxuICAgICAgeyB0YWc6IFwiZXZlbnRcIiwgdGFnTGFiZWw6IFwi0KHQvtCx0YvRgtC40LVcIiwgZGF0ZTogXCIyOS4wNFwiLCB0aXRsZTogXCLQm9GD0L3QvdGL0LUg0YHRgtGA0LDQttC4OiBQdlAt0YPQuNC60LXQvdC0INGBINGC0YDQvtC50L3Ri9C8INGA0LXQudGC0LjQvdCz0L7QvFwiIH0sXG4gICAgXSxcbiAgICBwYXRjaDogW1xuICAgICAgeyB0YWc6IFwicGF0Y2hcIiwgdGFnTGFiZWw6IFwiMS40LjJcIiwgZGF0ZTogXCIyNC4wNFwiLCB0aXRsZTogXCLQkdCw0LvQsNC90YHQuNGA0L7QstC60LAg0YHQvtC70L4t0LTQsNC90LbQtdC5OiBIZXJvaWMgU3RyYXRob2xtZVwiIH0sXG4gICAgICB7IHRhZzogXCJwYXRjaFwiLCB0YWdMYWJlbDogXCIxLjQuMVwiLCBkYXRlOiBcIjE4LjA0XCIsIHRpdGxlOiBcIk15dGhpYysg4oCUINC90L7QstGL0LUg0LDRhNGE0LjQutGB0Ysg0L3QtdC00LXQu9C4XCIgfSxcbiAgICAgIHsgdGFnOiBcInBhdGNoXCIsIHRhZ0xhYmVsOiBcIjEuNC4wXCIsIGRhdGU6IFwiMTAuMDRcIiwgdGl0bGU6IFwi0KHRgtCw0YDRgiDQvtGC0LrRgNGL0YLQvtC5INCx0LXRgtGLIFdyYXRoXCIgfSxcbiAgICBdLFxuICB9O1xuXG4gIC8vIERldGVybWluZSB2aXNpYmxlIGFjdGlvbiBVSSBwZXIgc3RhdGVcbiAgY29uc3QgaXNSZWFkeSA9IHN0YXRlID09PSBcInJlYWR5XCI7XG4gIGNvbnN0IGlzRG93bmxvYWRpbmcgPSBzdGF0ZSA9PT0gXCJkb3dubG9hZGluZ1wiO1xuICBjb25zdCBpc1BhdXNlZCA9IHN0YXRlID09PSBcInBhdXNlZFwiO1xuICBjb25zdCBpc1ZlcmlmeSA9IHN0YXRlID09PSBcInZlcmlmeVwiO1xuICBjb25zdCBpc1VwZGF0ZSA9IHN0YXRlID09PSBcInVwZGF0ZVwiO1xuXG4gIGNvbnN0IHN0YXRlTWV0YSA9IHtcbiAgICByZWFkeTogeyBsYWJlbDogXCLQk9C+0YLQvtCyINC6INC30LDQv9GD0YHQutGDXCIsIHBjdDogMTAwIH0sXG4gICAgZG93bmxvYWRpbmc6IHsgbGFiZWw6IFwi0JfQsNCz0YDRg9C30LrQsFwiLCBwY3Q6IDYgfSxcbiAgICBwYXVzZWQ6IHsgbGFiZWw6IFwi0J/QsNGD0LfQsFwiLCBwY3Q6IDYgfSxcbiAgICB2ZXJpZnk6IHsgbGFiZWw6IFwi0J/RgNC+0LLQtdGA0LrQsCDRhNCw0LnQu9C+0LJcIiwgcGN0OiAzOCB9LFxuICAgIHVwZGF0ZTogeyBsYWJlbDogXCLQntCx0L3QvtCy0LvQtdC90LjQtSDQutC70LjQtdC90YLQsFwiLCBwY3Q6IDcyIH0sXG4gIH1bc3RhdGVdO1xuXG4gIGNvbnN0IHBsYXlCdG4gPSAoKCkgPT4ge1xuICAgIGlmIChpc1JlYWR5KSByZXR1cm4gPGJ1dHRvbiBjbGFzc05hbWU9XCJwbGF5LWJ0biByZWFkeVwiPjxzcGFuIGNsYXNzTmFtZT1cImljb25cIj57TEljb25zLnBsYXl9PC9zcGFuPiDQmNCz0YDQsNGC0Yw8L2J1dHRvbj47XG4gICAgaWYgKGlzRG93bmxvYWRpbmcpIHJldHVybiA8YnV0dG9uIGNsYXNzTmFtZT1cInBsYXktYnRuIHBhdXNlXCI+PHNwYW4gY2xhc3NOYW1lPVwiaWNvblwiPntMSWNvbnMucGF1c2V9PC9zcGFuPiDQn9Cw0YPQt9CwPC9idXR0b24+O1xuICAgIGlmIChpc1BhdXNlZCkgcmV0dXJuIDxidXR0b24gY2xhc3NOYW1lPVwicGxheS1idG4gcGF1c2VcIj48c3BhbiBjbGFzc05hbWU9XCJpY29uXCI+e0xJY29ucy5wbGF5fTwvc3Bhbj4g0J/RgNC+0LTQvtC70LbQuNGC0Yw8L2J1dHRvbj47XG4gICAgaWYgKGlzVmVyaWZ5KSByZXR1cm4gPGJ1dHRvbiBjbGFzc05hbWU9XCJwbGF5LWJ0biBkaXNhYmxlZFwiIGRpc2FibGVkPjxzcGFuIGNsYXNzTmFtZT1cImljb25cIj57TEljb25zLnJlZnJlc2h9PC9zcGFuPiDQn9GA0L7QstC10YDQutCw4oCmPC9idXR0b24+O1xuICAgIGlmIChpc1VwZGF0ZSkgcmV0dXJuIDxidXR0b24gY2xhc3NOYW1lPVwicGxheS1idG4gcGF1c2VcIj48c3BhbiBjbGFzc05hbWU9XCJpY29uXCI+e0xJY29ucy5kb3dubG9hZH08L3NwYW4+INCe0LHQvdC+0LLQu9C10L3QuNC1PC9idXR0b24+O1xuICAgIHJldHVybiBudWxsO1xuICB9KSgpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzdGFnZS1jZWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0YWdlLWxhYmVsXCI+PHNwYW4gY2xhc3NOYW1lPVwiZG90XCI+PC9zcGFuPjxzcGFuPnt0aXRsZX08L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPXt7IGhlaWdodDogMTIgfX0gLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGF1bmNoZXJcIiBkYXRhLXZhcmlhbnQ9e3ZhcmlhbnR9PlxuICAgICAgICB7LyogQmFja2dyb3VuZCAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1hcnRcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1zdGFyc1wiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLW1vb25cIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1wbGFjZWhvbGRlci1tYXJrXCI+XG4gICAgICAgICAgPHNwYW4+UGxhY2Uga2V5IGFydCBoZXJlPC9zcGFuPlxuICAgICAgICAgIDxzcGFuPjI1NjDDlzE0NDAgwrcg0L3QvtGH0L3Ri9C1INGN0LvRjNGE0YsgLyDQotC10LvRjNC00YDQsNGB0YHQuNC7PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICB7LyogVGl0bGUgYmFyICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbi10aXRsZWJhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luLXRpdGxlLXNwYWNlclwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwid2luLWJ0blwiPntMSWNvbnMubWlufTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ3aW4tYnRuIGNsb3NlXCI+e0xJY29ucy5jbG9zZX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIExlZnQgcmFpbCB3aXRoIGdhbWVzIGxpc3QgKi99XG4gICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyYWlsIHJhaWwtd2lkZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFpbC1hdmF0YXJcIj5BPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYWlsLWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJhaWwtc2VjdGlvbi1sYWJlbFwiPtCY0LPRgNGLPC9kaXY+XG4gICAgICAgICAge0dBTUVTLm1hcCgoZykgPT4gKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBrZXk9e2cuaWR9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YGdhbWUtdGlsZSAke2cuaWQgPT09IGFjdGl2ZUdhbWUuaWQgPyBcImFjdGl2ZVwiIDogXCJcIn0gJHtnLmxpdmUgPyBcIlwiIDogXCJzb29uXCJ9YH1cbiAgICAgICAgICAgICAgdGl0bGU9e2Ake2cubmFtZX0g4oCUICR7Zy50YWd9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZ2FtZS10aWxlLW1hcmtcIj57Zy5zaG9ydH08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImdhbWUtdGlsZS1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZ2FtZS10aWxlLW5hbWVcIj57Zy5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJnYW1lLXRpbGUtdGFnXCI+e2cudGFnfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB7IWcubGl2ZSAmJiA8c3BhbiBjbGFzc05hbWU9XCJnYW1lLXRpbGUtbG9ja1wiPnNvb248L3NwYW4+fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyYWlsLXNwYWNlclwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmFpbC1kaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJyYWlsLWljb25cIiB0aXRsZT1cItCU0YDRg9C30YzRj1wiPntMSWNvbnMuZnJpZW5kc308L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cInJhaWwtaWNvblwiIHRpdGxlPVwi0J3QsNGB0YLRgNC+0LnQutC4XCI+e0xJY29ucy5jb2d9PC9idXR0b24+XG4gICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgey8qIEhlYWRlciDigJQgYnJhbmQgKyBwbGF5ZXIgY2hpcCAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJoZWFkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJyYW5kXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJicmFuZC1tYXJrXCI+PE1vb25NYXJrIHNpemU9ezQwfSAvPjwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnJhbmQtbmFtZVwiPlxuICAgICAgICAgICAgICBNT09OV0VMTFxuICAgICAgICAgICAgICA8c21hbGw+TFVOQVIgwrcgTEFVTkNIRVI8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwbGF5ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGxheWVyLWF2YXRhclwiPsOGPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBsYXllci1pbmZvXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBsYXllci1uYW1lXCI+QXJhbnRoZWw8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInBsYXllci1tZXRhXCI+0KXRgNCw0L3QuNGC0LXQu9GMINGA0L7RidC4IMK3IDQ3INGD0YAuPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIHsvKiBIZXJvIGNvcHkg4oCUIGRlcGVuZHMgb24gYWN0aXZlIGdhbWUgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVyby1jb3B5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGVyby1leWVicm93XCI+PHNwYW4gY2xhc3NOYW1lPVwiZG90XCI+PC9zcGFuPiB7YWN0aXZlR2FtZS50YWd9PC9zcGFuPlxuICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJoZXJvLWhlYWRsaW5lXCI+XG4gICAgICAgICAgICB7YWN0aXZlR2FtZS5pZCA9PT0gXCJ3b3dcIiAmJiA8PtCh0LLQtdGCINC60L7Qu9C+0LTRhtCwPGJyLz48c3BhbiBjbGFzc05hbWU9XCJhY2NlbnRcIj7Qt9C+0LLRkdGCINGC0LXQsdGPINC00L7QvNC+0LkuPC9zcGFuPjwvPn1cbiAgICAgICAgICAgIHthY3RpdmVHYW1lLmlkID09PSBcImthcnRzXCIgJiYgPD7Qk9C+0L3QutC4INC/0L7QtDxici8+PHNwYW4gY2xhc3NOYW1lPVwiYWNjZW50XCI+0LvRg9C90L3Ri9C8INGB0LLQtdGC0L7QvC48L3NwYW4+PC8+fVxuICAgICAgICAgICAge2FjdGl2ZUdhbWUuaWQgPT09IFwidGlkZXNcIiAmJiA8PtCa0L7Qu9C+0LTQsCDRgdGD0LTRjNCx0Ys8YnIvPjxzcGFuIGNsYXNzTmFtZT1cImFjY2VudFwiPtCyINGC0LLQvtC40YUg0YDRg9C60LDRhS48L3NwYW4+PC8+fVxuICAgICAgICAgICAge2FjdGl2ZUdhbWUuaWQgPT09IFwidmVyZ2VcIiAmJiA8PtCX0LAg0LPRgNCw0L3RjNGOPGJyLz48c3BhbiBjbGFzc05hbWU9XCJhY2NlbnRcIj7Qv9GA0LjQstGL0YfQvdC+0LPQviDQvNC40YDQsC48L3NwYW4+PC8+fVxuICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwiaGVyby1zdWJcIj57YWN0aXZlR2FtZS5zdWJ0aXRsZX08L3A+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBOZXdzIHBhbmVsICovfVxuICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwibmV3cy1wYW5lbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibmV3cy10YWJzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17YG5ld3MtdGFiICR7dGFiID09PSAnbmV3cycgPyAnYWN0aXZlJyA6ICcnfWB9IG9uQ2xpY2s9eygpID0+IHNldFRhYignbmV3cycpfT7QndC+0LLQvtGB0YLQuDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9e2BuZXdzLXRhYiAke3RhYiA9PT0gJ2V2ZW50cycgPyAnYWN0aXZlJyA6ICcnfWB9IG9uQ2xpY2s9eygpID0+IHNldFRhYignZXZlbnRzJyl9PtCh0L7QsdGL0YLQuNGPPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17YG5ld3MtdGFiICR7dGFiID09PSAncGF0Y2gnID8gJ2FjdGl2ZScgOiAnJ31gfSBvbkNsaWNrPXsoKSA9PiBzZXRUYWIoJ3BhdGNoJyl9PtCf0LDRgtGH0Lg8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5ld3MtbGlzdFwiPlxuICAgICAgICAgICAge25ld3NbdGFiXS5tYXAoKG4sIGkpID0+IChcbiAgICAgICAgICAgICAgPGEga2V5PXtpfSBjbGFzc05hbWU9XCJuZXdzLWl0ZW1cIiBocmVmPVwiI1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibmV3cy1pdGVtLWhlYWRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YG5ld3MtdGFnICR7bi50YWd9YH0+e24udGFnTGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibmV3cy1kYXRlXCI+e24uZGF0ZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuZXdzLXRpdGxlXCI+e24udGl0bGV9PC9kaXY+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibmV3cy1mb290XCI+XG4gICAgICAgICAgICA8c3Bhbj5tb29ud2VsbC5nZzwvc3Bhbj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCIjXCI+0JLRgdC1IOKGkjwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICB7LyogQWN0aW9ucyBiYXIgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWN0aW9uc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWN0aW9uLXJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFsbS1waWxsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVhbG0tcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlYWxtLW5hbWVcIj5FTFVORSdTIEdSQUNFPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFsbS1tZXRhXCI+T25saW5lIMK3IDEyNDcgcGxheWVycyDCtyAzOG1zPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb2dyZXNzLWJsb2NrXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvZ3Jlc3MtaGVhZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInByb2dyZXNzLXN0YXRlXCI+e3N0YXRlTWV0YS5sYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHJvZ3Jlc3MtcGN0XCI+e3N0YXRlTWV0YS5wY3R9JTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicHJvZ3Jlc3MtYmFyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcm9ncmVzcy1maWxsXCIgc3R5bGU9e3sgd2lkdGg6IHN0YXRlTWV0YS5wY3QgKyAnJScgfX0+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInByb2dyZXNzLW1ldGFcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtpc0Rvd25sb2FkaW5nICYmIDw+PHNwYW4+My4yMiAvIDQ4LjgwIEdCPC9zcGFuPjxzcGFuPjQuOTUgTUIvczwvc3Bhbj48Lz59XG4gICAgICAgICAgICAgICAgICB7aXNQYXVzZWQgJiYgPD48c3Bhbj4zLjIyIC8gNDguODAgR0I8L3NwYW4+PHNwYW4+4oCUPC9zcGFuPjwvPn1cbiAgICAgICAgICAgICAgICAgIHtpc1ZlcmlmeSAmJiA8PjxzcGFuPjE4IDQzMiAvIDQ4IDEyMSDRhNCw0LnQu9C+0LI8L3NwYW4+PHNwYW4+U0hBLTI1Njwvc3Bhbj48Lz59XG4gICAgICAgICAgICAgICAgICB7aXNVcGRhdGUgJiYgPD48c3Bhbj4xLjQuMSDihpIgMS40LjI8L3NwYW4+PHNwYW4+MTgwIE1CIC8gMjUwIE1CPC9zcGFuPjwvPn1cbiAgICAgICAgICAgICAgICAgIHtpc1JlYWR5ICYmIDw+PHNwYW4+0JLQtdGA0YHQuNGPINC60LvQuNC10L3RgtCwIDEuNC4yPC9zcGFuPjxzcGFuPtCS0YHQtSDRhNCw0LnQu9GLINGG0LXQu9GLPC9zcGFuPjwvPn1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7aXNEb3dubG9hZGluZyAmJiA8c3Bhbj7QntGB0YLQsNC70L7RgdGMIH4yOjM3OjExPC9zcGFuPn1cbiAgICAgICAgICAgICAgICAgIHtpc1BhdXNlZCAmJiA8c3Bhbj7QktC+0LfQvtCx0L3QvtCy0LgsINGH0YLQvtCx0Ysg0L/RgNC+0LTQvtC70LbQuNGC0Yw8L3NwYW4+fVxuICAgICAgICAgICAgICAgICAge2lzVmVyaWZ5ICYmIDxzcGFuPn4xINC80LjQvTwvc3Bhbj59XG4gICAgICAgICAgICAgICAgICB7aXNVcGRhdGUgJiYgPHNwYW4+fjMwINGB0LXQujwvc3Bhbj59XG4gICAgICAgICAgICAgICAgICB7aXNSZWFkeSAmJiA8c3Bhbj7Qn9C+0YHQu9C10LTQvdGP0Y8g0L/RgNC+0LLQtdGA0LrQsDog0YLQvtC70YzQutC+INGH0YLQvjwvc3Bhbj59XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7cGxheUJ0bn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgey8qIFN0YXR1cyBiYXIgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3RhdHVzYmFyXCI+XG4gICAgICAgICAgPHNwYW4+0JLQtdGA0YHQuNGPINC60LvQuNC10L3RgtCwIDxzdHJvbmc+MS40LjI8L3N0cm9uZz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic2VwXCI+wrc8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+UmVhbG1saXN0IDxzdHJvbmc+bG9naW4ubW9vbndlbGwuZ2c8L3N0cm9uZz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic2VwXCI+wrc8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+0KDQtdCz0LjQvtC9IDxzdHJvbmc+RVU8L3N0cm9uZz48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicmlnaHRcIj7Qm9Cw0YPQvdGH0LXRgCB2MS40LjI8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbk9iamVjdC5hc3NpZ24od2luZG93LCB7IExhdW5jaGVyV2luZG93IH0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0EsSUFBQUEsTUFBQSxHQUFxQkMsS0FBSztFQUFsQkMsUUFBUSxHQUFBRixNQUFBLENBQVJFLFFBQVE7QUFFaEIsSUFBTUMsS0FBSyxHQUFHLENBQ1o7RUFBRUMsRUFBRSxFQUFFLEtBQUs7RUFBSyxTQUFPLElBQUk7RUFBRUMsSUFBSSxFQUFFLGdCQUFnQjtFQUFJQyxHQUFHLEVBQUUsV0FBVztFQUFNQyxRQUFRLEVBQUUsMkNBQTJDO0VBQUVDLElBQUksRUFBRTtBQUFLLENBQUMsRUFDaEo7RUFBRUosRUFBRSxFQUFFLE9BQU87RUFBRyxTQUFPLEdBQUc7RUFBR0MsSUFBSSxFQUFFLGdCQUFnQjtFQUFJQyxHQUFHLEVBQUUsY0FBYztFQUFHQyxRQUFRLEVBQUUsa0NBQWtDO0VBQWFDLElBQUksRUFBRTtBQUFN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
</script>
<script>
"use strict";
function _slicedToArray(r, e) {
return (
_arrayWithHoles(r) ||
_iterableToArrayLimit(r, e) ||
_unsupportedIterableToArray(r, e) ||
_nonIterableRest()
);
}
function _nonIterableRest() {
throw new TypeError(
"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.",
);
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return (
"Object" === t && r.constructor && (t = r.constructor.name),
"Map" === t || "Set" === t
? Array.from(r)
: "Arguments" === t ||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
? _arrayLikeToArray(r, a)
: void 0
);
}
}
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _iterableToArrayLimit(r, l) {
var t =
null == r
? null
: ("undefined" != typeof Symbol && r[Symbol.iterator]) ||
r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (((i = (t = t.call(r)).next), 0 === l)) {
if (Object(t) !== t) return;
f = !1;
} else
for (
;
!(f = (e = i.call(t)).done) &&
(a.push(e.value), a.length !== l);
f = !0
);
} catch (r) {
((o = !0), (n = r));
} finally {
try {
if (
!f &&
null != t["return"] &&
((u = t["return"]()), Object(u) !== u)
)
return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
} // Login / register screen overlay function LoginWindow(_ref) { var _ref$variant = _ref.variant, variant = _ref$variant === void 0 ? "temple" : _ref$variant, _ref$mode = _ref.mode, mode = _ref$mode === void 0 ? "login" : _ref$mode, _ref$title = _ref.title, title = _ref$title === void 0 ? "Логин" : _ref$title; var _React$useState = React.useState(mode), _React$useState2 = _slicedToArray(_React$useState, 2), tab = _React$useState2[0], setTab = _React$useState2[1]; return /*#__PURE__*/React.createElement("div", { className: "stage-cell" }, /*#__PURE__*/React.createElement("div", { className: "stage-label" }, /*#__PURE__*/React.createElement("span", { className: "dot" }), /*#__PURE__*/React.createElement("span", null, title)), /*#__PURE__*/React.createElement("div", { style: { height: 12 } }), /*#__PURE__*/React.createElement("div", { className: "launcher", "data-variant": variant }, /*#__PURE__*/React.createElement("div", { className: "bg-art" }), /*#__PURE__*/React.createElement("div", { className: "bg-stars" }), /*#__PURE__*/React.createElement("div", { className: "bg-moon", style: { top: '12%', right: '60%' } }), /*#__PURE__*/React.createElement("div", { className: "win-titlebar" }, /*#__PURE__*/React.createElement("div", { className: "win-title-spacer" }), /*#__PURE__*/React.createElement("div", { className: "win-buttons" }, /*#__PURE__*/React.createElement("button", { className: "win-btn" }, LIcons.min), /*#__PURE__*/React.createElement("button", { className: "win-btn close" }, LIcons.close))), /*#__PURE__*/React.createElement("div", { className: "login-stack" }, /*#__PURE__*/React.createElement("div", { className: "login-art" }, /*#__PURE__*/React.createElement("div", { className: "login-art-mark" }, /*#__PURE__*/React.createElement("span", null, "Place key art here"), /*#__PURE__*/React.createElement("span", null, "\u043F\u043E\u0440\u0442\u0440\u0435\u0442 \u043D\u043E\u0447\u043D\u043E\u0433\u043E \u044D\u043B\u044C\u0444\u0430 \xB7 \u0441\u043B\u0435\u0432\u0430")), /*#__PURE__*/React.createElement("div", { className: "login-art-quote" }, "\xAB\u0417\u0432\u0451\u0437\u0434\u043D\u044B\u0439 \u0441\u0432\u0435\u0442 \u043F\u0440\u043E\u0432\u0435\u0434\u0451\u0442 \u0442\u0435\u0431\u044F \u0441\u043A\u0432\u043E\u0437\u044C \u0441\u0430\u043C\u044B\u0435 \u0442\u0451\u043C\u043D\u044B\u0435 \u043D\u043E\u0447\u0438 \u2014 \u0435\u0441\u043B\u0438 \u0442\u044B \u0433\u043E\u0442\u043E\u0432 \u0438\u0434\u0442\u0438 \u0442\u0443\u0434\u0430, \u043A\u0443\u0434\u0430 \u043E\u043D \u0443\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442.\xBB", /*#__PURE__*/React.createElement("cite", null, "\u2014 \u041C\u0430\u043B\u0444\u0443\u0440\u0438\u043E\u043D \u042F\u0440\u043E\u0441\u0442\u044C \u0411\u0443\u0440\u0438"))), /*#__PURE__*/React.createElement("div", { className: "login-form" }, /*#__PURE__*/React.createElement("div", { className: "login-brand" }, /*#__PURE__*/React.createElement("span", { className: "login-brand-mark" }, /*#__PURE__*/React.createElement(MoonMark, { size: 28 })), /*#__PURE__*/React.createElement("span", { className: "login-brand-name" }, "MOONWELL")), /*#__PURE__*/React.createElement("span", { className: "login-eyebrow" }, tab === "login" ? "Вход" : "Регистрация"), /*#__PURE__*/React.createElement("h2", { className: "login-h" }, tab === "login" ? "С возвращением" : "Создай героя"), /*#__PURE__*/React.createElement("p", { className: "login-sub" }, tab === "login" ? "Войди в свой аккаунт, чтобы продолжить путь." : "Введи инвайт-код и придумай имя для лунного героя."), /*#__PURE__*/React.createElement("div", { className: "login-tabs" }, /*#__PURE__*/React.createElement("button", { className: "login-tab ".concat(tab === "login" ? "active" : ""), onClick: function onClick() { return setTab("login"); } }, "\u0412\u0445\u043E\u0434"), /*#__PURE__*/React.createElement("button", { className: "login-tab ".concat(tab === "register" ? "active" : ""), onClick: function onClick() { return setTab("register"); } }, "\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F")), tab === "login" ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u041B\u043E\u0433\u0438\u043D \u0438\u043B\u0438 email"), /*#__PURE__*/React.createElement("input", { className: "field-input", placeholder: "Aranthel", defaultValue: "aranthel" })), /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u041F\u0430\u0440\u043E\u043B\u044C"), /*#__PURE__*/React.createElement("input", { className: "field-input", type: "password", defaultValue: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022" })), /*#__PURE__*/React.createElement("div", { className: "login-row" }, /*#__PURE__*/React.createElement("label", null, /*#__PURE__*/React.createElement("input", { type: "checkbox", defaultChecked: true }), " \u0417\u0430\u043F\u043E\u043C\u043D\u0438\u0442\u044C \u043C\u0435\u043D\u044F"), /*#__PURE__*/React.createElement("a", { href: "#" }, "\u0417\u0430\u0431\u044B\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C?")), /*#__PURE__*/React.createElement("button", { className: "login-submit" }, "\u0412\u043E\u0439\u0442\u0438 ", LIcons.arrow)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u0418\u043D\u0432\u0430\u0439\u0442-\u043A\u043E\u0434"), /*#__PURE__*/React.createElement("input", { className: "field-input", placeholder: "ABCD-EFGH-IJKL", defaultValue: "MOON-WELL-2026", style: { fontFamily: "var(--f-mono)", letterSpacing: "0.14em" } })), /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u041B\u043E\u0433\u0438\u043D"), /*#__PURE__*/React.createElement("input", { className: "field-input", placeholder: "Moonwalker" })), /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "Email"), /*#__PURE__*/React.createElement("input", { className: "field-input", type: "email", placeholder: "player@example.com" })), /*#__PURE__*/React.createElement("div", { className: "field" }, /*#__PURE__*/React.createElement("label", { className: "field-label" }, "\u041F\u0430\u0440\u043E\u043B\u044C"), /*#__PURE__*/React.createElement("input", { className: "field-input", type: "password", placeholder: "\u041C\u0438\u043D\u0438\u043C\u0443\u043C 8 \u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432" })), /*#__PURE__*/React.createElement("button", { className: "login-submit" }, "\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0430\u043A\u043A\u0430\u0443\u043D\u0442 ", LIcons.arrow)), /*#__PURE__*/React.createElement("div", { className: "login-foot" }, "moonwell \xB7 v 1.4.2 \xB7 login.moonwell.gg"))), /*#__PURE__*/React.createElement("div", { className: "statusbar", style: { left: 0 } }, /*#__PURE__*/React.createElement("span", null, "\u0412\u0435\u0440\u0441\u0438\u044F \u043B\u0430\u0443\u043D\u0447\u0435\u0440\u0430 ", /*#__PURE__*/React.createElement("strong", null, "1.4.2")), /*#__PURE__*/React.createElement("span", { className: "sep" }, "\xB7"), /*#__PURE__*/React.createElement("span", null, "\u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 ", /*#__PURE__*/React.createElement("strong", null, "\u0437\u0430\u0449\u0438\u0449\u0435\u043D\u043E TLS")), /*#__PURE__*/React.createElement("span", { className: "right" }, "\xA9 2026 MoonWell")))); } Object.assign(window, { LoginWindow: LoginWindow }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMb2dpbldpbmRvdyIsIl9yZWYiLCJfcmVmJHZhcmlhbnQiLCJ2YXJpYW50IiwiX3JlZiRtb2RlIiwibW9kZSIsIl9yZWYkdGl0bGUiLCJ0aXRsZSIsIl9SZWFjdCR1c2VTdGF0ZSIsIlJlYWN0IiwidXNlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ0YWIiLCJzZXRUYWIiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJoZWlnaHQiLCJ0b3AiLCJyaWdodCIsIkxJY29ucyIsIm1pbiIsImNsb3NlIiwiTW9vbk1hcmsiLCJzaXplIiwiY29uY2F0Iiwib25DbGljayIsIkZyYWdtZW50IiwicGxhY2Vob2xkZXIiLCJkZWZhdWx0VmFsdWUiLCJ0eXBlIiwiZGVmYXVsdENoZWNrZWQiLCJocmVmIiwiYXJyb3ciLCJmb250RmFtaWx5IiwibGV0dGVyU3BhY2luZyIsImxlZnQiLCJPYmplY3QiLCJhc3NpZ24iLCJ3aW5kb3ciXSwic291cmNlcyI6WyJJbmxpbmUgQmFiZWwgc2NyaXB0ICgzKSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMb2dpbiAvIHJlZ2lzdGVyIHNjcmVlbiBvdmVybGF5XG5mdW5jdGlvbiBMb2dpbldpbmRvdyh7IHZhcmlhbnQgPSBcInRlbXBsZVwiLCBtb2RlID0gXCJsb2dpblwiLCB0aXRsZSA9IFwi0JvQvtCz0LjQvVwiIH0pIHtcbiAgY29uc3QgW3RhYiwgc2V0VGFiXSA9IFJlYWN0LnVzZVN0YXRlKG1vZGUpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJzdGFnZS1jZWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0YWdlLWxhYmVsXCI+PHNwYW4gY2xhc3NOYW1lPVwiZG90XCI+PC9zcGFuPjxzcGFuPnt0aXRsZX08L3NwYW4+PC9kaXY+XG4gICAgICA8ZGl2IHN0eWxlPXt7IGhlaWdodDogMTIgfX0gLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGF1bmNoZXJcIiBkYXRhLXZhcmlhbnQ9e3ZhcmlhbnR9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWFydFwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXN0YXJzXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctbW9vblwiIHN0eWxlPXt7IHRvcDogJzEyJScsIHJpZ2h0OiAnNjAlJyB9fT48L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbi10aXRsZWJhclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luLXRpdGxlLXNwYWNlclwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwid2luLWJ0blwiPntMSWNvbnMubWlufTwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzc05hbWU9XCJ3aW4tYnRuIGNsb3NlXCI+e0xJY29ucy5jbG9zZX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2dpbi1zdGFja1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9naW4tYXJ0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvZ2luLWFydC1tYXJrXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlBsYWNlIGtleSBhcnQgaGVyZTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+0L/QvtGA0YLRgNC10YIg0L3QvtGH0L3QvtCz0L4g0Y3Qu9GM0YTQsCDCtyDRgdC70LXQstCwPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxvZ2luLWFydC1xdW90ZVwiPlxuICAgICAgICAgICAgICDCq9CX0LLRkdC30LTQvdGL0Lkg0YHQstC10YIg0L/RgNC+0LLQtdC00ZHRgiDRgtC10LHRjyDRgdC60LLQvtC30Ywg0YHQsNC80YvQtSDRgtGR0LzQvdGL0LUg0L3QvtGH0Lgg4oCUXG4gICAgICAgICAgICAgINC10YHQu9C4INGC0Ysg0LPQvtGC0L7QsiDQuNC00YLQuCDRgtGD0LTQsCwg0LrRg9C00LAg0L7QvSDRg9C60LDQt9GL0LLQsNC10YIuwrtcbiAgICAgICAgICAgICAgPGNpdGU+4oCUINCc0LDQu9GE0YPRgNC40L7QvSDQr9GA0L7RgdGC0Ywg0JHRg9GA0Lg8L2NpdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9naW4tZm9ybVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2dpbi1icmFuZFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsb2dpbi1icmFuZC1tYXJrXCI+PE1vb25NYXJrIHNpemU9ezI4fSAvPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibG9naW4tYnJhbmQtbmFtZVwiPk1PT05XRUxMPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImxvZ2luLWV5ZWJyb3dcIj57dGFiID09PSBcImxvZ2luXCIgPyBcItCS0YXQvtC0XCIgOiBcItCg0LXQs9C40YHRgtGA0LDRhtC40Y9cIn08L3NwYW4+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwibG9naW4taFwiPnt0YWIgPT09IFwibG9naW5cIiA/IFwi0KEg0LLQvtC30LLRgNCw0YnQtdC90LjQtdC8XCIgOiBcItCh0L7Qt9C00LDQuSDQs9C10YDQvtGPXCJ9PC9oMj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cImxvZ2luLXN1YlwiPlxuICAgICAgICAgICAgICB7dGFiID09PSBcImxvZ2luXCJcbiAgICAgICAgICAgICAgICA/IFwi0JLQvtC50LTQuCDQsiDRgdCy0L7QuSDQsNC60LrQsNGD0L3Rgiwg0YfRgtC+0LHRiyDQv9GA0L7QtNC+0LvQttC40YLRjCDQv9GD0YLRjC5cIlxuICAgICAgICAgICAgICAgIDogXCLQktCy0LXQtNC4INC40L3QstCw0LnRgi3QutC+0LQg0Lgg0L/RgNC40LTRg9C80LDQuSDQuNC80Y8g0LTQu9GPINC70YPQvdC90L7Qs9C+INCz0LXRgNC+0Y8uXCJ9XG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9naW4tdGFic1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT17YGxvZ2luLXRhYiAke3RhYiA9PT0gXCJsb2dpblwiID8gXCJhY3RpdmVcIiA6IFwiXCJ9YH0gb25DbGljaz17KCkgPT4gc2V0VGFiKFwibG9naW5cIil9PtCS0YXQvtC0PC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPXtgbG9naW4tdGFiICR7dGFiID09PSBcInJlZ2lzdGVyXCIgPyBcImFjdGl2ZVwiIDogXCJcIn1gfSBvbkNsaWNrPXsoKSA9PiBzZXRUYWIoXCJyZWdpc3RlclwiKX0+0KDQtdCz0LjRgdGC0YDQsNGG0LjRjzwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHt0YWIgPT09IFwibG9naW5cIiA/IChcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmllbGQtbGFiZWxcIj7Qm9C+0LPQuNC9INC40LvQuCBlbWFpbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZmllbGQtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkFyYW50aGVsXCIgZGVmYXVsdFZhbHVlPVwiYXJhbnRoZWxcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmaWVsZC1sYWJlbFwiPtCf0LDRgNC+0LvRjDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZmllbGQtaW5wdXRcIiB0eXBlPVwicGFzc3dvcmRcIiBkZWZhdWx0VmFsdWU9XCLigKLigKLigKLigKLigKLigKLigKLigKLigKLigKJcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibG9naW4tcm93XCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGRlZmF1bHRDaGVja2VkIC8+INCX0LDQv9C+0LzQvdC40YLRjCDQvNC10L3RjzwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiPtCX0LDQsdGL0LvQuCDQv9Cw0YDQvtC70Yw/PC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwibG9naW4tc3VibWl0XCI+0JLQvtC50YLQuCB7TEljb25zLmFycm93fTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZpZWxkLWxhYmVsXCI+0JjQvdCy0LDQudGCLdC60L7QtDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZmllbGQtaW5wdXRcIiBwbGFjZWhvbGRlcj1cIkFCQ0QtRUZHSC1JSktMXCIgZGVmYXVsdFZhbHVlPVwiTU9PTi1XRUxMLTIwMjZcIiBzdHlsZT17eyBmb250RmFtaWx5OiBcInZhcigtLWYtbW9ubylcIiwgbGV0dGVyU3BhY2luZzogXCIwLjE0ZW1cIiB9fSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJmaWVsZC1sYWJlbFwiPtCb0L7Qs9C40L08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzTmFtZT1cImZpZWxkLWlucHV0XCIgcGxhY2Vob2xkZXI9XCJNb29ud2Fsa2VyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpZWxkXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiZmllbGQtbGFiZWxcIj5FbWFpbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwiZmllbGQtaW5wdXRcIiB0eXBlPVwiZW1haWxcIiBwbGFjZWhvbGRlcj1cInBsYXllckBleGFtcGxlLmNvbVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWVsZFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cImZpZWxkLWxhYmVsXCI+0J/QsNGA0L7Qu9GMPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJmaWVsZC1pbnB1dFwiIHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwi0JzQuNC90LjQvNGD0LwgOCDRgdC40LzQstC+0LvQvtCyXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImxvZ2luLXN1Ym1pdFwiPtCh0L7Qt9C00LDRgtGMINCw0LrQutCw0YPQvdGCIHtMSWNvbnMuYXJyb3d9PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2dpbi1mb290XCI+bW9vbndlbGwgwrcgdiAxLjQuMiDCtyBsb2dpbi5tb29ud2VsbC5nZzwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInN0YXR1c2JhclwiIHN0eWxlPXt7IGxlZnQ6IDAgfX0+XG4gICAgICAgICAgPHNwYW4+0JLQtdGA0YHQuNGPINC70LDRg9C90YfQtdGA0LAgPHN0cm9uZz4xLjQuMjwvc3Ryb25nPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJzZXBcIj7Ctzwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj7QodC+0LXQtNC40L3QtdC90LjQtSA8c3Ryb25nPtC30LDRidC40YnQtdC90L4gVExTPC9zdHJvbmc+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJpZ2h0XCI+wqkgMjAyNiBNb29uV2VsbDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuT2JqZWN0LmFzc2lnbih3aW5kb3csIHsgTG9naW5XaW5kb3cgfSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxXQUFXQSxDQUFBQyxJQUFBLEVBQTBEO0VBQUEsSUFBQUMsWUFBQSxHQUFBRCxJQUFBLENBQXZERSxPQUFPO0lBQVBBLE9BQU8sR0FBQUQsWUFBQSxjQUFHLFFBQVEsR0FBQUEsWUFBQTtJQUFBRSxTQUFBLEdBQUFILElBQUEsQ0FBRUksSUFBSTtJQUFKQSxJQUFJLEdBQUFELFNBQUEsY0FBRyxPQUFPLEdBQUFBLFNBQUE7SUFBQUUsVUFBQSxHQUFBTCxJQUFBLENBQUVNLEtBQUs7SUFBTEEsS0FBSyxHQUFBRCxVQUFBLGNBQUcsT0FBTyxHQUFBQSxVQUFBO0VBQ3hFLElBQUFFLGVBQUEsR0FBc0JDLEtBQUssQ0FBQ0MsUUFBUSxDQUFDTCxJQUFJ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
</script>
<script>
"use strict";
function _defineProperty(e, r, t) {
return (
(r = _toPropertyKey(r)) in e
? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0,
})
: (e[r] = t),
e
);
}
function _toPropertyKey(t) {
var i = _toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
function _toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function _typeof(o) {
"@babel/helpers - typeof";
return (
(_typeof =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function (o) {
return typeof o;
}
: function (o) {
return o &&
"function" == typeof Symbol &&
o.constructor === Symbol &&
o !== Symbol.prototype
? "symbol"
: typeof o;
}),
_typeof(o)
);
}
function _slicedToArray(r, e) {
return (
_arrayWithHoles(r) ||
_iterableToArrayLimit(r, e) ||
_unsupportedIterableToArray(r, e) ||
_nonIterableRest()
);
}
function _nonIterableRest() {
throw new TypeError(
"Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.",
);
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return (
"Object" === t && r.constructor && (t = r.constructor.name),
"Map" === t || "Set" === t
? Array.from(r)
: "Arguments" === t ||
/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
? _arrayLikeToArray(r, a)
: void 0
);
}
}
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _iterableToArrayLimit(r, l) {
var t =
null == r
? null
: ("undefined" != typeof Symbol && r[Symbol.iterator]) ||
r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (((i = (t = t.call(r)).next), 0 === l)) {
if (Object(t) !== t) return;
f = !1;
} else
for (
;
!(f = (e = i.call(t)).done) &&
(a.push(e.value), a.length !== l);
f = !0
);
} catch (r) {
((o = !0), (n = r));
} finally {
try {
if (
!f &&
null != t["return"] &&
((u = t["return"]()), Object(u) !== u)
)
return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
} // App: presents all states side-by-side as a design canvas var TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "variant": "forest" } /*EDITMODE-END*/; function App() { var _React$useState = React.useState(TWEAK_DEFAULTS.variant), _React$useState2 = _slicedToArray(_React$useState, 2), variant = _React$useState2[0], setVariant = _React$useState2[1]; var _React$useState3 = React.useState(false), _React$useState4 = _slicedToArray(_React$useState3, 2), editMode = _React$useState4[0], setEditMode = _React$useState4[1]; React.useEffect(function () { var onMsg = function onMsg(e) { if (!e.data || _typeof(e.data) !== "object") return; if (e.data.type === "__activate_edit_mode") setEditMode(true); if (e.data.type === "__deactivate_edit_mode") setEditMode(false); }; window.addEventListener("message", onMsg); window.parent.postMessage({ type: "__edit_mode_available" }, "*"); return function () { return window.removeEventListener("message", onMsg); }; }, []); var setKey = function setKey(k, v) { if (k === "variant") setVariant(v); window.parent.postMessage({ type: "__edit_mode_set_keys", edits: _defineProperty({}, k, v) }, "*"); }; return /*#__PURE__*/React.createElement("div", { className: "stage" }, /*#__PURE__*/React.createElement("div", { style: { textAlign: "center", padding: "20px 0 10px" } }, /*#__PURE__*/React.createElement("div", { style: { fontFamily: "var(--f-display)", fontSize: 28, letterSpacing: "0.24em", color: "var(--ivory)" } }, "MOONWELL \xB7 LAUNCHER"), /*#__PURE__*/React.createElement("div", { style: { fontFamily: "var(--f-serif)", fontStyle: "italic", color: "var(--text-mute)", marginTop: 6 } }, "\u0413\u043B\u0430\u0432\u043D\u044B\u0439 \u044D\u043A\u0440\u0430\u043D, \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u044F \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438, \u044D\u043A\u0440\u0430\u043D \u0432\u0445\u043E\u0434\u0430 \u2014 \u0432\u0441\u0451 \u0432 \u043E\u0434\u043D\u043E\u043C \u0445\u043E\u043B\u0441\u0442\u0435.")), /*#__PURE__*/React.createElement("div", { className: "stage-grid" }, /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "ready", game: "wow", title: "01 \xB7 \u0413\u043B\u0430\u0432\u043D\u0430\u044F \u2014 WoW \xB7 \u0433\u043E\u0442\u043E\u0432 \u0438\u0433\u0440\u0430\u0442\u044C" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "downloading", game: "wow", title: "02 \xB7 \u0421\u043A\u0430\u0447\u0438\u0432\u0430\u043D\u0438\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "paused", game: "wow", title: "03 \xB7 \u041F\u0430\u0443\u0437\u0430" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "verify", game: "wow", title: "04 \xB7 \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0444\u0430\u0439\u043B\u043E\u0432" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "update", game: "wow", title: "05 \xB7 \u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "ready", game: "karts", title: "06 \xB7 MoonWell Karts (closed alpha)" }), /*#__PURE__*/React.createElement(LauncherWindow, { variant: variant, state: "ready", game: "verge", title: "07 \xB7 Project Verge (\u0430\u043D\u043E\u043D\u0441)" }), /*#__PURE__*/React.createElement(LoginWindow, { variant: variant, mode: "login", title: "08 \xB7 \u0412\u0445\u043E\u0434" }), /*#__PURE__*/React.createElement(LoginWindow, { variant: variant, mode: "register", title: "09 \xB7 \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044F" })), editMode && /*#__PURE__*/React.createElement("div", { className: "tweaks-host" }, /*#__PURE__*/React.createElement("h4", null, "Tweaks"), /*#__PURE__*/React.createElement("div", { className: "tweaks-row" }, /*#__PURE__*/React.createElement("label", null, "\u041D\u0430\u0441\u0442\u0440\u043E\u0435\u043D\u0438\u0435"), /*#__PURE__*/React.createElement("div", { className: "tweaks-seg" }, /*#__PURE__*/React.createElement("button", { className: variant === "forest" ? "active" : "", onClick: function onClick() { return setKey("variant", "forest"); } }, "\u041B\u0435\u0441"), /*#__PURE__*/React.createElement("button", { className: variant === "temple" ? "active" : "", onClick: function onClick() { return setKey("variant", "temple"); } }, "\u0425\u0440\u0430\u043C"))), /*#__PURE__*/React.createElement("div", { style: { fontFamily: "var(--f-mono)", fontSize: 10, color: "var(--text-mute)", letterSpacing: "0.1em", marginTop: 4 } }, "\u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u043E\u043A\u043D\u0430 \u0441\u0440\u0430\u0437\u0443"))); } var root = ReactDOM.createRoot(document.getElementById("root")); root.render(/*#__PURE__*/React.createElement(App, null)); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUV0VBS19ERUZBVUxUUyIsIkFwcCIsIl9SZWFjdCR1c2VTdGF0ZSIsIlJlYWN0IiwidXNlU3RhdGUiLCJ2YXJpYW50IiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2V0VmFyaWFudCIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0IiwiZWRpdE1vZGUiLCJzZXRFZGl0TW9kZSIsInVzZUVmZmVjdCIsIm9uTXNnIiwiZSIsImRhdGEiLCJfdHlwZW9mIiwidHlwZSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXJlbnQiLCJwb3N0TWVzc2FnZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRLZXkiLCJrIiwidiIsImVkaXRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInN0eWxlIiwidGV4dEFsaWduIiwicGFkZGluZyIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImxldHRlclNwYWNpbmciLCJjb2xvciIsImZvbnRTdHlsZSIsIm1hcmdpblRvcCIsIkxhdW5jaGVyV2luZG93Iiwic3RhdGUiLCJnYW1lIiwidGl0bGUiLCJMb2dpbldpbmRvdyIsIm1vZGUiLCJvbkNsaWNrIiwicm9vdCIsIlJlYWN0RE9NIiwiY3JlYXRlUm9vdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJyZW5kZXIiXSwic291cmNlcyI6WyJJbmxpbmUgQmFiZWwgc2NyaXB0ICg0KSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBcHA6IHByZXNlbnRzIGFsbCBzdGF0ZXMgc2lkZS1ieS1zaWRlIGFzIGEgZGVzaWduIGNhbnZhc1xuY29uc3QgVFdFQUtfREVGQVVMVFMgPSAvKkVESVRNT0RFLUJFR0lOKi97XG4gIFwidmFyaWFudFwiOiBcImZvcmVzdFwiXG59LypFRElUTU9ERS1FTkQqLztcblxuZnVuY3Rpb24gQXBwKCkge1xuICBjb25zdCBbdmFyaWFudCwgc2V0VmFyaWFudF0gPSBSZWFjdC51c2VTdGF0ZShUV0VBS19ERUZBVUxUUy52YXJpYW50KTtcbiAgY29uc3QgW2VkaXRNb2RlLCBzZXRFZGl0TW9kZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1zZyA9IChlKSA9PiB7XG4gICAgICBpZiAoIWUuZGF0YSB8fCB0eXBlb2YgZS5kYXRhICE9PSBcIm9iamVjdFwiKSByZXR1cm47XG4gICAgICBpZiAoZS5kYXRhLnR5cGUgPT09IFwiX19hY3RpdmF0ZV9lZGl0X21vZGVcIikgc2V0RWRpdE1vZGUodHJ1ZSk7XG4gICAgICBpZiAoZS5kYXRhLnR5cGUgPT09IFwiX19kZWFjdGl2YXRlX2VkaXRfbW9kZVwiKSBzZXRFZGl0TW9kZShmYWxzZSk7XG4gICAgfTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgb25Nc2cpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBcIl9fZWRpdF9tb2RlX2F2YWlsYWJsZVwiIH0sIFwiKlwiKTtcbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG9uTXNnKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNldEtleSA9IChrLCB2KSA9PiB7XG4gICAgaWYgKGsgPT09IFwidmFyaWFudFwiKSBzZXRWYXJpYW50KHYpO1xuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBcIl9fZWRpdF9tb2RlX3NldF9rZXlzXCIsIGVkaXRzOiB7IFtrXTogdiB9IH0sIFwiKlwiKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwic3RhZ2VcIj5cbiAgICAgIDxkaXYgc3R5bGU9e3sgdGV4dEFsaWduOiBcImNlbnRlclwiLCBwYWRkaW5nOiBcIjIwcHggMCAxMHB4XCIgfX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udEZhbWlseTogXCJ2YXIoLS1mLWRpc3BsYXkpXCIsIGZvbnRTaXplOiAyOCwgbGV0dGVyU3BhY2luZzogXCIwLjI0ZW1cIiwgY29sb3I6IFwidmFyKC0taXZvcnkpXCIgfX0+XG4gICAgICAgICAgTU9PTldFTEwgwrcgTEFVTkNIRVJcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udEZhbWlseTogXCJ2YXIoLS1mLXNlcmlmKVwiLCBmb250U3R5bGU6IFwiaXRhbGljXCIsIGNvbG9yOiBcInZhcigtLXRleHQtbXV0ZSlcIiwgbWFyZ2luVG9wOiA2IH19PlxuICAgICAgICAgINCT0LvQsNCy0L3Ri9C5INGN0LrRgNCw0L0sINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4LCDRjdC60YDQsNC9INCy0YXQvtC00LAg4oCUINCy0YHRkSDQsiDQvtC00L3QvtC8INGF0L7Qu9GB0YLQtS5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJzdGFnZS1ncmlkXCI+XG4gICAgICAgIDxMYXVuY2hlcldpbmRvdyB2YXJpYW50PXt2YXJpYW50fSBzdGF0ZT1cInJlYWR5XCIgICAgICAgZ2FtZT1cIndvd1wiICAgdGl0bGU9XCIwMSDCtyDQk9C70LDQstC90LDRjyDigJQgV29XIMK3INCz0L7RgtC+0LIg0LjQs9GA0LDRgtGMXCIgLz5cbiAgICAgICAgPExhdW5jaGVyV2luZG93IHZhcmlhbnQ9e3ZhcmlhbnR9IHN0YXRlPVwiZG93bmxvYWRpbmdcIiBnYW1lPVwid293XCIgICB0aXRsZT1cIjAyIMK3INCh0LrQsNGH0LjQstCw0L3QuNC1INC60LvQuNC10L3RgtCwXCIgLz5cbiAgICAgICAgPExhdW5jaGVyV2luZG93IHZhcmlhbnQ9e3ZhcmlhbnR9IHN0YXRlPVwicGF1c2VkXCIgICAgICBnYW1lPVwid293XCIgICB0aXRsZT1cIjAzIMK3INCf0LDRg9C30LBcIiAvPlxuICAgICAgICA8TGF1bmNoZXJXaW5kb3cgdmFyaWFudD17dmFyaWFudH0gc3RhdGU9XCJ2ZXJpZnlcIiAgICAgIGdhbWU9XCJ3b3dcIiAgIHRpdGxlPVwiMDQgwrcg0J/RgNC+0LLQtdGA0LrQsCDRhNCw0LnQu9C+0LJcIiAvPlxuICAgICAgICA8TGF1bmNoZXJXaW5kb3cgdmFyaWFudD17dmFyaWFudH0gc3RhdGU9XCJ1cGRhdGVcIiAgICAgIGdhbWU9XCJ3b3dcIiAgIHRpdGxlPVwiMDUgwrcg0J7QsdC90L7QstC70LXQvdC40LVcIiAvPlxuICAgICAgICA8TGF1bmNoZXJXaW5kb3cgdmFyaWFudD17dmFyaWFudH0gc3RhdGU9XCJyZWFkeVwiICAgICAgIGdhbWU9XCJrYXJ0c1wiIHRpdGxlPVwiMDYgwrcgTW9vbldlbGwgS2FydHMgKGNsb3NlZCBhbHBoYSlcIiAvPlxuICAgICAgICA8TGF1bmNoZXJXaW5kb3cgdmFyaWFudD17dmFyaWFudH0gc3RhdGU9XCJyZWFkeVwiICAgICAgIGdhbWU9XCJ2ZXJnZVwiIHRpdGxlPVwiMDcgwrcgUHJvamVjdCBWZXJnZSAo0LDQvdC+0L3RgSlcIiAvPlxuICAgICAgICA8TG9naW5XaW5kb3cgICAgdmFyaWFudD17dmFyaWFudH0gbW9kZT1cImxvZ2luXCIgICAgICAgIHRpdGxlPVwiMDggwrcg0JLRhdC+0LRcIiAvPlxuICAgICAgICA8TG9naW5XaW5kb3cgICAgdmFyaWFudD17dmFyaWFudH0gbW9kZT1cInJlZ2lzdGVyXCIgICAgIHRpdGxlPVwiMDkgwrcg0KDQtdCz0LjRgdGC0YDQsNGG0LjRj1wiIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAge2VkaXRNb2RlICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0d2Vha3MtaG9zdFwiPlxuICAgICAgICAgIDxoND5Ud2Vha3M8L2g0PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidHdlYWtzLXJvd1wiPlxuICAgICAgICAgICAgPGxhYmVsPtCd0LDRgdGC0YDQvtC10L3QuNC1PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidHdlYWtzLXNlZ1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXt2YXJpYW50ID09PSBcImZvcmVzdFwiID8gXCJhY3RpdmVcIiA6IFwiXCJ9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0S2V5KFwidmFyaWFudFwiLCBcImZvcmVzdFwiKX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCb0LXRgVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17dmFyaWFudCA9PT0gXCJ0ZW1wbGVcIiA/IFwiYWN0aXZlXCIgOiBcIlwifVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEtleShcInZhcmlhbnRcIiwgXCJ0ZW1wbGVcIil9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQpdGA0LDQvFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udEZhbWlseTogXCJ2YXIoLS1mLW1vbm8pXCIsIGZvbnRTaXplOiAxMCwgY29sb3I6IFwidmFyKC0tdGV4dC1tdXRlKVwiLCBsZXR0ZXJTcGFjaW5nOiBcIjAuMWVtXCIsIG1hcmdpblRvcDogNCB9fT5cbiAgICAgICAgICAgINC/0LXRgNC10LrQu9GO0YfQsNC10YIg0LLRgdC1INC+0LrQvdCwINGB0YDQsNC30YNcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCByb290ID0gUmVhY3RET00uY3JlYXRlUm9vdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInJvb3RcIikpO1xucm9vdC5yZW5kZXIoPEFwcCAvPik7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FB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QUFDO0VBQVcsQ0FBRSxDQUFDLGVBQzFFeEMsS0FBQSxDQUFBMEIsYUFBQSxDQUFDZSxXQUFXO0lBQUl2QyxPQUFPLEVBQUVBLE9BQVE7SUFBQ3dDLElBQUksRUFBQyxVQUFVO0lBQUtGLEtBQUssRUFBQztFQUFrQixDQUFFLENBQzdFLENBQUMsRUFFTGhDLFFBQVEsaUJBQ1BSLEtBQUEsQ0FBQTBCLGFBQUE7SUFBS0MsU0FBUyxFQUFDO0VBQWEsZ0JBQzFCM0IsS0FBQSxDQUFBMEIsYUFBQSxhQUFJLFFBQVUsQ0FBQyxlQUNmMUIsS0FBQSxDQUFBMEIsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBWSxnQkFDekIzQixLQUFBLENBQUEwQixhQUFBLGdCQUFPLDhEQUFpQixDQUFDLGVBQ3pCMUIsS0FBQSxDQUFBMEIsYUFBQTtJQUFLQyxTQUFTLEVBQUM7RUFBWSxnQkFDekIzQixLQUFBLENBQUEwQixhQUFBO0lBQ0VDLFNBQVMsRUFBRXpCLE9BQU8sS0FBSyxRQUFRLEdBQUcsUUFBUSxHQUFHLEVBQUc7SUFDaER5QyxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtNQUFBLE9BQVF0QixNQUFNLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQztJQUFBO0VBQUMsR0FDNUMsb0JBRU8sQ0FBQyxlQUNUckIsS0FBQSxDQUFBMEIsYUFBQTtJQUNFQyxTQUFTLEVBQUV6QixPQUFPLEtBQUssUUFBUSxHQUFHLFFBQVEsR0FBRyxFQUFHO0lBQ2hEeUMsT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7TUFBQSxPQUFRdEIsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7SUFBQTtFQUFDLEdBQzVDLDBCQUVPLENBQ0wsQ0FDRixDQUFDLGVBQ05yQixLQUFBLENBQUEwQixhQUFBO0lBQUtFLEtBQUssRUFBRTtNQUFFRyxVQUFVLEVBQUUsZUFBZTtNQUFFQyxRQUFRLEVBQUUsRUFBRTtNQUFFRSxLQUFLLEVBQUUsa0JBQWtCO01BQUVELGFBQWEsRUFBRSxPQUFPO01BQUVHLFNBQVMsRUFBRTtJQUFFO0VBQUUsR0FBQywrSUFFdkgsQ0FDRixDQUVKLENBQUM7QUFFVjtBQUVBLElBQU1RLElBQUksR0FBR0MsUUFBUSxDQUFDQyxVQUFVLENBQUNDLFFBQVEsQ0FBQ0MsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pFSixJQUFJLENBQUNLLE1BQU0sY0FBQ2pELEtBQUEsQ0FBQTBCLGFBQUEsQ0FBQzVCLEdBQUcsTUFBRSxDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
</script>
</head>
<body>
<div id="root">
<div class="stage">
<div style="text-align: center; padding: 20px 0px 10px">
<div
style="
font-family: var(--f-display);
font-size: 28px;
letter-spacing: 0.24em;
color: var(--ivory);
"
>
MOONWELL · LAUNCHER
</div>
<div
style="
font-family: var(--f-serif);
font-style: italic;
color: var(--text-mute);
margin-top: 6px;
"
>
Главный экран, состояния загрузки, экран входа — всё в одном холсте.
</div>
</div>
<div class="stage-grid">
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span
><span>01 · Главная — WoW · готов играть</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon"></div>
<div class="bg-placeholder-mark">
<span>Place key art here</span
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
</div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<aside class="rail rail-wide">
<div class="rail-avatar">A</div>
<div class="rail-divider"></div>
<div class="rail-section-label">Игры</div>
<button
class="game-tile active"
title="MoonWell · WoW — Open Beta"
>
<span class="game-tile-mark">MW</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell · WoW</span
><span class="game-tile-tag">Open Beta</span></span
></button
><button
class="game-tile soon"
title="MoonWell Karts — Closed Alpha"
>
<span class="game-tile-mark">K</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell Karts</span
><span class="game-tile-tag">Closed Alpha</span></span
><span class="game-tile-lock">soon</span></button
><button
class="game-tile soon"
title="Tides of Elune — В разработке"
>
<span class="game-tile-mark">T</span
><span class="game-tile-info"
><span class="game-tile-name">Tides of Elune</span
><span class="game-tile-tag">В разработке</span></span
><span class="game-tile-lock">soon</span></button
><button class="game-tile soon" title="Project Verge — Анонс">
<span class="game-tile-mark">V</span
><span class="game-tile-info"
><span class="game-tile-name">Project Verge</span
><span class="game-tile-tag">Анонс</span></span
><span class="game-tile-lock">soon</span>
</button>
<div class="rail-spacer"></div>
<div class="rail-divider"></div>
<button class="rail-icon" title="Друзья">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg></button
><button class="rail-icon" title="Настройки">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<circle cx="12" cy="12" r="3"></circle>
<path
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
></path>
</svg>
</button>
</aside>
<header class="header">
<div class="brand">
<span class="brand-mark"
><svg
viewBox="0 0 64 64"
width="40"
height="40"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg
></span>
<div class="brand-name">
MOONWELL<small>LUNAR · LAUNCHER</small>
</div>
</div>
<div class="player">
<div class="player-avatar">Æ</div>
<div class="player-info">
<span class="player-name">Aranthel</span
><span class="player-meta">Хранитель рощи · 47 ур.</span>
</div>
</div>
</header>
<div class="hero-copy">
<span class="hero-eyebrow"
><span class="dot"></span> Open Beta</span
>
<h1 class="hero-headline">
Свет колодца<br /><span class="accent"
>зовёт тебя домой.</span
>
</h1>
<p class="hero-sub">
Wrath of the Lich King · приватный сервер
</p>
</div>
<aside class="news-panel">
<div class="news-tabs">
<button class="news-tab active">Новости</button
><button class="news-tab">События</button
><button class="news-tab">Патчи</button>
</div>
<div class="news-list">
<a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">29.04</span>
</div>
<div class="news-title">
Открытая бета: первый сезон стартует на этой неделе
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag event">Событие</span
><span class="news-date">27.04</span>
</div>
<div class="news-title">
Лунные стражи: PvP-уикенд с тройным рейтингом
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">24.04</span>
</div>
<div class="news-title">
1.4.2 — балансировка соло-данжей и фикс Mythic+
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag notice">Объявление</span
><span class="news-date">22.04</span>
</div>
<div class="news-title">
Запланированное обслуживание реалмов 24.04 03:00 UTC
</div></a
>
</div>
<div class="news-foot">
<span>moonwell.gg</span><a href="#">Все →</a>
</div>
</aside>
<div class="actions">
<div class="action-row">
<div class="realm-pill">
<div class="realm-pulse"></div>
<div>
<div class="realm-name">ELUNE'S GRACE</div>
<div class="realm-meta">Online · 1247 players · 38ms</div>
</div>
</div>
<div class="progress-block">
<div class="progress-head">
<span class="progress-state">Готов к запуску</span
><span class="progress-pct">100%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 100%"></div>
</div>
<div class="progress-meta">
<div class="left">
<span>Версия клиента 1.4.2</span
><span>Все файлы целы</span>
</div>
<div class="right">
<span>Последняя проверка: только что</span>
</div>
</div>
</div>
<button class="play-btn ready">
<span class="icon"
><svg viewBox="0 0 24 24" fill="currentColor">
<path d="M7 5v14l12-7z"></path></svg
></span>
Играть
</button>
</div>
</div>
<div class="statusbar">
<span>Версия клиента <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Realmlist <strong>login.moonwell.gg</strong></span
><span class="sep">·</span
><span>Регион <strong>EU</strong></span
><span class="right">Лаунчер v1.4.2</span>
</div>
</div>
</div>
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span><span>02 · Скачивание клиента</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon"></div>
<div class="bg-placeholder-mark">
<span>Place key art here</span
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
</div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<aside class="rail rail-wide">
<div class="rail-avatar">A</div>
<div class="rail-divider"></div>
<div class="rail-section-label">Игры</div>
<button
class="game-tile active"
title="MoonWell · WoW — Open Beta"
>
<span class="game-tile-mark">MW</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell · WoW</span
><span class="game-tile-tag">Open Beta</span></span
></button
><button
class="game-tile soon"
title="MoonWell Karts — Closed Alpha"
>
<span class="game-tile-mark">K</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell Karts</span
><span class="game-tile-tag">Closed Alpha</span></span
><span class="game-tile-lock">soon</span></button
><button
class="game-tile soon"
title="Tides of Elune — В разработке"
>
<span class="game-tile-mark">T</span
><span class="game-tile-info"
><span class="game-tile-name">Tides of Elune</span
><span class="game-tile-tag">В разработке</span></span
><span class="game-tile-lock">soon</span></button
><button class="game-tile soon" title="Project Verge — Анонс">
<span class="game-tile-mark">V</span
><span class="game-tile-info"
><span class="game-tile-name">Project Verge</span
><span class="game-tile-tag">Анонс</span></span
><span class="game-tile-lock">soon</span>
</button>
<div class="rail-spacer"></div>
<div class="rail-divider"></div>
<button class="rail-icon" title="Друзья">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg></button
><button class="rail-icon" title="Настройки">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<circle cx="12" cy="12" r="3"></circle>
<path
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
></path>
</svg>
</button>
</aside>
<header class="header">
<div class="brand">
<span class="brand-mark"
><svg
viewBox="0 0 64 64"
width="40"
height="40"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg
></span>
<div class="brand-name">
MOONWELL<small>LUNAR · LAUNCHER</small>
</div>
</div>
<div class="player">
<div class="player-avatar">Æ</div>
<div class="player-info">
<span class="player-name">Aranthel</span
><span class="player-meta">Хранитель рощи · 47 ур.</span>
</div>
</div>
</header>
<div class="hero-copy">
<span class="hero-eyebrow"
><span class="dot"></span> Open Beta</span
>
<h1 class="hero-headline">
Свет колодца<br /><span class="accent"
>зовёт тебя домой.</span
>
</h1>
<p class="hero-sub">
Wrath of the Lich King · приватный сервер
</p>
</div>
<aside class="news-panel">
<div class="news-tabs">
<button class="news-tab active">Новости</button
><button class="news-tab">События</button
><button class="news-tab">Патчи</button>
</div>
<div class="news-list">
<a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">29.04</span>
</div>
<div class="news-title">
Открытая бета: первый сезон стартует на этой неделе
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag event">Событие</span
><span class="news-date">27.04</span>
</div>
<div class="news-title">
Лунные стражи: PvP-уикенд с тройным рейтингом
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">24.04</span>
</div>
<div class="news-title">
1.4.2 — балансировка соло-данжей и фикс Mythic+
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag notice">Объявление</span
><span class="news-date">22.04</span>
</div>
<div class="news-title">
Запланированное обслуживание реалмов 24.04 03:00 UTC
</div></a
>
</div>
<div class="news-foot">
<span>moonwell.gg</span><a href="#">Все →</a>
</div>
</aside>
<div class="actions">
<div class="action-row">
<div class="realm-pill">
<div class="realm-pulse"></div>
<div>
<div class="realm-name">ELUNE'S GRACE</div>
<div class="realm-meta">Online · 1247 players · 38ms</div>
</div>
</div>
<div class="progress-block">
<div class="progress-head">
<span class="progress-state">Загрузка</span
><span class="progress-pct">6%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 6%"></div>
</div>
<div class="progress-meta">
<div class="left">
<span>3.22 / 48.80 GB</span><span>4.95 MB/s</span>
</div>
<div class="right"><span>Осталось ~2:37:11</span></div>
</div>
</div>
<button class="play-btn pause">
<span class="icon"
><svg viewBox="0 0 24 24" fill="currentColor">
<rect x="6" y="5" width="4" height="14" rx="1"></rect>
<rect
x="14"
y="5"
width="4"
height="14"
rx="1"
></rect></svg
></span>
Пауза
</button>
</div>
</div>
<div class="statusbar">
<span>Версия клиента <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Realmlist <strong>login.moonwell.gg</strong></span
><span class="sep">·</span
><span>Регион <strong>EU</strong></span
><span class="right">Лаунчер v1.4.2</span>
</div>
</div>
</div>
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span><span>03 · Пауза</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon"></div>
<div class="bg-placeholder-mark">
<span>Place key art here</span
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
</div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<aside class="rail rail-wide">
<div class="rail-avatar">A</div>
<div class="rail-divider"></div>
<div class="rail-section-label">Игры</div>
<button
class="game-tile active"
title="MoonWell · WoW — Open Beta"
>
<span class="game-tile-mark">MW</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell · WoW</span
><span class="game-tile-tag">Open Beta</span></span
></button
><button
class="game-tile soon"
title="MoonWell Karts — Closed Alpha"
>
<span class="game-tile-mark">K</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell Karts</span
><span class="game-tile-tag">Closed Alpha</span></span
><span class="game-tile-lock">soon</span></button
><button
class="game-tile soon"
title="Tides of Elune — В разработке"
>
<span class="game-tile-mark">T</span
><span class="game-tile-info"
><span class="game-tile-name">Tides of Elune</span
><span class="game-tile-tag">В разработке</span></span
><span class="game-tile-lock">soon</span></button
><button class="game-tile soon" title="Project Verge — Анонс">
<span class="game-tile-mark">V</span
><span class="game-tile-info"
><span class="game-tile-name">Project Verge</span
><span class="game-tile-tag">Анонс</span></span
><span class="game-tile-lock">soon</span>
</button>
<div class="rail-spacer"></div>
<div class="rail-divider"></div>
<button class="rail-icon" title="Друзья">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg></button
><button class="rail-icon" title="Настройки">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<circle cx="12" cy="12" r="3"></circle>
<path
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
></path>
</svg>
</button>
</aside>
<header class="header">
<div class="brand">
<span class="brand-mark"
><svg
viewBox="0 0 64 64"
width="40"
height="40"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg
></span>
<div class="brand-name">
MOONWELL<small>LUNAR · LAUNCHER</small>
</div>
</div>
<div class="player">
<div class="player-avatar">Æ</div>
<div class="player-info">
<span class="player-name">Aranthel</span
><span class="player-meta">Хранитель рощи · 47 ур.</span>
</div>
</div>
</header>
<div class="hero-copy">
<span class="hero-eyebrow"
><span class="dot"></span> Open Beta</span
>
<h1 class="hero-headline">
Свет колодца<br /><span class="accent"
>зовёт тебя домой.</span
>
</h1>
<p class="hero-sub">
Wrath of the Lich King · приватный сервер
</p>
</div>
<aside class="news-panel">
<div class="news-tabs">
<button class="news-tab active">Новости</button
><button class="news-tab">События</button
><button class="news-tab">Патчи</button>
</div>
<div class="news-list">
<a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">29.04</span>
</div>
<div class="news-title">
Открытая бета: первый сезон стартует на этой неделе
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag event">Событие</span
><span class="news-date">27.04</span>
</div>
<div class="news-title">
Лунные стражи: PvP-уикенд с тройным рейтингом
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">24.04</span>
</div>
<div class="news-title">
1.4.2 — балансировка соло-данжей и фикс Mythic+
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag notice">Объявление</span
><span class="news-date">22.04</span>
</div>
<div class="news-title">
Запланированное обслуживание реалмов 24.04 03:00 UTC
</div></a
>
</div>
<div class="news-foot">
<span>moonwell.gg</span><a href="#">Все →</a>
</div>
</aside>
<div class="actions">
<div class="action-row">
<div class="realm-pill">
<div class="realm-pulse"></div>
<div>
<div class="realm-name">ELUNE'S GRACE</div>
<div class="realm-meta">Online · 1247 players · 38ms</div>
</div>
</div>
<div class="progress-block">
<div class="progress-head">
<span class="progress-state">Пауза</span
><span class="progress-pct">6%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 6%"></div>
</div>
<div class="progress-meta">
<div class="left">
<span>3.22 / 48.80 GB</span><span></span>
</div>
<div class="right">
<span>Возобнови, чтобы продолжить</span>
</div>
</div>
</div>
<button class="play-btn pause">
<span class="icon"
><svg viewBox="0 0 24 24" fill="currentColor">
<path d="M7 5v14l12-7z"></path></svg
></span>
Продолжить
</button>
</div>
</div>
<div class="statusbar">
<span>Версия клиента <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Realmlist <strong>login.moonwell.gg</strong></span
><span class="sep">·</span
><span>Регион <strong>EU</strong></span
><span class="right">Лаунчер v1.4.2</span>
</div>
</div>
</div>
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span><span>04 · Проверка файлов</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon"></div>
<div class="bg-placeholder-mark">
<span>Place key art here</span
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
</div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<aside class="rail rail-wide">
<div class="rail-avatar">A</div>
<div class="rail-divider"></div>
<div class="rail-section-label">Игры</div>
<button
class="game-tile active"
title="MoonWell · WoW — Open Beta"
>
<span class="game-tile-mark">MW</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell · WoW</span
><span class="game-tile-tag">Open Beta</span></span
></button
><button
class="game-tile soon"
title="MoonWell Karts — Closed Alpha"
>
<span class="game-tile-mark">K</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell Karts</span
><span class="game-tile-tag">Closed Alpha</span></span
><span class="game-tile-lock">soon</span></button
><button
class="game-tile soon"
title="Tides of Elune — В разработке"
>
<span class="game-tile-mark">T</span
><span class="game-tile-info"
><span class="game-tile-name">Tides of Elune</span
><span class="game-tile-tag">В разработке</span></span
><span class="game-tile-lock">soon</span></button
><button class="game-tile soon" title="Project Verge — Анонс">
<span class="game-tile-mark">V</span
><span class="game-tile-info"
><span class="game-tile-name">Project Verge</span
><span class="game-tile-tag">Анонс</span></span
><span class="game-tile-lock">soon</span>
</button>
<div class="rail-spacer"></div>
<div class="rail-divider"></div>
<button class="rail-icon" title="Друзья">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg></button
><button class="rail-icon" title="Настройки">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<circle cx="12" cy="12" r="3"></circle>
<path
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
></path>
</svg>
</button>
</aside>
<header class="header">
<div class="brand">
<span class="brand-mark"
><svg
viewBox="0 0 64 64"
width="40"
height="40"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg
></span>
<div class="brand-name">
MOONWELL<small>LUNAR · LAUNCHER</small>
</div>
</div>
<div class="player">
<div class="player-avatar">Æ</div>
<div class="player-info">
<span class="player-name">Aranthel</span
><span class="player-meta">Хранитель рощи · 47 ур.</span>
</div>
</div>
</header>
<div class="hero-copy">
<span class="hero-eyebrow"
><span class="dot"></span> Open Beta</span
>
<h1 class="hero-headline">
Свет колодца<br /><span class="accent"
>зовёт тебя домой.</span
>
</h1>
<p class="hero-sub">
Wrath of the Lich King · приватный сервер
</p>
</div>
<aside class="news-panel">
<div class="news-tabs">
<button class="news-tab active">Новости</button
><button class="news-tab">События</button
><button class="news-tab">Патчи</button>
</div>
<div class="news-list">
<a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">29.04</span>
</div>
<div class="news-title">
Открытая бета: первый сезон стартует на этой неделе
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag event">Событие</span
><span class="news-date">27.04</span>
</div>
<div class="news-title">
Лунные стражи: PvP-уикенд с тройным рейтингом
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">24.04</span>
</div>
<div class="news-title">
1.4.2 — балансировка соло-данжей и фикс Mythic+
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag notice">Объявление</span
><span class="news-date">22.04</span>
</div>
<div class="news-title">
Запланированное обслуживание реалмов 24.04 03:00 UTC
</div></a
>
</div>
<div class="news-foot">
<span>moonwell.gg</span><a href="#">Все →</a>
</div>
</aside>
<div class="actions">
<div class="action-row">
<div class="realm-pill">
<div class="realm-pulse"></div>
<div>
<div class="realm-name">ELUNE'S GRACE</div>
<div class="realm-meta">Online · 1247 players · 38ms</div>
</div>
</div>
<div class="progress-block">
<div class="progress-head">
<span class="progress-state">Проверка файлов</span
><span class="progress-pct">38%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 38%"></div>
</div>
<div class="progress-meta">
<div class="left">
<span>18 432 / 48 121 файлов</span><span>SHA-256</span>
</div>
<div class="right"><span>~1 мин</span></div>
</div>
</div>
<button class="play-btn disabled" disabled="">
<span class="icon"
><svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M3 12a9 9 0 0 1 15.5-6.3L21 8"></path>
<path d="M21 3v5h-5"></path>
<path d="M21 12a9 9 0 0 1-15.5 6.3L3 16"></path>
<path d="M3 21v-5h5"></path></svg
></span>
Проверка…
</button>
</div>
</div>
<div class="statusbar">
<span>Версия клиента <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Realmlist <strong>login.moonwell.gg</strong></span
><span class="sep">·</span
><span>Регион <strong>EU</strong></span
><span class="right">Лаунчер v1.4.2</span>
</div>
</div>
</div>
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span><span>05 · Обновление</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon"></div>
<div class="bg-placeholder-mark">
<span>Place key art here</span
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
</div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<aside class="rail rail-wide">
<div class="rail-avatar">A</div>
<div class="rail-divider"></div>
<div class="rail-section-label">Игры</div>
<button
class="game-tile active"
title="MoonWell · WoW — Open Beta"
>
<span class="game-tile-mark">MW</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell · WoW</span
><span class="game-tile-tag">Open Beta</span></span
></button
><button
class="game-tile soon"
title="MoonWell Karts — Closed Alpha"
>
<span class="game-tile-mark">K</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell Karts</span
><span class="game-tile-tag">Closed Alpha</span></span
><span class="game-tile-lock">soon</span></button
><button
class="game-tile soon"
title="Tides of Elune — В разработке"
>
<span class="game-tile-mark">T</span
><span class="game-tile-info"
><span class="game-tile-name">Tides of Elune</span
><span class="game-tile-tag">В разработке</span></span
><span class="game-tile-lock">soon</span></button
><button class="game-tile soon" title="Project Verge — Анонс">
<span class="game-tile-mark">V</span
><span class="game-tile-info"
><span class="game-tile-name">Project Verge</span
><span class="game-tile-tag">Анонс</span></span
><span class="game-tile-lock">soon</span>
</button>
<div class="rail-spacer"></div>
<div class="rail-divider"></div>
<button class="rail-icon" title="Друзья">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg></button
><button class="rail-icon" title="Настройки">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<circle cx="12" cy="12" r="3"></circle>
<path
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
></path>
</svg>
</button>
</aside>
<header class="header">
<div class="brand">
<span class="brand-mark"
><svg
viewBox="0 0 64 64"
width="40"
height="40"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg
></span>
<div class="brand-name">
MOONWELL<small>LUNAR · LAUNCHER</small>
</div>
</div>
<div class="player">
<div class="player-avatar">Æ</div>
<div class="player-info">
<span class="player-name">Aranthel</span
><span class="player-meta">Хранитель рощи · 47 ур.</span>
</div>
</div>
</header>
<div class="hero-copy">
<span class="hero-eyebrow"
><span class="dot"></span> Open Beta</span
>
<h1 class="hero-headline">
Свет колодца<br /><span class="accent"
>зовёт тебя домой.</span
>
</h1>
<p class="hero-sub">
Wrath of the Lich King · приватный сервер
</p>
</div>
<aside class="news-panel">
<div class="news-tabs">
<button class="news-tab active">Новости</button
><button class="news-tab">События</button
><button class="news-tab">Патчи</button>
</div>
<div class="news-list">
<a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">29.04</span>
</div>
<div class="news-title">
Открытая бета: первый сезон стартует на этой неделе
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag event">Событие</span
><span class="news-date">27.04</span>
</div>
<div class="news-title">
Лунные стражи: PvP-уикенд с тройным рейтингом
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">24.04</span>
</div>
<div class="news-title">
1.4.2 — балансировка соло-данжей и фикс Mythic+
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag notice">Объявление</span
><span class="news-date">22.04</span>
</div>
<div class="news-title">
Запланированное обслуживание реалмов 24.04 03:00 UTC
</div></a
>
</div>
<div class="news-foot">
<span>moonwell.gg</span><a href="#">Все →</a>
</div>
</aside>
<div class="actions">
<div class="action-row">
<div class="realm-pill">
<div class="realm-pulse"></div>
<div>
<div class="realm-name">ELUNE'S GRACE</div>
<div class="realm-meta">Online · 1247 players · 38ms</div>
</div>
</div>
<div class="progress-block">
<div class="progress-head">
<span class="progress-state">Обновление клиента</span
><span class="progress-pct">72%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 72%"></div>
</div>
<div class="progress-meta">
<div class="left">
<span>1.4.1 → 1.4.2</span><span>180 MB / 250 MB</span>
</div>
<div class="right"><span>~30 сек</span></div>
</div>
</div>
<button class="play-btn pause">
<span class="icon"
><svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M12 3v13"></path>
<path d="M7 11l5 5 5-5"></path>
<path d="M5 21h14"></path></svg
></span>
Обновление
</button>
</div>
</div>
<div class="statusbar">
<span>Версия клиента <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Realmlist <strong>login.moonwell.gg</strong></span
><span class="sep">·</span
><span>Регион <strong>EU</strong></span
><span class="right">Лаунчер v1.4.2</span>
</div>
</div>
</div>
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span
><span>06 · MoonWell Karts (closed alpha)</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon"></div>
<div class="bg-placeholder-mark">
<span>Place key art here</span
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
</div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<aside class="rail rail-wide">
<div class="rail-avatar">A</div>
<div class="rail-divider"></div>
<div class="rail-section-label">Игры</div>
<button class="game-tile" title="MoonWell · WoW — Open Beta">
<span class="game-tile-mark">MW</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell · WoW</span
><span class="game-tile-tag">Open Beta</span></span
></button
><button
class="game-tile active soon"
title="MoonWell Karts — Closed Alpha"
>
<span class="game-tile-mark">K</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell Karts</span
><span class="game-tile-tag">Closed Alpha</span></span
><span class="game-tile-lock">soon</span></button
><button
class="game-tile soon"
title="Tides of Elune — В разработке"
>
<span class="game-tile-mark">T</span
><span class="game-tile-info"
><span class="game-tile-name">Tides of Elune</span
><span class="game-tile-tag">В разработке</span></span
><span class="game-tile-lock">soon</span></button
><button class="game-tile soon" title="Project Verge — Анонс">
<span class="game-tile-mark">V</span
><span class="game-tile-info"
><span class="game-tile-name">Project Verge</span
><span class="game-tile-tag">Анонс</span></span
><span class="game-tile-lock">soon</span>
</button>
<div class="rail-spacer"></div>
<div class="rail-divider"></div>
<button class="rail-icon" title="Друзья">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg></button
><button class="rail-icon" title="Настройки">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<circle cx="12" cy="12" r="3"></circle>
<path
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
></path>
</svg>
</button>
</aside>
<header class="header">
<div class="brand">
<span class="brand-mark"
><svg
viewBox="0 0 64 64"
width="40"
height="40"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg
></span>
<div class="brand-name">
MOONWELL<small>LUNAR · LAUNCHER</small>
</div>
</div>
<div class="player">
<div class="player-avatar">Æ</div>
<div class="player-info">
<span class="player-name">Aranthel</span
><span class="player-meta">Хранитель рощи · 47 ур.</span>
</div>
</div>
</header>
<div class="hero-copy">
<span class="hero-eyebrow"
><span class="dot"></span> Closed Alpha</span
>
<h1 class="hero-headline">
Гонки под<br /><span class="accent">лунным светом.</span>
</h1>
<p class="hero-sub">Аркадные гонки в нашей вселенной</p>
</div>
<aside class="news-panel">
<div class="news-tabs">
<button class="news-tab active">Новости</button
><button class="news-tab">События</button
><button class="news-tab">Патчи</button>
</div>
<div class="news-list">
<a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">29.04</span>
</div>
<div class="news-title">
Открытая бета: первый сезон стартует на этой неделе
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag event">Событие</span
><span class="news-date">27.04</span>
</div>
<div class="news-title">
Лунные стражи: PvP-уикенд с тройным рейтингом
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">24.04</span>
</div>
<div class="news-title">
1.4.2 — балансировка соло-данжей и фикс Mythic+
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag notice">Объявление</span
><span class="news-date">22.04</span>
</div>
<div class="news-title">
Запланированное обслуживание реалмов 24.04 03:00 UTC
</div></a
>
</div>
<div class="news-foot">
<span>moonwell.gg</span><a href="#">Все →</a>
</div>
</aside>
<div class="actions">
<div class="action-row">
<div class="realm-pill">
<div class="realm-pulse"></div>
<div>
<div class="realm-name">ELUNE'S GRACE</div>
<div class="realm-meta">Online · 1247 players · 38ms</div>
</div>
</div>
<div class="progress-block">
<div class="progress-head">
<span class="progress-state">Готов к запуску</span
><span class="progress-pct">100%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 100%"></div>
</div>
<div class="progress-meta">
<div class="left">
<span>Версия клиента 1.4.2</span
><span>Все файлы целы</span>
</div>
<div class="right">
<span>Последняя проверка: только что</span>
</div>
</div>
</div>
<button class="play-btn ready">
<span class="icon"
><svg viewBox="0 0 24 24" fill="currentColor">
<path d="M7 5v14l12-7z"></path></svg
></span>
Играть
</button>
</div>
</div>
<div class="statusbar">
<span>Версия клиента <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Realmlist <strong>login.moonwell.gg</strong></span
><span class="sep">·</span
><span>Регион <strong>EU</strong></span
><span class="right">Лаунчер v1.4.2</span>
</div>
</div>
</div>
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span><span>07 · Project Verge (анонс)</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon"></div>
<div class="bg-placeholder-mark">
<span>Place key art here</span
><span>2560×1440 · ночные эльфы / Тельдрассил</span>
</div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<aside class="rail rail-wide">
<div class="rail-avatar">A</div>
<div class="rail-divider"></div>
<div class="rail-section-label">Игры</div>
<button class="game-tile" title="MoonWell · WoW — Open Beta">
<span class="game-tile-mark">MW</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell · WoW</span
><span class="game-tile-tag">Open Beta</span></span
></button
><button
class="game-tile soon"
title="MoonWell Karts — Closed Alpha"
>
<span class="game-tile-mark">K</span
><span class="game-tile-info"
><span class="game-tile-name">MoonWell Karts</span
><span class="game-tile-tag">Closed Alpha</span></span
><span class="game-tile-lock">soon</span></button
><button
class="game-tile soon"
title="Tides of Elune — В разработке"
>
<span class="game-tile-mark">T</span
><span class="game-tile-info"
><span class="game-tile-name">Tides of Elune</span
><span class="game-tile-tag">В разработке</span></span
><span class="game-tile-lock">soon</span></button
><button
class="game-tile active soon"
title="Project Verge — Анонс"
>
<span class="game-tile-mark">V</span
><span class="game-tile-info"
><span class="game-tile-name">Project Verge</span
><span class="game-tile-tag">Анонс</span></span
><span class="game-tile-lock">soon</span>
</button>
<div class="rail-spacer"></div>
<div class="rail-divider"></div>
<button class="rail-icon" title="Друзья">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M22 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg></button
><button class="rail-icon" title="Настройки">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<circle cx="12" cy="12" r="3"></circle>
<path
d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"
></path>
</svg>
</button>
</aside>
<header class="header">
<div class="brand">
<span class="brand-mark"
><svg
viewBox="0 0 64 64"
width="40"
height="40"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg
></span>
<div class="brand-name">
MOONWELL<small>LUNAR · LAUNCHER</small>
</div>
</div>
<div class="player">
<div class="player-avatar">Æ</div>
<div class="player-info">
<span class="player-name">Aranthel</span
><span class="player-meta">Хранитель рощи · 47 ур.</span>
</div>
</div>
</header>
<div class="hero-copy">
<span class="hero-eyebrow"
><span class="dot"></span> Анонс</span
>
<h1 class="hero-headline">
За гранью<br /><span class="accent">привычного мира.</span>
</h1>
<p class="hero-sub">ARPG-песочница · собственный движок</p>
</div>
<aside class="news-panel">
<div class="news-tabs">
<button class="news-tab active">Новости</button
><button class="news-tab">События</button
><button class="news-tab">Патчи</button>
</div>
<div class="news-list">
<a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">29.04</span>
</div>
<div class="news-title">
Открытая бета: первый сезон стартует на этой неделе
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag event">Событие</span
><span class="news-date">27.04</span>
</div>
<div class="news-title">
Лунные стражи: PvP-уикенд с тройным рейтингом
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag patch">Патч</span
><span class="news-date">24.04</span>
</div>
<div class="news-title">
1.4.2 — балансировка соло-данжей и фикс Mythic+
</div></a
><a class="news-item" href="#"
><div class="news-item-head">
<span class="news-tag notice">Объявление</span
><span class="news-date">22.04</span>
</div>
<div class="news-title">
Запланированное обслуживание реалмов 24.04 03:00 UTC
</div></a
>
</div>
<div class="news-foot">
<span>moonwell.gg</span><a href="#">Все →</a>
</div>
</aside>
<div class="actions">
<div class="action-row">
<div class="realm-pill">
<div class="realm-pulse"></div>
<div>
<div class="realm-name">ELUNE'S GRACE</div>
<div class="realm-meta">Online · 1247 players · 38ms</div>
</div>
</div>
<div class="progress-block">
<div class="progress-head">
<span class="progress-state">Готов к запуску</span
><span class="progress-pct">100%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 100%"></div>
</div>
<div class="progress-meta">
<div class="left">
<span>Версия клиента 1.4.2</span
><span>Все файлы целы</span>
</div>
<div class="right">
<span>Последняя проверка: только что</span>
</div>
</div>
</div>
<button class="play-btn ready">
<span class="icon"
><svg viewBox="0 0 24 24" fill="currentColor">
<path d="M7 5v14l12-7z"></path></svg
></span>
Играть
</button>
</div>
</div>
<div class="statusbar">
<span>Версия клиента <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Realmlist <strong>login.moonwell.gg</strong></span
><span class="sep">·</span
><span>Регион <strong>EU</strong></span
><span class="right">Лаунчер v1.4.2</span>
</div>
</div>
</div>
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span><span>08 · Вход</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon" style="top: 12%; right: 60%"></div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<div class="login-stack">
<div class="login-art">
<div class="login-art-mark">
<span>Place key art here</span
><span>портрет ночного эльфа · слева</span>
</div>
<div class="login-art-quote">
«Звёздный свет проведёт тебя сквозь самые тёмные ночи — если
ты готов идти туда, куда он указывает.»<cite
>— Малфурион Ярость Бури</cite
>
</div>
</div>
<div class="login-form">
<div class="login-brand">
<span class="login-brand-mark"
><svg
viewBox="0 0 64 64"
width="28"
height="28"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg></span
><span class="login-brand-name">MOONWELL</span>
</div>
<span class="login-eyebrow">Вход</span>
<h2 class="login-h">С возвращением</h2>
<p class="login-sub">
Войди в свой аккаунт, чтобы продолжить путь.
</p>
<div class="login-tabs">
<button class="login-tab active">Вход</button
><button class="login-tab">Регистрация</button>
</div>
<div class="field">
<label class="field-label">Логин или email</label
><input
class="field-input"
placeholder="Aranthel"
value="aranthel"
/>
</div>
<div class="field">
<label class="field-label">Пароль</label
><input
class="field-input"
type="password"
value="••••••••••"
/>
</div>
<div class="login-row">
<label
><input type="checkbox" checked="" /> Запомнить
меня</label
><a href="#">Забыли пароль?</a>
</div>
<button class="login-submit">
Войти
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14M13 6l6 6-6 6"></path>
</svg>
</button>
<div class="login-foot">
moonwell · v 1.4.2 · login.moonwell.gg
</div>
</div>
</div>
<div class="statusbar" style="left: 0px">
<span>Версия лаунчера <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Соединение <strong>защищено TLS</strong></span
><span class="right">© 2026 MoonWell</span>
</div>
</div>
</div>
<div class="stage-cell">
<div class="stage-label">
<span class="dot"></span><span>09 · Регистрация</span>
</div>
<div style="height: 12px"></div>
<div class="launcher" data-variant="forest">
<div class="bg-art"></div>
<div class="bg-stars"></div>
<div class="bg-moon" style="top: 12%; right: 60%"></div>
<div class="win-titlebar">
<div class="win-title-spacer"></div>
<div class="win-buttons">
<button class="win-btn">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14"></path>
</svg></button
><button class="win-btn close">
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M6 6l12 12M18 6L6 18"></path>
</svg>
</button>
</div>
</div>
<div class="login-stack">
<div class="login-art">
<div class="login-art-mark">
<span>Place key art here</span
><span>портрет ночного эльфа · слева</span>
</div>
<div class="login-art-quote">
«Звёздный свет проведёт тебя сквозь самые тёмные ночи — если
ты готов идти туда, куда он указывает.»<cite
>— Малфурион Ярость Бури</cite
>
</div>
</div>
<div class="login-form">
<div class="login-brand">
<span class="login-brand-mark"
><svg
viewBox="0 0 64 64"
width="28"
height="28"
fill="none"
>
<circle
cx="32"
cy="32"
r="22"
stroke="currentColor"
stroke-width="1.2"
opacity="0.4"
></circle>
<path
d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z"
fill="currentColor"
></path>
<circle
cx="32"
cy="32"
r="30"
stroke="currentColor"
stroke-width="0.5"
opacity="0.2"
stroke-dasharray="2 4"
></circle></svg></span
><span class="login-brand-name">MOONWELL</span>
</div>
<span class="login-eyebrow">Регистрация</span>
<h2 class="login-h">Создай героя</h2>
<p class="login-sub">
Введи инвайт-код и придумай имя для лунного героя.
</p>
<div class="login-tabs">
<button class="login-tab">Вход</button
><button class="login-tab active">Регистрация</button>
</div>
<div class="field">
<label class="field-label">Инвайт-код</label
><input
class="field-input"
placeholder="ABCD-EFGH-IJKL"
style="font-family: var(--f-mono); letter-spacing: 0.14em"
value="MOON-WELL-2026"
/>
</div>
<div class="field">
<label class="field-label">Логин</label
><input class="field-input" placeholder="Moonwalker" />
</div>
<div class="field">
<label class="field-label">Email</label
><input
class="field-input"
type="email"
placeholder="player@example.com"
/>
</div>
<div class="field">
<label class="field-label">Пароль</label
><input
class="field-input"
type="password"
placeholder="Минимум 8 символов"
/>
</div>
<button class="login-submit">
Создать аккаунт
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
>
<path d="M5 12h14M13 6l6 6-6 6"></path>
</svg>
</button>
<div class="login-foot">
moonwell · v 1.4.2 · login.moonwell.gg
</div>
</div>
</div>
<div class="statusbar" style="left: 0px">
<span>Версия лаунчера <strong>1.4.2</strong></span
><span class="sep">·</span
><span>Соединение <strong>защищено TLS</strong></span
><span class="right">© 2026 MoonWell</span>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="blob:null/c6d81bf0-ccd0-4944-bc78-753266c4f047"></script>
<script src="blob:null/9b1a5d84-adb2-485c-8938-eb58a6c40aea"></script>
<script src="blob:null/33ef3769-be3e-47ab-a3e7-b746877b7114"></script>
<script type="text/babel">
// Icon set for the launcher const LIcons = { min: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M5 12h14"/></svg>, close: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M6 6l12 12M18 6L6 18"/></svg>, play: <svg viewBox="0 0 24 24" fill="currentColor"><path d="M7 5v14l12-7z"/></svg>, pause: <svg viewBox="0 0 24 24" fill="currentColor"><rect x="6" y="5" width="4" height="14" rx="1"/><rect x="14" y="5" width="4" height="14" rx="1"/></svg>, refresh: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M3 12a9 9 0 0 1 15.5-6.3L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-15.5 6.3L3 16"/><path d="M3 21v-5h5"/></svg>, arrow: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M5 12h14M13 6l6 6-6 6"/></svg>, cog: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 0 1 0 2.8 2 2 0 0 1-2.8 0l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 0 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 0 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 0 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 0 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3 1.7 1.7 0 0 0 1-1.5V3a2 2 0 0 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 0 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8 1.7 1.7 0 0 0 1.5 1H21a2 2 0 0 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/></svg>, friends: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>, news: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M4 4h13v16H4z"/><path d="M17 8h3v10a2 2 0 0 1-2 2"/><path d="M7 8h7M7 12h7M7 16h4"/></svg>, shop: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M3 7h18l-2 12H5z"/><path d="M8 7a4 4 0 0 1 8 0"/></svg>, moon: <svg viewBox="0 0 24 24" fill="currentColor"><path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/></svg>, download: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M12 3v13"/><path d="M7 11l5 5 5-5"/><path d="M5 21h14"/></svg>, warning: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M12 3l10 18H2z"/><path d="M12 10v5M12 18v.01"/></svg>, arrow_left: <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.5"><path d="M19 12H5M11 18l-6-6 6-6"/></svg>, }; function MoonMark({ size = 32 }) { return ( <svg viewBox="0 0 64 64" width={size} height={size} fill="none"> <circle cx="32" cy="32" r="22" stroke="currentColor" strokeWidth="1.2" opacity="0.4"/> <path d="M40 14 A22 22 0 1 0 40 50 A16 16 0 1 1 40 14 Z" fill="currentColor"/> <circle cx="32" cy="32" r="30" stroke="currentColor" strokeWidth="0.5" opacity="0.2" strokeDasharray="2 4"/> </svg> ); } Object.assign(window, { LIcons, MoonMark });
</script>
<script type="text/babel">
// Main launcher window const { useState } = React; const GAMES = [ { id: "wow", short: "MW", name: "MoonWell · WoW", tag: "Open Beta", subtitle: "Wrath of the Lich King · приватный сервер", live: true }, { id: "karts", short: "K", name: "MoonWell Karts", tag: "Closed Alpha", subtitle: "Аркадные гонки в нашей вселенной", live: false }, { id: "tides", short: "T", name: "Tides of Elune", tag: "В разработке", subtitle: "Карточная стратегия по мотивам сервера", live: false }, { id: "verge", short: "V", name: "Project Verge", tag: "Анонс", subtitle: "ARPG-песочница · собственный движок", live: false }, ]; function LauncherWindow({ variant = "forest", state = "ready", title = "Главный — готов играть", game = "wow" }) { const [tab, setTab] = useState("news"); const activeGame = GAMES.find((g) => g.id === game) || GAMES[0]; const news = { news: [ { tag: "patch", tagLabel: "Патч", date: "29.04", title: "Открытая бета: первый сезон стартует на этой неделе" }, { tag: "event", tagLabel: "Событие", date: "27.04", title: "Лунные стражи: PvP-уикенд с тройным рейтингом" }, { tag: "patch", tagLabel: "Патч", date: "24.04", title: "1.4.2 — балансировка соло-данжей и фикс Mythic+" }, { tag: "notice", tagLabel: "Объявление", date: "22.04", title: "Запланированное обслуживание реалмов 24.04 03:00 UTC" }, ], events: [ { tag: "event", tagLabel: "Событие", date: "01.05", title: "Канун Лунной ночи — задания и временный босс в Тельдрассиле" }, { tag: "event", tagLabel: "Событие", date: "29.04", title: "Лунные стражи: PvP-уикенд с тройным рейтингом" }, ], patch: [ { tag: "patch", tagLabel: "1.4.2", date: "24.04", title: "Балансировка соло-данжей: Heroic Stratholme" }, { tag: "patch", tagLabel: "1.4.1", date: "18.04", title: "Mythic+ — новые аффиксы недели" }, { tag: "patch", tagLabel: "1.4.0", date: "10.04", title: "Старт открытой беты Wrath" }, ], }; // Determine visible action UI per state const isReady = state === "ready"; const isDownloading = state === "downloading"; const isPaused = state === "paused"; const isVerify = state === "verify"; const isUpdate = state === "update"; const stateMeta = { ready: { label: "Готов к запуску", pct: 100 }, downloading: { label: "Загрузка", pct: 6 }, paused: { label: "Пауза", pct: 6 }, verify: { label: "Проверка файлов", pct: 38 }, update: { label: "Обновление клиента", pct: 72 }, }[state]; const playBtn = (() => { if (isReady) return <button className="play-btn ready"><span className="icon">{LIcons.play}</span> Играть</button>; if (isDownloading) return <button className="play-btn pause"><span className="icon">{LIcons.pause}</span> Пауза</button>; if (isPaused) return <button className="play-btn pause"><span className="icon">{LIcons.play}</span> Продолжить</button>; if (isVerify) return <button className="play-btn disabled" disabled><span className="icon">{LIcons.refresh}</span> Проверка…</button>; if (isUpdate) return <button className="play-btn pause"><span className="icon">{LIcons.download}</span> Обновление</button>; return null; })(); return ( <div className="stage-cell"> <div className="stage-label"><span className="dot"></span><span>{title}</span></div> <div style={{ height: 12 }} /> <div className="launcher" data-variant={variant}> {/* Background */} <div className="bg-art"></div> <div className="bg-stars"></div> <div className="bg-moon"></div> <div className="bg-placeholder-mark"> <span>Place key art here</span> <span>2560×1440 · ночные эльфы / Тельдрассил</span> </div> {/* Title bar */} <div className="win-titlebar"> <div className="win-title-spacer"></div> <div className="win-buttons"> <button className="win-btn">{LIcons.min}</button> <button className="win-btn close">{LIcons.close}</button> </div> </div> {/* Left rail with games list */} <aside className="rail rail-wide"> <div className="rail-avatar">A</div> <div className="rail-divider"></div> <div className="rail-section-label">Игры</div> {GAMES.map((g) => ( <button key={g.id} className={`game-tile ${g.id === activeGame.id ? "active" : ""} ${g.live ? "" : "soon"}`} title={`${g.name} — ${g.tag}`} > <span className="game-tile-mark">{g.short}</span> <span className="game-tile-info"> <span className="game-tile-name">{g.name}</span> <span className="game-tile-tag">{g.tag}</span> </span> {!g.live && <span className="game-tile-lock">soon</span>} </button> ))} <div className="rail-spacer"></div> <div className="rail-divider"></div> <button className="rail-icon" title="Друзья">{LIcons.friends}</button> <button className="rail-icon" title="Настройки">{LIcons.cog}</button> </aside> {/* Header — brand + player chip */} <header className="header"> <div className="brand"> <span className="brand-mark"><MoonMark size={40} /></span> <div className="brand-name"> MOONWELL <small>LUNAR · LAUNCHER</small> </div> </div> <div className="player"> <div className="player-avatar">Æ</div> <div className="player-info"> <span className="player-name">Aranthel</span> <span className="player-meta">Хранитель рощи · 47 ур.</span> </div> </div> </header> {/* Hero copy — depends on active game */} <div className="hero-copy"> <span className="hero-eyebrow"><span className="dot"></span> {activeGame.tag}</span> <h1 className="hero-headline"> {activeGame.id === "wow" && <>Свет колодца<br/><span className="accent">зовёт тебя домой.</span></>} {activeGame.id === "karts" && <>Гонки под<br/><span className="accent">лунным светом.</span></>} {activeGame.id === "tides" && <>Колода судьбы<br/><span className="accent">в твоих руках.</span></>} {activeGame.id === "verge" && <>За гранью<br/><span className="accent">привычного мира.</span></>} </h1> <p className="hero-sub">{activeGame.subtitle}</p> </div> {/* News panel */} <aside className="news-panel"> <div className="news-tabs"> <button className={`news-tab ${tab === 'news' ? 'active' : ''}`} onClick={() => setTab('news')}>Новости</button> <button className={`news-tab ${tab === 'events' ? 'active' : ''}`} onClick={() => setTab('events')}>События</button> <button className={`news-tab ${tab === 'patch' ? 'active' : ''}`} onClick={() => setTab('patch')}>Патчи</button> </div> <div className="news-list"> {news[tab].map((n, i) => ( <a key={i} className="news-item" href="#"> <div className="news-item-head"> <span className={`news-tag ${n.tag}`}>{n.tagLabel}</span> <span className="news-date">{n.date}</span> </div> <div className="news-title">{n.title}</div> </a> ))} </div> <div className="news-foot"> <span>moonwell.gg</span> <a href="#">Все →</a> </div> </aside> {/* Actions bar */} <div className="actions"> <div className="action-row"> <div className="realm-pill"> <div className="realm-pulse"></div> <div> <div className="realm-name">ELUNE'S GRACE</div> <div className="realm-meta">Online · 1247 players · 38ms</div> </div> </div> <div className="progress-block"> <div className="progress-head"> <span className="progress-state">{stateMeta.label}</span> <span className="progress-pct">{stateMeta.pct}%</span> </div> <div className="progress-bar"> <div className="progress-fill" style={{ width: stateMeta.pct + '%' }}></div> </div> <div className="progress-meta"> <div className="left"> {isDownloading && <><span>3.22 / 48.80 GB</span><span>4.95 MB/s</span></>} {isPaused && <><span>3.22 / 48.80 GB</span><span>—</span></>} {isVerify && <><span>18 432 / 48 121 файлов</span><span>SHA-256</span></>} {isUpdate && <><span>1.4.1 → 1.4.2</span><span>180 MB / 250 MB</span></>} {isReady && <><span>Версия клиента 1.4.2</span><span>Все файлы целы</span></>} </div> <div className="right"> {isDownloading && <span>Осталось ~2:37:11</span>} {isPaused && <span>Возобнови, чтобы продолжить</span>} {isVerify && <span>~1 мин</span>} {isUpdate && <span>~30 сек</span>} {isReady && <span>Последняя проверка: только что</span>} </div> </div> </div> {playBtn} </div> </div> {/* Status bar */} <div className="statusbar"> <span>Версия клиента <strong>1.4.2</strong></span> <span className="sep">·</span> <span>Realmlist <strong>login.moonwell.gg</strong></span> <span className="sep">·</span> <span>Регион <strong>EU</strong></span> <span className="right">Лаунчер v1.4.2</span> </div> </div> </div> ); } Object.assign(window, { LauncherWindow });
</script>
<script type="text/babel">
// Login / register screen overlay function LoginWindow({ variant = "temple", mode = "login", title = "Логин" }) { const [tab, setTab] = React.useState(mode); return ( <div className="stage-cell"> <div className="stage-label"><span className="dot"></span><span>{title}</span></div> <div style={{ height: 12 }} /> <div className="launcher" data-variant={variant}> <div className="bg-art"></div> <div className="bg-stars"></div> <div className="bg-moon" style={{ top: '12%', right: '60%' }}></div> <div className="win-titlebar"> <div className="win-title-spacer"></div> <div className="win-buttons"> <button className="win-btn">{LIcons.min}</button> <button className="win-btn close">{LIcons.close}</button> </div> </div> <div className="login-stack"> <div className="login-art"> <div className="login-art-mark"> <span>Place key art here</span> <span>портрет ночного эльфа · слева</span> </div> <div className="login-art-quote"> «Звёздный свет проведёт тебя сквозь самые тёмные ночи — если ты готов идти туда, куда он указывает.» <cite>— Малфурион Ярость Бури</cite> </div> </div> <div className="login-form"> <div className="login-brand"> <span className="login-brand-mark"><MoonMark size={28} /></span> <span className="login-brand-name">MOONWELL</span> </div> <span className="login-eyebrow">{tab === "login" ? "Вход" : "Регистрация"}</span> <h2 className="login-h">{tab === "login" ? "С возвращением" : "Создай героя"}</h2> <p className="login-sub"> {tab === "login" ? "Войди в свой аккаунт, чтобы продолжить путь." : "Введи инвайт-код и придумай имя для лунного героя."} </p> <div className="login-tabs"> <button className={`login-tab ${tab === "login" ? "active" : ""}`} onClick={() => setTab("login")}>Вход</button> <button className={`login-tab ${tab === "register" ? "active" : ""}`} onClick={() => setTab("register")}>Регистрация</button> </div> {tab === "login" ? ( <> <div className="field"> <label className="field-label">Логин или email</label> <input className="field-input" placeholder="Aranthel" defaultValue="aranthel" /> </div> <div className="field"> <label className="field-label">Пароль</label> <input className="field-input" type="password" defaultValue="••••••••••" /> </div> <div className="login-row"> <label><input type="checkbox" defaultChecked /> Запомнить меня</label> <a href="#">Забыли пароль?</a> </div> <button className="login-submit">Войти {LIcons.arrow}</button> </> ) : ( <> <div className="field"> <label className="field-label">Инвайт-код</label> <input className="field-input" placeholder="ABCD-EFGH-IJKL" defaultValue="MOON-WELL-2026" style={{ fontFamily: "var(--f-mono)", letterSpacing: "0.14em" }} /> </div> <div className="field"> <label className="field-label">Логин</label> <input className="field-input" placeholder="Moonwalker" /> </div> <div className="field"> <label className="field-label">Email</label> <input className="field-input" type="email" placeholder="player@example.com" /> </div> <div className="field"> <label className="field-label">Пароль</label> <input className="field-input" type="password" placeholder="Минимум 8 символов" /> </div> <button className="login-submit">Создать аккаунт {LIcons.arrow}</button> </> )} <div className="login-foot">moonwell · v 1.4.2 · login.moonwell.gg</div> </div> </div> <div className="statusbar" style={{ left: 0 }}> <span>Версия лаунчера <strong>1.4.2</strong></span> <span className="sep">·</span> <span>Соединение <strong>защищено TLS</strong></span> <span className="right">© 2026 MoonWell</span> </div> </div> </div> ); } Object.assign(window, { LoginWindow });
</script>
<script type="text/babel">
// App: presents all states side-by-side as a design canvas const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "variant": "forest" }/*EDITMODE-END*/; function App() { const [variant, setVariant] = React.useState(TWEAK_DEFAULTS.variant); const [editMode, setEditMode] = React.useState(false); React.useEffect(() => { const onMsg = (e) => { if (!e.data || typeof e.data !== "object") return; if (e.data.type === "__activate_edit_mode") setEditMode(true); if (e.data.type === "__deactivate_edit_mode") setEditMode(false); }; window.addEventListener("message", onMsg); window.parent.postMessage({ type: "__edit_mode_available" }, "*"); return () => window.removeEventListener("message", onMsg); }, []); const setKey = (k, v) => { if (k === "variant") setVariant(v); window.parent.postMessage({ type: "__edit_mode_set_keys", edits: { [k]: v } }, "*"); }; return ( <div className="stage"> <div style={{ textAlign: "center", padding: "20px 0 10px" }}> <div style={{ fontFamily: "var(--f-display)", fontSize: 28, letterSpacing: "0.24em", color: "var(--ivory)" }}> MOONWELL · LAUNCHER </div> <div style={{ fontFamily: "var(--f-serif)", fontStyle: "italic", color: "var(--text-mute)", marginTop: 6 }}> Главный экран, состояния загрузки, экран входа — всё в одном холсте. </div> </div> <div className="stage-grid"> <LauncherWindow variant={variant} state="ready" game="wow" title="01 · Главная — WoW · готов играть" /> <LauncherWindow variant={variant} state="downloading" game="wow" title="02 · Скачивание клиента" /> <LauncherWindow variant={variant} state="paused" game="wow" title="03 · Пауза" /> <LauncherWindow variant={variant} state="verify" game="wow" title="04 · Проверка файлов" /> <LauncherWindow variant={variant} state="update" game="wow" title="05 · Обновление" /> <LauncherWindow variant={variant} state="ready" game="karts" title="06 · MoonWell Karts (closed alpha)" /> <LauncherWindow variant={variant} state="ready" game="verge" title="07 · Project Verge (анонс)" /> <LoginWindow variant={variant} mode="login" title="08 · Вход" /> <LoginWindow variant={variant} mode="register" title="09 · Регистрация" /> </div> {editMode && ( <div className="tweaks-host"> <h4>Tweaks</h4> <div className="tweaks-row"> <label>Настроение</label> <div className="tweaks-seg"> <button className={variant === "forest" ? "active" : ""} onClick={() => setKey("variant", "forest")} > Лес </button> <button className={variant === "temple" ? "active" : ""} onClick={() => setKey("variant", "temple")} > Храм </button> </div> </div> <div style={{ fontFamily: "var(--f-mono)", fontSize: 10, color: "var(--text-mute)", letterSpacing: "0.1em", marginTop: 4 }}> переключает все окна сразу </div> </div> )} </div> ); } const root = ReactDOM.createRoot(document.getElementById("root")); root.render(<App />);
</script>
</body>
</html>