265 lines
9.9 KiB
HTML
265 lines
9.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=390, initial-scale=1">
|
|
<title>Kalei — Quick Grounding Ritual</title>
|
|
<link rel="stylesheet" href="../../assets/design-system.css">
|
|
<style>
|
|
.ritual-progress-bar {
|
|
display: flex;
|
|
gap: 4px;
|
|
padding: var(--space-3) var(--space-4) 0;
|
|
}
|
|
.rp-seg {
|
|
flex: 1;
|
|
height: 4px;
|
|
border-radius: 2px;
|
|
background: var(--twilight);
|
|
transition: background 0.3s ease-out;
|
|
}
|
|
.rp-seg.done { background: var(--emerald); box-shadow: 0 0 6px rgba(16,185,129,0.4); }
|
|
.rp-seg.active { background: linear-gradient(to right, var(--emerald), var(--sapphire)); box-shadow: 0 0 8px rgba(16,185,129,0.3); animation: pulse-bar 2s ease-in-out infinite; }
|
|
@keyframes pulse-bar { 0%, 100% { opacity: 1; } 50% { opacity: 0.65; } }
|
|
.ritual-timer {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
font-size: 13px;
|
|
color: var(--dim-light);
|
|
}
|
|
.step-card {
|
|
background: var(--deep-glass);
|
|
border: 1px solid rgba(16,185,129,0.25);
|
|
border-radius: var(--radius-2xl);
|
|
padding: var(--space-5);
|
|
margin-bottom: var(--space-4);
|
|
box-shadow: 0 0 20px rgba(16,185,129,0.05);
|
|
}
|
|
.step-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
padding: 4px 12px;
|
|
border-radius: var(--radius-full);
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
margin-bottom: var(--space-3);
|
|
background: rgba(16,185,129,0.15);
|
|
color: var(--emerald-light);
|
|
}
|
|
.step-prompt {
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
color: var(--pure-light);
|
|
line-height: 1.45;
|
|
margin-bottom: 6px;
|
|
}
|
|
.step-subprompt {
|
|
font-size: 13px;
|
|
color: var(--dim-light);
|
|
line-height: 1.5;
|
|
margin-bottom: var(--space-4);
|
|
}
|
|
.thought-input {
|
|
width: 100%;
|
|
min-height: 90px;
|
|
background: var(--kalei-navy);
|
|
border: 1px solid var(--emerald);
|
|
border-radius: var(--radius-lg);
|
|
padding: 14px;
|
|
font-size: 16px;
|
|
line-height: 1.5;
|
|
color: var(--soft-light);
|
|
outline: none;
|
|
resize: none;
|
|
box-shadow: 0 0 12px rgba(16,185,129,0.08);
|
|
font-family: var(--font-primary);
|
|
}
|
|
.thought-input::placeholder { color: var(--faint-light); }
|
|
.char-count { text-align: right; font-size: 11px; color: var(--faint-light); margin-top: var(--space-2); }
|
|
.upcoming-steps {
|
|
background: var(--kalei-navy);
|
|
border: 1px solid var(--twilight);
|
|
border-radius: var(--radius-xl);
|
|
padding: var(--space-3) var(--space-4);
|
|
margin-bottom: var(--space-4);
|
|
}
|
|
.upcoming-step-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
padding: var(--space-2) 0;
|
|
}
|
|
.upcoming-step-row:not(:last-child) { border-bottom: 1px solid var(--twilight); }
|
|
.upcoming-step-num {
|
|
width: 24px;
|
|
height: 24px;
|
|
border-radius: 50%;
|
|
background: var(--twilight);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--dim-light);
|
|
flex-shrink: 0;
|
|
}
|
|
.upcoming-step-num.current { background: var(--emerald); color: var(--void); box-shadow: 0 0 8px rgba(16,185,129,0.4); }
|
|
.aura-deco {
|
|
position: absolute;
|
|
top: 100px;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
width: 180px;
|
|
height: 180px;
|
|
border-radius: 50%;
|
|
background: radial-gradient(circle, rgba(16,185,129,0.09), transparent 70%);
|
|
filter: blur(40px);
|
|
pointer-events: none;
|
|
animation: breathing 6s ease-in-out infinite;
|
|
}
|
|
.btn-next {
|
|
width: 100%;
|
|
height: 52px;
|
|
background: var(--emerald);
|
|
border-radius: var(--radius-lg);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
color: var(--void);
|
|
text-decoration: none;
|
|
box-shadow: var(--glow-emerald);
|
|
border: none;
|
|
cursor: pointer;
|
|
gap: var(--space-2);
|
|
margin-bottom: var(--space-3);
|
|
transition: background 0.2s ease-out;
|
|
}
|
|
.btn-next:hover { background: var(--emerald-light); }
|
|
.quick-tip {
|
|
background: rgba(16,185,129,0.07);
|
|
border: 1px solid rgba(16,185,129,0.2);
|
|
border-radius: var(--radius-lg);
|
|
padding: var(--space-3) var(--space-4);
|
|
margin-bottom: var(--space-4);
|
|
font-size: 13px;
|
|
color: var(--emerald-light);
|
|
display: flex;
|
|
gap: var(--space-2);
|
|
align-items: flex-start;
|
|
line-height: 1.5;
|
|
}
|
|
.breathe-ring {
|
|
width: 52px;
|
|
height: 52px;
|
|
border-radius: 50%;
|
|
background: rgba(16,185,129,0.08);
|
|
border: 1.5px solid rgba(16,185,129,0.3);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin: 0 auto var(--space-3);
|
|
animation: breathing 6s ease-in-out infinite;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="device-frame">
|
|
|
|
<!-- STATUS BAR -->
|
|
<div class="status-bar">
|
|
<span class="time">2:14</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>
|
|
|
|
<!-- NAV HEADER -->
|
|
<div class="nav-header">
|
|
<a class="nav-back" href="44-ritual-templates.html">
|
|
<svg width="20" height="20" viewBox="0 0 20 20" fill="none">
|
|
<path d="M12 4L6 10L12 16" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
</svg>
|
|
</a>
|
|
<span class="nav-title">Quick Grounding</span>
|
|
<span class="nav-action">
|
|
<div class="ritual-timer">
|
|
<svg width="12" height="12" viewBox="0 0 12 12"><circle cx="6" cy="6" r="5" fill="none" stroke="currentColor" stroke-width="1"/><path d="M6 3v3l2 2" stroke="currentColor" stroke-width="1" stroke-linecap="round"/></svg>
|
|
1:08
|
|
</div>
|
|
</span>
|
|
</div>
|
|
|
|
<!-- STEP PROGRESS -->
|
|
<div class="ritual-progress-bar">
|
|
<div class="rp-seg active"></div>
|
|
<div class="rp-seg"></div>
|
|
</div>
|
|
|
|
<!-- Ambient decoration -->
|
|
<div class="aura-deco"></div>
|
|
|
|
<!-- SCREEN CONTENT -->
|
|
<div class="screen-content" style="padding-top: var(--space-5);">
|
|
|
|
<!-- Breathing ring -->
|
|
<div class="breathe-ring">
|
|
<svg width="22" height="22" viewBox="0 0 22 22" fill="none">
|
|
<circle cx="11" cy="11" r="8" fill="none" stroke="#6EE7B7" stroke-width="1.2" stroke-dasharray="3 3"/>
|
|
<circle cx="11" cy="11" r="4" fill="#10B981" opacity="0.4"/>
|
|
</svg>
|
|
</div>
|
|
|
|
<!-- Step Card -->
|
|
<div class="step-card">
|
|
<div class="step-badge">
|
|
<svg width="12" height="12" viewBox="0 0 12 12"><path d="M6 1L10 6L6 11L2 6Z" fill="currentColor" opacity="0.8"/></svg>
|
|
Step 1 — Name It
|
|
</div>
|
|
<div class="step-prompt">What thought is pulling you out of the present right now?</div>
|
|
<div class="step-subprompt">One sentence is enough. You don't need to solve it — just name it.</div>
|
|
<textarea class="thought-input" placeholder="I keep thinking about..."></textarea>
|
|
<div class="char-count">0 / 280</div>
|
|
</div>
|
|
|
|
<!-- Quick tip -->
|
|
<div class="quick-tip">
|
|
<svg width="14" height="14" viewBox="0 0 14 14" style="flex-shrink:0; margin-top: 1px;"><circle cx="7" cy="7" r="5.5" fill="none" stroke="currentColor" stroke-width="1"/><path d="M7 4v3.5M7 9.5v.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
|
|
Keep it brief. One sentence captures the essence. You'll reframe it in the next step.
|
|
</div>
|
|
|
|
<!-- Steps overview -->
|
|
<div class="label text-dim" style="margin-bottom: var(--space-2);">2 Steps · ~2 min total</div>
|
|
<div class="upcoming-steps">
|
|
<div class="upcoming-step-row">
|
|
<div class="upcoming-step-num current">1</div>
|
|
<div style="flex:1; font-size:14px; color: var(--soft-light);">Name the thought</div>
|
|
<span style="font-size: 12px; color: var(--dim-light);">~1 min</span>
|
|
</div>
|
|
<div class="upcoming-step-row">
|
|
<div class="upcoming-step-num">2</div>
|
|
<div style="flex:1; font-size:14px; color: var(--faint-light);">Ground it with a reframe</div>
|
|
<span style="font-size: 12px; color: var(--faint-light);">~1 min</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Navigation -->
|
|
<a href="48-ritual-complete.html" class="btn-next">
|
|
Continue
|
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M6 4L10 8L6 12" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
|
</a>
|
|
<a href="44-ritual-templates.html" style="text-align: center; display: block; font-size: 14px; color: var(--faint-light); text-decoration: none; padding: var(--space-2); margin-bottom: var(--space-4);">Exit Ritual</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|