@import url("design-system/colors_and_type.css"); :root { /* Respellion rebel accent — emerald + this one warm extra */ --rebel: #FF6B4A; --rebel-soft: #FFE3DA; --rebel-deep: #C5462B; } html, body, #root { margin: 0; height: 100%; background: #f0eee9; font-family: var(--font-sans); color: var(--fg-primary); } * { box-sizing: border-box; } /* ─── Artboard shell ──────────────────────────────────────── */ .ab { width: 100%; height: 100%; display: flex; flex-direction: column; background: var(--bg-app); padding: 28px 28px 24px; gap: 22px; } .ab-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .ab-name { font-size: 28px; font-weight: 700; letter-spacing: -0.02em; color: var(--slate-900); } .ab-tag { font-size: 13px; color: var(--fg-secondary); margin-top: 4px; max-width: 320px; line-height: 1.45; } .ab-swatch { display: flex; gap: 6px; align-items: center; flex-shrink: 0; } .ab-swatch i { width: 18px; height: 18px; border-radius: 999px; display: block; box-shadow: inset 0 0 0 1px rgba(0,0,0,.08); } /* ─── Hero stage ──────────────────────────────────────────── */ .ab-hero { background: #fff; border: 1px solid var(--border-default); border-radius: var(--radius-xl); height: 220px; display: grid; place-items: center; position: relative; overflow: hidden; } .ab-hero::before { content: ""; position: absolute; inset: 0; background-image: radial-gradient(rgba(15,23,42,0.06) 1px, transparent 1px); background-size: 14px 14px; opacity: 0.5; } .ab-hero > * { position: relative; } /* ─── States row ──────────────────────────────────────────── */ .ab-states { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } .ab-state { background: #fff; border: 1px solid var(--border-default); border-radius: var(--radius-lg); padding: 14px 10px 10px; display: flex; flex-direction: column; align-items: center; gap: 8px; } .ab-state-label { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--fg-muted); } /* ─── Intranet chat-bubble preview ────────────────────────── */ .ab-context { background: #fff; border: 1px solid var(--border-default); border-radius: var(--radius-lg); height: 132px; overflow: hidden; position: relative; display: flex; flex-direction: column; } .intra-bar { height: 28px; flex-shrink: 0; border-bottom: 1px solid var(--border-default); background: #fff; display: flex; align-items: center; gap: 6px; padding: 0 10px; } .intra-bar-dot { width: 6px; height: 6px; border-radius: 999px; background: var(--slate-300); } .intra-bar-title { font-size: 10px; color: var(--fg-muted); margin-left: 4px; } .intra-body { flex: 1; background: var(--bg-app); padding: 10px 12px; position: relative; } .intra-line { height: 6px; border-radius: 4px; background: var(--slate-200); margin-bottom: 6px; } .intra-line.w70 { width: 70%; } .intra-line.w50 { width: 50%; } .intra-line.w85 { width: 85%; } .intra-line.w40 { width: 40%; } .intra-bubble { position: absolute; right: 14px; bottom: 14px; width: 52px; height: 52px; border-radius: 999px; background: #fff; box-shadow: 0 8px 22px rgba(15,23,42,0.18), 0 0 0 1px rgba(15,23,42,0.06); display: grid; place-items: center; overflow: hidden; } /* ─── Why this direction ──────────────────────────────────── */ .ab-why { font-size: 12px; color: var(--fg-secondary); line-height: 1.5; padding-top: 4px; } .ab-why b { color: var(--slate-700); font-weight: 600; } /* ─── Section intro card (cover) ──────────────────────────── */ .cover { width: 100%; height: 100%; background: var(--bg-app); display: flex; flex-direction: column; justify-content: space-between; padding: 40px 36px; } .cover h1 { font-size: 40px; font-weight: 700; letter-spacing: -0.025em; line-height: 1.05; } .cover h1 span { color: var(--rebel); } .cover .lede { font-size: 15px; color: var(--fg-secondary); max-width: 520px; line-height: 1.55; margin-top: 14px; } .cover .meta { display: flex; gap: 28px; } .cover .meta div { font-size: 12px; } .cover .meta b { display: block; font-size: 10px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--fg-muted); margin-bottom: 4px; } .cover .palette { display: flex; gap: 10px; align-items: center; margin-top: 12px; } .cover .palette i { display: block; width: 28px; height: 28px; border-radius: 999px; box-shadow: inset 0 0 0 1px rgba(0,0,0,.08); } .cover .palette span { font-size: 11px; color: var(--fg-muted); margin-left: 4px; font-family: var(--font-mono); } /* ─── Animations ──────────────────────────────────────────── */ @keyframes blinkCaret { 0%, 49% { opacity: 1; } 50%, 100% { opacity: 0; } } .blink-caret { animation: blinkCaret 1s steps(1, end) infinite; } @keyframes typeDot { 0%, 80%, 100% { transform: translateY(0); opacity: .35; } 40% { transform: translateY(-3px); opacity: 1; } } .type-dot { animation: typeDot 1.2s ease-in-out infinite; transform-origin: center; } .type-dot:nth-child(2) { animation-delay: 0.15s; } .type-dot:nth-child(3) { animation-delay: 0.3s; } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } } .float { animation: float 2.6s ease-in-out infinite; } @keyframes blink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(0.1); } } .eye-blink { animation: blink 5s ease-in-out infinite; transform-origin: center; transform-box: fill-box; } @keyframes pixelGlitch { 0%, 100% { transform: translate(0, 0); } 20% { transform: translate(-1px, 0); } 40% { transform: translate(1px, -1px); } 60% { transform: translate(0, 1px); } } .glitch { animation: pixelGlitch 0.6s steps(1) infinite; } @keyframes squish { 0%, 100% { transform: scale(1, 1); } 50% { transform: scale(1.05, 0.95); } } .squish { animation: squish 1.8s ease-in-out infinite; transform-origin: 50% 60%; }