* {
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
}

:root {
    --app-scale: 1;
    --design-scale: 0.3472222222;
    --stage-height: 4620px;
    --gold: #fcefc2;
    --gold-strong: #ffb56b;
    --deep-purple: #1a0029;
}

html,
body {
    margin: 0;
    width: 100%;
    min-height: 100%;
    overflow-x: hidden;
    background: #12001d;
    color: var(--gold);
    font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
}

button {
    border: 0;
    padding: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    cursor: pointer;
    outline: none;
}

button:focus-visible {
    outline: 3px solid rgba(255, 239, 194, 0.72);
    outline-offset: 4px;
}

.app-viewport {
    position: relative;
    width: 375px;
    min-height: 1605px;
    margin: 0 auto;
    transform: scale(var(--app-scale));
    transform-origin: top center;
}

.page,
.stage-wrap {
    position: relative;
    width: 375px;
    min-height: 1605px;
    overflow: hidden;
    background: var(--deep-purple);
}

.stage-wrap {
    height: 1605px;
}

.stage {
    position: absolute;
    left: 0;
    top: 0;
    width: 1080px;
    height: var(--stage-height);
    overflow: hidden;
    transform: scale(var(--design-scale));
    transform-origin: top left;
    background: var(--deep-purple);
}

.stage > * {
    position: absolute;
    z-index: 1;
}

.bg-hall {
    left: 0;
    width: 1080px;
    height: 1919px;
    object-fit: cover;
    object-position: center center;
    pointer-events: none;
    z-index: 0;
}

.bg-hall-hero {
    top: 94px;
    -webkit-mask: url('./assets/mask-bg-hero.svg') 0 0 / 1080px 1919px no-repeat;
    mask: url('./assets/mask-bg-hero.svg') 0 0 / 1080px 1919px no-repeat;
}

.bg-hall-top {
    top: 1095px;
    opacity: 0.4;
    -webkit-mask: url('./assets/mask-bg-top.svg') 0 0 / 1080px 1919px no-repeat;
    mask: url('./assets/mask-bg-top.svg') 0 0 / 1080px 1919px no-repeat;
}

.bg-hall-repeat-a {
    top: 2233px;
    opacity: 0.4;
    -webkit-mask: url('./assets/mask-bg-repeat.svg') 0 0 / 1080px 1919px
        no-repeat;
    mask: url('./assets/mask-bg-repeat.svg') 0 0 / 1080px 1919px no-repeat;
}

.bg-hall-repeat-b {
    top: 3163px;
    opacity: 0.4;
    -webkit-mask: url('./assets/mask-bg-repeat.svg') 0 0 / 1080px 1919px
        no-repeat;
    mask: url('./assets/mask-bg-repeat.svg') 0 0 / 1080px 1919px no-repeat;
}

