38cc93bc1c
Courses without scraped layouts can now be used in tours by entering a layout name and par manually. The layout is saved to the database for reuse. All courses are shown in the dropdown, not just those with existing layouts.
203 lines
3.1 KiB
CSS
203 lines
3.1 KiB
CSS
/* Tour Form */
|
|
|
|
.tour-form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 16px;
|
|
max-width: 600px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.form-group {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
}
|
|
|
|
.form-group label {
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
color: var(--text-secondary);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.04em;
|
|
}
|
|
|
|
.form-row {
|
|
display: flex;
|
|
gap: 12px;
|
|
}
|
|
|
|
.form-row .form-group {
|
|
flex: 1;
|
|
}
|
|
|
|
/* Course Selector */
|
|
|
|
.course-entry {
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.course-entry select {
|
|
flex: 1;
|
|
}
|
|
|
|
.manual-layout {
|
|
display: flex;
|
|
gap: 6px;
|
|
align-items: center;
|
|
}
|
|
|
|
.manual-layout input {
|
|
flex: 1;
|
|
}
|
|
|
|
.btn-secondary {
|
|
background: var(--surface-2);
|
|
color: var(--text-secondary);
|
|
border: 1px solid var(--border);
|
|
}
|
|
|
|
.btn-secondary:hover {
|
|
background: var(--surface-3);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.btn-remove {
|
|
background: none;
|
|
border: none;
|
|
color: var(--text-muted);
|
|
cursor: pointer;
|
|
padding: 6px;
|
|
border-radius: var(--radius-sm);
|
|
font-size: 14px;
|
|
transition: color var(--transition), background var(--transition);
|
|
}
|
|
|
|
.btn-remove:hover {
|
|
color: var(--red);
|
|
background: var(--red-subtle);
|
|
}
|
|
|
|
/* Tour Header */
|
|
|
|
.tour-header {
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.tour-meta {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 16px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.tour-dates,
|
|
.tour-code-label {
|
|
font-size: 14px;
|
|
color: var(--text-secondary);
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
/* Badges */
|
|
|
|
.badge {
|
|
display: inline-block;
|
|
padding: 3px 10px;
|
|
border-radius: 999px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.04em;
|
|
}
|
|
|
|
.badge-active {
|
|
background: var(--green-subtle);
|
|
color: var(--green);
|
|
}
|
|
|
|
.badge-finished {
|
|
background: var(--surface-3);
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.badge-upcoming {
|
|
background: var(--accent-subtle);
|
|
color: var(--accent);
|
|
}
|
|
|
|
/* Tour Code Display */
|
|
|
|
.tour-created-message {
|
|
text-align: center;
|
|
color: var(--text-secondary);
|
|
margin: 0 0 12px 0;
|
|
}
|
|
|
|
.tour-code-display {
|
|
text-align: center;
|
|
padding: 16px;
|
|
background: var(--surface-2);
|
|
border-radius: var(--radius-md);
|
|
border: 1px solid var(--border);
|
|
}
|
|
|
|
.tour-code-display a {
|
|
font-family: var(--font-mono);
|
|
font-size: 16px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* Leaderboard */
|
|
|
|
.strokes {
|
|
font-weight: 600;
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.under-par {
|
|
color: var(--green);
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.over-par {
|
|
color: var(--red);
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.even-par {
|
|
color: var(--text-muted);
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Responsive */
|
|
|
|
@media (max-width: 768px) {
|
|
.form-row {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.course-entry {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.course-entry select,
|
|
.manual-layout {
|
|
width: 100%;
|
|
}
|
|
|
|
.manual-layout {
|
|
flex-direction: row;
|
|
}
|
|
|
|
.tour-meta {
|
|
gap: 8px;
|
|
}
|
|
} |