Files
001code-html--cocos/scratch-gui/static/css/competition_sum-v2.css
刘宇飞 6e0a1fbcbb Initial commit of 001code-html Scratch frontend project.
Includes scratch-gui, scratch-vm, scratch-blocks, scratch-render, scratch-l10n, and deployment config.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 15:37:45 +08:00

914 lines
19 KiB
CSS
Raw 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.
:root {
--page-bg: #f0f4f9;
--card-bg: #ffffff;
--title: #1e1a4c;
--text: #475569;
--label: #000000;
--field-bg: #f5f6f9;
--placeholder: #7d91a1;
--shadow: 0px 34px 44px -20px rgba(185, 206, 234, 0.25);
--field-border: linear-gradient(164deg, rgba(226, 230, 255, 1) 24%, rgba(255, 234, 227, 1) 95%);
--btn-gradient: linear-gradient(90deg, rgba(3, 161, 234, 1) 0%, rgba(32, 91, 175, 1) 100%);
--accent-color: #5380ea;
--accent-hover: #03a1ea;
--table-border: #e2e8f0;
--table-header-bg: #f8fafc;
--table-stripe: #f1f5f9;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
font-family: Inter, system-ui, -apple-system, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", Arial, sans-serif;
background-color: var(--page-bg);
background-image: url("../images/bg.png");
background-repeat: no-repeat;
background-size: cover;
background-position: center 0;
color: var(--text);
min-height: 100vh;
}
.page {
min-height: 100vh;
display: flex;
flex-direction: column;
}
.content {
width: 100%;
max-width: 1600px;
margin: 0 auto;
padding: 40px 24px;
display: grid;
grid-template-columns: 1fr 380px;
gap: 24px;
align-items: start;
}
/* New Table Footer for Search & Pagination */
.table-footer {
margin-top: 24px;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 20px;
padding: 20px 24px;
border-top: 3px solid rgba(83, 128, 234, 0.15);
background: linear-gradient(135deg, rgba(247, 249, 255, 0.8) 0%, rgba(240, 247, 255, 0.6) 100%);
backdrop-filter: blur(10px);
border-radius: 14px;
position: relative;
z-index: 1;
box-shadow: 0 2px 8px rgba(83, 128, 234, 0.08);
}
.search-form-inline {
display: flex;
align-items: center;
gap: 14px;
flex-wrap: wrap;
}
.search-form-inline label {
font-weight: 700;
font-size: 14px;
color: #1e1a4c;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
}
.form-input-small {
height: 42px;
width: 220px;
border-radius: 12px;
border: 2px solid #d1e0ff;
padding: 0 18px;
font-size: 14px;
font-weight: 500;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
background: white;
box-shadow: 0 2px 6px rgba(83, 128, 234, 0.08);
}
.form-input-small:focus {
outline: none;
border-color: #5380ea;
box-shadow:
0 0 0 4px rgba(83, 128, 234, 0.12),
0 4px 12px rgba(83, 128, 234, 0.15);
transform: translateY(-2px);
}
.form-btn-small {
height: 42px;
padding: 0 28px;
border-radius: 21px;
background: linear-gradient(135deg, #5380ea 0%, #03a1ea 100%);
color: white;
border: none;
cursor: pointer;
font-weight: 700;
font-size: 14px;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow:
0 4px 15px rgba(83, 128, 234, 0.35),
0 2px 8px rgba(3, 161, 234, 0.25);
position: relative;
overflow: hidden;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
.form-btn-small::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
transition: left 0.6s;
}
.form-btn-small:hover {
transform: translateY(-3px);
box-shadow:
0 6px 20px rgba(83, 128, 234, 0.45),
0 3px 12px rgba(3, 161, 234, 0.35);
}
.form-btn-small:hover::before {
left: 100%;
}
.form-btn-small:active {
transform: translateY(-1px);
box-shadow:
0 3px 12px rgba(83, 128, 234, 0.4),
0 2px 8px rgba(3, 161, 234, 0.3);
}
/* Pagination container */
.pagination-container {
display: flex;
gap: 8px;
font-weight: 600;
font-size: 14px;
color: #475569;
align-items: center;
}
/* Card Styles - Bold, Full, 3D Effect */
.card {
background: var(--card-bg);
border-radius: 24px;
padding: 32px;
display: flex;
flex-direction: column;
gap: 24px;
margin-bottom: 32px;
width: 100%;
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
/* Override fixed width from competition-v2.css */
}
/* Ranking Card - Bold 3D Style */
.ranking-card {
background: linear-gradient(145deg, #ffffff 0%, #f0f7ff 100%);
border: 3px solid #e0ebff;
box-shadow:
0 20px 50px rgba(83, 128, 234, 0.2),
0 10px 30px rgba(83, 128, 234, 0.15),
0 0 0 1px rgba(255, 255, 255, 0.8) inset,
0 2px 0 0 rgba(83, 128, 234, 0.1) inset;
position: relative;
}
.ranking-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 6px;
background: linear-gradient(90deg,
#5380ea 0%,
#03a1ea 25%,
#10b981 50%,
#f59e0b 75%,
#ef4444 100%);
border-radius: 24px 24px 0 0;
box-shadow: 0 2px 10px rgba(83, 128, 234, 0.4);
}
.ranking-card::after {
content: '';
position: absolute;
top: 6px;
left: 0;
width: 100%;
height: calc(100% - 6px);
background:
radial-gradient(circle at 15% 20%, rgba(83, 128, 234, 0.06) 0%, transparent 40%),
radial-gradient(circle at 85% 80%, rgba(3, 161, 234, 0.06) 0%, transparent 40%),
radial-gradient(circle at 50% 50%, rgba(16, 185, 129, 0.04) 0%, transparent 50%);
pointer-events: none;
z-index: 0;
border-radius: 0 0 24px 24px;
}
.ranking-card:hover {
transform: translateY(-8px);
box-shadow:
0 25px 60px rgba(83, 128, 234, 0.25),
0 15px 40px rgba(83, 128, 234, 0.2),
0 0 0 1px rgba(255, 255, 255, 0.9) inset,
0 2px 0 0 rgba(83, 128, 234, 0.15) inset;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 24px;
margin-bottom: 20px;
background: transparent;
border-bottom: 3px solid transparent;
border-image: linear-gradient(90deg,
transparent 0%,
rgba(83, 128, 234, 0.3) 30%,
rgba(83, 128, 234, 0.6) 50%,
rgba(83, 128, 234, 0.3) 70%,
transparent 100%) 1;
position: relative;
z-index: 1;
}
.title {
margin: 0;
font-family: Nunito, Inter, system-ui, sans-serif;
font-weight: 900;
font-size: 1.75rem;
color: #1e1a4c;
display: flex;
align-items: center;
gap: 12px;
position: relative;
text-shadow:
0 2px 4px rgba(83, 128, 234, 0.15),
0 1px 2px rgba(0, 0, 0, 0.05);
letter-spacing: -0.5px;
}
.trophy-icon {
display: inline-block;
vertical-align: middle;
color: #f59e0b;
filter: drop-shadow(0 2px 4px rgba(245, 158, 11, 0.3));
flex-shrink: 0;
}
.title::before {
content: '';
position: absolute;
left: -20px;
top: 50%;
transform: translateY(-50%);
width: 6px;
height: 36px;
background: linear-gradient(180deg, #5380ea 0%, #03a1ea 100%);
border-radius: 3px;
box-shadow:
0 0 15px rgba(83, 128, 234, 0.6),
0 0 30px rgba(83, 128, 234, 0.3);
}
.refresh-info {
display: flex;
align-items: center;
gap: 12px;
font-size: 14px;
color: var(--text);
}
.refresh-timer {
font-size: 14px;
color: var(--accent-color);
font-weight: 600;
}
/* Table Styles - Bold 3D */
.table-container {
width: 100%;
overflow-x: auto;
background: rgba(255, 255, 255, 0.8);
border-radius: 16px;
padding: 4px;
position: relative;
z-index: 1;
box-shadow:
0 4px 15px rgba(83, 128, 234, 0.08) inset,
0 1px 3px rgba(0, 0, 0, 0.05) inset;
}
.custom-table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
font-size: 14.5px;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
}
.custom-table th,
.custom-table td {
padding: 16px 20px;
text-align: left;
border-bottom: 1px solid rgba(226, 232, 240, 0.6);
}
.custom-table thead tr th:first-child {
border-top-left-radius: 12px;
}
.custom-table thead tr th:last-child {
border-top-right-radius: 12px;
}
.custom-table th {
background: #ffffff;
font-weight: 800;
color: #0f172a;
white-space: nowrap;
border-bottom: 3px solid #3b82f6;
font-size: 13px;
letter-spacing: 1px;
padding: 20px 20px;
text-transform: uppercase;
box-shadow: none;
position: relative;
}
.custom-table th::before {
display: none;
}
.custom-table th::after {
display: none;
}
.custom-table tbody tr {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
background: linear-gradient(135deg, #ffffff 0%, #fafbff 100%);
box-shadow: 0 1px 3px rgba(83, 128, 234, 0.05);
}
.custom-table tbody tr::after {
content: '';
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: linear-gradient(90deg,
rgba(83, 128, 234, 0.03) 0%,
transparent 50%,
rgba(83, 128, 234, 0.03) 100%);
pointer-events: none;
opacity: 0;
transition: opacity 0.3s ease;
z-index: -1;
}
.custom-table tbody tr:nth-child(even) {
background: linear-gradient(135deg, #f8faff 0%, #f0f5ff 100%);
box-shadow: 0 1px 3px rgba(83, 128, 234, 0.06);
}
.custom-table tbody tr td {
position: relative;
z-index: 1;
}
.custom-table tbody tr:last-child td:first-child {
border-bottom-left-radius: 12px;
}
.custom-table tbody tr:last-child td:last-child {
border-bottom-right-radius: 12px;
}
.custom-table tbody tr:last-child td {
border-bottom: none;
}
/* 去掉hover背景色变化增强立体阴影效果 */
.custom-table tbody tr:hover {
box-shadow:
0 4px 16px rgba(83, 128, 234, 0.15),
0 2px 8px rgba(83, 128, 234, 0.1);
position: relative;
z-index: 2;
transform: translateY(-2px);
}
.custom-table tbody tr:hover::after {
opacity: 1;
}
.custom-table .rank-cell {
font-weight: 900;
text-align: center;
width: 70px;
font-size: 18px;
}
.custom-table .rank-1 {
background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
font-size: 1.5em;
filter: drop-shadow(0 3px 6px rgba(251, 191, 36, 0.4));
animation: pulse-rank 2.5s ease-in-out infinite;
}
.custom-table .rank-2 {
background: linear-gradient(135deg, #94a3b8 0%, #64748b 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
font-size: 1.35em;
filter: drop-shadow(0 2px 4px rgba(148, 163, 184, 0.3));
}
.custom-table .rank-3 {
background: linear-gradient(135deg, #ea580c 0%, #c2410c 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
font-size: 1.25em;
filter: drop-shadow(0 2px 4px rgba(234, 88, 12, 0.3));
}
@keyframes pulse-rank {
0%, 100% {
transform: scale(1);
filter: drop-shadow(0 3px 6px rgba(251, 191, 36, 0.4));
}
50% {
transform: scale(1.08);
filter: drop-shadow(0 4px 10px rgba(251, 191, 36, 0.6));
}
}
/* Form Styles */
.search-form {
display: flex;
gap: 12px;
align-items: center;
padding: 16px;
background: var(--field-bg);
border-radius: 8px;
}
.form-group {
display: flex;
align-items: center;
gap: 8px;
flex: 1;
}
.form-input {
height: 40px;
border-radius: 6px;
border: 1px solid #cbd5e1;
padding: 0 12px;
flex: 1;
font-size: 14px;
}
.form-btn {
height: 40px;
padding: 0 24px;
border-radius: 20px;
background: var(--btn-gradient);
color: white;
border: none;
cursor: pointer;
font-weight: 500;
font-size: 14px;
transition: opacity 0.2s;
}
.form-btn:hover {
opacity: 0.9;
}
/* Sidebar Widgets */
.widget-title {
font-size: 20px;
font-weight: 700;
color: var(--title);
margin: 0 0 16px 0;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
.timer-icon {
display: inline-flex;
vertical-align: middle;
color: #3b82f6;
flex-shrink: 0;
width: 20px;
height: 20px;
stroke-width: 2.5;
}
/* Countdown */
.countdown-container {
display: flex;
justify-content: center;
align-items: center;
gap: 8px;
margin-bottom: 24px;
}
.countdown-item {
display: flex;
flex-direction: column;
align-items: center;
background: #f8fafc;
padding: 8px 12px;
border-radius: 8px;
min-width: 60px;
}
.countdown-value {
font-size: 24px;
font-weight: 800;
color: var(--accent-color);
}
.countdown-label {
font-size: 12px;
color: var(--text);
}
.countdown-separator {
font-size: 24px;
font-weight: 700;
color: #cbd5e1;
margin-top: -16px;
}
.action-buttons {
display: flex;
flex-direction: column;
gap: 12px;
}
.full-width-btn {
width: 100%;
height: 48px;
border-radius: 24px;
background: var(--btn-gradient);
color: white;
border: none;
font-weight: 600;
font-size: 16px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
text-decoration: none;
transition: transform 0.2s;
}
.full-width-btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(3, 161, 234, 0.25);
}
.full-width-btn.secondary {
background: #94a3b8;
}
.full-width-btn:disabled,
.full-width-btn.disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
box-shadow: none;
transform: none;
}
/* Announcement */
.announcement-box {
background: #fffbeb;
border: 1px solid #fcd34d;
border-radius: 8px;
padding: 16px;
min-height: 100px;
color: #92400e;
font-size: 14px;
line-height: 1.6;
}
/* Camera */
.camera-wrapper {
background: #000;
border-radius: 8px;
overflow: hidden;
position: relative;
aspect-ratio: 4/3;
margin-bottom: 16px;
}
.camera-placeholder {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
color: rgba(255, 255, 255, 0.5);
font-size: 12px;
}
/* Responsive */
@media (max-width: 1024px) {
.content {
grid-template-columns: 1fr;
}
}
/* Floating Elements (from competition.ejs) */
.floating-back-button {
position: fixed;
bottom: 30px;
right: 30px;
z-index: 9999;
}
.back-link {
display: flex;
align-items: center;
gap: 8px;
background: rgba(0, 0, 0, 0.6);
color: white;
text-decoration: none;
padding: 12px 16px;
border-radius: 25px;
font-size: 14px;
backdrop-filter: blur(10px);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
.floating-user-name {
position: fixed;
top: 30px;
right: 30px;
z-index: 9999;
}
.user-chip {
display: flex;
align-items: center;
gap: 8px;
background: rgba(0, 0, 0, 0.6);
color: #fff;
padding: 12px 16px;
border-radius: 25px;
font-size: 14px;
font-weight: 600;
backdrop-filter: blur(10px);
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
/* Modal from competition-v2.css style */
.modal {
display: none;
position: fixed;
z-index: 10000;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.5);
align-items: center;
justify-content: center;
}
.modal-content {
background-color: #fefefe;
margin: auto;
padding: 0;
border: 1px solid #888;
width: 450px;
border-radius: 12px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
animation: modalFadeIn 0.3s;
}
@keyframes modalFadeIn {
from {
opacity: 0;
transform: translateY(-20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.modal-header {
padding: 16px 24px;
border-bottom: 1px solid #e2e8f0;
display: flex;
justify-content: space-between;
align-items: center;
}
.modal-header h2 {
margin: 0;
font-size: 18px;
color: var(--title);
}
.close-modal {
color: #aaa;
font-size: 28px;
font-weight: bold;
cursor: pointer;
line-height: 1;
}
.close-modal:hover {
color: #000;
}
.modal-body {
padding: 24px;
color: var(--text);
}
.modal-footer {
padding: 16px 24px;
border-top: 1px solid #e2e8f0;
display: flex;
justify-content: flex-end;
gap: 12px;
}
.modal-btn {
padding: 8px 16px;
border-radius: 6px;
cursor: pointer;
font-weight: 500;
border: none;
}
.confirm-btn {
font-size: 16px;
background: var(--btn-gradient);
color: white;
}
.cancel-btn {
background: #e2e8f0;
color: var(--text);
}
/* SSN Floating Button */
.ssn-floating-button {
position: fixed;
top: 30px;
left: 30px;
z-index: 1000;
}
.ssn-button-trigger {
display: flex;
align-items: center;
gap: 8px;
background: var(--btn-gradient);
color: white;
padding: 10px 16px;
border-radius: 30px;
cursor: pointer;
backdrop-filter: blur(8px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
transition: all 0.3s ease;
border: 1px solid rgba(255, 255, 255, 0.1);
}
.ssn-button-trigger:hover {
opacity: 0.9;
transform: translateY(-2px);
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
}
.ssn-button-text {
font-size: 14px;
font-weight: 500;
}
.ssn-info-panel {
position: absolute;
top: 50px;
left: 0;
width: 320px;
background: white;
border-radius: 12px;
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
overflow: hidden;
opacity: 0;
visibility: hidden;
transform: translateY(-10px);
transition: all 0.3s ease;
border: 1px solid #e2e8f0;
}
.ssn-info-panel.show {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
.ssn-info-header {
background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
padding: 16px 20px;
border-bottom: 1px solid #e2e8f0;
display: flex;
justify-content: space-between;
align-items: center;
}
.ssn-info-header h3 {
margin: 0;
font-size: 16px;
color: #1e293b;
font-weight: 700;
}
.ssn-close-btn {
background: transparent;
border: none;
font-size: 24px;
color: #94a3b8;
cursor: pointer;
line-height: 1;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
width: 24px;
height: 24px;
border-radius: 50%;
transition: all 0.2s;
}
.ssn-close-btn:hover {
color: #ef4444;
background: #fee2e2;
}
.ssn-info-content {
padding: 20px;
}
.ssn-info-item {
display: flex;
margin-bottom: 12px;
font-size: 14px;
line-height: 1.5;
}
.ssn-info-item:last-child {
margin-bottom: 0;
}
.ssn-info-item label {
color: #64748b;
width: 90px;
flex-shrink: 0;
}
.ssn-info-item span {
color: #0f172a;
font-weight: 500;
word-break: break-all;
}