.top-fade {
    left: 0;
    top: 0;
    width: 1080px;
    height: 235px;
    pointer-events: none;
    z-index: 1;
    background: linear-gradient(180deg, #1a0029 41%, rgba(26, 0, 41, 0));
}

.language-tabs {
    left: 18px;
    top: 46px;
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 6px;
    align-items: center;
    width: 1026px;
    height: 70px;
    direction: ltr;
    z-index: 6;
}

.language-tab {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: 100%;
    height: 57px;
    padding: 0 10px;
    border: 2px solid #fde5cc;
    border-radius: 39px;
    background: linear-gradient(180deg, #4d145a, #210a34);
    color: #ffdfaf;
    font-size: 22px;
    font-weight: 800;
    line-height: 27px;
    text-align: center;
    text-shadow: 0 1px 7px rgba(87, 16, 110, 0.82);
}

.language-tab span {
    position: relative;
    z-index: 1;
}

.language-tab.is-active {
    background: linear-gradient(180deg, #6b2a72, #2b0c46);
    color: #fff8e4;
    box-shadow:
        inset 0 0 18px rgba(255, 222, 151, 0.2),
        0 0 14px rgba(255, 203, 116, 0.22);
}

.hero {
    inset: 0 auto auto 0;
    width: 1080px;
    height: 1339px;
}

.hero-title {
    position: absolute;
    left: 56px;
    top: 107px;
    width: 968px;
    height: 425px;
    object-fit: fill;
    pointer-events: none;
}

.hero-subtitle {
    position: absolute;
    left: 345px;
    top: 479px;
    margin: 0;
    color: #741eb5;
    font-size: 30px;
    font-weight: 800;
    line-height: 38px;
    text-transform: capitalize;
    white-space: nowrap;
}

.hero-shadow {
    position: absolute;
    left: 182px;
    top: 1257px;
    width: 698px;
    height: 89px;
    mix-blend-mode: multiply;
    pointer-events: none;
}

.hero-cat {
    position: absolute;
    left: 210px;
    top: 519px;
    width: 642px;
    height: 820px;
    object-fit: cover;
    pointer-events: none;
}

.countdown {
    left: 0;
    top: 1338px;
    width: 1080px;
    height: 160px;
    z-index: 3;
}

.count-cell {
    position: absolute;
    top: 0;
    width: 201px;
    height: 160px;
}

.count-days {
    left: 87px;
}

.count-hours {
    left: 321px;
}

.count-minutes {
    left: 555px;
}

.count-seconds {
    left: 789px;
}

.count-cell img {
    position: absolute;
    inset: 0;
    width: 201px;
    height: 160px;
    object-fit: fill;
    pointer-events: none;
}

.count-cell strong,
.count-cell span,
.section-title h2,
.apply-button span,
.qualification-card strong,
.reward-head strong,
.record-row strong {
    background: linear-gradient(180deg, var(--gold) 50%, var(--gold-strong));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.count-cell strong {
    position: absolute;
    left: 0;
    top: 32px;
    width: 201px;
    font-size: 52px;
    font-weight: 900;
    line-height: 52px;
    text-align: center;
}

.count-cell span {
    position: absolute;
    left: 0;
    top: 92px;
    width: 201px;
    font-size: 24px;
    font-weight: 500;
    line-height: 32px;
    text-align: center;
    white-space: nowrap;
}

.opening-section {
    left: 0;
    width: 1080px;
}

.qualification-section {
    top: 1498px;
    height: 735px;
}

.rewards-section {
    top: 2245px;
    height: 800px;
}

.rules-section {
    top: 3057px;
    height: 768px;
}

.record-section {
    top: 3837px;
    height: 672px;
}

.section-title {
    position: absolute;
    left: 93px;
    top: 0;
    width: 895px;
    height: 189px;
    z-index: 4;
}

.section-title img {
    position: absolute;
    inset: 0;
    width: 895px;
    height: 189px;
    object-fit: fill;
    pointer-events: none;
}

.section-title h2 {
    position: absolute;
    left: 0;
    top: 101px;
    width: 895px;
    margin: 0;
    font-size: 42px;
    font-weight: 900;
    line-height: 44px;
    text-align: center;
    text-transform: capitalize;
    white-space: nowrap;
}

.ornate-panel {
    position: absolute;
    left: 19px;
    width: 1042px;
    height: var(--panel-height);
    pointer-events: none;
    z-index: 1;
}

.frame-qualification {
    top: 72px;
    --bottom-source-top: -561px;
    --panel-height: 663px;
}

.frame-rewards {
    top: 72px;
    --bottom-source-top: -496px;
    --panel-height: 728px;
}

.frame-rules {
    top: 72px;
    --bottom-source-top: -528px;
    --panel-height: 696px;
}

.frame-record {
    top: 72px;
    --bottom-source-top: -624px;
    --panel-height: 600px;
}

.frame-piece {
    position: absolute;
    left: 0;
    width: 1042px;
    height: 1224px;
    background-size: 1042px 1224px;
    background-repeat: no-repeat;
}

.frame-piece-top {
    top: 0;
    background-image: url('./assets/frame-top-source.webp');
    -webkit-mask: url('./assets/frame-top-mask.svg') 0 0 / 1042px 495px
        no-repeat;
    mask: url('./assets/frame-top-mask.svg') 0 0 / 1042px 495px no-repeat;
}

.frame-piece-bottom {
    top: var(--bottom-source-top);
    background-image: url('./assets/frame-bottom-source.webp');
    -webkit-mask: url('./assets/frame-bottom-mask.svg') 0 867px / 1042px 357px
        no-repeat;
    mask: url('./assets/frame-bottom-mask.svg') 0 867px / 1042px 357px no-repeat;
}

.qualification-grid {
    position: absolute;
    left: 109px;
    top: 235px;
    display: grid;
    grid-template-columns: repeat(3, 270px);
    gap: 20px;
    z-index: 3;
}

.qualification-card {
    position: relative;
    width: 270px;
    height: 154px;
    border: 2px solid #fde5cc;
    border-radius: 26px;
    background: linear-gradient(180deg, #4d145a, #210a34);
}

.qualification-card p {
    position: absolute;
    left: 0;
    top: 34px;
    width: 270px;
    margin: 0;
    color: var(--gold);
    font-size: 26px;
    font-weight: 500;
    line-height: 30px;
    text-align: center;
}

.qualification-card strong {
    position: absolute;
    left: 0;
    top: 88px;
    width: 270px;
    font-size: 38px;
    font-weight: 900;
    line-height: 40px;
    text-align: center;
    white-space: nowrap;
}

.qualification-card .status-icon {
    position: absolute;
    right: -14px;
    bottom: -12px;
    display: none;
    width: 70px;
    height: 70px;
    object-fit: contain;
    pointer-events: none;
}

.qualification-card.is-qualified .status-icon {
    display: block;
}

.apply-button {
    position: absolute;
    left: 217px;
    top: 420px;
    width: 646px;
    height: 137px;
    z-index: 4;
}

.apply-button img {
    position: absolute;
    inset: 0;
    width: 646px;
    height: 137px;
    object-fit: fill;
    pointer-events: none;
}

.apply-button span {
    position: absolute;
    left: 0;
    top: 50px;
    width: 646px;
    font-size: 36px;
    font-weight: 900;
    line-height: 38px;
    text-align: center;
    white-space: nowrap;
}

.apply-button.is-loading {
    filter: saturate(0.7);
    pointer-events: none;
}

.apply-button.is-joined span {
    opacity: 0.78;
}

.eligibility-text {
    position: absolute;
    left: 0;
    top: 563px;
    width: 1080px;
    margin: 0;
    color: var(--gold);
    font-size: 28px;
    font-weight: 500;
    line-height: 32px;
    text-align: center;
    white-space: nowrap;
    z-index: 3;
}

.reward-table {
    position: absolute;
    left: 90px;
    top: 206px;
    width: 900px;
    z-index: 3;
}

.reward-head {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    height: 71px;
}

.reward-head strong {
    font-size: 34px;
    font-weight: 900;
    line-height: 38px;
    text-align: center;
}

.table-line,
.reward-row::after,
.record-row::after {
    position: absolute;
    left: 26px;
    right: 26px;
    bottom: 0;
    height: 2px;
    content: '';
    background: linear-gradient(
        90deg,
        rgba(255, 255, 192, 0),
        #ffffc0 50%,
        rgba(255, 255, 192, 0)
    );
}

.table-line {
    left: 26px;
    right: 26px;
    top: 71px;
    bottom: auto;
}

.reward-rows {
    position: relative;
    width: 900px;
}

.reward-row {
    position: relative;
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    width: 900px;
    height: 80px;
    background: url('./assets/table-row.svg') center center / 900px 76px
        no-repeat;
    color: var(--gold);
    font-size: 28px;
    font-weight: 800;
    line-height: 38px;
    text-align: center;
}

.rules-list {
    position: absolute;
    left: 119px;
    top: 258px;
    width: 842px;
    margin: 0;
    padding: 0 0 0 48px;
    color: var(--gold);
    font-size: 30px;
    font-weight: 500;
    line-height: 48px;
    text-transform: capitalize;
    z-index: 3;
}

.rules-list li {
    padding-left: 0;
}

.record-table {
    position: absolute;
    left: 90px;
    top: 220px;
    width: 900px;
    z-index: 3;
}

.record-row {
    position: relative;
    display: grid;
    grid-template-columns: 398px 1fr;
    align-items: center;
    width: 900px;
    height: 80px;
    background: url('./assets/table-row.svg') center center / 900px 76px
        no-repeat;
}

.record-row span {
    color: var(--gold);
    font-size: 28px;
    font-weight: 800;
    line-height: 38px;
    text-align: right;
    white-space: nowrap;
}

.record-row strong {
    padding-left: 104px;
    font-size: 34px;
    font-weight: 900;
    line-height: 38px;
    white-space: nowrap;
}

@media (min-width: 431px) {
    html,
    body {
        background: #100019;
    }
}
