2025-02-21 17:04:22 +01:00
|
|
|
<script>
|
2025-02-22 18:17:19 +01:00
|
|
|
import { onMount } from "svelte";
|
|
|
|
import { colors } from "$lib/stores/colors.js";
|
|
|
|
import { rounds } from "$lib/stores/rounds.js";
|
|
|
|
import { categories } from "$lib/stores/categories.js";
|
2025-02-21 23:12:14 +01:00
|
|
|
|
2025-02-25 16:26:52 +01:00
|
|
|
// let wWidth = $state(window.innerWidth);
|
|
|
|
// let wHeight = $state(window.innerHeight);
|
|
|
|
|
2025-02-23 19:25:48 +01:00
|
|
|
let timer;
|
2025-02-23 22:22:17 +01:00
|
|
|
|
|
|
|
let surfers = $state([]);
|
|
|
|
let start = $state(false);
|
|
|
|
|
|
|
|
let info = $state({
|
2025-02-25 16:26:52 +01:00
|
|
|
category: "U12 M",
|
2025-02-21 23:12:14 +01:00
|
|
|
round: "Qualifying",
|
|
|
|
heat: "1",
|
2025-02-25 16:26:52 +01:00
|
|
|
time: 0,
|
2025-02-23 22:22:17 +01:00
|
|
|
});
|
|
|
|
let mins = $state(0);
|
|
|
|
let secs = $state(0);
|
|
|
|
|
|
|
|
let round_name = $state(false);
|
2025-02-22 18:17:19 +01:00
|
|
|
|
|
|
|
onMount(async () => {
|
|
|
|
LoadFromLocalCache();
|
|
|
|
console.log(`onMount: ${JSON.stringify(surfers)}`);
|
|
|
|
});
|
|
|
|
|
|
|
|
function LoadFromLocalCache() {
|
|
|
|
let srf = window.sessionStorage.getItem("surfers");
|
|
|
|
if (srf) {
|
|
|
|
console.log(`load cache: ${srf}`);
|
|
|
|
surfers = JSON.parse(srf);
|
|
|
|
start = JSON.parse(window.sessionStorage.getItem("start"));
|
|
|
|
info = JSON.parse(window.sessionStorage.getItem("info"));
|
|
|
|
console.log(
|
|
|
|
`loaded cache: ${JSON.stringify(surfers)} - ${start} - ${info}`,
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
ResetLocalCache();
|
|
|
|
console.log(`no cache found`);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function ResetLocalCache() {
|
|
|
|
console.log("ResetLocalCache");
|
|
|
|
window.sessionStorage.clear();
|
|
|
|
surfers = [
|
2025-02-25 16:26:52 +01:00
|
|
|
{
|
|
|
|
id: 1,
|
|
|
|
name: "",
|
|
|
|
score: 0,
|
|
|
|
color: "lightgray",
|
|
|
|
priority: 0,
|
|
|
|
delete: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: 2,
|
|
|
|
name: "",
|
|
|
|
score: 0,
|
|
|
|
color: "lightgray",
|
|
|
|
priority: 0,
|
|
|
|
delete: false,
|
|
|
|
},
|
2025-02-22 18:17:19 +01:00
|
|
|
];
|
|
|
|
start = false;
|
|
|
|
info = {
|
2025-02-25 16:26:52 +01:00
|
|
|
category: "U12 M",
|
2025-02-22 18:17:19 +01:00
|
|
|
round: "Qualifying",
|
|
|
|
heat: "1",
|
2025-02-25 16:26:52 +01:00
|
|
|
time: 0,
|
2025-02-22 18:17:19 +01:00
|
|
|
};
|
2025-02-25 16:26:52 +01:00
|
|
|
mins = info.time;
|
2025-02-23 22:22:17 +01:00
|
|
|
secs = 0;
|
2025-02-22 18:17:19 +01:00
|
|
|
round_name = false;
|
|
|
|
console.log(`reset store: ${JSON.stringify(surfers)}`);
|
|
|
|
}
|
|
|
|
|
|
|
|
function SaveToLocalCahe() {
|
|
|
|
window.sessionStorage.setItem("surfers", JSON.stringify(surfers));
|
|
|
|
window.sessionStorage.setItem("info", JSON.stringify(info));
|
|
|
|
console.log(`update cache: ${JSON.stringify(surfers)}`);
|
|
|
|
}
|
|
|
|
|
|
|
|
function StartHeat() {
|
2025-02-23 19:25:48 +01:00
|
|
|
console.log("StartHeat");
|
2025-02-22 18:17:19 +01:00
|
|
|
start = true;
|
2025-02-25 16:26:52 +01:00
|
|
|
mins = info.time;
|
|
|
|
secs = 0;
|
2025-02-22 18:17:19 +01:00
|
|
|
SaveToLocalCahe();
|
2025-02-25 16:26:52 +01:00
|
|
|
timer = setInterval(Timer, 1000);
|
2025-02-23 22:22:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function pad(n) {
|
|
|
|
return n < 10 ? "0" + n : n;
|
|
|
|
}
|
|
|
|
|
|
|
|
function Timer() {
|
2025-02-24 12:44:48 +01:00
|
|
|
if (mins == 0 && secs == 0) {
|
|
|
|
StopHeat();
|
|
|
|
}
|
2025-02-23 22:22:17 +01:00
|
|
|
if (secs == 0) {
|
|
|
|
mins = mins - 1;
|
|
|
|
secs = 59;
|
|
|
|
} else {
|
|
|
|
secs = secs - 1;
|
|
|
|
}
|
2025-02-22 18:17:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function StopHeat() {
|
2025-02-23 19:25:48 +01:00
|
|
|
console.log("StopHeat");
|
2025-02-22 18:17:19 +01:00
|
|
|
start = false;
|
|
|
|
SaveToLocalCahe;
|
2025-02-23 19:25:48 +01:00
|
|
|
clearInterval(timer);
|
2025-02-22 18:17:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
function CheckRound() {
|
|
|
|
if (!round_name) {
|
|
|
|
info.round = "Qualifying";
|
|
|
|
} else {
|
|
|
|
info.round = "QR";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-02-24 10:19:54 +01:00
|
|
|
function AddSurfer() {
|
|
|
|
if (surfers.length < 5) {
|
|
|
|
let newSurfer = {
|
|
|
|
id: surfers.length + 1,
|
|
|
|
name: "",
|
|
|
|
score: 0,
|
|
|
|
rank: 0,
|
2025-02-25 16:26:52 +01:00
|
|
|
color: "lightgray",
|
2025-02-24 10:19:54 +01:00
|
|
|
delete: true,
|
|
|
|
};
|
|
|
|
surfers.push(newSurfer);
|
|
|
|
SaveToLocalCahe();
|
2025-02-22 18:17:19 +01:00
|
|
|
}
|
2025-02-24 10:19:54 +01:00
|
|
|
}
|
2025-02-22 18:17:19 +01:00
|
|
|
|
2025-02-24 10:19:54 +01:00
|
|
|
function DelSurfer() {
|
|
|
|
if (surfers.length > 2) {
|
|
|
|
surfers.pop();
|
|
|
|
SaveToLocalCahe();
|
|
|
|
}
|
2025-02-22 18:17:19 +01:00
|
|
|
}
|
2025-02-25 16:26:52 +01:00
|
|
|
|
|
|
|
async function SendStatus() {
|
|
|
|
if (dev) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const res = await fetch(`/api/status`, {
|
|
|
|
method: "POST",
|
|
|
|
body: JSON.stringify({
|
|
|
|
surfers: surfers,
|
|
|
|
info: info,
|
|
|
|
start: start,
|
|
|
|
}),
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
},
|
|
|
|
});
|
|
|
|
console.log(`SendPriority: ${JSON.stringify(info)}`);
|
|
|
|
}
|
2025-02-21 17:04:22 +01:00
|
|
|
</script>
|
|
|
|
|
2025-02-25 16:26:52 +01:00
|
|
|
<!-- <svelte:window bind:innerWidth={wWidth} bind:innerHeight={wHeight} /> -->
|
|
|
|
|
2025-02-22 18:17:19 +01:00
|
|
|
<div class="body">
|
|
|
|
<div id="score-container">
|
|
|
|
<div class="info-box">
|
|
|
|
<div class="Time">
|
2025-02-23 22:22:17 +01:00
|
|
|
{#if mins >= 0}
|
|
|
|
<span id="time">{pad(mins)}:{pad(secs)}</span>
|
2025-02-22 18:17:19 +01:00
|
|
|
{/if}
|
|
|
|
</div>
|
|
|
|
<div class="Cat">
|
2025-02-25 16:26:52 +01:00
|
|
|
<small><span id="round">{info.category}</span></small>
|
2025-02-22 18:17:19 +01:00
|
|
|
</div>
|
|
|
|
<div class="Round">
|
|
|
|
<small><span id="round">{info.round}</span></small>
|
|
|
|
</div>
|
|
|
|
<div class="Heat">
|
|
|
|
<small><span id="heat">Heat {info.heat}</span></small>
|
|
|
|
</div>
|
2025-02-21 17:04:22 +01:00
|
|
|
</div>
|
|
|
|
|
2025-02-22 18:17:19 +01:00
|
|
|
{#each surfers as surfer}
|
|
|
|
{#if surfer.name != ""}
|
|
|
|
<div class="score-box">
|
|
|
|
<div
|
|
|
|
class="color"
|
2025-02-25 16:26:52 +01:00
|
|
|
style="background-color: {surfer.color};"
|
|
|
|
id="color-{surfer.color}">
|
2025-02-22 18:17:19 +01:00
|
|
|
</div>
|
|
|
|
<div class="surfer">{surfer.name}</div>
|
|
|
|
{#if surfer.score != 0}
|
|
|
|
<div class="score" id="score-1">{surfer.score}</div>
|
|
|
|
{/if}
|
2025-02-21 23:12:14 +01:00
|
|
|
</div>
|
2025-02-22 18:17:19 +01:00
|
|
|
{/if}
|
|
|
|
{/each}
|
|
|
|
</div>
|
2025-02-21 17:04:22 +01:00
|
|
|
|
2025-02-22 18:17:19 +01:00
|
|
|
<!-- Form -->
|
|
|
|
<div class="form-box">
|
|
|
|
<form>
|
2025-02-23 19:25:48 +01:00
|
|
|
{#if start}
|
|
|
|
<button
|
|
|
|
type="submit"
|
|
|
|
class="btn btn-danger mt-1 mb-3 w-100"
|
2025-02-23 22:22:17 +01:00
|
|
|
onclick={StopHeat}>Stop</button>
|
2025-02-23 19:25:48 +01:00
|
|
|
{:else}
|
|
|
|
<button
|
|
|
|
type="submit"
|
|
|
|
class="btn btn-primary mt-1 mb-3 w-100"
|
2025-02-23 22:22:17 +01:00
|
|
|
onclick={StartHeat}>Start</button>
|
2025-02-23 19:25:48 +01:00
|
|
|
{/if}
|
|
|
|
|
2025-02-22 18:17:19 +01:00
|
|
|
<div class="input-group mb-1">
|
2025-02-25 16:26:52 +01:00
|
|
|
<span class="input-group-text">time</span>
|
2025-02-22 18:17:19 +01:00
|
|
|
<input
|
2025-02-25 16:26:52 +01:00
|
|
|
disabled={start}
|
2025-02-22 18:17:19 +01:00
|
|
|
type="text"
|
|
|
|
class="form-control time"
|
|
|
|
name="time"
|
|
|
|
required
|
|
|
|
pattern="^[0-9][0-9]$"
|
|
|
|
maxlength="2"
|
|
|
|
size="2"
|
2025-02-25 16:26:52 +01:00
|
|
|
onchange={() => {
|
|
|
|
secs = 0;
|
|
|
|
mins = info.time;
|
|
|
|
}}
|
|
|
|
bind:value={info.time} />
|
2025-02-22 18:17:19 +01:00
|
|
|
<span class="input-group-text">category</span>
|
|
|
|
<select
|
|
|
|
class="form-select"
|
|
|
|
name="category"
|
|
|
|
aria-label="Category"
|
2025-02-25 16:26:52 +01:00
|
|
|
bind:value={info.category}>
|
2025-02-22 18:17:19 +01:00
|
|
|
{#each $categories as cat}
|
|
|
|
<option value={cat.title}>{cat.title}</option>
|
|
|
|
{/each}
|
|
|
|
</select>
|
|
|
|
</div>
|
2025-02-21 23:12:14 +01:00
|
|
|
|
2025-02-22 18:17:19 +01:00
|
|
|
<div class="input-group">
|
|
|
|
<span class="input-group-text">round</span>
|
|
|
|
<select
|
|
|
|
name="round"
|
|
|
|
class="form-select"
|
|
|
|
aria-label="Round"
|
|
|
|
bind:value={info.round}>
|
|
|
|
{#each $rounds as rnd}
|
|
|
|
{#if round_name}
|
|
|
|
<option value={rnd.title}>{rnd.name}</option>
|
|
|
|
{:else}
|
|
|
|
<option value={rnd.name}>{rnd.name}</option>
|
|
|
|
{/if}
|
|
|
|
{/each}
|
|
|
|
</select>
|
|
|
|
<div class="input-group-text">
|
|
|
|
<input
|
|
|
|
class="form-check-input mt-0"
|
|
|
|
type="checkbox"
|
|
|
|
bind:checked={round_name}
|
2025-02-23 22:22:17 +01:00
|
|
|
onchange={CheckRound}
|
2025-02-22 18:17:19 +01:00
|
|
|
aria-label="Checkbox for following text input" />
|
|
|
|
</div>
|
|
|
|
<span class="input-group-text">heat</span>
|
|
|
|
<input
|
|
|
|
type="text"
|
|
|
|
class="form-control"
|
|
|
|
name="heat"
|
|
|
|
bind:value={info.heat}
|
|
|
|
pattern="^[0-9][0-9]?$"
|
|
|
|
maxlength="2"
|
|
|
|
size="2" />
|
|
|
|
</div>
|
|
|
|
<hr />
|
|
|
|
<div class="surfer">
|
|
|
|
<ul>
|
|
|
|
{#each surfers as surfer, id}
|
|
|
|
<li>
|
2025-02-25 16:26:52 +01:00
|
|
|
<div
|
|
|
|
class="d-grid gap-2 d-md-flex justify-content-md-center mb-2">
|
|
|
|
<!-- <div class="input-group"> -->
|
2025-02-22 18:17:19 +01:00
|
|
|
<!-- <span class="input-group-text">colore</span> -->
|
|
|
|
<select
|
2025-02-25 16:26:52 +01:00
|
|
|
class="form-select w-25"
|
2025-02-22 18:17:19 +01:00
|
|
|
name="color"
|
|
|
|
aria-label="Color"
|
|
|
|
size="1"
|
2025-02-25 16:26:52 +01:00
|
|
|
bind:value={surfer.color}
|
|
|
|
style="background-color: {surfer.color};">
|
2025-02-22 18:17:19 +01:00
|
|
|
{#each $colors as col}
|
|
|
|
<option
|
|
|
|
value={col}
|
|
|
|
class="color"
|
|
|
|
style="background-color: {col}"
|
|
|
|
>{col}</option>
|
|
|
|
{/each}
|
|
|
|
</select>
|
2025-02-25 16:26:52 +01:00
|
|
|
<span class="badge bg-secondary">nome</span>
|
2025-02-22 18:17:19 +01:00
|
|
|
<input
|
|
|
|
type="text"
|
|
|
|
class="form-control"
|
|
|
|
name="nome-{id}"
|
|
|
|
bind:value={surfer.name} />
|
2025-02-21 17:04:22 +01:00
|
|
|
|
2025-02-25 16:26:52 +01:00
|
|
|
<span class="badge bg-secondary">score</span>
|
2025-02-22 18:17:19 +01:00
|
|
|
<input
|
|
|
|
type="number"
|
2025-02-25 16:26:52 +01:00
|
|
|
class="form-control w-25"
|
2025-02-22 18:17:19 +01:00
|
|
|
name="score-{id}"
|
|
|
|
bind:value={surfer.score} />
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
{/each}
|
|
|
|
</ul>
|
|
|
|
</div>
|
2025-02-24 10:19:54 +01:00
|
|
|
<div class="d-grid gap-2 d-md-flex justify-content-md-center mb-2">
|
2025-02-22 18:17:19 +01:00
|
|
|
<button
|
|
|
|
type="button"
|
2025-02-24 10:19:54 +01:00
|
|
|
class="btn btn-primary w-50"
|
|
|
|
onclick={AddSurfer}>Add</button>
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
class="btn btn-warning w-50"
|
|
|
|
onclick={DelSurfer}>Del</button>
|
|
|
|
|
|
|
|
<!-- <div class="btn-group w-100" role="group" aria-label="save"> -->
|
|
|
|
</div>
|
|
|
|
<div class="d-grid gap-2 d-md-flex justify-content-md-center mt-2">
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
class="btn btn-primary w-50"
|
2025-02-23 22:22:17 +01:00
|
|
|
onclick={SaveToLocalCahe}>Save</button>
|
2025-02-22 18:17:19 +01:00
|
|
|
<button
|
|
|
|
type="button"
|
2025-02-24 10:19:54 +01:00
|
|
|
class="btn btn-danger w-50"
|
2025-02-23 22:22:17 +01:00
|
|
|
onclick={ResetLocalCache}>Reset</button>
|
2025-02-22 18:17:19 +01:00
|
|
|
</div>
|
2025-02-25 16:26:52 +01:00
|
|
|
<!-- <div class="d-grid gap-2 d-md-flex justify-content-md-center mt-2">
|
|
|
|
<button class="justify-content-md-center"
|
|
|
|
>{wWidth} - {wHeight}</button>
|
|
|
|
</div> -->
|
2025-02-22 18:17:19 +01:00
|
|
|
</form>
|
|
|
|
</div>
|
2025-02-21 17:04:22 +01:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<style>
|
2025-02-24 10:19:54 +01:00
|
|
|
.body {
|
2025-02-25 16:26:52 +01:00
|
|
|
background-color: lightgreen;
|
2025-02-24 10:19:54 +01:00
|
|
|
color: black;
|
2025-02-21 17:04:22 +01:00
|
|
|
font-family: Arial, sans-serif;
|
2025-02-25 16:26:52 +01:00
|
|
|
min-height: 895px;
|
|
|
|
min-width: 1024px;
|
2025-02-21 17:04:22 +01:00
|
|
|
}
|
|
|
|
.info-box {
|
|
|
|
display: grid;
|
|
|
|
top: 6px;
|
|
|
|
left: 6px;
|
2025-02-23 22:22:17 +01:00
|
|
|
width: 254px;
|
2025-02-24 12:44:48 +01:00
|
|
|
padding-left: 6px;
|
2025-02-25 16:26:52 +01:00
|
|
|
padding-right: 4px;
|
|
|
|
background: rgba(40, 40, 40, 0.8);
|
2025-02-21 17:04:22 +01:00
|
|
|
color: white;
|
|
|
|
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
|
|
|
|
grid-template-rows: 1fr 1fr 1fr;
|
|
|
|
gap: 1px 1px;
|
|
|
|
grid-template-areas:
|
|
|
|
"Time Time Time Cat Cat"
|
|
|
|
"Time Time Time Round Round"
|
|
|
|
"Time Time Time Heat Heat";
|
|
|
|
margin: 2px;
|
|
|
|
}
|
|
|
|
.score-box {
|
|
|
|
display: grid;
|
|
|
|
grid-template-columns: 1fr 4fr 1fr;
|
|
|
|
grid-template-areas: "color surfer score";
|
2025-02-23 22:22:17 +01:00
|
|
|
width: 254px;
|
2025-02-21 17:04:22 +01:00
|
|
|
padding-left: 6px;
|
|
|
|
padding-right: 6px;
|
|
|
|
padding-top: 2px;
|
|
|
|
padding-bottom: 2px;
|
2025-02-25 16:26:52 +01:00
|
|
|
background: rgba(40, 40, 40, 0.8);
|
2025-02-21 17:04:22 +01:00
|
|
|
color: white;
|
|
|
|
margin-left: 2px;
|
|
|
|
}
|
|
|
|
.Time {
|
|
|
|
grid-area: Time;
|
|
|
|
font-size: 48px;
|
|
|
|
font-weight: bold;
|
|
|
|
justify-self: start;
|
|
|
|
align-self: center;
|
|
|
|
}
|
|
|
|
.Cat {
|
|
|
|
grid-area: Cat;
|
|
|
|
font-size: 14px;
|
2025-02-22 18:17:19 +01:00
|
|
|
justify-self: start;
|
2025-02-21 17:04:22 +01:00
|
|
|
align-self: center;
|
2025-02-25 16:26:52 +01:00
|
|
|
margin-left: 28px;
|
2025-02-21 17:04:22 +01:00
|
|
|
#font-weight: bold;
|
|
|
|
}
|
|
|
|
.Round {
|
|
|
|
grid-area: Round;
|
2025-02-21 23:12:14 +01:00
|
|
|
font-size: 14px;
|
2025-02-22 18:17:19 +01:00
|
|
|
justify-self: start;
|
2025-02-21 17:04:22 +01:00
|
|
|
align-self: center;
|
2025-02-25 16:26:52 +01:00
|
|
|
margin-left: 28px;
|
2025-02-21 17:04:22 +01:00
|
|
|
#font-weight: bold;
|
|
|
|
}
|
|
|
|
.Heat {
|
|
|
|
grid-area: Heat;
|
2025-02-21 23:12:14 +01:00
|
|
|
font-size: 14px;
|
2025-02-22 18:17:19 +01:00
|
|
|
justify-self: start;
|
2025-02-21 17:04:22 +01:00
|
|
|
align-self: center;
|
2025-02-25 16:26:52 +01:00
|
|
|
margin-left: 28px;
|
2025-02-21 17:04:22 +01:00
|
|
|
#font-weight: bold;
|
|
|
|
}
|
|
|
|
.surfer {
|
|
|
|
grid-area: surfer;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
padding: 6px;
|
|
|
|
width: 100%;
|
|
|
|
align-content: center;
|
|
|
|
}
|
|
|
|
.surfer ul {
|
|
|
|
list-style-type: none;
|
|
|
|
margin-left: 0px;
|
|
|
|
padding-left: 0px;
|
|
|
|
}
|
|
|
|
.surfer select {
|
|
|
|
-moz-appearance: none; /* Firefox */
|
|
|
|
-webkit-appearance: none; /* Safari and Chrome */
|
|
|
|
appearance: none;
|
|
|
|
}
|
|
|
|
.color {
|
|
|
|
grid-area: color;
|
|
|
|
width: 30px;
|
|
|
|
height: 30px;
|
|
|
|
border-radius: 2px;
|
|
|
|
margin-right: 10px;
|
|
|
|
margin-top: 4px;
|
|
|
|
margin-left: 4px;
|
|
|
|
}
|
|
|
|
.score {
|
|
|
|
grid-area: score;
|
|
|
|
font-weight: bold;
|
2025-02-23 22:22:17 +01:00
|
|
|
text-align: start;
|
2025-02-21 17:04:22 +01:00
|
|
|
align-content: center;
|
|
|
|
margin-right: 2px;
|
|
|
|
}
|
|
|
|
.form-box {
|
2025-02-25 16:26:52 +01:00
|
|
|
width: 700px;
|
2025-02-21 17:04:22 +01:00
|
|
|
background: rgba(50, 50, 50, 0.7);
|
|
|
|
color: white;
|
2025-02-24 10:19:54 +01:00
|
|
|
margin-left: 550px;
|
2025-02-22 18:17:19 +01:00
|
|
|
margin-top: 100px;
|
2025-02-21 17:04:22 +01:00
|
|
|
padding: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.form-box .time {
|
|
|
|
font-size: 16px;
|
|
|
|
font-weight: bold;
|
|
|
|
justify-self: start;
|
|
|
|
align-self: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.form-box .surfer {
|
|
|
|
font-size: 16px;
|
|
|
|
font-weight: bold;
|
|
|
|
justify-self: end;
|
|
|
|
}
|
|
|
|
</style>
|