Checkpoint

I haven't touched this code in a month and need a rollback point for when I break everything.
This commit is contained in:
2026-07-25 17:39:21 -04:00
parent cc14fc933d
commit 3c2c8ec0ae
2 changed files with 292 additions and 239 deletions
+21
View File
@@ -0,0 +1,21 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Silkscreen:wght@400;700&family=VT323&display=swap" rel="stylesheet">
<link href='https://fonts.googleapis.com/css?family=Inter' rel='stylesheet'>
<link rel="stylesheet" href="timer.css" />
<script src="timer.js"></script>
<title>Lilac Timer</title>
</head>
<body>
<main>
<div class='widgetContainer'>
<div class="layoutContainer">
</div>
</div>
</main>
</body>
</html>
+271 -239
View File
@@ -52,283 +52,315 @@ p {
font-size: 1.3em; font-size: 1.3em;
} }
.contentContainer {
height: fit-content;
width: fit-content;
position: relative;
text-align: center;
}
.mainHeart {
max-height: 100vh;
max-width: 72vw;
}
#SecondHeart { /*
position: absolute; *** Timer Widget ***
top: 0px; */
left: 0px;
}
.infoWrap {
container-type: size;
height: 100%;
width: 100%;
position: absolute;
left: 0px;
top: 0px;
display: grid;
grid-template-columns: 56% 34% 1fr;
grid-template-rows: 11% 1fr 29%;
place-items: center;
text-wrap: nowrap;
}
.infoGroup {
height: 100%;
width: 100%;
grid-column-start: 2;
grid-column-end: 2;
grid-row-start: 2;
grid-row-end: 2;
}
.infoBox { .contentContainer {
height: auto; height: fit-content;
width: 100%; width: fit-content;
font-size: 4cqh; position: relative;
} text-align: center;
}
#InfoBox1 { .mainHeart {
transform: translate(-2%, 0%); max-height: 100vh;
margin-top: -50%; max-width: 72vw;
} }
#InfoBox2 { #SecondHeart {
/* -- !!DO NOT REMOVE!! -- position: absolute;
Removing this transform kills the goal label and I do not know why top: 0px;
left: 0px;
}
.infoWrap {
container-type: size;
height: 100%;
width: 100%;
position: absolute;
left: 0px;
top: 0px;
display: grid;
grid-template-columns: 56% 34% 1fr;
grid-template-rows: 11% 1fr 29%;
place-items: center;
text-wrap: nowrap;
}
.infoGroup {
height: 100%;
width: 100%;
grid-column-start: 2;
grid-column-end: 2;
grid-row-start: 2;
grid-row-end: 2;
}
.infoBox {
height: auto;
width: 100%;
font-size: 4cqh;
}
#InfoBox1 {
transform: translate(-2%, 0%);
margin-top: -50%;
}
#InfoBox2 {
/* -- !!DO NOT REMOVE!! --
Removing this transform kills the goal label and I do not know why
*/
transform: translate(0%, 0%);
}
#InfoBox3 {
width: 142%;
position: relative;
transform: translate(65%, 10%) scale(1, 1);
border-radius: 3cqh;
border: .4cqh solid;
border-color: #00A0F3;
background-color: white;
padding: .4ch 0 .4ch 0;
}
#Timer {
/*
margin-top: 10%;
margin-bottom: 2%;
*/ */
transform: translate(0%, 0%); transform: translate(0%, 0%) scale(.95, 1.2);
} }
#InfoBox3 { #TimerInfo {
width: 142%; transform: translate(0%, -60%);
position: relative; display: none;
transform: translate(65%, 10%) scale(1, 1); }
border-radius: 3cqh;
border: .4cqh solid;
border-color: #00A0F3;
background-color: white;
padding: .4ch 0 .4ch 0;
}
#Timer { #GoalLabel {
/* color: #404145;
margin-top: 10%; }
margin-bottom: 2%;
*/
transform: translate(0%, 0%) scale(.95, 1.2);
}
#TimerInfo { #GoalName {
transform: translate(0%, -60%); width: fit-content;
display: none; position: relative;
} color: #32B993;
text-wrap: nowrap;
display: inline-block;
padding-right: 4%;
transform: translate(.5ch, 0%);
/* --- animation-duration = JS VAR --- */
}
#GoalLabel { #GoalNameDupe {
color: #404145; width: fit-content;
} position: relative;
color: #32B993;
text-wrap: nowrap;
padding-right: 4%;
transform: translate(.5ch, 0%);
/* --- animation-duration = JS VAR --- */
}
#GoalName { #GoalProgressWrap {
width: fit-content; width: fit-content;
position: relative; padding-left: .8cqh;
color: #32B993; padding-right: .8cqh;
text-wrap: nowrap; border-radius: 3cqh;
display: inline-block; border: .4cqh solid;
padding-right: 4%; border-color: #404145;
transform: translate(.5ch, 0%); margin: .4ch auto 0 auto;
/* --- animation-duration = JS VAR --- */ overflow: hidden;
} }
#GoalNameDupe { #GoalProgressBar {
width: fit-content; width: 110%;
position: relative; background-color: #FC98B3;
color: #32B993; transform: translate(-5%, 0%) scale(1, 1.5);
text-wrap: nowrap; }
padding-right: 4%;
transform: translate(.5ch, 0%);
/* --- animation-duration = JS VAR --- */
}
#GoalProgressWrap { #GoalProgress {
width: fit-content; transform: translate(0%, -8%) scale(1);
padding-left: .8cqh; text-align: center;
padding-right: .8cqh; margin-top: -19%;
border-radius: 3cqh; color: #404145;
border: .4cqh solid; }
border-color: #404145;
margin: .4ch auto 0 auto;
overflow: hidden;
}
#GoalProgressBar { #TopUsers {
width: 110%; margin-bottom: 2%;
background-color: #FC98B3; font-weight: normal;
transform: translate(-5%, 0%) scale(1, 1.5); color: #404145;
} }
#GoalProgress { .giftUserWrap {
transform: translate(0%, -8%) scale(1); transform: translate(9%, -8%) scale(1, 1);
text-align: center; }
margin-top: -19%;
color: #404145;
}
#TopUsers { .giftUserRow {
margin-bottom: 2%; width: 100%;
font-weight: normal; display: grid;
color: #404145; grid-template-columns: 2ch 14ch 5ch;
} grid-template-rows: 1fr;
text-wrap: nowrap;
overflow: hidden;
text-align: center;
}
.giftUserWrap { .giftUserNum {
transform: translate(9%, -8%) scale(1, 1); border-right: 1.5px solid #00A0F3;
} border-image: linear-gradient(to top,
transparent 0%,
transparent 5%,
#00A0F3 35%,
#00A0F3 65%,
transparent 95%) 1;
}
.giftUserRow { .giftUserScore {
width: 100%; border-left: 1.5px solid #00A0F3;
display: grid; border-image: linear-gradient(to top,
grid-template-columns: 2ch 14ch 5ch; transparent 0%,
grid-template-rows: 1fr; transparent 5%,
text-wrap: nowrap; #00A0F3 40%,
overflow: hidden; #00A0F3 60%,
text-align: center; transparent 95%) 1;
} text-align: right;
padding-right: .25ch;
}
.giftUserNum { .giftUserName {
border-right: 1.5px solid #00A0F3; width: fit-content;
border-image: linear-gradient(to top, margin-left: 0%;
transparent 0%, position: relative;
transparent 5%, color: #32B993;
#00A0F3 35%, text-align: left;
#00A0F3 65%, display: inline-block;
transparent 95%) 1; padding-right: 4%;
} transform: translate(.5ch, 0%);
}
.giftUserScore { .giftUserNameDupe {
border-left: 1.5px solid #00A0F3; width: fit-content;
border-image: linear-gradient(to top, margin-left: 0%;
transparent 0%, position: relative;
transparent 5%, color: #32B993;
#00A0F3 40%, text-align: left;
#00A0F3 60%, padding-right: 4%;
transparent 95%) 1; transform: translate(.5ch, 0%);
text-align: right; }
padding-right: .25ch;
}
.giftUserName { #GiftUserName1 {
width: fit-content; /* --- animation-duration = JS VAR --- */
margin-left: 0%; }
position: relative;
color: #32B993;
text-align: left;
display: inline-block;
padding-right: 4%;
transform: translate(.5ch, 0%);
}
.giftUserNameDupe { #GiftUserName2 {
width: fit-content; /* --- animation-duration = JS VAR --- */
margin-left: 0%; }
position: relative;
color: #32B993;
text-align: left;
padding-right: 4%;
transform: translate(.5ch, 0%);
}
#GiftUserName1 { #GiftUserName3 {
/* --- animation-duration = JS VAR --- */ /* --- animation-duration = JS VAR --- */
} }
#GiftUserName2 { #GiftUserNameDupe1 {
/* --- animation-duration = JS VAR --- */ /* --- animation-duration = JS VAR --- */
} }
#GiftUserName3 { #GiftUserNameDupe2 {
/* --- animation-duration = JS VAR --- */ /* --- animation-duration = JS VAR --- */
} }
#GiftUserNameDupe1 { #GiftUserNameDupe3 {
/* --- animation-duration = JS VAR --- */ /* --- animation-duration = JS VAR --- */
} }
#GiftUserNameDupe2 { .scrollWrap {
/* --- animation-duration = JS VAR --- */ width: 100%;
} }
#GiftUserNameDupe3 { .rightFadeWrap {
/* --- animation-duration = JS VAR --- */ /*
} mask-image: linear-gradient(to right, black 75%, transparent 90%);
*/
}
.scrollWrap { #RightFadeWrapInfoBox2 {
width: 100%; width: 90%;
} border-left: 1.5px solid #00A0F3;
border-right: 1.5px solid #00A0F3;
border-image: linear-gradient(to top,
transparent 0%,
transparent 5%,
#00A0F3 40%,
#00A0F3 60%,
transparent 95%) 1;
transform: translate(1ch, 0%) scale(1);
}
.rightFadeWrap { .fadeLeft {
/* mask-image: linear-gradient(to right,
mask-image: linear-gradient(to right, black 75%, transparent 90%); transparent 0%,
*/ black 1ch,
} black calc(100% - 2ch),
transparent 100%);
}
#RightFadeWrapInfoBox2 { #ScrollWrapGoal {
width: 90%; /*
border-left: 1.5px solid #00A0F3; width: 90%;
border-right: 1.5px solid #00A0F3; */
border-image: linear-gradient(to top, }
transparent 0%,
transparent 5%,
#00A0F3 40%,
#00A0F3 60%,
transparent 95%) 1;
transform: translate(1ch, 0%) scale(1);
}
.fadeLeft { .scrollWrapName {
mask-image: linear-gradient(to right, }
transparent 0%,
black 1ch,
black calc(100% - 2ch),
transparent 100%);
}
#ScrollWrapGoal { .scrollWrapW {
/* width: fit-content;
width: 90%; display: flex;
*/ }
}
.scrollWrapName { #ScrollWrapGoalW {
} }
.scrollWrapW { .hide {
width: fit-content; display: none;
display: flex; }
}
#ScrollWrapGoalW { .scrollAnim {
} animation: myScroll linear infinite;
}
.hide { @keyframes myScroll {
display: none; 0% {left: 0%; top: 0%;}
} 42% {left: 0%; top: 0%;}
100% {left: -54%; top: 0%;}
}
.scrollAnim {
animation: myScroll linear infinite;
}
@keyframes myScroll {
0% {left: 0%; top: 0%;} /*
42% {left: 0%; top: 0%;} *** Progres Bar Widget ***
100% {left: -54%; top: 0%;} */
}
.widgetContainer {
max-height: 16vh;
max-width: 100vw;
position: relative;
text-align: center;
background-color: lightblue;
container-type: inline-size;
container-name: sidebar;
}
.layoutContainer {
height: clamp(64px, calc(.164*100vw), calc(.164*100vw));
width: clamp(36.563px, 100vw, 100vw);
position: relative;
text-align: center;
background-color: grey;
}