kalei/initial mockups/screens/onboarding/09-welcome-complete.html

314 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=390, initial-scale=1">
<title>Kalei — You're Ready</title>
<link rel="stylesheet" href="../../assets/design-system.css">
<style>
.screen-content.centered {
padding: var(--space-8) var(--space-6);
position: relative;
overflow: hidden;
}
.bg-shards {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 0;
}
.kalei-pattern {
position: relative;
width: 180px;
height: 180px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: var(--space-8);
z-index: 1;
}
.pattern-aura {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 300px;
height: 300px;
border-radius: 50%;
background: radial-gradient(circle, rgba(139,92,246,0.18) 0%, rgba(59,130,246,0.07) 40%, rgba(16,185,129,0.04) 60%, transparent 70%);
filter: blur(55px);
animation: breathing 6s ease-in-out infinite;
pointer-events: none;
z-index: 0;
}
.pattern-svg {
position: relative;
z-index: 1;
}
/* Burst rings */
.burst-container {
position: absolute;
top: 42%;
left: 50%;
pointer-events: none;
z-index: 0;
}
.burst-ring {
position: absolute;
border-radius: 50%;
border: 1px solid;
transform: translate(-50%, -50%);
animation: burstExpand 2.4s ease-out forwards;
}
.burst-ring:nth-child(1) { border-color: rgba(139,92,246,0.4); animation-delay: 0s; }
.burst-ring:nth-child(2) { border-color: rgba(59,130,246,0.3); animation-delay: 0.35s; }
.burst-ring:nth-child(3) { border-color: rgba(16,185,129,0.2); animation-delay: 0.7s; }
@keyframes burstExpand {
0% { width: 40px; height: 40px; opacity: 1; }
100% { width: 280px; height: 280px; opacity: 0; }
}
.setup-stats {
display: flex;
gap: var(--space-3);
margin-bottom: var(--space-10);
z-index: 1;
width: 100%;
}
.setup-stat {
flex: 1;
background: rgba(139,92,246,0.08);
border: 1px solid rgba(139,92,246,0.2);
border-radius: var(--radius-lg);
padding: var(--space-3);
text-align: center;
}
.setup-stat-icon {
display: flex;
justify-content: center;
margin-bottom: var(--space-1);
}
.cta-area {
width: 100%;
z-index: 1;
}
.btn-enter {
display: flex;
align-items: center;
justify-content: center;
gap: var(--space-3);
height: 56px;
width: 100%;
background: var(--amethyst);
color: var(--pure-light);
font-family: var(--font-primary);
font-size: 17px;
font-weight: 700;
border-radius: var(--radius-xl);
text-decoration: none;
box-shadow: 0 0 24px rgba(139,92,246,0.4);
transition: all 0.2s ease-out;
animation: breathing 6s ease-in-out infinite;
}
.btn-enter:hover {
background: var(--amethyst-light);
box-shadow: 0 0 40px rgba(139,92,246,0.6);
}
</style>
</head>
<body>
<div class="device-frame">
<div class="status-bar">
<span class="time">9:41</span>
<div class="icons">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="1" y="7" width="2.5" height="5" rx="0.5" fill="#E2E8F0" opacity="0.4"/><rect x="4.5" y="5" width="2.5" height="7" rx="0.5" fill="#E2E8F0" opacity="0.6"/><rect x="8" y="3" width="2.5" height="9" rx="0.5" fill="#E2E8F0" opacity="0.8"/><rect x="11.5" y="1" width="2.5" height="11" rx="0.5" fill="#E2E8F0"/></svg>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M 2,8 C 4,4 12,4 14,8" stroke="#E2E8F0" stroke-width="1.2" fill="none" stroke-linecap="round"/><path d="M 4,10 C 6,7 10,7 12,10" stroke="#E2E8F0" stroke-width="1" fill="none" opacity="0.8" stroke-linecap="round"/><circle cx="8" cy="12" r="1.2" fill="#E2E8F0"/></svg>
<svg width="24" height="12" viewBox="0 0 24 12" fill="none"><rect x="0.5" y="0.5" width="21" height="11" rx="2.5" stroke="#E2E8F0" stroke-width="1" opacity="0.5"/><rect x="22" y="3" width="2" height="6" rx="1" fill="#E2E8F0" opacity="0.3"/><rect x="2" y="2" width="16" height="8" rx="1.5" fill="#10B981" opacity="0.9"/></svg>
</div>
</div>
<div class="screen-content centered">
<!--
Background floating shards — extracted from decorative-shards.svg → Floating Shards section
6 shaped shard paths repositioned across 390×730 screen, prismatic all-jewel colors
-->
<svg class="bg-shards" viewBox="0 0 390 730" fill="none" preserveAspectRatio="xMidYMid slice">
<defs>
<filter id="s09-glowSm" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="1.5" result="b"/>
<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
</defs>
<!-- Amethyst shard upper-left -->
<g transform="translate(40,85)" filter="url(#s09-glowSm)" opacity="0.55">
<path d="M 0,-18 L 10,-4 L 2,16 L -8,6 Z" fill="#C4B5FD" transform="rotate(15)">
<animate attributeName="opacity" values="0.4;0.65;0.4" dur="5s" repeatCount="indefinite"/>
<animateTransform attributeName="transform" type="translate" values="0,0;2,-3;0,0" dur="5s" repeatCount="indefinite" additive="sum"/>
</path>
</g>
<!-- Sapphire shard upper-right -->
<g transform="translate(348,65)" filter="url(#s09-glowSm)" opacity="0.5">
<path d="M 0,-14 L 8,0 L 0,14 L -8,0 Z" fill="#93C5FD" transform="rotate(-25)">
<animate attributeName="opacity" values="0.35;0.6;0.35" dur="7s" repeatCount="indefinite"/>
<animateTransform attributeName="transform" type="translate" values="0,0;-2,2;0,0" dur="7s" repeatCount="indefinite" additive="sum"/>
</path>
</g>
<!-- Emerald shard mid-left -->
<g transform="translate(25,380)" filter="url(#s09-glowSm)" opacity="0.45">
<path d="M 0,-22 L 6,-5 L 0,22 L -6,-5 Z" fill="#6EE7B7" transform="rotate(12)">
<animate attributeName="opacity" values="0.3;0.55;0.3" dur="9s" repeatCount="indefinite"/>
<animateTransform attributeName="transform" type="translate" values="0,0;3,5;0,0" dur="9s" repeatCount="indefinite" additive="sum"/>
</path>
</g>
<!-- Amber shard mid-right -->
<g transform="translate(360,330)" filter="url(#s09-glowSm)" opacity="0.45">
<path d="M 0,-12 L 8,4 L -2,12 L -8,-2 Z" fill="#FDE68A" transform="rotate(-18)">
<animate attributeName="opacity" values="0.3;0.55;0.3" dur="6s" repeatCount="indefinite"/>
<animateTransform attributeName="transform" type="translate" values="0,0;-3,-2;0,0" dur="6s" repeatCount="indefinite" additive="sum"/>
</path>
</g>
<!-- Rose shard lower-left -->
<g transform="translate(55,570)" filter="url(#s09-glowSm)" opacity="0.4">
<path d="M 0,-16 L 10,0 L 2,16 L -10,4 Z" fill="#F9A8D4" transform="rotate(30)">
<animate attributeName="opacity" values="0.25;0.5;0.25" dur="8s" repeatCount="indefinite"/>
<animateTransform attributeName="transform" type="translate" values="0,0;2,5;0,0" dur="8s" repeatCount="indefinite" additive="sum"/>
</path>
</g>
<!-- Indigo shard lower-right -->
<g transform="translate(335,510)" filter="url(#s09-glowSm)" opacity="0.4">
<path d="M 0,-10 L 6,0 L 0,10 L -6,0 Z" fill="#818CF8" transform="rotate(-8)">
<animate attributeName="opacity" values="0.25;0.5;0.25" dur="4.5s" repeatCount="indefinite"/>
<animateTransform attributeName="transform" type="translate" values="0,0;-1,-3;0,0" dur="4.5s" repeatCount="indefinite" additive="sum"/>
</path>
</g>
</svg>
<!-- Burst rings -->
<div class="burst-container">
<div class="burst-ring"></div>
<div class="burst-ring"></div>
<div class="burst-ring"></div>
</div>
<!--
Hero Kaleidoscope — extracted from patterns-kaleidoscope.svg → Complex 6-blade Prismatic variant
Blades: M 0,0 L 6,-2 L -4,75 L -6,1 Z × 6 at 60° intervals, 6 jewel colors
animateTransform rotate from 0 to 360, dur 90s (Hero pace)
Centred at 80,80 in 160×160 viewport, circClip radius 70
All IDs prefixed s09-k
-->
<div class="kalei-pattern">
<div class="pattern-aura"></div>
<img src="../../assets/kalei-logo.svg" width="100" height="100" alt="Kalei" class="pattern-svg" style="filter: drop-shadow(0 0 12px rgba(139,92,246,0.3));">
</div>
<h1 class="display-lg text-pure" style="margin-bottom: var(--space-4); z-index:1;">Welcome, Alex</h1>
<p class="body text-dim" style="margin-bottom: var(--space-8); z-index:1; max-width: 280px;">Your kaleidoscope is calibrated. The same thoughts you've always had — now seen from angles you haven't tried yet.</p>
<!--
Setup stat icons — extracted from fragment-icons.svg → SM size (radius 8)
Centred at 0,0 in 18×18 viewport (translate 9,9), canonical diamond path
Gradient IDs prefixed s09-
-->
<div class="setup-stats">
<div class="setup-stat">
<div class="setup-stat-icon">
<svg width="18" height="18" viewBox="0 0 18 18">
<defs>
<linearGradient id="s09-statAmethyst" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#C4B5FD"/>
<stop offset="100%" stop-color="#7C3AED"/>
</linearGradient>
</defs>
<g transform="translate(9,9)">
<path d="M 0,-8 L 8,0 L 0,8 L -8,0 Z" fill="url(#s09-statAmethyst)" opacity="0.9"/>
<path d="M 0,-8 L 8,0 L 0,0 Z" fill="#fff" opacity="0.18"/>
<circle cx="-2" cy="-2" r="1" fill="#fff" opacity="0.3"/>
</g>
</svg>
</div>
<div class="body-sm text-dim">Style chosen</div>
</div>
<div class="setup-stat">
<div class="setup-stat-icon">
<svg width="18" height="18" viewBox="0 0 18 18">
<defs>
<linearGradient id="s09-statEmerald" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#6EE7B7"/>
<stop offset="100%" stop-color="#047857"/>
</linearGradient>
</defs>
<g transform="translate(9,9)">
<path d="M 0,-8 L 8,0 L 0,8 L -8,0 Z" fill="url(#s09-statEmerald)" opacity="0.9"/>
<path d="M 0,-8 L 8,0 L 0,0 Z" fill="#fff" opacity="0.18"/>
<circle cx="-2" cy="-2" r="1" fill="#fff" opacity="0.3"/>
</g>
</svg>
</div>
<div class="body-sm text-dim">Account ready</div>
</div>
<div class="setup-stat">
<div class="setup-stat-icon">
<svg width="18" height="18" viewBox="0 0 18 18">
<defs>
<linearGradient id="s09-statAmber" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#FDE68A"/>
<stop offset="100%" stop-color="#D97706"/>
</linearGradient>
</defs>
<g transform="translate(9,9)">
<path d="M 0,-8 L 8,0 L 0,8 L -8,0 Z" fill="url(#s09-statAmber)" opacity="0.9"/>
<path d="M 0,-8 L 8,0 L 0,0 Z" fill="#fff" opacity="0.18"/>
<circle cx="-2" cy="-2" r="1" fill="#fff" opacity="0.3"/>
</g>
</svg>
</div>
<div class="body-sm text-dim">First Turn logged</div>
</div>
</div>
<div class="cta-area">
<a href="../turn/10-turn-home.html" class="btn-enter">
<!--
Button icon — extracted from fragment-icons.svg → Amethyst SM (radius 8)
White fill on coloured button background
-->
<svg width="20" height="20" viewBox="0 0 20 20">
<g transform="translate(10,10)">
<path d="M 0,-8 L 8,0 L 0,8 L -8,0 Z" fill="white" opacity="0.35"/>
<path d="M 0,-8 L 8,0 L 0,0 Z" fill="white" opacity="0.2"/>
<line x1="0" y1="-8" x2="0" y2="8" stroke="#fff" stroke-width="0.5" opacity="0.3"/>
<circle cx="-2" cy="-2" r="1" fill="#fff" opacity="0.5"/>
</g>
</svg>
Enter Kalei
</a>
</div>
</div>
</div>
</body>
</html>