Replace remaining hard-coded colors across all CSS files with design tokens from tokens.css. Remove duplicate inline positioning from live.html panels (now in layout.css). Add replay session blob fetch for immediate 3D scene state on seek. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
309 lines
6.1 KiB
CSS
309 lines
6.1 KiB
CSS
/**
|
|
* Spaxel Dashboard - Guided Troubleshooting Styles
|
|
*
|
|
* Proactive contextual help panel with step-by-step guidance.
|
|
*/
|
|
|
|
/* ===== Guided Help Container ===== */
|
|
.guided-help-container {
|
|
position: fixed;
|
|
bottom: 20px;
|
|
left: 20px;
|
|
z-index: 200;
|
|
pointer-events: none;
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
transition: opacity 0.3s ease, transform 0.3s ease;
|
|
}
|
|
|
|
.guided-help-container.visible {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
pointer-events: auto;
|
|
}
|
|
|
|
/* ===== Help Panel ===== */
|
|
.guided-help-panel {
|
|
background: var(--bg-card);
|
|
border: 1px solid var(--blue-border);
|
|
border-radius: var(--radius-card);
|
|
box-shadow: 0 8px 32px var(--shadow-xl), 0 0 0 1px var(--blue-muted);
|
|
width: 380px;
|
|
max-width: calc(100vw - 40px);
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* ===== Header ===== */
|
|
.help-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: var(--space-4) var(--space-5);
|
|
background: linear-gradient(135deg, var(--blue-muted), var(--blue-muted));
|
|
border-bottom: 1px solid var(--blue-muted);
|
|
}
|
|
|
|
.help-title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
}
|
|
|
|
.help-icon {
|
|
font-size: var(--text-3xl);
|
|
line-height: 1;
|
|
}
|
|
|
|
.help-title h3 {
|
|
font-size: var(--text-base);
|
|
font-weight: 600;
|
|
color: var(--slate-12);
|
|
margin: 0;
|
|
}
|
|
|
|
.help-close-btn {
|
|
background: none;
|
|
border: none;
|
|
color: var(--text-muted);
|
|
font-size: var(--text-3xl);
|
|
cursor: pointer;
|
|
padding: 0;
|
|
line-height: 1;
|
|
width: 28px;
|
|
height: 28px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: var(--radius-control);
|
|
transition: background 0.2s, color 0.2s;
|
|
}
|
|
|
|
.help-close-btn:hover {
|
|
background: var(--bg-hover);
|
|
color: var(--slate-11);
|
|
}
|
|
|
|
/* ===== Content ===== */
|
|
.help-content {
|
|
padding: var(--space-5);
|
|
}
|
|
|
|
/* Progress Dots */
|
|
.help-progress {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
margin-bottom: var(--space-5);
|
|
}
|
|
|
|
.help-progress-dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: var(--border-strong);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.help-progress-dot.active {
|
|
background: var(--blue-10);
|
|
box-shadow: 0 0 8px var(--blue-9);
|
|
transform: scale(1.3);
|
|
}
|
|
|
|
.help-progress-dot.completed {
|
|
background: var(--ok);
|
|
}
|
|
|
|
/* Step Content */
|
|
.help-step {
|
|
margin-bottom: var(--space-4);
|
|
}
|
|
|
|
.step-title {
|
|
font-size: var(--text-md);
|
|
font-weight: 600;
|
|
color: var(--blue-10);
|
|
margin: var(--space-2);
|
|
}
|
|
|
|
.step-content {
|
|
font-size: var(--text-sm);
|
|
color: var(--slate-11);
|
|
line-height: var(--lh-body);
|
|
margin: 0;
|
|
}
|
|
|
|
/* Dismiss Hint */
|
|
.help-dismiss-hint {
|
|
margin-top: var(--space-4);
|
|
padding-top: var(--space-3);
|
|
border-top: 1px solid var(--bg-hover);
|
|
}
|
|
|
|
.help-dismiss-checkbox {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
font-size: var(--text-xs);
|
|
color: var(--text-muted);
|
|
cursor: pointer;
|
|
user-select: none;
|
|
}
|
|
|
|
.help-dismiss-checkbox input[type="checkbox"] {
|
|
width: 14px;
|
|
height: 14px;
|
|
accent-color: var(--blue-10);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.help-dismiss-checkbox span {
|
|
line-height: 1;
|
|
}
|
|
|
|
/* ===== Actions ===== */
|
|
.help-actions {
|
|
display: flex;
|
|
gap: var(--space-2);
|
|
padding: var(--space-4) var(--space-5);
|
|
background: var(--shadow);
|
|
border-top: 1px solid var(--bg-hover);
|
|
}
|
|
|
|
.help-btn {
|
|
padding: var(--space-2) var(--space-4);
|
|
border-radius: var(--radius-control);
|
|
font-size: var(--text-sm);
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
border: none;
|
|
transition: background 0.2s, transform 0.1s;
|
|
}
|
|
|
|
.help-btn:hover {
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.help-btn:active {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.help-btn-primary {
|
|
background: var(--blue-10);
|
|
color: var(--bg-card);
|
|
margin-left: auto;
|
|
}
|
|
|
|
.help-btn-primary:hover {
|
|
background: var(--blue-10);
|
|
}
|
|
|
|
.help-btn-secondary {
|
|
background: var(--bg-hover);
|
|
color: var(--slate-11);
|
|
border: 1px solid var(--border-strong);
|
|
}
|
|
|
|
.help-btn-secondary:hover {
|
|
background: var(--border-strong);
|
|
}
|
|
|
|
.help-btn-action {
|
|
background: var(--ok-muted);
|
|
color: var(--ok);
|
|
border: 1px solid var(--ok-border);
|
|
}
|
|
|
|
.help-btn-action:hover {
|
|
background: var(--ok-border);
|
|
}
|
|
|
|
/* ===== Context Help Button ===== */
|
|
.context-help-btn {
|
|
width: 20px;
|
|
height: 20px;
|
|
border-radius: 50%;
|
|
background: var(--blue-muted);
|
|
border: 1px solid var(--blue-border);
|
|
color: var(--blue-10);
|
|
font-size: var(--text-xs);
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: all 0.2s;
|
|
margin-left: 6px;
|
|
}
|
|
|
|
.context-help-btn:hover {
|
|
background: var(--blue-border);
|
|
border-color: var(--blue-9);
|
|
}
|
|
|
|
/* ===== Animation ===== */
|
|
@keyframes helpSlideIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes helpPulse {
|
|
0%, 100% {
|
|
box-shadow: 0 8px 32px var(--shadow-xl), 0 0 0 1px var(--blue-muted);
|
|
}
|
|
50% {
|
|
box-shadow: 0 8px 32px var(--shadow-xl), 0 0 0 2px var(--blue-border);
|
|
}
|
|
}
|
|
|
|
.guided-help-container.visible .guided-help-panel {
|
|
animation: helpSlideIn 0.3s ease-out;
|
|
}
|
|
|
|
/* ===== Responsive Design ===== */
|
|
@media (max-width: 480px) {
|
|
.guided-help-container {
|
|
bottom: 10px;
|
|
left: 10px;
|
|
right: 10px;
|
|
}
|
|
|
|
.guided-help-panel {
|
|
width: 100%;
|
|
max-width: none;
|
|
}
|
|
|
|
.help-actions {
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.help-btn {
|
|
flex: 1;
|
|
min-width: calc(50% - 4px);
|
|
}
|
|
}
|
|
|
|
/* ===== Accessibility ===== */
|
|
.help-btn:focus-visible,
|
|
.help-close-btn:focus-visible,
|
|
.context-help-btn:focus-visible {
|
|
outline: 2px solid var(--blue-10);
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/* ===== Reduced Motion ===== */
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.guided-help-container,
|
|
.guided-help-panel,
|
|
.help-progress-dot,
|
|
.help-btn {
|
|
animation: none !important;
|
|
transition-duration: 0.01ms !important;
|
|
}
|
|
}
|