Spaces:
Runtime error
Runtime error
Refactor VideoTemplateEditor component: remove AI editing features and related state management, streamline template loading, and update styles for improved layout. Enhance CSS for responsive design and visual consistency across various components, including dropdowns, sync stats, and quiz elements. Remove deprecated premium badge styles and adjust layout for chat components.
66de9c8 Download frontend/src/styles/app.css from firebird-technologies/NoteStack-Test: direct link, hf CLI and curl.
- Browser
- Download file 21.3 kB
-
https://huggingface.co/spaces/firebird-technologies/NoteStack-Test/resolve/main/frontend/src/styles/app.css
- Command line
-
hf download hf://spaces/firebird-technologies/NoteStack-Test/frontend/src/styles/app.css
-
curl -L -o app.css https://huggingface.co/spaces/firebird-technologies/NoteStack-Test/resolve/main/frontend/src/styles/app.css
21.3 kB
| /* ---------- Sky ---------- */ | |
| .sky { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 0; | |
| pointer-events: none; | |
| background: var(--black); | |
| } | |
| .sky-canvas { | |
| position: absolute; | |
| inset: 0; | |
| width: 100%; | |
| height: 100%; | |
| } | |
| /* Nebula haze: layered blue radial gradients only */ | |
| .sky-nebula { | |
| position: absolute; | |
| inset: -10%; | |
| background: | |
| radial-gradient(40% 30% at 78% 18%, var(--blue-10), transparent 70%), | |
| radial-gradient(35% 25% at 15% 40%, var(--blue-05), transparent 70%), | |
| radial-gradient(60% 40% at 50% 110%, var(--blue-20), transparent 70%); | |
| animation: haze 40s ease-in-out infinite alternate; | |
| } | |
| @keyframes haze { | |
| to { | |
| transform: translate3d(-2%, 1.5%, 0) scale(1.04); | |
| } | |
| } | |
| .page, | |
| .shell { | |
| position: relative; | |
| min-height: 100vh; | |
| } | |
| .page > :not(.sky), | |
| .shell > :not(.sky) { | |
| position: relative; | |
| z-index: 1; | |
| } | |
| /* ---------- Logo ---------- */ | |
| .logo { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 10px; | |
| text-decoration: none; | |
| } | |
| .logo-mark { | |
| border-radius: 9px; | |
| background: var(--white); | |
| box-shadow: 0 0 18px var(--blue-20); | |
| } | |
| .logo-word { | |
| font: 600 1.125rem var(--font-display); | |
| letter-spacing: 0.01em; | |
| } | |
| /* ---------- Nav ---------- */ | |
| .nav { | |
| position: sticky; | |
| top: 0; | |
| z-index: 10; | |
| backdrop-filter: blur(10px); | |
| background: rgba(0, 0, 0, 0.55); | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .nav-inner { | |
| display: flex; | |
| align-items: center; | |
| gap: 24px; | |
| height: 64px; | |
| } | |
| .nav-brand { | |
| text-decoration: none; | |
| } | |
| .nav-links { | |
| display: none; | |
| gap: 24px; | |
| margin-left: 16px; | |
| } | |
| .nav-links a, | |
| .nav-signin { | |
| color: var(--text-2); | |
| text-decoration: none; | |
| font-size: 0.9375rem; | |
| } | |
| .nav-links a:hover, | |
| .nav-signin:hover { | |
| color: var(--white); | |
| } | |
| .nav-auth { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| margin-left: auto; | |
| } | |
| .nav-cta { | |
| margin-left: auto; | |
| height: 38px; | |
| padding: 0 16px; | |
| } | |
| .nav-auth .nav-cta { | |
| margin-left: 0; | |
| } | |
| @media (min-width: 720px) { | |
| .nav-links { | |
| display: flex; | |
| } | |
| } | |
| /* ---------- Hero ---------- */ | |
| .hero { | |
| position: relative; | |
| min-height: calc(100vh - 64px); | |
| display: flex; | |
| align-items: center; | |
| overflow: hidden; | |
| padding: 80px 0 140px; | |
| } | |
| .hero-inner { | |
| position: relative; | |
| z-index: 2; | |
| text-align: center; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 22px; | |
| } | |
| .hero-title { | |
| font-size: clamp(2.75rem, 9vw, 6rem); | |
| font-weight: 700; | |
| letter-spacing: -0.03em; | |
| line-height: 1; | |
| } | |
| .glow-text { | |
| color: var(--white); | |
| text-shadow: 0 0 24px var(--blue-60), 0 0 60px var(--blue-35); | |
| } | |
| .hero-sub { | |
| max-width: 620px; | |
| font-size: 1.125rem; | |
| } | |
| .hero-form { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| width: 100%; | |
| max-width: 540px; | |
| padding: 6px; | |
| border-radius: 28px; | |
| border: 1px solid var(--blue-35); | |
| background: rgba(0, 0, 0, 0.55); | |
| box-shadow: var(--glow-lg); | |
| } | |
| .hero-form .input { | |
| border: none; | |
| background: transparent; | |
| box-shadow: none; | |
| } | |
| @media (min-width: 560px) { | |
| .hero-form { | |
| flex-direction: row; | |
| border-radius: 999px; | |
| } | |
| } | |
| .hero-meta { | |
| color: var(--text-3); | |
| } | |
| /* Neon horizon: a glowing planet edge at the bottom of the hero */ | |
| .horizon { | |
| position: absolute; | |
| left: 50%; | |
| bottom: -118vw; | |
| width: 150vw; | |
| height: 150vw; | |
| transform: translateX(-50%); | |
| border-radius: 50%; | |
| background: var(--black); | |
| border-top: 1px solid var(--blue); | |
| box-shadow: | |
| 0 -2px 18px var(--blue-60), | |
| 0 -30px 120px var(--blue-20), | |
| inset 0 30px 80px var(--blue-10); | |
| } | |
| @media (min-width: 900px) { | |
| .horizon { | |
| bottom: -128vw; | |
| } | |
| } | |
| /* ---------- Sections ---------- */ | |
| .section { | |
| padding: 72px 0; | |
| } | |
| .section-title { | |
| font-size: clamp(1.9rem, 4.5vw, 2.75rem); | |
| margin: 10px 0 32px; | |
| } | |
| .feature-grid, | |
| .blog-grid { | |
| display: grid; | |
| gap: 16px; | |
| grid-template-columns: 1fr; | |
| } | |
| @media (min-width: 720px) { | |
| .feature-grid, | |
| .blog-grid { | |
| grid-template-columns: repeat(2, 1fr); | |
| } | |
| } | |
| @media (min-width: 1000px) { | |
| .feature-grid, | |
| .blog-grid { | |
| grid-template-columns: repeat(3, 1fr); | |
| } | |
| } | |
| .feature { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| } | |
| .feature-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| color: var(--blue); | |
| } | |
| .feature-label .mono { | |
| color: var(--text-2); | |
| } | |
| .feature:hover .icon, | |
| .active .icon, | |
| .side-link.active .icon { | |
| color: var(--blue); | |
| filter: drop-shadow(0 0 6px var(--blue-60)); | |
| } | |
| .feature h3 { | |
| font-size: 1.25rem; | |
| } | |
| /* Steps along an orbit line */ | |
| .steps { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| display: grid; | |
| gap: 16px; | |
| } | |
| @media (min-width: 820px) { | |
| .steps { | |
| grid-template-columns: repeat(3, 1fr); | |
| position: relative; | |
| } | |
| .steps::before { | |
| content: ""; | |
| position: absolute; | |
| left: 0; | |
| right: 0; | |
| top: 22px; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, var(--blue-60), transparent); | |
| } | |
| } | |
| .step { | |
| position: relative; | |
| padding-top: 56px; | |
| } | |
| .step-n { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| display: grid; | |
| place-items: center; | |
| width: 44px; | |
| height: 44px; | |
| border-radius: 50%; | |
| border: 1px solid var(--blue-60); | |
| background: var(--black); | |
| color: var(--white); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .step h3 { | |
| font-size: 1.2rem; | |
| margin-bottom: 6px; | |
| } | |
| /* Demo frame */ | |
| .demo-frame { | |
| padding: 0; | |
| overflow: hidden; | |
| border-color: var(--blue-35); | |
| box-shadow: var(--glow-lg); | |
| } | |
| .demo-bar { | |
| display: flex; | |
| justify-content: space-between; | |
| padding: 12px 18px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .demo-body { | |
| aspect-ratio: 16 / 9; | |
| display: grid; | |
| place-items: center; | |
| align-content: center; | |
| gap: 16px; | |
| background: radial-gradient(50% 60% at 50% 50%, var(--blue-10), transparent); | |
| } | |
| /* Orbiting dot loader */ | |
| .orbit-loader { | |
| position: relative; | |
| width: 56px; | |
| height: 56px; | |
| border-radius: 50%; | |
| border: 1px dashed var(--blue-35); | |
| animation: spin 2.4s linear infinite; | |
| } | |
| .orbit-loader span { | |
| position: absolute; | |
| top: -4px; | |
| left: 50%; | |
| width: 8px; | |
| height: 8px; | |
| margin-left: -4px; | |
| border-radius: 50%; | |
| background: var(--blue); | |
| box-shadow: 0 0 10px var(--blue); | |
| } | |
| @keyframes spin { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| .boot { | |
| min-height: 100vh; | |
| display: grid; | |
| place-items: center; | |
| } | |
| /* Covers the app while sign out revokes the session. */ | |
| .signout-overlay { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 10000; | |
| background: var(--black); | |
| } | |
| /* ---------- Pricing ---------- */ | |
| .pricing-note { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| gap: 10px; | |
| margin-bottom: 20px; | |
| } | |
| .pricing-grid { | |
| display: grid; | |
| gap: 16px; | |
| grid-template-columns: 1fr; | |
| } | |
| @media (min-width: 900px) { | |
| .pricing-grid { | |
| grid-template-columns: repeat(3, 1fr); | |
| align-items: stretch; | |
| } | |
| } | |
| .tier { | |
| position: relative; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| padding: 28px; | |
| } | |
| .tier-featured { | |
| border-color: var(--blue-60); | |
| box-shadow: var(--glow-md), var(--glow-lg); | |
| } | |
| .tier-flag { | |
| position: absolute; | |
| top: -12px; | |
| right: 20px; | |
| background: var(--black); | |
| } | |
| .tier h3 { | |
| font-size: 1.5rem; | |
| } | |
| .tier-price { | |
| display: flex; | |
| align-items: baseline; | |
| gap: 8px; | |
| margin: 8px 0; | |
| } | |
| .tier-amount { | |
| font: 700 2.5rem var(--font-display); | |
| } | |
| .tier-strike { | |
| font-size: 0.875rem; | |
| } | |
| .tier-features { | |
| list-style: none; | |
| padding: 0; | |
| margin: 8px 0 20px; | |
| display: grid; | |
| gap: 10px; | |
| flex: 1; | |
| } | |
| .tier-features li { | |
| display: flex; | |
| gap: 10px; | |
| align-items: flex-start; | |
| color: var(--text-2); | |
| } | |
| .tier-features .icon { | |
| color: var(--blue); | |
| flex-shrink: 0; | |
| margin-top: 4px; | |
| } | |
| .tier-cta { | |
| width: 100%; | |
| } | |
| /* ---------- Blog ---------- */ | |
| .blog-card { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| text-decoration: none; | |
| } | |
| .blog-card h3, | |
| .blog-card-title { | |
| font-size: 1.2rem; | |
| } | |
| .blog-cover { | |
| width: 100%; | |
| aspect-ratio: 16 / 9; | |
| object-fit: cover; | |
| border-radius: var(--radius-sm); | |
| } | |
| .blog-index { | |
| padding: 64px var(--gutter) 96px; | |
| } | |
| .blog-lede { | |
| max-width: 620px; | |
| margin: -16px 0 32px; | |
| } | |
| .post { | |
| max-width: 760px; | |
| padding: 48px var(--gutter) 96px; | |
| } | |
| .post-back { | |
| display: inline-block; | |
| margin-bottom: 24px; | |
| text-decoration: none; | |
| } | |
| .post-title { | |
| font-size: clamp(2.2rem, 6vw, 3.5rem); | |
| margin: 10px 0 16px; | |
| } | |
| .post-lede { | |
| font-size: 1.2rem; | |
| margin-bottom: 12px; | |
| } | |
| .post-hero { | |
| width: 100%; | |
| border-radius: var(--radius); | |
| margin: 24px 0; | |
| } | |
| .post-body { | |
| margin-top: 32px; | |
| } | |
| .post-body section { | |
| margin-bottom: 40px; | |
| } | |
| .post-body h2 { | |
| font-size: 1.6rem; | |
| margin-bottom: 14px; | |
| } | |
| .post-body p, | |
| .post-body li { | |
| color: var(--text-2); | |
| font-size: 1.0625rem; | |
| margin-bottom: 14px; | |
| } | |
| .post-body blockquote { | |
| margin: 20px 0; | |
| padding: 16px 20px; | |
| border-left: 2px solid var(--blue); | |
| background: var(--blue-05); | |
| font: 500 1.2rem var(--font-display); | |
| box-shadow: -8px 0 24px -12px var(--blue-60); | |
| } | |
| .faq { | |
| border-bottom: 1px solid var(--line); | |
| padding: 14px 0; | |
| } | |
| .faq summary { | |
| cursor: pointer; | |
| font-weight: 600; | |
| } | |
| .faq p { | |
| margin-top: 10px; | |
| } | |
| .post-cta { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| align-items: flex-start; | |
| margin: 40px 0; | |
| border-color: var(--blue-35); | |
| } | |
| .post-related { | |
| margin-top: 48px; | |
| } | |
| .post-related .eyebrow { | |
| margin-bottom: 16px; | |
| } | |
| /* ---------- Footer ---------- */ | |
| .footer { | |
| border-top: 1px solid var(--line); | |
| padding: 48px 0 24px; | |
| background: rgba(0, 0, 0, 0.7); | |
| } | |
| .footer-inner { | |
| display: grid; | |
| gap: 32px; | |
| } | |
| @media (min-width: 820px) { | |
| .footer-inner { | |
| grid-template-columns: 1fr 2fr; | |
| } | |
| } | |
| .footer-brand { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .footer-cols { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); | |
| gap: 24px; | |
| } | |
| .footer-cols div { | |
| display: grid; | |
| gap: 8px; | |
| align-content: start; | |
| } | |
| .footer-cols a { | |
| color: var(--text-2); | |
| text-decoration: none; | |
| font-size: 0.9375rem; | |
| } | |
| .footer-cols a:hover { | |
| color: var(--white); | |
| } | |
| .footer-base { | |
| display: flex; | |
| flex-wrap: wrap; | |
| justify-content: space-between; | |
| gap: 8px; | |
| margin-top: 40px; | |
| color: var(--text-3); | |
| } | |
| .final-cta { | |
| text-align: center; | |
| } | |
| .final-cta .container { | |
| display: grid; | |
| justify-items: center; | |
| gap: 16px; | |
| } | |
| .final-cta .section-title { | |
| margin: 0; | |
| } | |
| /* ---------- Auth ---------- */ | |
| .auth-wrap { | |
| min-height: 100vh; | |
| display: grid; | |
| place-items: center; | |
| align-content: center; | |
| gap: 24px; | |
| padding: 32px var(--gutter); | |
| } | |
| .auth-logo { | |
| text-decoration: none; | |
| } | |
| .auth-card { | |
| width: 100%; | |
| max-width: 420px; | |
| display: grid; | |
| gap: 18px; | |
| padding: 32px 28px; | |
| background: rgba(0, 0, 0, 0.7); | |
| } | |
| .auth-title { | |
| font-size: 1.6rem; | |
| } | |
| .auth-form { | |
| display: grid; | |
| gap: 14px; | |
| } | |
| .auth-form label { | |
| display: grid; | |
| gap: 6px; | |
| font-size: 0.875rem; | |
| color: var(--text-2); | |
| } | |
| .auth-form .input { | |
| border-radius: var(--radius-sm); | |
| } | |
| .password-field { | |
| position: relative; | |
| } | |
| .password-field .input { | |
| width: 100%; | |
| padding-right: 48px; | |
| } | |
| .password-toggle { | |
| position: absolute; | |
| top: 50%; | |
| right: 8px; | |
| transform: translateY(-50%); | |
| } | |
| .code-input { | |
| font-family: var(--font-mono); | |
| letter-spacing: 0.4em; | |
| text-align: center; | |
| font-size: 1.25rem; | |
| } | |
| .auth-divider { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| color: var(--text-3); | |
| font-size: 0.75rem; | |
| text-transform: uppercase; | |
| } | |
| .auth-divider::before, | |
| .auth-divider::after { | |
| content: ""; | |
| flex: 1; | |
| height: 1px; | |
| background: var(--line); | |
| } | |
| .google-btn { | |
| display: flex; | |
| justify-content: center; | |
| min-height: 44px; | |
| } | |
| .google-redirect-btn { | |
| width: 100%; | |
| min-height: 44px; | |
| background: var(--white); | |
| color: var(--black); | |
| border-color: var(--white); | |
| } | |
| .google-redirect-btn:hover { | |
| box-shadow: var(--glow-md); | |
| } | |
| .auth-hint { | |
| text-align: center; | |
| } | |
| .auth-switch { | |
| display: flex; | |
| flex-wrap: wrap; | |
| justify-content: space-between; | |
| gap: 8px; | |
| font-size: 0.875rem; | |
| } | |
| .link-btn { | |
| background: none; | |
| border: none; | |
| padding: 0; | |
| color: var(--white); | |
| font: inherit; | |
| text-decoration: underline; | |
| text-decoration-color: var(--blue-60); | |
| text-underline-offset: 3px; | |
| cursor: pointer; | |
| } | |
| .link-btn:hover { | |
| text-decoration-color: var(--blue); | |
| } | |
| /* ---------- App shell ---------- */ | |
| .shell { | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| } | |
| /* A notebook is already a complete three-pane workspace; avoid stacking a second app sidebar beside its chat rail. */ | |
| .shell.notebook-focus { | |
| grid-template-columns: 1fr; | |
| } | |
| .shell.notebook-focus > .sidebar { | |
| display: none; | |
| } | |
| .sidebar { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; | |
| padding: 16px; | |
| border-bottom: 1px solid var(--line); | |
| background: rgba(0, 0, 0, 0.75); | |
| backdrop-filter: blur(10px); | |
| } | |
| .sidebar nav { | |
| display: flex; | |
| gap: 4px; | |
| overflow-x: auto; | |
| } | |
| .side-link { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 9px 12px; | |
| border-radius: var(--radius-sm); | |
| color: var(--text-2); | |
| text-decoration: none; | |
| font-size: 0.9375rem; | |
| white-space: nowrap; | |
| border: 1px solid transparent; | |
| } | |
| .side-link:hover { | |
| color: var(--white); | |
| background: var(--surface-2); | |
| } | |
| .side-link.active { | |
| color: var(--white); | |
| border-color: var(--blue-35); | |
| background: var(--blue-10); | |
| box-shadow: inset 2px 0 0 var(--blue); | |
| } | |
| .sidebar-user { | |
| display: none; | |
| } | |
| @media (min-width: 900px) { | |
| .shell { | |
| grid-template-columns: 248px 1fr; | |
| } | |
| .sidebar { | |
| position: sticky; | |
| top: 0; | |
| height: 100vh; | |
| border-bottom: none; | |
| border-right: 1px solid var(--line); | |
| } | |
| .sidebar nav { | |
| flex-direction: column; | |
| overflow: visible; | |
| } | |
| .sidebar-user { | |
| display: grid; | |
| gap: 6px; | |
| margin-top: auto; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| } | |
| .shell-main { | |
| padding: 32px var(--gutter) 64px; | |
| min-width: 0; | |
| } | |
| /* Mission Control */ | |
| .mc-head { | |
| display: flex; | |
| flex-wrap: wrap; | |
| justify-content: space-between; | |
| align-items: flex-end; | |
| gap: 16px; | |
| margin-bottom: 28px; | |
| } | |
| .mc-head h1 { | |
| font-size: clamp(1.6rem, 4vw, 2.25rem); | |
| margin-top: 8px; | |
| } | |
| .mc-grid { | |
| display: grid; | |
| gap: 16px; | |
| } | |
| @media (min-width: 1100px) { | |
| .mc-grid { | |
| grid-template-columns: 3fr 2fr; | |
| } | |
| } | |
| .mc-card { | |
| display: grid; | |
| gap: 14px; | |
| align-content: start; | |
| } | |
| .mc-card h2 { | |
| font-size: 1.25rem; | |
| } | |
| .inline-form { | |
| display: flex; | |
| gap: 8px; | |
| } | |
| .inline-form .input { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .source-list, | |
| .nb-list, | |
| .nbv-docs { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .source-row { | |
| display: grid; | |
| gap: 10px; | |
| padding: 14px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| } | |
| .source-title { | |
| display: grid; | |
| gap: 2px; | |
| min-width: 0; | |
| overflow-wrap: anywhere; | |
| } | |
| .nb-link { | |
| text-decoration: none; | |
| border-bottom: 1px solid var(--blue-35); | |
| } | |
| /* Rocket ascent progress bar with a light trail */ | |
| .ascent-track { | |
| height: 6px; | |
| border-radius: 999px; | |
| background: var(--surface-2); | |
| overflow: hidden; | |
| } | |
| .ascent-fill { | |
| position: relative; | |
| height: 100%; | |
| border-radius: 999px; | |
| background: linear-gradient(90deg, var(--blue-10), var(--blue)); | |
| box-shadow: 0 0 12px var(--blue-60); | |
| transition: width 0.4s ease; | |
| } | |
| .ascent-fill::after { | |
| content: ""; | |
| position: absolute; | |
| right: 0; | |
| top: 50%; | |
| width: 8px; | |
| height: 8px; | |
| margin-top: -4px; | |
| border-radius: 50%; | |
| background: var(--white); | |
| box-shadow: 0 0 10px var(--white), 0 0 18px var(--blue); | |
| } | |
| .ascent-meta { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 12px; | |
| margin-top: 6px; | |
| color: var(--text-2); | |
| font-size: 0.75rem; | |
| } | |
| /* A long message wraps inside its own column; the percentage keeps its width and never breaks across lines ("80%" as 8, 0, %). */ | |
| .ascent-meta > :first-child { | |
| flex: 1 1 auto; | |
| min-width: 0; | |
| overflow-wrap: anywhere; | |
| } | |
| .ascent-meta > :last-child:not(:first-child) { | |
| flex: 0 0 auto; | |
| white-space: nowrap; | |
| font-variant-numeric: tabular-nums; | |
| } | |
| /* Notebook view: sources | chat | artifacts */ | |
| .nbv { | |
| display: grid; | |
| gap: 16px; | |
| } | |
| @media (min-width: 1100px) { | |
| .nbv { | |
| grid-template-columns: 280px 1fr 240px; | |
| height: calc(100vh - 96px); | |
| } | |
| } | |
| .nbv-pane { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| min-height: 0; | |
| overflow: auto; | |
| } | |
| .nbv-title { | |
| font-size: 1.2rem; | |
| } | |
| .nbv-docs a { | |
| color: var(--text-2); | |
| text-decoration: none; | |
| font-size: 0.875rem; | |
| } | |
| .nbv-docs a:hover { | |
| color: var(--white); | |
| } | |
| .nbv-chat { | |
| min-height: 420px; | |
| } | |
| .nbv-turns { | |
| flex: 1; | |
| display: grid; | |
| align-content: start; | |
| gap: 16px; | |
| overflow: auto; | |
| } | |
| .turn { | |
| display: grid; | |
| gap: 8px; | |
| max-width: 100%; | |
| } | |
| .turn-user { | |
| justify-self: end; | |
| padding: 10px 14px; | |
| border-radius: 14px 14px 4px 14px; | |
| background: var(--blue-10); | |
| border: 1px solid var(--blue-35); | |
| } | |
| .cites { | |
| display: grid; | |
| gap: 8px; | |
| padding-left: 20px; | |
| margin: 0; | |
| font-size: 0.875rem; | |
| } | |
| .cites a { | |
| text-decoration-color: var(--blue-60); | |
| } | |
| .cite-span { | |
| font-size: 0.8125rem; | |
| } | |
| .chat-quote { | |
| margin: 0; | |
| padding: 0.75rem 1rem; | |
| border-left: 3px solid var(--accent, currentColor); | |
| white-space: pre-wrap; | |
| overflow-wrap: anywhere; | |
| } | |
| /* Empty states */ | |
| .empty-state { | |
| display: grid; | |
| justify-items: center; | |
| text-align: center; | |
| gap: 12px; | |
| padding: 40px 16px; | |
| } | |
| .empty-state.small { | |
| padding: 40px 16px; | |
| color: var(--blue); | |
| } | |
| .empty-art { | |
| color: var(--white); | |
| opacity: 0.85; | |
| } | |
| .agent-steps { | |
| font-size: 0.75rem; | |
| color: var(--text-2); | |
| } | |
| .agent-steps summary { | |
| cursor: pointer; | |
| color: var(--blue); | |
| } | |
| .agent-steps ol { | |
| margin: 8px 0 0; | |
| padding-left: 18px; | |
| display: grid; | |
| gap: 2px; | |
| } | |
| /* ---------- Landing: flare, shimmer, arrivals, demo video ---------- */ | |
| /* A soft light rides along the horizon; small glints twinkle where it passes. */ | |
| .horizon { | |
| overflow: visible; | |
| } | |
| .horizon-flare { | |
| position: absolute; | |
| top: -3px; | |
| left: 50%; | |
| width: 16vw; | |
| height: 3px; | |
| margin-left: -8vw; | |
| border-radius: 999px; | |
| background: radial-gradient(50% 50% at 50% 50%, #ffffff 0%, var(--blue) 35%, transparent 70%); | |
| filter: blur(0.5px); | |
| box-shadow: 0 0 26px 4px var(--blue-60), 0 0 60px 8px var(--blue-20); | |
| transform-origin: 50% 75vw; | |
| animation: flare-ride 18s cubic-bezier(0.45, 0, 0.55, 1) infinite; | |
| opacity: 0; | |
| } | |
| .horizon-flare::after { | |
| content: ""; | |
| position: absolute; | |
| left: 50%; | |
| top: 50%; | |
| width: 56px; | |
| height: 56px; | |
| margin: -28px 0 0 -28px; | |
| border-radius: 50%; | |
| background: radial-gradient(circle, #ffffff 0%, rgba(255, 255, 255, 0.6) 10%, var(--blue-60) 26%, transparent 64%); | |
| } | |
| @keyframes flare-ride { | |
| 0% { | |
| transform: rotate(-26deg); | |
| opacity: 0; | |
| } | |
| 15% { | |
| opacity: 0.9; | |
| } | |
| 50% { | |
| opacity: 1; | |
| } | |
| 85% { | |
| opacity: 0.8; | |
| } | |
| 100% { | |
| transform: rotate(26deg); | |
| opacity: 0; | |
| } | |
| } | |
| .horizon-glint { | |
| position: absolute; | |
| top: -10px; | |
| width: 12px; | |
| height: 12px; | |
| margin-left: -6px; | |
| background: | |
| linear-gradient(90deg, transparent 45%, #ffffff 50%, transparent 55%), | |
| linear-gradient(0deg, transparent 45%, #ffffff 50%, transparent 55%); | |
| filter: drop-shadow(0 0 6px var(--blue)) drop-shadow(0 0 2px #ffffff); | |
| opacity: 0; | |
| animation: glint 18s ease-in-out infinite; | |
| } | |
| .horizon-glint.g1 { | |
| left: 38%; | |
| animation-delay: 5.2s; | |
| } | |
| .horizon-glint.g2 { | |
| left: 50%; | |
| top: -12px; | |
| animation-delay: 8.8s; | |
| } | |
| .horizon-glint.g3 { | |
| left: 62%; | |
| animation-delay: 12.4s; | |
| } | |
| @keyframes glint { | |
| 0%, | |
| 100% { | |
| opacity: 0; | |
| transform: scale(0.2) rotate(0deg); | |
| } | |
| 4% { | |
| opacity: 1; | |
| transform: scale(1.1) rotate(45deg); | |
| } | |
| 10% { | |
| opacity: 0; | |
| transform: scale(0.4) rotate(90deg); | |
| } | |
| } | |
| /* A light sweep crosses the hero every few seconds, catching the headline. */ | |
| .hero-sweep { | |
| position: absolute; | |
| inset: 0; | |
| z-index: 1; | |
| pointer-events: none; | |
| background: linear-gradient(105deg, transparent 42%, rgba(255, 255, 255, 0.035) 48%, var(--blue-05) 50%, transparent 55%); | |
| background-size: 250% 100%; | |
| animation: sweep 16s ease-in-out infinite; | |
| mix-blend-mode: screen; | |
| } | |
| @keyframes sweep { | |
| 0% { | |
| background-position: 130% 0; | |
| } | |
| 45%, | |
| 100% { | |
| background-position: -40% 0; | |
| } | |
| } | |
| .glow-text.shimmer { | |
| background: linear-gradient(100deg, #ffffff 35%, #cfe2ff 45%, #ffffff 50%, var(--blue) 55%, #ffffff 65%); | |
| background-size: 300% 100%; | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| animation: shimmer 16s ease-in-out infinite; | |
| filter: drop-shadow(0 0 18px var(--blue-35)) drop-shadow(0 0 40px var(--blue-20)); | |
| } | |
| @keyframes shimmer { | |
| 0% { | |
| background-position: 100% 0; | |
| } | |
| 45%, | |
| 100% { | |
| background-position: 0% 0; | |
| } | |
| } | |
| /* Sections arrive out of the depth. */ | |
| .arrive { | |
| opacity: 0; | |
| transform: perspective(900px) translateZ(-90px) translateY(28px); | |
| filter: blur(4px); | |
| transition: | |
| opacity 1.4s ease, | |
| transform 1.8s cubic-bezier(0.22, 1, 0.36, 1), | |
| filter 1.4s ease; | |
| transition-delay: calc(var(--i, 0) * 260ms); | |
| } | |
| .arrive.arrived { | |
| opacity: 1; | |
| transform: none; | |
| filter: none; | |
| } | |
| .demo-video { | |
| display: block; | |
| width: 100%; | |
| aspect-ratio: 16 / 9; | |
| background: var(--black); | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .horizon-flare, | |
| .horizon-glint, | |
| .hero-sweep, | |
| .glow-text.shimmer { | |
| animation: none; | |
| } | |
| .horizon-flare { | |
| opacity: 0.8; | |
| transform: none; | |
| } | |
| .arrive { | |
| opacity: 1; | |
| transform: none; | |
| filter: none; | |
| } | |
| } | |