clue-vibes / static /styles.css
forbiddenhug's picture
Add Clue Vibes Gradio Space
bedba64
Raw
History Blame Contribute Delete
11.2 kB
:root {
color-scheme: dark;
--ink: #111315;
--paper: #fbf8ef;
--paper-2: #efe8d8;
--night: #141719;
--night-2: #22282b;
--line: rgba(255, 255, 255, 0.18);
--line-dark: rgba(20, 23, 25, 0.18);
--muted: #98a0a5;
--yellow: #f2c94c;
--green: #35c67a;
--red: #f15b4a;
--blue: #57a5ff;
--violet: #a78bfa;
--orange: #f59e42;
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
* {
box-sizing: border-box;
}
body {
min-height: 100vh;
margin: 0;
background:
radial-gradient(circle at 24% 18%, rgba(242, 201, 76, 0.16), transparent 28%),
linear-gradient(135deg, #111315 0%, #1f2724 42%, #31251a 100%);
color: var(--paper);
}
button,
textarea {
font: inherit;
}
button {
border: 0;
cursor: pointer;
}
button:disabled {
cursor: not-allowed;
opacity: 0.55;
}
svg {
width: 18px;
height: 18px;
}
.shell {
min-height: 100vh;
overflow: hidden;
}
.screen {
min-height: 100vh;
padding: clamp(16px, 3vw, 34px);
}
.hidden {
display: none !important;
}
.start-screen {
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
gap: 24px;
}
.hero-wordmark {
position: absolute;
inset: auto -4vw 5vh auto;
display: grid;
gap: 0;
color: rgba(255, 255, 255, 0.055);
font-size: clamp(6rem, 18vw, 16rem);
font-weight: 950;
line-height: 0.74;
text-transform: uppercase;
transform: rotate(-6deg);
user-select: none;
}
.title-panel,
.loader-panel,
.target-panel,
.clue-panel,
.guess-panel,
.result-panel {
border: 1px solid var(--line);
border-radius: 8px;
box-shadow: 0 24px 70px rgba(0, 0, 0, 0.34);
}
.title-panel {
position: relative;
z-index: 1;
width: min(720px, 100%);
padding: clamp(24px, 6vw, 58px);
background: rgba(17, 19, 21, 0.82);
}
.eyebrow,
.panel-kicker,
.stat-label {
margin: 0;
color: var(--yellow);
font-size: 0.78rem;
font-weight: 900;
letter-spacing: 0;
text-transform: uppercase;
}
h1,
h2,
p {
overflow-wrap: anywhere;
}
.title-panel h1,
.result-panel h1 {
margin: 0;
font-size: clamp(3.1rem, 12vw, 7.2rem);
line-height: 0.88;
letter-spacing: 0;
text-transform: uppercase;
}
.tagline {
margin: 14px 0 0;
color: #dce6e0;
font-size: clamp(1rem, 2.5vw, 1.32rem);
font-weight: 780;
}
.primary-button,
.secondary-button,
.ghost-button,
.icon-button {
display: inline-flex;
min-height: 46px;
align-items: center;
justify-content: center;
gap: 9px;
border-radius: 8px;
font-weight: 900;
}
.primary-button {
width: fit-content;
padding: 0 24px;
background: var(--yellow);
color: #1f1a08;
box-shadow: 0 8px 0 #9d7712, 0 18px 40px rgba(0, 0, 0, 0.28);
}
.primary-button:hover:not(:disabled) {
background: #ffda68;
}
.secondary-button {
padding: 0 20px;
border: 1px solid rgba(87, 165, 255, 0.5);
background: rgba(87, 165, 255, 0.15);
color: #e8f3ff;
}
.ghost-button {
padding: 0 16px;
border: 1px solid var(--line);
background: rgba(255, 255, 255, 0.08);
color: var(--paper);
}
.icon-button {
width: 42px;
min-height: 42px;
padding: 0;
border: 1px solid var(--line);
background: rgba(255, 255, 255, 0.08);
color: var(--paper);
}
.start-actions {
position: relative;
z-index: 1;
display: flex;
flex-wrap: wrap;
gap: 14px;
}
.how-to-panel {
position: fixed;
inset: 0;
z-index: 10;
display: grid;
place-items: center;
padding: 18px;
background: rgba(10, 12, 13, 0.72);
backdrop-filter: blur(12px);
}
.how-to-card {
position: relative;
width: min(560px, 100%);
padding: clamp(22px, 5vw, 34px);
border: 1px solid var(--line);
border-radius: 8px;
background: rgba(17, 19, 21, 0.96);
box-shadow: 0 28px 84px rgba(0, 0, 0, 0.48);
}
.how-to-card .icon-button {
position: absolute;
top: 14px;
right: 14px;
}
.how-to-card h2 {
max-width: 420px;
margin: 8px 48px 16px 0;
color: #fffdf5;
font-size: clamp(1.65rem, 5vw, 2.4rem);
line-height: 1.02;
letter-spacing: 0;
text-transform: uppercase;
}
.how-to-card ul {
display: grid;
gap: 10px;
margin: 0 0 22px;
padding: 0;
list-style: none;
}
.how-to-card li {
position: relative;
padding-left: 22px;
color: #dce6e0;
font-weight: 720;
line-height: 1.45;
}
.how-to-card li::before {
position: absolute;
top: 0.62em;
left: 0;
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--yellow);
content: "";
}
.loading-screen,
.result-screen {
display: grid;
place-items: center;
}
.loader-panel,
.result-panel {
width: min(620px, 100%);
padding: clamp(22px, 5vw, 38px);
background: rgba(17, 19, 21, 0.9);
text-align: center;
}
.loader-mark {
display: inline-grid;
grid-template-columns: repeat(2, 54px);
gap: 10px;
margin-bottom: 18px;
}
.loader-mark span {
display: grid;
place-items: center;
aspect-ratio: 1;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--paper);
color: var(--ink);
font-size: 1.7rem;
font-weight: 950;
animation: flip 1.5s ease-in-out infinite alternate;
}
.loader-mark span:last-child {
animation-delay: 0.28s;
}
@keyframes flip {
from {
transform: translateY(0) rotate(0deg);
}
to {
transform: translateY(-8px) rotate(4deg);
}
}
.loader-panel h2 {
margin: 0;
font-size: 1.18rem;
letter-spacing: 0;
text-transform: uppercase;
}
.loader-panel p {
color: #cbd5d1;
}
.progress-track {
height: 10px;
overflow: hidden;
border-radius: 999px;
background: rgba(255, 255, 255, 0.16);
}
.progress-fill {
width: 0%;
height: 100%;
background: linear-gradient(90deg, var(--yellow), var(--green), var(--blue));
transition: width 160ms ease;
}
.loading-note {
min-height: 1.3em;
color: var(--yellow) !important;
font-size: 0.9rem;
}
.game-screen {
display: flex;
flex-direction: column;
gap: 18px;
}
.hud {
display: grid;
grid-template-columns: 1fr auto 1fr;
gap: 14px;
align-items: center;
}
.hud-stat {
width: min(210px, 100%);
padding: 12px 14px;
border: 1px solid var(--line);
border-radius: 8px;
background: rgba(17, 19, 21, 0.74);
}
.hud-stat strong {
display: block;
margin-top: 3px;
font-size: clamp(1.35rem, 4vw, 2rem);
line-height: 1;
}
.center-stat {
text-align: center;
}
#restart-button {
justify-self: end;
}
.game-grid {
display: grid;
grid-template-columns: minmax(300px, 0.85fr) minmax(360px, 1.15fr);
gap: 18px;
align-items: stretch;
}
.target-panel {
min-height: 360px;
padding: clamp(18px, 4vw, 30px);
background:
linear-gradient(160deg, rgba(251, 248, 239, 0.96), rgba(239, 232, 216, 0.96)),
var(--paper);
color: var(--ink);
}
#target-word {
margin: 10px 0 24px;
font-size: clamp(3rem, 9vw, 6.2rem);
line-height: 0.9;
letter-spacing: 0;
text-transform: uppercase;
}
.banned-list {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.banned-list span {
min-height: 44px;
display: grid;
place-items: center;
padding: 8px 10px;
border: 2px solid var(--ink);
border-radius: 8px;
background: #ffffff;
color: #24272a;
font-weight: 900;
text-transform: uppercase;
}
.clue-panel {
display: flex;
flex-direction: column;
padding: clamp(18px, 4vw, 28px);
background: rgba(17, 19, 21, 0.86);
}
.clue-head,
.input-footer,
.guess-status,
.score-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.clue-head h2,
.summary-box h2 {
margin: 0;
font-size: 1rem;
letter-spacing: 0;
text-transform: uppercase;
}
#char-count {
color: var(--green);
font-weight: 900;
}
#char-count.over {
color: var(--red);
}
textarea {
width: 100%;
min-height: 190px;
flex: 1;
resize: vertical;
margin: 14px 0;
padding: 16px;
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 8px;
background: rgba(255, 255, 255, 0.08);
color: #fffdf5;
font-size: 1.08rem;
line-height: 1.5;
}
textarea:focus {
border-color: var(--yellow);
outline: 3px solid rgba(242, 201, 76, 0.18);
}
.validation-message {
min-height: 1.3em;
margin: 0;
color: var(--muted);
font-weight: 800;
}
.validation-message.good {
color: var(--green);
}
.validation-message.bad {
color: var(--red);
}
.guess-panel {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 16px;
align-items: center;
padding: 18px;
background: rgba(17, 19, 21, 0.78);
}
.guess-status {
justify-content: flex-start;
}
.model-state {
min-width: 92px;
padding: 8px 10px;
border-radius: 8px;
background: rgba(53, 198, 122, 0.16);
color: var(--green);
font-size: 0.82rem;
font-weight: 950;
text-align: center;
text-transform: uppercase;
}
.model-state.working {
background: rgba(242, 201, 76, 0.16);
color: var(--yellow);
}
.model-state.missed {
background: rgba(241, 91, 74, 0.14);
color: var(--red);
}
#round-message {
margin: 0;
color: #d8dedb;
font-weight: 720;
}
.guess-list,
.final-guesses {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.empty-guesses {
margin: 0;
color: var(--muted);
}
.guess-chip {
display: inline-flex;
min-height: 34px;
align-items: center;
padding: 6px 10px;
border: 1px solid var(--line);
border-radius: 8px;
background: rgba(255, 255, 255, 0.08);
color: #edf3f0;
font-weight: 850;
}
.guess-chip.correct {
border-color: rgba(53, 198, 122, 0.7);
background: rgba(53, 198, 122, 0.18);
color: #bfffd9;
}
.guess-chip.wrong {
border-color: rgba(241, 91, 74, 0.55);
background: rgba(241, 91, 74, 0.12);
color: #ffd3ce;
}
.result-panel h1 {
font-size: clamp(3.2rem, 13vw, 6.5rem);
}
.score-row {
margin: 22px 0;
}
.score-row div {
min-width: 0;
flex: 1;
padding: 12px;
border: 1px solid var(--line);
border-radius: 8px;
background: rgba(255, 255, 255, 0.08);
}
.score-row span {
display: block;
color: var(--muted);
font-size: 0.78rem;
font-weight: 900;
text-transform: uppercase;
}
.score-row strong {
display: block;
margin-top: 5px;
overflow-wrap: anywhere;
color: var(--yellow);
font-size: 1.35rem;
}
.summary-box {
margin: 14px 0;
padding: 14px;
border: 1px solid var(--line);
border-radius: 8px;
background: rgba(255, 255, 255, 0.08);
text-align: left;
}
.summary-box p {
margin: 8px 0 0;
color: #e6ece8;
line-height: 1.5;
}
.result-panel .primary-button {
margin: 8px auto 0;
}
@media (max-width: 860px) {
.hud,
.game-grid,
.guess-panel {
grid-template-columns: 1fr;
}
.center-stat {
text-align: left;
}
#restart-button {
justify-self: stretch;
}
.hud-stat {
width: 100%;
}
}
@media (max-width: 560px) {
.screen {
padding: 14px;
}
.start-screen {
justify-content: flex-end;
padding-bottom: 38px;
}
.title-panel h1 {
font-size: clamp(3.4rem, 19vw, 5rem);
}
.banned-list,
.score-row {
grid-template-columns: 1fr;
}
.score-row,
.clue-head,
.input-footer,
.guess-status {
align-items: stretch;
flex-direction: column;
}
.primary-button,
.secondary-button,
.ghost-button {
width: 100%;
}
.start-actions {
width: 100%;
}
#target-word {
font-size: clamp(2.7rem, 17vw, 4.6rem);
}
}