File size: 2,899 Bytes
50ba6d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/* ── Mobile: centered stack (logo, pitch, button) ── */
.welcome {
  display: flex; flex-direction: column; justify-content: center;
  gap: 30px; text-align: center; min-height: 100%;
  background: radial-gradient(120% 70% at 50% -10%, var(--bg-tint), transparent 60%);
}
.welcome-visual { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.logo {
  width: 110px; height: 110px; border-radius: 38px;
  display: grid; place-items: center;
  background: var(--grad-accent); box-shadow: var(--shadow);
  color: var(--on-accent);
  transition: background var(--t-morph), color var(--t-morph);
}
.logo-img {
  display: block;
  object-fit: cover;
  padding: 0;
  background: var(--surface);
  animation: logoFloat 4.5s ease-in-out infinite;
}
.logo .ic { width: 56px; height: 56px; stroke-width: 1.8; }
.brand { font-size: 1.4rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }

.welcome-content { display: flex; flex-direction: column; gap: 30px; }
.pitch h1 { margin-bottom: 12px; }
.pitch .muted { font-size: .98rem; line-height: 1.5; max-width: 300px; margin: 0 auto; }

/* ── Desktop: split hero (gradient visual panel + content) ── */
@media (min-width: 1024px) {
  body[data-page="welcome"] { padding: 36px; align-items: center; justify-content: center; }
  body[data-page="welcome"] .app {
    flex-direction: row;
    width: min(1080px, 96vw);
    max-width: none;
    height: min(86dvh, 720px);
    min-height: 0; max-height: none;
    border-radius: 32px;
    overflow: hidden;
  }

  .welcome {
    flex-direction: row; padding: 0; gap: 0; text-align: left;
    background: none;
  }
  .welcome-visual {
    flex: 0 0 46%; height: 100%; justify-content: center; gap: 18px;
    background: var(--grad-hero); color: var(--on-accent);
    position: relative; overflow: hidden;
  }
  /* soft decorative glow in the visual panel */
  .welcome-visual::after {
    content: ''; position: absolute; width: 320px; height: 320px;
    right: -90px; bottom: -90px; border-radius: 50%;
    background: rgba(255, 255, 255, 0.12);
  }
  .welcome-visual .logo {
    width: 132px; height: 132px; border-radius: 44px;
    background: rgba(255, 255, 255, 0.18); box-shadow: none;
  }
  .welcome-visual .logo-img {
    background: var(--surface);
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.18);
  }
  .welcome-visual .logo .ic { width: 68px; height: 68px; }
  .welcome-visual .brand { color: var(--on-accent); font-size: 1.6rem; }

  .welcome-content {
    flex: 1; justify-content: center; padding: 0 64px; gap: 26px;
  }
  .welcome-content .h1 { font-size: 2.6rem; }
  .welcome-content .pitch .muted { max-width: 400px; margin: 0; font-size: 1.05rem; }
  .welcome-content .btn { width: auto; align-self: flex-start; padding: 16px 36px; }
}

@keyframes logoFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}