@font-face { font-family: LogoFont; src: url(assets/font/logofont/lf.otf); } @font-face { font-family: HealthBar; src: url(assets/font/healthbar/hb.ttf); font-display: swap; } @font-face { font-family: Bloodhand; src: url(assets/font/bloodhand/bh.ttf); font-display: swap; } @font-face { font-family: FantasyIcon; src: url(assets/font/fantasyicon/ft.ttf); font-display: swap; } @font-face { font-family: Negative; src: url(assets/font/negative/nt.ttf); font-display: swap; } :root { --background-color: rgba(0, 0, 0, 0.25); --box-shadow: 0 3px 5px 0 rgba(0, 0, 0, 0.01); --border-color: rgba(255, 255, 255, 0.18); --border-hover: rgba(187, 114, 114, .5); --text-color: rgba(230, 230, 230, 1); --hover-background: linear-gradient(to top, rgba(139, 51, 51, 0.1), rgba(0, 0, 0, 0.5)); --hover-color: rgb(143, 68, 68); --font-family-sans: "PT Sans", sans-serif; --font-family-logofont: LogoFont, sans-serif; --font-family-negative: Negative, sans-serif; } * { margin: 0; padding: 0; box-sizing: border-box; list-style: none; font-family: var(--font-family-sans); user-select: none; } body { background-color: #111; color: var(--text-color); font-size: 16px; overflow: hidden; position: relative; transition: filter .5s ease-in-out; } ::selection { background-color: rgba(142, 142, 144, 0.4); color: rgb(211, 211, 211); } section { display: flex; justify-content: center; align-items: center; height: 100vh; position: relative; } .timer-controls, .groups, .hangedfull, #letters, #wordDisplay, #leaderboard { opacity: 0; pointer-events: none; transition: opacity 1s ease-in-out; } .game-container { display: flex; position: relative; overflow: hidden; width: 100vw; height: 100vh; flex-direction: column; justify-content: center; align-items: center; padding: 5vw; background: linear-gradient(to top, rgba(51, 18, 18, .15), transparent); } #background-video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; filter: brightness(.01); transition: filter .4s; object-fit: cover; z-index: -1; } .header { position: absolute; opacity: 0; box-shadow: var(--box-shadow); border-bottom: 1px solid var(--border-color); border-radius: 10px; transition: 1s ease-in-out; padding: 5px; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; width: 80vw; top: 50%; transform: translateY(-50%); z-index: 3; } .header.visible { opacity: 1; } .logo h1 { color: var(--text-color); cursor: default; transition: .2s ease-in-out; } .header h1:hover { text-shadow: #cacaca 0 0 4px; } @keyframes headerblink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .blink-transition { animation: headerblink 1s ease-in-out; } .logo { display: flex; flex-direction: column; justify-content: center; align-items: center; margin-left: 100px; } .logo i { font-size: 64px; } .word-input { display: flex; flex-direction: row; align-items: center; justify-content: center; margin: 10px 0; transition: .2s ease-in-out; margin-top: 18px; } .word-input input { width: 300px; padding: 15px; border-radius: 10px; border-style: none; font-size: 18px; background: linear-gradient(to right, rgba(170, 170, 170, 0.04), transparent 40%, transparent 60%, rgba(170, 170, 170, 0.04)); color: rgb(231, 234, 232, .8); font-family: monospace; text-align: center; letter-spacing: 1px; } .word-input input:focus { border-color: rgba(112, 112, 112, 0.3); outline: none; box-shadow: 0 0 0 2px rgba(170, 170, 170, 0.04); background: linear-gradient(to right, rgba(170, 170, 170, 0.08), transparent 40%, transparent 60%, rgba(170, 170, 170, 0.08)); } .word-input .start-button { background: rgba(0, 0, 0, 0.1); display: flex; justify-content: center; align-items: center; border-radius: 50%; border-style: none; color: var(--text-color); width: 62px; padding: 15px; margin-left: 20px; cursor: pointer; transition: .2s ease-in-out; } .word-input .start-button i { font-size: 30px; } .word-input .start-button:disabled { opacity: 0; transform: scale(.95); cursor: default; } .word-input .start-button:hover { background: var(--hover-background); color: var(--hover-color); text-shadow: 0 0 2px #000; } .button-icons { display: flex; flex-direction: row; align-items: center; gap: 10px; margin-right: 100px; } .button-icons button { position: relative; overflow: visible; } .button-icons button::after { content: attr(data-description); position: absolute; top: 150%; left: 50%; transform: translateX(-50%) translateY(-5px); font-family: monospace; color: var(--hover-color); font-size: 22px; letter-spacing: 1px; text-align: center; padding: 5px 10px; border-radius: 5px; opacity: 0; pointer-events: none; transition: opacity .2s ease-in-out, transform .2s ease-in-out; white-space: nowrap; } .button-icons button:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); } .button-icons .light-button { background: rgba(0, 0, 0, 0.1); border-radius: 50%; border-style: none; color: var(--text-color); padding: 15px; width: 62px; cursor: pointer; transition: .2s ease-in-out; margin-left: 30px; } .button-icons .light-button:hover { background: var(--hover-background); color: var(--hover-color); text-shadow: 0 0 2px #000; } .button-icons .light-button:active { background: var(--hover-background); color: var(--hover-color); text-shadow: 0 0 2px #000; } .light-button i { font-size: 30px; } .button-icons .fps-button { display: flex; align-items: center; justify-content: space-between; background: rgba(0, 0, 0, 0.1); border-radius: 50%; border-style: none; color: var(--text-color); padding: 15px; font-size: 24px; width: 62px; cursor: pointer; transition: width .2s ease-in-out, background .2s ease-in-out, color .2s ease-in-out, border-radius .2s ease-in-out; margin-left: 30px; } .fps-button.expanded { width: 130px; border-radius: 10px; } .button-icons .fps-button:hover { background: var(--hover-background); color: var(--hover-color); text-shadow: 0 0 2px #000; } .fps-button i { font-size: 30px; } #fpsValue { opacity: 0; transition: opacity 0.2s ease-in-out; font-family: sans-serif; letter-spacing: 3px; } .fps-button.expanded #fpsValue { opacity: 1; } .reveal-button { display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.1); box-shadow: var(--box-shadow); border-style: none; border-radius: 50%; text-align: left; color: var(--text-color); cursor: pointer; padding: 15px; margin-left: 30px; transition: background .2s ease-in-out, color .2s ease-in-out, text-shadow .2s ease-in-out, opacity .2s ease-in-out; pointer-events: none; opacity: 0; } .reveal-button:hover { background: var(--hover-background); color: var(--hover-color); text-shadow: 0 0 2px #000; } .reveal-button i { font-size: 30px; } .toggle-leaderboard-button { display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.1); box-shadow: var(--box-shadow); border-style: none; border-radius: 50%; text-align: left; color: var(--text-color); cursor: pointer; padding: 15px; margin-left: 30px; transition: background .2s ease-in-out, color .2s ease-in-out, text-shadow .2s ease-in-out, opacity .2s ease-in-out; pointer-events: none; opacity: 0; } .toggle-leaderboard-button:hover { background: var(--hover-background); color: var(--hover-color); text-shadow: 0 0 2px #000; } .toggle-leaderboard-button i { font-size: 30px; } .show-timer-button { display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.1); box-shadow: var(--box-shadow); border-style: none; border-radius: 50%; text-align: left; color: var(--text-color); cursor: pointer; padding: 15px; margin-left: 30px; transition: .2s ease-in-out; pointer-events: none; opacity: 0; } .show-timer-button:hover { background: var(--hover-background); color: var(--hover-color); text-shadow: 0 0 2px #000; } .show-timer-button i { font-size: 30px; } .timer-controls { display: flex; flex-direction: column; position: absolute; justify-content: center; align-items: center; margin-bottom: 320px; width: 350px; right: -56.5%; z-index: 1; transition: opacity .2s ease-in-out; } .timer-button { position: relative; overflow: hidden; display: flex; justify-content: center; align-items: center; background: linear-gradient(to top, rgba(170, 170, 170, 0.05), transparent); border-style: none; border-radius: 10px; text-align: left; color: var(--text-color); font-family: monospace; font-weight: lighter; font-size: 18px; cursor: pointer; width: 80px; padding: 12px 0; transition: .2s ease-in-out; } .timer-button:hover { background: var(--hover-background); color: var(--hover-color); text-shadow: 0 0 2px #000; } .timer { position: relative; display: flex; align-items: center; justify-content: center; background: linear-gradient(to top, rgba(170, 170, 170, 0.02), transparent); border-style: none; border-radius: 10px; font-family: monospace; font-size: 1.3em; color: var(--text-color); width: 90px; height: 50px; text-align: center; padding-top: 2px; letter-spacing: 1px; cursor: default; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .timer-input { flex: 0; width: 80px; height: 50px; min-width: 50px; padding: 0; border-radius: 10px; border-style: none; text-align: center; font-family: monospace; font-weight: lighter; letter-spacing: 1px; font-size: 1.1em; background: linear-gradient(to right, rgba(170, 170, 170, 0.03), transparent 40%, transparent 60%, rgba(170, 170, 170, 0.03)); line-height: 40px; color: rgb(231, 234, 232, .8); } .timer-input:focus { border-color: rgba(112, 112, 112, 0.3); background: linear-gradient(to right, rgba(170, 170, 170, 0.06), transparent 40%, transparent 60%, rgba(170, 170, 170, 0.06)); outline: none; box-shadow: 0px 0px 3px rgba(92, 92, 92, 0.3); } input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } input[type="number"] { appearance: textfield; -moz-appearance: textfield; } .timer-description { display: flex; flex-direction: row; justify-content: space-between; max-width: 100%; background: linear-gradient(to top, rgba(170, 170, 170, 0.02), transparent); box-shadow: var(--box-shadow); border-radius: 10px; transition: .2s ease-in-out; padding: 15px 30px; gap: 20px; } .hang-container { display: flex; position: relative; top: 10%; flex-direction: row; justify-content: center; align-items: center; margin: 0; width: 40vw; max-width: 50vw; } @keyframes blink { 0%, 100% { color: var(--hover-color); } 50% { color: inherit; } } .blink { animation: blink 0.5s step-end 5; } @keyframes blinkback { 0%, 100% { background: linear-gradient(to bottom, rgba(201, 92, 92, 0.1), transparent); } 50% { background: inherit; } } .blinkback { animation: blinkback 0.5s step-end 5; } .hangedfull { display: flex; flex-direction: column; justify-content: center; align-items: center; height: 400px; width: 330px; position: absolute; left: -56.5%; } .hangman-title { letter-spacing: 1.5px; text-align: center; position: absolute; display: flex; align-items: center; justify-content: center; cursor: default; z-index: 1; margin-bottom: 5px; width: 100%; color: var(--text-color); } #bloodhand { font-family: Bloodhand, sans-serif; font-weight: lighter; color: var(--hover-color); opacity: .1; font-size: 400px; margin: 0 30px; position: absolute; top: 60%; left: 45%; transform: translate(-50%, -50%); z-index: 0; } #healthBar { font-family: HealthBar, sans-serif; font-weight: lighter; font-size: 100px; margin: 0 30px; } .hangman { background: linear-gradient(to top, rgba(0, 0, 0, 0.2), transparent); box-shadow: var(--box-shadow); border-radius: 10px; transition: .2s ease-in-out; z-index: 2; } .word-display { font-size: 3em; font-weight: bolder; font-family: var(--font-family-sans); text-shadow: 0 0 2px #cacaca; letter-spacing: 0.3em; flex-grow: 1; text-align: center; margin: 0 20px; position: absolute; width: 0; overflow: hidden; cursor: default; bottom: 100px; } #leaderboard { display: flex; flex-direction: column; cursor: default; justify-content: center; align-items: center; position: absolute; right: -56.5%; height: 300px; margin-top: 55px; transition: opacity .2s ease-in-out; } #leaderboardList { display: flex; flex-direction: column; justify-content: flex-start; align-items: center; background: linear-gradient(to bottom, rgba(170, 170, 170, 0.01), transparent); box-shadow: var(--box-shadow); border-radius: 10px; border-top: 1px solid var(--border-color); transition: .3s ease-in-out; padding-top: 20px; height: 270px; width: 350px; } #leaderboardList.highlight { background: linear-gradient(to bottom, rgba(170, 170, 170, 0.02), transparent); transition: .3s ease-in-out; } #leaderboardList.highlight:hover { background: linear-gradient(to bottom, rgba(170, 170, 170, 0.02), transparent); } #leaderboardList li { display: flex; align-items: center; justify-content: space-between; border-radius: 10px; letter-spacing: 1px; font-size: 24px; padding: 10px 15px; position: relative; width: 300px; gap: 15px; text-align: center; box-sizing: border-box; } #leaderboardList .empty-leaderboard, #leaderboardList .semiempty-leaderboard { display: flex; align-items: center; justify-content: center; font-family: var(--font-family-sans); font-weight: lighter; color: rgba(226, 226, 226, .8); letter-spacing: 3px; font-size: 32px; padding: 5px 7px; position: relative; width: 250px; text-align: center; box-sizing: border-box; } #leaderboardList li i { flex: 0; font-size: 24px; text-align: center; } #leaderboardlist li .skull { font-family: var(--font-family-negative); position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); text-align: center; font-size: 40px; } li.winner { color: rgb(218, 218, 218); background: linear-gradient(to right, rgba(170, 170, 170, 0.1), transparent); padding: 5px 7px; text-shadow: 0 0 5px #8f8f8f; width: 250px; text-align: center; box-sizing: border-box; } li.negative { color: rgb(171, 79, 79); background: linear-gradient(to right, rgba(171, 79, 79, 0.1), transparent); padding: 5px 7px; width: 250px; text-align: center; box-sizing: border-box; } #leaderboardList li span.timetext, #leaderboardList li span.scoretext { text-align: center; } #leaderboardList li span.timetext { font-family: monospace; letter-spacing: 2px; flex: 1; text-align: left; } #leaderboardList li span.scoretext { font-family: monospace; font-size: 24px; right: 0px; flex: 1; text-align: right; } .letters { display: flex; position: absolute; flex-direction: row; bottom: 23%; width: 90vw; justify-content: center; align-items: center; gap: 100px; } .letters-container { display: flex; flex-direction: column; justify-content: center; align-items: center; background: linear-gradient(to top, rgba(170, 170, 170, 0.02), transparent); box-shadow: var(--box-shadow); border-radius: 10px; padding: 5px; } .letter-btn { padding: 12px; width: 75px; font-size: 42px; position: relative; justify-content: center; align-items: center; font-family: var(--font-family-sans); text-transform: lowercase; margin: 3px; overflow: hidden; cursor: pointer; background: rgba(0, 0, 0, 0.1); border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.15); color: var(--text-color); transition: .3s ease-in-out; line-height: 1; vertical-align: top; } .letter-btn:disabled { filter: brightness(.15); transform: scale(.9); border: none; cursor: default; overflow: hidden; } .letter-btn:hover { background: linear-gradient(to bottom, rgba(170, 170, 170, 0.1), transparent); text-shadow: 0 0 3px #fff; } .groups { position: absolute; display: flex; justify-content: center; gap: 65px; margin: 10px 0; padding: 5px 0; width: 85vw; transition: 1s ease-in-out; } .group { background: linear-gradient(to bottom, rgba(170, 170, 170, 0.03), transparent); box-shadow: var(--box-shadow); border-radius: 10px; cursor: default; color: var(--text-color); width: 30vw; height: 160px; padding: 15px; display: flex; flex-direction: column; justify-content: center; position: relative; align-items: center; gap: 4px; transition: .5s ease-in-out; } .group.negative { color: rgb(231, 234, 232, .9); border-bottom: 1px solid rgb(201, 92, 92); text-shadow: 0 0 5px #111; } .group.negative::before { content: "H"; font-family: var(--font-family-negative); font-weight: lighter; overflow: hidden; font-size: 224px; color: rgba(201, 92, 92, 0.3); position: absolute; opacity: .5; top: -42px; z-index: 0; pointer-events: none; } .group.negative:hover .scorestar { text-shadow: 0 0 10px rgb(201, 92, 92); color: rgb(167, 66, 66); transition: .05s ease-in-out; } .group.highest-score { background: linear-gradient(to top, rgba(224, 224, 224, 0.15), transparent); box-shadow: 0 7px 15px rgba(218, 218, 218, 0.1); border-bottom: 1px solid rgb(201, 201, 201); color: rgb(231, 234, 232, 1); text-shadow: 0 0 5px #cacaca; } .group.highest-score::before { content: "A"; font-family: FantasyIcon; text-shadow: none; font-weight: lighter; overflow: hidden; font-size: 180px; color: rgba(219, 219, 219, 0.12); position: absolute; opacity: .5; left: 30px; top: -10px; z-index: 0; pointer-events: none; } .group.highest-score:hover .scorestar { text-shadow: 0 0 10px rgb(255, 255, 255); color: var(--text-color); transition: .05s ease-in-out; } .group input { font-size: 18px; font-family: monospace; font-weight: lighter; text-align: center; padding: 10px; margin: 0px auto; border-style: none; border-radius: 5px; background-color: rgba(60, 60, 60, .03); border-right: 1px solid var(--border-color); border-left: 1px solid var(--border-color); color: var(--text-color); white-space: nowrap; width: 90%; } .group input::placeholder { color: rgb(231, 234, 232, .3); } .group input:focus { border-color: rgba(112, 112, 112, 0.3); outline: none; box-shadow: 0px 0px 10px rgba(92, 92, 92, 0.3); } .group .solid-star { display: none; } .group:hover .regular-star { display: none; } .group:hover .solid-star { display: inline; } .group:hover { transition: .2s ease-in-out; } .group:hover .scorestar { text-shadow: 0 0 10px #929292; color: var(--text-color); transition: .05s ease-in-out; } .group.inactive { border-bottom: none; } .group.inactive .score-buttons, .group.inactive .scorestar { opacity: 0; transition: opacity 0.3s ease-in-out; pointer-events: none; } .group .score-buttons, .group .scorestar { transition: opacity 0.3s ease-in-out; } .scorestar { font-size: 24px; } .scorestar span { font-size: 24px; font-weight: lighter; font-family: var(--font-family-sans); } .score-btn { position: relative; overflow: hidden; margin: 3px 2px; padding: 12px 12px; font-size: 15px; font-family: var(--font-family-sans); font-weight: bolder; letter-spacing: 2px; color: var(--text-color); cursor: pointer; transition: .2s ease-in-out; box-shadow: 0 8px 32px 0 rgba(11, 11, 11, .3); border-radius: 20px; border-style: none; border-right: 1px solid var(--border-color); border-left: 1px solid var(--border-color); filter: brightness(1) saturate(.7); } .ripple { position: absolute; border-radius: 50%; background: rgba(255, 255, 255, .6); transform: scale(0); animation: ripple-animation .4s linear; pointer-events: none; } @keyframes ripple-animation { to { transform: scale(4); opacity: 0; } } .score-btn:nth-child(1) { background: linear-gradient(to bottom, rgba(145, 145, 145, 0.05), rgba(122, 122, 122, 0.15)); } .score-btn:nth-child(2) { background: linear-gradient(to bottom, rgba(145, 145, 145, 0.05), rgba(122, 122, 122, 0.15)); } .score-btn:nth-child(3) { background: linear-gradient(to top, rgba(145, 145, 145, 0.05), rgba(122, 122, 122, 0.15)); } .score-btn:nth-child(4) { background: linear-gradient(to top, rgba(145, 145, 145, 0.05), rgba(122, 122, 122, 0.15)); } .score-btn:hover { filter: brightness(3) saturate(1); box-shadow: 0 -2px 15px rgba(0, 0, 0, .03); } .explosion { position: absolute; bottom: 30%; right: 42%; width: 300px; height: 300px; background: radial-gradient(circle, rgb(99, 35, 35), rgb(141, 57, 57), rgb(167, 81, 81)); border-radius: 50%; animation: explosion .8s ease-in-out forwards; transition: 3s; pointer-events: none; transform: translate(-50%, -50%); } @keyframes explosion { 0% { transform: scale(0); opacity: 1; } 100% { transform: scale(15); opacity: 0; } } .modal { opacity: 0; pointer-events: none; display: flex; position: fixed; font-size: 26px; inset: 0; width: 100%; height: 100%; letter-spacing: 1px; cursor: default; color: var(--text-color); padding: 15px; justify-content: center; align-items: center; gap: 19px; transition: .2s ease-in-out; backdrop-filter: blur(5px) brightness(0.3); z-index: 4; } .modal.show { opacity: 1; pointer-events: auto; } .modal-content { position: relative; background: linear-gradient(to top, rgba(170, 170, 170, 0.02), transparent); border-radius: 10px; border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); max-height: 90vh; width: 80vh; text-align: center; transition: .2s ease-in-out; display: flex; flex-direction: column; justify-content: space-between; align-items: center; overflow: auto; } .modal-content p { margin: 0; align-self: center; } .modal-content::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('assets/modal.png'); background-position: center; background-size: cover; background-repeat: no-repeat; opacity: .04; z-index: -1; } .modal-content:hover { box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.04); } #modalButton { font-size: 50px; padding: 25px; background: linear-gradient(to right, rgba(170, 170, 170, 0.06), transparent 40%, transparent 60%, rgba(170, 170, 170, 0.06)); border-radius: 50%; border-style: none; color: var(--text-color); transition: .2s ease-in-out; cursor: pointer; position: relative; margin-top: 20px; bottom: 40px; } #modalButton:hover { background: linear-gradient(to right, rgba(100, 49, 49, 0.2), transparent 40%, transparent 60%, rgba(100, 49, 49, 0.2)); color: var(--hover-color); text-shadow: 0 0 2px #000; } #modalMessage { font-size: 40px; font-family: monospace; font-weight: lighter; letter-spacing: 4px; white-space: pre-line; position: relative; top: 10px; display: flex; flex-direction: column; justify-content: space-between; align-items: center; height: 100%; padding: 20px; } .found-word { font-family: var(--font-family-sans); position: relative; font-size: 80px; overflow-wrap: break-word; word-break: break-word; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; margin: 40px 0; } #intro { position: fixed; top: 0; left: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; background: linear-gradient(to top, rgba(51, 18, 18, 0.2), transparent); cursor: default; z-index: 15; transition: .3s; } .intro-content { display: flex; flex-direction: column; align-items: center; } .background-icon { position: absolute; font-size: 2000px; color: rgba(255, 255, 255, 0.03); top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 17; pointer-events: none; } #intro p { color: rgba(200, 200, 200, .4); font-size: 16px; font-family: monospace; transition: .3s ease-in-out; text-shadow: 0 0 1px #cacaca; line-height: 25px; text-align: center; } #intro p:hover { color: rgba(255, 255, 255, .8); text-shadow: 0 0 2px rgb(255, 255, 255); } .intro-logo { font-family: var(--font-family-logofont); color: rgba(255, 255, 255, .6); text-shadow: 0 0 2px rgb(255, 255, 255); font-size: 120px; font-weight: lighter; max-width: 100%; opacity: .7; transition: .3s ease-in-out; letter-spacing: 4px; } .intro-logo:hover { letter-spacing: 6px; text-shadow: 0 0 5px rgb(255, 255, 255); }