:root,
:root.light-mode {
    --random-text-color: #111111;
    --random-error-color: #d60f0f;
    --random-gray-color: #acacac;
    --random-dim-gray-color: #444444;
    --random-border-color: #666666;
    --random-title-color: #0c78e3;
    --random-subtitle-color: #222222;
    --random-focus-color: #000000;
    --random-accent-color: #1a7fe4;
    --random-input-bg-color: #fefeff;
    --random-input-border-color: #b4b4b4;
    --random-input-focus-color: #007bf7;
    --random-input-focus-bg-color: #f7fbff;
    --random-input-invalid-color: #d60f0f;
    --random-input-invalid-bg-color: #f9f4f4;
    --random-input-area-bg-color: #f9f9f9;
    --random-input-area-border-color: #b4b4b4;
    --random-input-area-hover-color: #646464;
    --random-button-bg-color: #2580e0;
    --random-button-border-color: #1a7fe4;
    --random-button-shadow-color: #007bf7;
    --random-button-hover-bg-color: #1a69c0;
    --random-button-text-color: #fefefe;
    --random-item-bg-color: #f3f7fa;
    --random-item-bg-even-color: #f6f6f7;
    --random-item-text-color: #111111;
    --random-item-border-color: #bababa;
}

:root.dark-mode {
    --random-text-color: #eeeeee;
    --random-error-color: #ff4d4d;
    --random-dim-gray-color: #bbbbbb;
    --random-border-color: #666666;
    --random-title-color: #2e97ff;
    --random-subtitle-color: #dddddd;
    --random-focus-color: #fbfbfb;
    --random-accent-color: #2e97ff;
    --random-input-bg-color: #282828;
    --random-input-border-color: #8b8b8b;
    --random-input-focus-color: #59b2ff;
    --random-input-focus-bg-color: #2e2e30;
    --random-input-invalid-color: #ff4d4d;
    --random-input-invalid-bg-color: #362d2d;
    --random-input-area-bg-color: #303030;
    --random-input-area-border-color: #858585;
    --random-input-area-hover-color: #d0d0d0;
    --random-button-bg-color: #103966;
    --random-button-border-color: #3088e0;
    --random-button-shadow-color: #5fafff;
    --random-button-hover-bg-color: #15487f;
    --random-button-text-color: #eeeeee;
    --random-item-bg-color: #262627;
    --random-item-bg-even-color: #252526;
    --random-item-text-color: #dddddd;
    --random-item-border-color: #888888;
}

@media (prefers-color-scheme: dark) {
    :root:not(.light-mode) {
        --random-text-color: #eeeeee;
        --random-error-color: #ff4d4d;
        --random-dim-gray-color: #bbbbbb;
        --random-border-color: #666666;
        --random-title-color: #2e97ff;
        --random-subtitle-color: #dddddd;
        --random-focus-color: #fbfbfb;
        --random-accent-color: #2e97ff;
        --random-input-bg-color: #282828;
        --random-input-border-color: #8b8b8b;
        --random-input-focus-color: #59b2ff;
        --random-input-focus-bg-color: #2e2e30;
        --random-input-invalid-color: #ff4d4d;
        --random-input-invalid-bg-color: #362d2d;
        --random-input-area-bg-color: #303030;
        --random-input-area-border-color: #858585;
        --random-input-area-hover-color: #d0d0d0;
        --random-button-bg-color: #103966;
        --random-button-border-color: #3088e0;
        --random-button-shadow-color: #5fafff;
        --random-button-hover-bg-color: #15487f;
        --random-button-text-color: #eeeeee;
        --random-item-bg-color: #262627;
        --random-item-bg-even-color: #252526;
        --random-item-text-color: #dddddd;
        --random-item-border-color: #888888;
    }
}

