manikandanj's picture
Prepare AI Time Machine hackathon Space
5862322 verified
Raw
History Blame Contribute Delete
11.4 kB
:root {
--tte-cream: #f5e6c8;
--tte-brass: #c4943d;
--tte-amber: #d4a843;
--tte-copper: #b87333;
--tte-cyan: #8ed8d1;
--tte-burgundy: #6b2d3e;
--tte-dark: #1a0f08;
--tte-darker: #080403;
--tte-heading: Georgia, "Times New Roman", serif;
--tte-body: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
--tte-mono: ui-monospace, SFMono-Regular, Consolas, monospace;
}
.tm-intro {
position: fixed;
inset: 0;
z-index: 1000;
overflow: hidden;
background: #080403;
color: var(--tte-cream);
font-family: var(--tte-body);
letter-spacing: 0;
isolation: isolate;
}
.tm-intro::before,
.tm-intro::after {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
}
.tm-intro::before {
z-index: 2;
background:
radial-gradient(ellipse at 50% 52%, transparent 0 42%, rgba(4, 2, 1, 0.72) 78%, rgba(4, 2, 1, 0.98) 100%),
linear-gradient(180deg, rgba(0, 0, 0, 0.62), transparent 20%, transparent 68%, rgba(0, 0, 0, 0.78));
}
.tm-intro::after {
z-index: 4;
opacity: 0.17;
background-image:
linear-gradient(0deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px);
background-size: 4px 4px;
mix-blend-mode: overlay;
}
.tm-intro__sky {
position: absolute;
inset: -10%;
background:
radial-gradient(circle at 50% 42%, rgba(255, 226, 146, 0.36), transparent 18%),
radial-gradient(circle at 22% 30%, rgba(184, 115, 51, 0.18), transparent 18%),
radial-gradient(circle at 78% 34%, rgba(142, 216, 209, 0.16), transparent 17%);
filter: blur(12px);
animation: tm-intro-sky 11.8s ease-in-out forwards;
}
.tm-intro__rails {
position: absolute;
left: 50%;
bottom: -4%;
z-index: 1;
width: min(900px, 120vw);
height: 48vh;
transform: translateX(-50%);
background:
linear-gradient(72deg, transparent 0 43%, rgba(196, 148, 61, 0.58) 43.4% 44%, transparent 44.4%),
linear-gradient(108deg, transparent 0 56%, rgba(196, 148, 61, 0.58) 56.4% 57%, transparent 57.4%),
repeating-linear-gradient(0deg, transparent 0 36px, rgba(245, 230, 200, 0.16) 37px 40px, transparent 41px 74px);
clip-path: polygon(32% 100%, 68% 100%, 54% 0, 46% 0);
opacity: 0.45;
transform-origin: 50% 100%;
animation: tm-intro-rails 11.8s cubic-bezier(0.16, 0.72, 0.12, 1) forwards;
}
.tm-intro__scene {
position: absolute;
inset: 0;
z-index: 3;
display: grid;
place-items: center;
perspective: 1200px;
}
.tm-intro__ticket,
.tm-intro__box,
.tm-intro__energy,
.tm-intro__sparks,
.tm-intro__train {
position: absolute;
max-width: min(78vw, 860px);
max-height: 74vh;
object-fit: contain;
pointer-events: none;
user-select: none;
}
.tm-intro__ticket {
width: min(520px, 68vw);
filter: drop-shadow(0 0 34px rgba(212, 168, 67, 0.5));
transform-origin: 50% 50%;
animation: tm-ticket 11.8s cubic-bezier(0.19, 0.8, 0.2, 1) forwards;
}
.tm-intro__box {
width: min(470px, 60vw);
opacity: 0;
transform: translate3d(0, 10vh, -80px) scale(0.75);
filter: drop-shadow(0 30px 48px rgba(0, 0, 0, 0.58));
animation: tm-box 11.8s cubic-bezier(0.18, 0.75, 0.18, 1) forwards;
}
.tm-intro__energy {
width: min(980px, 118vw);
opacity: 0;
mix-blend-mode: screen;
filter: saturate(1.25) brightness(1.15);
animation: tm-energy 11.8s ease forwards;
}
.tm-intro__sparks {
width: min(1080px, 130vw);
opacity: 0;
mix-blend-mode: screen;
animation: tm-sparks 11.8s ease forwards;
}
.tm-intro__train {
width: min(880px, 96vw);
opacity: 0;
transform: translate3d(0, 8vh, -220px) scale(0.58);
filter: drop-shadow(0 44px 80px rgba(0, 0, 0, 0.68));
animation: tm-train-arrival 11.8s cubic-bezier(0.14, 0.78, 0.18, 1) forwards;
}
.tm-intro__shockwave {
position: absolute;
width: 12vmin;
aspect-ratio: 1;
border: 3px solid rgba(245, 230, 200, 0.8);
border-radius: 50%;
opacity: 0;
box-shadow:
0 0 40px rgba(212, 168, 67, 0.74),
inset 0 0 40px rgba(142, 216, 209, 0.4);
animation: tm-shockwave 11.8s ease forwards;
}
.tm-intro__steam {
position: absolute;
bottom: -8%;
z-index: 3;
width: 50vw;
height: 46vh;
opacity: 0;
background:
radial-gradient(ellipse at 50% 70%, rgba(255, 246, 223, 0.72), transparent 56%),
radial-gradient(ellipse at 24% 62%, rgba(245, 230, 200, 0.36), transparent 42%);
filter: blur(22px);
animation: tm-steam-rise 11.8s ease forwards;
}
.tm-intro__steam--left {
left: -12%;
}
.tm-intro__steam--right {
right: -12%;
transform: scaleX(-1);
}
.tm-intro__copy {
position: absolute;
left: 50%;
top: clamp(30px, 8vh, 82px);
z-index: 6;
width: min(780px, calc(100vw - 40px));
transform: translateX(-50%);
text-align: center;
text-shadow: 0 6px 24px rgba(0, 0, 0, 0.72);
animation: tm-copy-drift 11.8s ease forwards;
}
.tm-intro__eyebrow {
display: inline-block;
margin-bottom: 10px;
color: var(--tte-cyan);
font: 800 12px/1 var(--tte-mono);
letter-spacing: 0.18em;
text-transform: uppercase;
}
.tm-intro__copy h1 {
margin: 0;
color: var(--tte-cream);
font-family: var(--tte-heading);
font-size: clamp(38px, 7vw, 92px);
line-height: 0.95;
font-weight: 700;
}
.tm-intro__copy p {
margin: 12px auto 0;
max-width: 520px;
color: rgba(245, 230, 200, 0.76);
font-size: clamp(15px, 2vw, 20px);
line-height: 1.35;
}
.tm-intro__chapters {
position: absolute;
left: clamp(18px, 5vw, 72px);
bottom: clamp(22px, 7vh, 64px);
z-index: 6;
display: grid;
gap: 8px;
color: rgba(245, 230, 200, 0.62);
font: 800 10px/1.3 var(--tte-mono);
letter-spacing: 0.15em;
text-transform: uppercase;
}
.tm-intro__chapters span {
opacity: 0;
transform: translateX(-12px);
animation: tm-chapter 11.8s ease forwards;
}
.tm-intro__chapters span:nth-child(2) { animation-delay: 2.9s; }
.tm-intro__chapters span:nth-child(3) { animation-delay: 5.6s; }
.tm-intro__chapters span:nth-child(4) { animation-delay: 9.2s; }
.tm-intro__flash {
position: absolute;
inset: 0;
z-index: 8;
opacity: 0;
background: #fff4dc;
pointer-events: none;
animation: tm-final-flash 11.8s ease forwards;
}
.tm-skip-intro {
position: absolute;
right: clamp(16px, 4vw, 42px);
bottom: clamp(18px, 4vw, 38px);
z-index: 9;
width: 44px;
height: 44px;
border: 1px solid rgba(245, 230, 200, 0.34);
border-radius: 50%;
background: rgba(26, 15, 8, 0.66);
color: rgba(245, 230, 200, 0.82);
font: 800 9px/1 var(--tte-mono);
letter-spacing: 0.08em;
text-transform: uppercase;
opacity: 0;
cursor: pointer;
box-shadow: inset 0 0 18px rgba(212, 168, 67, 0.12), 0 10px 24px rgba(0, 0, 0, 0.35);
transition: opacity 500ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
}
.tm-skip-intro[data-visible="true"] {
opacity: 1;
}
.tm-skip-intro:hover,
.tm-skip-intro:focus-visible {
border-color: rgba(142, 216, 209, 0.72);
color: #ffffff;
outline: none;
transform: translateY(-1px);
}
.tm-intro[data-intro-state="complete"] {
pointer-events: none;
animation: tm-complete-fade 1800ms ease-in-out forwards;
}
@keyframes tm-intro-sky {
0% { transform: scale(1); filter: blur(20px); opacity: 0.65; }
50% { opacity: 1; }
100% { transform: scale(1.18); filter: blur(8px); opacity: 1; }
}
@keyframes tm-intro-rails {
0%, 45% { opacity: 0; transform: translateX(-50%) scaleY(0.7); }
60%, 100% { opacity: 0.55; transform: translateX(-50%) scaleY(1.12); }
}
@keyframes tm-ticket {
0% { opacity: 0; transform: translate3d(0, 3vh, -180px) rotateX(38deg) rotateZ(-8deg) scale(0.58); }
8%, 24% { opacity: 1; transform: translate3d(0, 0, 40px) rotateX(0) rotateZ(3deg) scale(1); }
34% { opacity: 1; transform: translate3d(0, 3vh, 0) rotateX(22deg) rotateZ(-5deg) scale(0.78); }
43% { opacity: 0; transform: translate3d(0, 8vh, -60px) rotateX(48deg) rotateZ(-9deg) scale(0.42); }
100% { opacity: 0; transform: translate3d(0, 8vh, -60px) rotateX(48deg) rotateZ(-9deg) scale(0.42); }
}
@keyframes tm-box {
0%, 18% { opacity: 0; transform: translate3d(0, 12vh, -160px) scale(0.62); }
27%, 46% { opacity: 1; transform: translate3d(0, 8vh, 0) scale(0.86); }
50% { filter: brightness(1.9) drop-shadow(0 0 50px rgba(212, 168, 67, 0.76)); }
58%, 100% { opacity: 0; transform: translate3d(0, 10vh, -120px) scale(0.54); }
}
@keyframes tm-energy {
0%, 40% { opacity: 0; transform: scale(0.4) rotate(0deg); }
50% { opacity: 0.9; transform: scale(0.95) rotate(24deg); }
70% { opacity: 0.55; transform: scale(1.22) rotate(90deg); }
100% { opacity: 0; transform: scale(1.42) rotate(150deg); }
}
@keyframes tm-sparks {
0%, 43% { opacity: 0; transform: scale(0.8); }
52%, 78% { opacity: 0.92; transform: scale(1.04); }
100% { opacity: 0; transform: scale(1.2); }
}
@keyframes tm-shockwave {
0%, 47% { opacity: 0; transform: scale(0.2); }
50% { opacity: 1; transform: scale(1); }
64% { opacity: 0; transform: scale(9); }
100% { opacity: 0; transform: scale(9); }
}
@keyframes tm-train-arrival {
0%, 48% { opacity: 0; transform: translate3d(0, 8vh, -220px) scale(0.58); filter: blur(8px) brightness(1.45); }
59% { opacity: 0.92; transform: translate3d(0, 2vh, -40px) scale(0.86); filter: blur(1px) brightness(1.15); }
78%, 91% { opacity: 1; transform: translate3d(0, 0, 0) scale(1.02); filter: blur(0) brightness(1); }
100% { opacity: 0; transform: translate3d(0, -2vh, 120px) scale(1.2); filter: blur(3px) brightness(1.4); }
}
@keyframes tm-steam-rise {
0%, 54% { opacity: 0; transform: translateY(12vh) scale(0.7); }
66%, 88% { opacity: 0.72; }
100% { opacity: 0; transform: translateY(-18vh) scale(1.28); }
}
@keyframes tm-copy-drift {
0%, 24% { opacity: 1; transform: translateX(-50%) translateY(0); }
40%, 65% { opacity: 0.58; transform: translateX(-50%) translateY(-10px); }
77%, 100% { opacity: 0; transform: translateX(-50%) translateY(-24px); }
}
@keyframes tm-chapter {
0%, 8% { opacity: 0; transform: translateX(-12px); }
18%, 46% { opacity: 1; transform: translateX(0); }
56%, 100% { opacity: 0.32; transform: translateX(0); }
}
@keyframes tm-final-flash {
0%, 88% { opacity: 0; }
93% { opacity: 1; }
100% { opacity: 0; }
}
@keyframes tm-complete-fade {
to { opacity: 0; }
}
.tm-intro__sky,
.tm-intro__rails,
.tm-intro__scene,
.tm-intro__copy,
.tm-intro__chapters,
.tm-intro__flash,
.tm-skip-intro {
display: none !important;
}
@media (max-width: 720px) {
.tm-intro__copy {
top: 7vh;
}
.tm-intro__ticket {
width: min(420px, 82vw);
}
.tm-intro__box {
width: min(390px, 78vw);
}
.tm-intro__train {
width: 112vw;
}
.tm-intro__chapters {
display: none;
}
}
@media (prefers-reduced-motion: reduce) {
.tm-intro *,
.tm-intro *::before,
.tm-intro *::after {
animation-duration: 1ms !important;
animation-delay: 0ms !important;
transition-duration: 1ms !important;
}
.tm-skip-intro {
opacity: 1;
}
}