.main {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.main .container {
    width: min(1280px, calc(99vw - 33px));
    padding: 0 3px;
}

.main .container .title {
    text-align: center;
    margin: 6px 0;
    font-size: 30px;
    color: var(--random-title-color)
}

.main .container .subtitle {
    text-align: center;
    margin: 2px 0 1px;
    color: var(--random-subtitle-color);
}

.main .container :focus-visible {
    outline: 2px solid var(--random-focus-color);
    outline-offset: -2px;
}

.main .input-container {
    display: grid;
    grid-template-columns: repeat(1, auto);
    gap: 3px 6px;
    padding: 5px 6px;
    border: 1px solid var(--random-border-color);
    font-size: 18px;
    border-radius: 3px;
    overflow: auto;
}

.main .input-area {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    height: 40px;
    background-color: var(--random-input-area-bg-color);
    border: 1px solid var(--random-input-area-border-color);
    transition: border-color 0.3s ease;
}

.main .input-area:hover {
    border-color: var(--random-input-area-hover-color);
}

.main .input-area label {
    white-space: nowrap;
    padding-left: 8px;
    color: var(--random-text-color);
}

.main .input-area output {
    width: 25px;
    font-size: 20px;
    padding: 5px;
    color: var(--random-text-color);
}

.main .input-area input:focus-visible {
    outline: 2px solid var(--random-focus-color);
    outline-offset: -2px;
}

.main .input-area.number input {
    width: calc(100% - 90px);
    height: 100%;
    font-size: 19px;
    border: 1px solid var(--random-input-border-color);
    background-color: var(--random-input-bg-color);
    text-indent: 5px;
    color: var(--random-dim-gray-color);
}

.main .input-area.number input:focus {
    border-color: transparent;
    outline: none;
    border: 1px solid var(--random-input-focus-color);
    text-align: left;
    color: var(--random-input-focus-color);
    background-color: var(--random-input-focus-bg-color);
}

.main .input-area.number input:invalid {
    color: var(--random-dim-gray-color);
    background-color: var(--random-input-invalid-bg-color);
    text-decoration: 1px wavy underline var(--random-input-invalid-color);
    text-underline-offset: 1px;
}

.main .input-area.number input:invalid:focus {
    color: var(--random-input-invalid-color);
}

.main .input-area.range label {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}

.main .input-area.range input {
    accent-color: var(--random-accent-color);
    width: 100%;
    height: 26px;
    min-height: 20px;
    cursor: ew-resize;
    min-width: 76px;
    margin-right: 6px;
}

.main .input-area.checkbox {
    position: relative;
}

.main .input-area.checkbox input {
    accent-color: var(--random-accent-color);
    width: 21px;
    height: 21px;
    margin-right: 8px;
    cursor: pointer;
}

.main .input-area input:disabled {
    opacity: revert;
    cursor: not-allowed;
}

.main .button-group {
    display: flex;
    justify-content: center;
    margin: 10px 0;
}

.main .button-group .button {
    width: 120px;
    height: 40px;
    font-size: 18px;
    border: 1px solid var(--random-button-border-color);
    border-radius: 6px;
    background-color: var(--random-button-bg-color);
    color: var(--random-button-text-color);
    cursor: pointer;
    margin: 0 3px;
    transition: background-color 0.3s ease;
}

.main .button-group .button:focus-visible {
    box-shadow: 0 0 9px var(--random-button-shadow-color);
    font-weight: bold;
}

.main .button-group .button:disabled {
    opacity: 0.7;
    cursor: not-allowed;
}

.main .button-group .button:not(:disabled):hover {
    background-color: var(--random-button-hover-bg-color);
}

.main .button-group .button:not(:disabled):active {
    font-weight: 500;
}

.main .container.result {
    position: relative;
    display: block;
    overflow: auto;
}

.main .result .error-text {
    color: var(--random-error-color);
    text-align: center;
    margin: 0;
    height: 20px;
    font-size: 16px;
}

.main .result-list {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    align-content: start;
    gap: 5px;
    margin: 0;
    margin-top: 28px;
    padding: 10px 0;
    border: 1px solid var(--random-item-border-color);
    border-radius: 5px;
    min-height: min(50vh, 140px);
    max-height: calc(90vh - 70px);
    overflow: auto;
}

.main .result-list:empty::before {
    color: var(--random-dim-gray-color);
    content: "还没有生成任何随机数";
    opacity: 0.8;
}

.main .result-list li {
    list-style: none;
    margin: 0;
    padding: 10px;
    color: var(--random-item-text-color);
    background-color: var(--random-item-bg-color);
    border-radius: 5px;
    font-size: 32px;
    font-weight: bold;
    width: fit-content;
    height: 36px;
    line-height: 36px;
    padding: 0 10px;
    text-shadow: 0px 1px 1px var(--random-gray-color);
}

.main .result-list li:nth-child(even) {
    background-color: var(--random-item-bg-even-color);
}

.main .result .button {
    position: absolute;
    top: 60px;
    background-color: transparent;
    border: 1px solid var(--random-button-border-color);
    border-radius: 4px;
    color: var(--random-button-border-color);
    font-size: 14px;
    cursor: pointer;
    transition: font-weight 0.16s ease;
}

.main .result .button.copy {
    right: 96px;
}

.main .result .button.reset {
    right: 51px;
}

.main .result .button.clear {
    right: 6px;
}

.main .result .button:disabled {
    opacity: 0.7;
}

.main .result .button:not(:disabled):hover {
    font-weight: bold;
}

@media all and (min-width: 560px) {
    .main .input-container {
        grid-template-columns: repeat(2, auto);
    }
}