@mevdragon/vidfarm-devcli 0.20.5 → 0.20.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/editor-capabilities/SKILL.md +15 -1
- package/.agents/skills/vidfarm-director/SKILL.md +106 -0
- package/.agents/skills/vidfarm-director/recipes/find-and-fork-template.md +16 -0
- package/.agents/skills/vidfarm-director/recipes/local-edit-render-approve.md +13 -0
- package/.agents/skills/vidfarm-director/recipes/onboard-a-new-director.md +13 -0
- package/.agents/skills/vidfarm-director/recipes/retheme-template.md +17 -0
- package/.agents/skills/vidfarm-director/references/assets-and-sourcing.md +111 -0
- package/.agents/skills/vidfarm-director/references/automation-and-local-dev.md +243 -0
- package/.agents/skills/vidfarm-director/references/core-workflows.md +273 -0
- package/.agents/skills/vidfarm-director/references/editor-workflows.md +365 -0
- package/.agents/skills/vidfarm-director/references/onboarding.md +28 -0
- package/.agents/skills/vidfarm-director/references/primitives.md +265 -0
- package/SKILL.director.md +521 -261
- package/dist/src/cli.js +404 -96
- package/dist/src/devcli/clips.js +15 -10
- package/dist/src/devcli/doctor.js +2 -2
- package/dist/src/devcli/local-backend.js +46 -2
- package/dist/src/services/clip-curation/cost.js +5 -1
- package/dist/src/services/clip-curation/gemini.js +10 -0
- package/package.json +30 -10
- package/SKILL.platform.md +0 -432
- package/demo/README.md +0 -28
- package/demo/dist/app.css +0 -1
- package/demo/dist/app.js +0 -1850
- package/demo/dist/chunks/chunk-DXB73IDG.js +0 -1
- package/demo/dist/chunks/chunk-S7OWAJDS.js +0 -36
- package/demo/dist/chunks/chunk-VTIBZ6AN.js +0 -1
- package/demo/dist/chunks/dist-ADSJKBVE.js +0 -332
- package/demo/dist/chunks/domEditingLayers-VZMLL4AP-SGHWPND4.js +0 -1
- package/demo/dist/chunks/hyperframes-player-XB65TCD6.js +0 -425
- package/demo/dist/chunks/lib-XAQ37YOE.js +0 -1
- package/demo/dist/chunks/src-TJ2QYA4U.js +0 -207
- package/demo/dist/favicon.ico +0 -0
- package/demo/dist/icons/timeline/audio.svg +0 -7
- package/demo/dist/icons/timeline/captions.svg +0 -5
- package/demo/dist/icons/timeline/composition.svg +0 -12
- package/demo/dist/icons/timeline/image.svg +0 -18
- package/demo/dist/icons/timeline/music.svg +0 -10
- package/demo/dist/icons/timeline/text.svg +0 -3
- package/demo/dist/index.html +0 -15
- package/dist/src/account-pages-legacy.js +0 -9396
- package/dist/src/account-pages.js +0 -61
- package/dist/src/app.js +0 -21602
- package/dist/src/composition-runtime.js +0 -1053
- package/dist/src/config.js +0 -217
- package/dist/src/context.js +0 -447
- package/dist/src/dev-app-legacy.js +0 -739
- package/dist/src/dev-app.js +0 -6
- package/dist/src/devcli/migrate-local.js +0 -140
- package/dist/src/devcli/sync.js +0 -368
- package/dist/src/domain.js +0 -5
- package/dist/src/editor-chat-history.js +0 -82
- package/dist/src/editor-chat.js +0 -756
- package/dist/src/editor-dark-theme.js +0 -1128
- package/dist/src/frontend/debug.js +0 -71
- package/dist/src/frontend/discover-client.js +0 -130
- package/dist/src/frontend/discover-store.js +0 -23
- package/dist/src/frontend/file-directory.js +0 -1018
- package/dist/src/frontend/flockposter-cache-store.js +0 -124
- package/dist/src/frontend/homepage-client.js +0 -446
- package/dist/src/frontend/homepage-shared.js +0 -201
- package/dist/src/frontend/homepage-store.js +0 -66
- package/dist/src/frontend/homepage-view.js +0 -705
- package/dist/src/frontend/page-runtime-client.js +0 -132
- package/dist/src/frontend/page-runtime-store.js +0 -9
- package/dist/src/frontend/sentry.js +0 -42
- package/dist/src/frontend/template-editor-chat.js +0 -4181
- package/dist/src/help-page.js +0 -346
- package/dist/src/homepage.js +0 -1458
- package/dist/src/index.js +0 -16
- package/dist/src/instrument.js +0 -30
- package/dist/src/landing-page.js +0 -384
- package/dist/src/page-runtime.js +0 -2
- package/dist/src/page-shell.js +0 -1452
- package/dist/src/primitive-context.js +0 -416
- package/dist/src/primitive-registry.js +0 -3940
- package/dist/src/primitive-sdk.js +0 -4
- package/dist/src/primitives/hyperframes-media.js +0 -108
- package/dist/src/react-page-shell.js +0 -35
- package/dist/src/ready-post-schedule-component.js +0 -1540
- package/dist/src/registry.js +0 -296
- package/dist/src/reskin/agency-page.js +0 -299
- package/dist/src/reskin/calendar-page.js +0 -568
- package/dist/src/reskin/chat-page.js +0 -942
- package/dist/src/reskin/discover-page.js +0 -1788
- package/dist/src/reskin/document.js +0 -1587
- package/dist/src/reskin/help-page.js +0 -357
- package/dist/src/reskin/index-page.js +0 -62
- package/dist/src/reskin/inpaint-clipper-page.js +0 -890
- package/dist/src/reskin/inpaint-page.js +0 -2554
- package/dist/src/reskin/inpaint-video-page.js +0 -1339
- package/dist/src/reskin/job-runs-page.js +0 -477
- package/dist/src/reskin/library-page.js +0 -1634
- package/dist/src/reskin/login-page.js +0 -262
- package/dist/src/reskin/portfolio-page.js +0 -687
- package/dist/src/reskin/pricing-page.js +0 -390
- package/dist/src/reskin/settings-page.js +0 -732
- package/dist/src/reskin/theme.js +0 -711
- package/dist/src/runtime.js +0 -35
- package/dist/src/services/api-call-history.js +0 -249
- package/dist/src/services/auth.js +0 -152
- package/dist/src/services/billing-pricing.js +0 -39
- package/dist/src/services/billing.js +0 -241
- package/dist/src/services/cast.js +0 -127
- package/dist/src/services/chat-threads.js +0 -92
- package/dist/src/services/clip-records.js +0 -250
- package/dist/src/services/clip-search.js +0 -77
- package/dist/src/services/clip-vectors.js +0 -125
- package/dist/src/services/composition-sanitize.js +0 -124
- package/dist/src/services/composition-watch.js +0 -79
- package/dist/src/services/elevenlabs.js +0 -222
- package/dist/src/services/file-directory.js +0 -117
- package/dist/src/services/fork-access.js +0 -93
- package/dist/src/services/fork-manifest.js +0 -42
- package/dist/src/services/ghostcut.js +0 -179
- package/dist/src/services/hyperframes.js +0 -3517
- package/dist/src/services/job-capacity.js +0 -14
- package/dist/src/services/job-logs.js +0 -197
- package/dist/src/services/jobs.js +0 -136
- package/dist/src/services/local-dynamo.js +0 -0
- package/dist/src/services/media-processing.js +0 -766
- package/dist/src/services/primitive-media-lambda.js +0 -280
- package/dist/src/services/providers.js +0 -2748
- package/dist/src/services/rate-limits.js +0 -262
- package/dist/src/services/scene-annotations.js +0 -32
- package/dist/src/services/serverless-auth.js +0 -382
- package/dist/src/services/serverless-jobs.js +0 -1084
- package/dist/src/services/serverless-provider-keys.js +0 -409
- package/dist/src/services/serverless-records.js +0 -1515
- package/dist/src/services/serverless-template-configs.js +0 -75
- package/dist/src/services/storage.js +0 -461
- package/dist/src/services/swipe-customize.js +0 -437
- package/dist/src/services/template-certification.js +0 -413
- package/dist/src/services/template-loader.js +0 -99
- package/dist/src/services/template-runtime-bundles.js +0 -217
- package/dist/src/services/template-sources.js +0 -1017
- package/dist/src/services/upstream.js +0 -248
- package/dist/src/services/video-normalization.js +0 -2
- package/dist/src/services/webhooks.js +0 -62
- package/dist/src/template-editor-pages.js +0 -2576
- package/dist/src/template-editor-shell.js +0 -2893
- package/dist/src/template-sdk.js +0 -4
- package/dist/src/worker.js +0 -17
- package/public/assets/discover-client-app.js +0 -1
- package/public/assets/file-directory-app.js +0 -3
- package/public/assets/homepage-app.js +0 -54
- package/public/assets/homepage-client-app.js +0 -80
- package/public/assets/page-runtime-client-app.js +0 -94
- package/public/assets/placeholders/scene-placeholder.png +0 -0
- package/src/assets/SELLING_AWARENESS_STAGES.md +0 -579
- package/src/assets/SELLING_WITH_HOOKS.md +0 -377
- package/src/assets/SELLING_WITH_VSLS.md +0 -606
- package/src/assets/favicon.ico +0 -0
- package/src/assets/logo-vidfarm.png +0 -0
package/dist/src/reskin/theme.js
DELETED
|
@@ -1,711 +0,0 @@
|
|
|
1
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
2
|
-
// /reskin/* shared design system — "farmville-saas-ux" (warm sunny Fillout)
|
|
3
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
4
|
-
// This is the SHARED, ISOLATED stylesheet for the /reskin/* migration surface,
|
|
5
|
-
// where we port old vidfarm pages into the new design system one at a time.
|
|
6
|
-
//
|
|
7
|
-
// CSS isolation contract (do not break it):
|
|
8
|
-
// • Every /reskin page is its own standalone HTML document (see document.ts)
|
|
9
|
-
// with only THIS stylesheet — it never shares a <style> with the live app,
|
|
10
|
-
// so nothing here can conflict with old-page CSS and vice versa.
|
|
11
|
-
// • Belt-and-suspenders: every design token is prefixed `--rk-` and every
|
|
12
|
-
// class is prefixed `rk-`. Even if this CSS were ever inlined next to app
|
|
13
|
-
// CSS, there would be no collision.
|
|
14
|
-
// • Page modules add ONLY page-scoped classes prefixed `rk-<page>-` and lean
|
|
15
|
-
// on the shared primitives below. Never introduce an unprefixed class.
|
|
16
|
-
//
|
|
17
|
-
// The token values are copied from the farmville-saas-ux skill (honey-gold
|
|
18
|
-
// accent over a neutral base, heavy rounded display type, soft cards, glass
|
|
19
|
-
// pill nav, warm-dark footer).
|
|
20
|
-
export const RESKIN_PAGES = [
|
|
21
|
-
{ slug: "settings", label: "Settings", emoji: "⚙️", blurb: "Profile, wallet, channels & developer keys", live: "/settings/profile", done: true },
|
|
22
|
-
{ slug: "library", label: "Library", emoji: "🎬", blurb: "Your projects, renders & mined clips (tabbed)", live: "/library", done: true },
|
|
23
|
-
{ slug: "discover", label: "Discover", emoji: "✨", blurb: "Template feed · swipe · categories", live: "/discover", done: true },
|
|
24
|
-
{ slug: "chat", label: "Brainstorm", emoji: "💬", blurb: "Full AI brainstorm chat", live: "/chat", done: true },
|
|
25
|
-
{ slug: "calendar", label: "Calendar", emoji: "📅", blurb: "Scheduled posts", live: "/calendar", done: true },
|
|
26
|
-
{ slug: "job-runs", label: "Job runs", emoji: "🩺", blurb: "Render & job history", live: "/job-runs", done: true },
|
|
27
|
-
{ slug: "agency", label: "Agency", emoji: "🏢", blurb: "Agency / client workspaces", live: "/agency", done: true },
|
|
28
|
-
{ slug: "pricing", label: "Pricing", emoji: "💳", blurb: "Plans & wallet top-up", live: "/pricing", done: true },
|
|
29
|
-
{ slug: "login", label: "Login", emoji: "🔑", blurb: "Sign in / sign up", live: "/login", done: true },
|
|
30
|
-
{ slug: "help", label: "Help", emoji: "🆘", blurb: "Help & getting started", live: "/help", done: true }
|
|
31
|
-
];
|
|
32
|
-
/** Google Fonts + preconnect for the reskin display/body stack. Put in <head>. */
|
|
33
|
-
export const RESKIN_FONT_LINKS = `<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
34
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
35
|
-
<link href="https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">`;
|
|
36
|
-
/** The complete shared stylesheet. Injected once per reskin document. */
|
|
37
|
-
export const RESKIN_CSS = `
|
|
38
|
-
:root{
|
|
39
|
-
--rk-font-display:"Hanken Grotesk","blMelody",ui-sans-serif,system-ui,sans-serif;
|
|
40
|
-
--rk-font-body:"Inter",ui-sans-serif,system-ui,-apple-system,sans-serif;
|
|
41
|
-
--rk-font-mono:ui-monospace,"SFMono-Regular",Menlo,Monaco,Consolas,monospace;
|
|
42
|
-
/* honey gold — the one joy accent */
|
|
43
|
-
--rk-gold-500:#ffc738;--rk-gold-600:#f6c744;--rk-gold-700:#fcb900;--rk-gold-tint:#fff5e4;--rk-gold-tint2:#ffe9cc;
|
|
44
|
-
/* ink + neutral scale */
|
|
45
|
-
--rk-ink:#171717;--rk-n-800:#262626;--rk-n-700:#404040;--rk-n-600:#525252;--rk-n-500:#737373;--rk-n-400:#a3a3a3;
|
|
46
|
-
--rk-n-300:#d4d4d4;--rk-n-200:#ededed;--rk-n-100:#f5f5f5;--rk-n-50:#fbfbfb;--rk-white:#fff;
|
|
47
|
-
/* support pastels */
|
|
48
|
-
--rk-sky:#3f9fe0;--rk-sky-tint:#e2effd;--rk-violet:#9f5bde;--rk-violet-tint:#e4ddfd;
|
|
49
|
-
--rk-green:#22c55e;--rk-green-tint:#dcfce7;--rk-coral:#f97316;--rk-coral-tint:#ffe9cc;
|
|
50
|
-
--rk-red:#ef4444;--rk-red-tint:#fee2e2;
|
|
51
|
-
/* semantic */
|
|
52
|
-
--rk-bg:var(--rk-n-50);--rk-bg-section:var(--rk-n-100);--rk-surface:var(--rk-white);
|
|
53
|
-
--rk-border:var(--rk-n-200);--rk-border-strong:var(--rk-n-300);
|
|
54
|
-
--rk-text:var(--rk-n-700);--rk-text-muted:var(--rk-n-500);--rk-text-faint:var(--rk-n-400);
|
|
55
|
-
/* radius */
|
|
56
|
-
--rk-r-sm:6px;--rk-r-md:8px;--rk-r-lg:10px;--rk-r-xl:12px;--rk-r-2xl:16px;--rk-r-3xl:24px;--rk-r-full:9999px;
|
|
57
|
-
/* shadow — diffuse soft sunlight, never harsh */
|
|
58
|
-
--rk-shadow-xs:0 1px 2px 0 #0000000d;
|
|
59
|
-
--rk-shadow-sm:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;
|
|
60
|
-
--rk-shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;
|
|
61
|
-
--rk-shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;
|
|
62
|
-
--rk-shadow-xl:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;
|
|
63
|
-
--rk-shadow-card:0 1px 2px #0000000d,0 8px 24px -12px #00000014;
|
|
64
|
-
--rk-shadow-nav:0 4px 24px -8px #00000026,0 1px 2px #0000000d;
|
|
65
|
-
--rk-ring-gold:0 0 0 3px var(--rk-gold-600),0 0 14px rgba(246,199,68,.4);
|
|
66
|
-
/* type scale */
|
|
67
|
-
--rk-text-xs:.75rem;--rk-text-sm:.875rem;--rk-text-base:1rem;--rk-text-lg:1.125rem;
|
|
68
|
-
--rk-text-xl:1.25rem;--rk-text-2xl:1.5rem;--rk-text-3xl:1.875rem;--rk-text-4xl:2.25rem;--rk-text-5xl:3rem;
|
|
69
|
-
/* space + motion */
|
|
70
|
-
--rk-container:75rem;--rk-gutter:clamp(1rem,4vw,2rem);--rk-section-y:clamp(3rem,6vw,5rem);
|
|
71
|
-
--rk-glass-blur:16px;--rk-ease:cubic-bezier(.22,1,.36,1);--rk-dur:200ms;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
*,*::before,*::after{box-sizing:border-box}
|
|
75
|
-
.rk-root{margin:0;font-family:var(--rk-font-body);color:var(--rk-text);background:var(--rk-bg);
|
|
76
|
-
-webkit-font-smoothing:antialiased;line-height:1.5;min-height:100vh}
|
|
77
|
-
.rk-root a{text-decoration:none;color:inherit}
|
|
78
|
-
.rk-root h1,.rk-root h2,.rk-root h3,.rk-root h4{font-family:var(--rk-font-display);font-weight:800;
|
|
79
|
-
letter-spacing:-.025em;line-height:1.1;color:var(--rk-ink);margin:0}
|
|
80
|
-
.rk-root p{margin:0}
|
|
81
|
-
.rk-root code{font-family:var(--rk-font-mono);font-size:.9em;background:var(--rk-n-100);
|
|
82
|
-
padding:2px 6px;border-radius:6px;color:var(--rk-n-700)}
|
|
83
|
-
|
|
84
|
-
/* layout */
|
|
85
|
-
.rk-container{width:min(var(--rk-container),100%);margin:0 auto;padding:0 var(--rk-gutter)}
|
|
86
|
-
.rk-container-wide{width:min(85rem,100%);margin:0 auto;padding:0 var(--rk-gutter)}
|
|
87
|
-
/* vertical-only so it never clobbers the horizontal gutter that .rk-container
|
|
88
|
-
/ .rk-container-wide set via padding-left/right (a full padding shorthand
|
|
89
|
-
here would zero the side gutter, leaving content flush to the viewport
|
|
90
|
-
edges, most visible on mobile) */
|
|
91
|
-
.rk-page{padding-top:24px;padding-bottom:80px}
|
|
92
|
-
.rk-page-head{display:grid;gap:4px;margin-bottom:18px}
|
|
93
|
-
.rk-h1{font-size:var(--rk-text-3xl);letter-spacing:-.03em}
|
|
94
|
-
.rk-sub{font-size:var(--rk-text-base);color:var(--rk-text-muted)}
|
|
95
|
-
.rk-stack{display:grid;gap:16px}
|
|
96
|
-
.rk-row{display:flex;align-items:center;gap:12px}
|
|
97
|
-
.rk-spread{display:flex;align-items:center;justify-content:space-between;gap:16px}
|
|
98
|
-
.rk-wrap{flex-wrap:wrap}
|
|
99
|
-
.rk-grid{display:grid;gap:20px}
|
|
100
|
-
.rk-grid-2{grid-template-columns:repeat(2,1fr)}
|
|
101
|
-
.rk-grid-3{grid-template-columns:repeat(3,1fr)}
|
|
102
|
-
.rk-grid-4{grid-template-columns:repeat(4,1fr)}
|
|
103
|
-
@media(max-width:900px){.rk-grid-3,.rk-grid-4{grid-template-columns:repeat(2,1fr)}}
|
|
104
|
-
@media(max-width:620px){.rk-grid-2,.rk-grid-3,.rk-grid-4{grid-template-columns:1fr}}
|
|
105
|
-
.rk-muted{color:var(--rk-text-muted)}.rk-faint{color:var(--rk-text-faint)}
|
|
106
|
-
.rk-mono{font-family:var(--rk-font-mono)}
|
|
107
|
-
|
|
108
|
-
/* app chrome — fixed LEFT sidebar nav + content column */
|
|
109
|
-
.rk-app{min-height:100vh}
|
|
110
|
-
.rk-sidebar{position:fixed;left:0;top:0;bottom:0;width:248px;z-index:50;display:flex;flex-direction:column;gap:4px;
|
|
111
|
-
padding:20px 14px 16px;background:#fff;border-right:1px solid var(--rk-border);overflow-y:auto}
|
|
112
|
-
.rk-content{margin-left:248px;min-height:100vh;background:var(--rk-bg)}
|
|
113
|
-
.rk-sidebar-brand{display:flex;align-items:center;gap:10px;padding:6px 10px 18px;font-family:var(--rk-font-display);
|
|
114
|
-
font-weight:800;font-size:20px;color:var(--rk-ink);letter-spacing:-.02em}
|
|
115
|
-
.rk-sidebar-brand .rk-brand-mark{width:36px;height:36px;border-radius:10px}
|
|
116
|
-
.rk-sidebar-nav{display:flex;flex-direction:column;gap:3px;flex:1;min-height:0}
|
|
117
|
-
.rk-sidebar-sep{height:1px;background:var(--rk-border);margin:8px}
|
|
118
|
-
.rk-sidebar-item{display:flex;align-items:center;padding:9px 13px;border-radius:var(--rk-r-lg);
|
|
119
|
-
font-size:14px;font-weight:600;color:var(--rk-n-600);white-space:nowrap;
|
|
120
|
-
transition:background var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease)}
|
|
121
|
-
.rk-sidebar-item:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
122
|
-
.rk-sidebar-item.is-active{background:var(--rk-gold-tint);color:var(--rk-ink)}
|
|
123
|
-
/* signed-in identity — subtle, small, pinned to the very bottom of the sidebar
|
|
124
|
-
* so you can tell which account you're in at a glance. The chat FAB hovers
|
|
125
|
-
* ABOVE this block (see .rk-signed-in .rk-fab) rather than sharing the spot. */
|
|
126
|
-
.rk-sidebar-account{margin-top:8px;padding:8px 13px 2px;border-top:1px solid var(--rk-border);
|
|
127
|
-
color:var(--rk-n-500);line-height:1.3;overflow:hidden}
|
|
128
|
-
.rk-sidebar-account-name{font-size:12px;font-weight:600;color:var(--rk-n-600);
|
|
129
|
-
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
130
|
-
.rk-sidebar-account-email{font-size:11px;font-weight:500;color:var(--rk-n-400);
|
|
131
|
-
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
132
|
-
/* AI chat dock — draggable FAB (defaults to the old sidebar-foot spot) + popup panel.
|
|
133
|
-
* The panel is 2x the sidebar width and, when it opens on the left, visually
|
|
134
|
-
* REPLACES the nav (sidebar goes visibility:hidden via body.rk-chat-left so the
|
|
135
|
-
* layout never jumps). If the FAB was dragged to the right half of the viewport
|
|
136
|
-
* the panel anchors right instead, so it is never cut off. */
|
|
137
|
-
.rk-fab{position:fixed;left:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:90;width:56px;height:56px;border-radius:var(--rk-r-full);
|
|
138
|
-
border:0;cursor:grab;background:var(--rk-gold-500);color:var(--rk-ink);display:grid;place-items:center;
|
|
139
|
-
box-shadow:var(--rk-shadow-lg);touch-action:none;user-select:none;-webkit-user-select:none;
|
|
140
|
-
transition:transform var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease),opacity var(--rk-dur) var(--rk-ease)}
|
|
141
|
-
/* signed in: the name/email block sits at the sidebar foot, so lift the FAB's
|
|
142
|
-
* default resting spot to hover just above it (never overlapping the identity).
|
|
143
|
-
* Only applies to the CSS default — a dragged FAB uses its saved inline top. */
|
|
144
|
-
.rk-signed-in .rk-fab{bottom:calc(84px + env(safe-area-inset-bottom))}
|
|
145
|
-
.rk-fab:hover{transform:translateY(-2px);box-shadow:0 6px 18px -6px rgba(252,185,0,.6),var(--rk-shadow-lg)}
|
|
146
|
-
.rk-fab.is-dragging{cursor:grabbing;transition:none;transform:scale(1.08)}
|
|
147
|
-
.rk-fab.is-open{opacity:0;pointer-events:none;transform:scale(.6)}
|
|
148
|
-
.rk-fab svg{width:26px;height:26px}
|
|
149
|
-
.rk-aichat{position:fixed;z-index:95;top:12px;bottom:12px;left:12px;width:min(440px,calc(100vw - 24px));
|
|
150
|
-
display:flex;flex-direction:row;background:var(--rk-surface);border:1px solid var(--rk-border);
|
|
151
|
-
border-radius:var(--rk-r-3xl);box-shadow:var(--rk-shadow-xl);overflow:hidden;
|
|
152
|
-
animation:rk-aichat-in .22s var(--rk-ease)}
|
|
153
|
-
.rk-aichat.has-files,.rk-aichat.has-history{width:min(772px,calc(100vw - 24px))}
|
|
154
|
-
.rk-aichat.is-right{left:auto;right:12px}
|
|
155
|
-
.rk-aichat[hidden]{display:none}
|
|
156
|
-
@keyframes rk-aichat-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
|
|
157
|
-
.rk-chat-left .rk-sidebar{visibility:hidden}
|
|
158
|
-
|
|
159
|
-
/* left Files pane — baked into the panel; My Files + Temp as root folders of
|
|
160
|
-
one virtual root + directory nav. Also reused inline by /reskin/settings. */
|
|
161
|
-
.rk-aichat-files{flex:none;width:266px;display:none;flex-direction:column;min-height:0;
|
|
162
|
-
border-right:1px solid var(--rk-border);background:var(--rk-n-50)}
|
|
163
|
-
.rk-aichat.has-files .rk-aichat-files{display:flex}
|
|
164
|
-
.rk-aichat-files .rk-aichat-crumbs{padding-top:2px}
|
|
165
|
-
|
|
166
|
-
/* files-only mode — opened from the /chat composer's attach button. Shows ONLY
|
|
167
|
-
the file explorer (no chat column / history), as a slim right-hand drawer. */
|
|
168
|
-
.rk-aichat.is-files-only{width:min(384px,calc(100vw - 24px))}
|
|
169
|
-
.rk-aichat.is-files-only .rk-aichat-main,
|
|
170
|
-
.rk-aichat.is-files-only .rk-aichat-history{display:none}
|
|
171
|
-
.rk-aichat.is-files-only .rk-aichat-files{display:flex;flex:1;border-right:0}
|
|
172
|
-
.rk-aichat.is-files-only .rk-aichat-files .rk-aichat-crumbs{padding-top:2px}
|
|
173
|
-
.rk-aichat-files-head{display:flex;align-items:center;gap:8px;
|
|
174
|
-
padding:14px 14px 10px;flex:none}
|
|
175
|
-
.rk-aichat-files-title{flex:1;min-width:0;font-family:var(--rk-font-display);font-weight:800;
|
|
176
|
-
font-size:15px;color:var(--rk-ink);letter-spacing:-.01em}
|
|
177
|
-
|
|
178
|
-
/* left Chat-history pane — shares the same left slot as Files (only one shows
|
|
179
|
-
at a time); reuses the rk-aichat-frow row visuals for each past chat. */
|
|
180
|
-
.rk-aichat-history{flex:none;width:266px;display:none;flex-direction:column;min-height:0;
|
|
181
|
-
border-right:1px solid var(--rk-border);background:var(--rk-n-50)}
|
|
182
|
-
.rk-aichat.has-history .rk-aichat-history{display:flex}
|
|
183
|
-
.rk-aichat-hist-head{padding:22px 14px 8px;font-family:var(--rk-font-display);font-weight:800;
|
|
184
|
-
font-size:13px;color:var(--rk-ink);letter-spacing:-.01em;flex:none}
|
|
185
|
-
.rk-aichat-hist-body{flex:1;min-height:0;overflow-y:auto;padding:2px 8px 12px;display:grid;gap:2px;align-content:start}
|
|
186
|
-
.rk-aichat-hist-body .rk-aichat-frow.is-active{background:#fff;box-shadow:var(--rk-shadow-xs);
|
|
187
|
-
outline:1.5px solid var(--rk-gold-600);outline-offset:-1.5px}
|
|
188
|
-
.rk-aichat-hist-body .rk-aichat-frow.is-active .rk-aichat-fic{background:var(--rk-gold-tint2);color:var(--rk-gold-700)}
|
|
189
|
-
.rk-aichat-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:1px;padding:0 12px 8px;flex:none}
|
|
190
|
-
.rk-aichat-crumb{padding:2px 6px;border-radius:var(--rk-r-sm);cursor:pointer;background:transparent;border:0;
|
|
191
|
-
color:var(--rk-text-muted);font-size:12px;font-weight:600;font-family:inherit;max-width:120px;overflow:hidden;
|
|
192
|
-
text-overflow:ellipsis;white-space:nowrap}
|
|
193
|
-
.rk-aichat-crumb:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
194
|
-
.rk-aichat-crumb.is-current{color:var(--rk-ink)}
|
|
195
|
-
.rk-aichat-crumb-sep{color:var(--rk-n-300);font-size:12px}
|
|
196
|
-
.rk-aichat-files-body{flex:1;min-height:0;overflow-y:auto;padding:2px 8px 12px;display:grid;gap:2px;align-content:start}
|
|
197
|
-
.rk-aichat-frow{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border-radius:var(--rk-r-lg);
|
|
198
|
-
border:0;background:transparent;cursor:pointer;text-align:left;font-family:inherit;min-width:0;
|
|
199
|
-
transition:background var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease)}
|
|
200
|
-
.rk-aichat-frow:hover{background:#fff;box-shadow:var(--rk-shadow-xs)}
|
|
201
|
-
/* preview trigger fills the row; attach button sits to its right */
|
|
202
|
-
.rk-aichat-fmainbtn{flex:1;min-width:0;display:flex;align-items:center;gap:9px;border:0;background:transparent;
|
|
203
|
-
padding:0;cursor:pointer;text-align:left;font-family:inherit}
|
|
204
|
-
.rk-aichat-fic{width:30px;height:30px;border-radius:var(--rk-r-md);flex:none;display:grid;place-items:center;
|
|
205
|
-
font-size:11px;font-weight:700;overflow:hidden}
|
|
206
|
-
.rk-aichat-fic-folder{background:var(--rk-gold-tint2);color:var(--rk-gold-700)}
|
|
207
|
-
.rk-aichat-fic-file{background:var(--rk-n-100);color:var(--rk-n-600)}
|
|
208
|
-
.rk-aichat-fic img,.rk-aichat-fic video{width:100%;height:100%;object-fit:cover}
|
|
209
|
-
.rk-aichat-fmain{flex:1;min-width:0;display:grid;gap:1px}
|
|
210
|
-
.rk-aichat-fname{font-size:12.5px;font-weight:600;color:var(--rk-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
211
|
-
.rk-aichat-fmeta{font-size:11px;color:var(--rk-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
212
|
-
.rk-aichat-fadd{flex:none;font-size:11px;font-weight:700;color:var(--rk-gold-700);opacity:0;cursor:pointer;
|
|
213
|
-
border:1px solid transparent;border-radius:var(--rk-r-full);background:transparent;padding:3px 9px;font-family:inherit;
|
|
214
|
-
transition:opacity var(--rk-dur) var(--rk-ease),background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
215
|
-
.rk-aichat-frow:hover .rk-aichat-fadd{opacity:1}
|
|
216
|
-
.rk-aichat-fadd:hover{background:var(--rk-gold-tint);border-color:var(--rk-gold-600)}
|
|
217
|
-
.rk-aichat-fadd:focus-visible{opacity:1}
|
|
218
|
-
.rk-aichat-fstate{padding:22px 14px;text-align:center;font-size:12.5px;color:var(--rk-text-muted);line-height:1.5;display:grid;gap:8px;justify-items:center}
|
|
219
|
-
.rk-aichat-fstate a{color:var(--rk-gold-700);font-weight:600}
|
|
220
|
-
.rk-aichat-fstate button{font-family:inherit;font-size:12px;font-weight:600;color:var(--rk-ink);cursor:pointer;
|
|
221
|
-
background:#fff;border:1px solid var(--rk-border);border-radius:var(--rk-r-full);padding:5px 12px}
|
|
222
|
-
.rk-aichat-fstate button:hover{background:var(--rk-n-100)}
|
|
223
|
-
/* upload dropzone footer (shown when inside My Files / Temp) */
|
|
224
|
-
.rk-aichat-drop{flex:none;margin:2px 10px 12px;padding:13px 12px;border:1.5px dashed var(--rk-border-strong);
|
|
225
|
-
border-radius:var(--rk-r-xl);background:#fff;display:grid;gap:9px;justify-items:center;text-align:center;
|
|
226
|
-
transition:border-color var(--rk-dur) var(--rk-ease),background var(--rk-dur) var(--rk-ease)}
|
|
227
|
-
.rk-aichat-drop[hidden]{display:none}
|
|
228
|
-
.rk-aichat-drop.is-drag{border-color:var(--rk-gold-600);background:var(--rk-gold-tint)}
|
|
229
|
-
.rk-aichat-drop-text{font-size:11.5px;color:var(--rk-text-muted);line-height:1.4;overflow-wrap:anywhere}
|
|
230
|
-
.rk-aichat-drop-btn{font-family:inherit;font-size:12px;font-weight:700;color:var(--rk-ink);cursor:pointer;
|
|
231
|
-
background:var(--rk-gold-tint);border:1px solid var(--rk-gold-600);border-radius:var(--rk-r-full);padding:6px 15px;
|
|
232
|
-
transition:background var(--rk-dur) var(--rk-ease)}
|
|
233
|
-
.rk-aichat-drop-btn:hover{background:var(--rk-gold-tint2)}
|
|
234
|
-
.rk-aichat-drop-btn:disabled{opacity:.6;cursor:default}
|
|
235
|
-
|
|
236
|
-
/* ── reusable directory explorer (createDirectoryExplorer) ──
|
|
237
|
-
Shares the .rk-aichat-frow/-fic/-fmain row look; adds search, multi-select,
|
|
238
|
-
a folder Open button, a per-row "…" kebab menu, and a copy-path toast.
|
|
239
|
-
Reused verbatim by the chat dock (attach mode) and /library/raws (standalone). */
|
|
240
|
-
.rk-dir{display:flex;flex-direction:column;min-height:0;flex:1}
|
|
241
|
-
.rk-dir-space{flex:none;display:inline-flex;gap:2px;margin:2px 12px 8px;padding:2px;
|
|
242
|
-
background:var(--rk-n-100,#f1ede6);border:1px solid var(--rk-border);border-radius:var(--rk-r-full);align-self:flex-start}
|
|
243
|
-
.rk-dir-space-btn{font-family:inherit;font-size:12px;font-weight:600;color:var(--rk-n-500,#7a7266);
|
|
244
|
-
background:transparent;border:0;border-radius:var(--rk-r-full);padding:4px 14px;cursor:pointer;
|
|
245
|
-
transition:background var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease)}
|
|
246
|
-
.rk-dir-space-btn.is-on{background:var(--rk-surface,#fff);color:var(--rk-ink);box-shadow:var(--rk-shadow-sm,0 1px 2px rgba(0,0,0,.06))}
|
|
247
|
-
.rk-dir-search{flex:none;padding:0 12px 8px}
|
|
248
|
-
.rk-dir-search-input{width:100%;font-family:inherit;font-size:12.5px;color:var(--rk-ink);
|
|
249
|
-
background:var(--rk-surface,#fff);border:1px solid var(--rk-border);border-radius:var(--rk-r-full);padding:7px 12px;
|
|
250
|
-
transition:border-color var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease)}
|
|
251
|
-
.rk-dir-search-input:focus{outline:none;border-color:var(--rk-gold-600);box-shadow:var(--rk-ring-gold)}
|
|
252
|
-
.rk-dir-search-input::placeholder{color:var(--rk-n-400)}
|
|
253
|
-
.rk-dir-body{flex:1 1 auto;min-height:0}
|
|
254
|
-
.rk-dir-crumbs{align-items:center}
|
|
255
|
-
.rk-dir-newfolder{margin-left:auto;flex:none;font-family:inherit;font-size:11.5px;font-weight:700;cursor:pointer;
|
|
256
|
-
color:var(--rk-gold-700);background:transparent;border:1px solid transparent;border-radius:var(--rk-r-full);padding:3px 10px;
|
|
257
|
-
transition:background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
258
|
-
.rk-dir-newfolder:hover{background:var(--rk-gold-tint);border-color:var(--rk-gold-600)}
|
|
259
|
-
/* selection toolbar (shown when 1+ rows are selected) */
|
|
260
|
-
.rk-dir-selbar{flex:none;display:flex;align-items:center;gap:8px;margin:0 10px 8px;padding:7px 10px;
|
|
261
|
-
background:var(--rk-gold-tint);border:1px solid var(--rk-gold-600);border-radius:var(--rk-r-xl)}
|
|
262
|
-
.rk-dir-selbar[hidden]{display:none}
|
|
263
|
-
.rk-dir-selcount{flex:1;font-size:12px;font-weight:700;color:var(--rk-gold-700)}
|
|
264
|
-
.rk-dir-selbtn{flex:none;font-family:inherit;font-size:12px;font-weight:800;color:var(--rk-ink);cursor:pointer;
|
|
265
|
-
background:transparent;border:1px solid var(--rk-gold-600);border-radius:var(--rk-r-full);padding:5px 14px;
|
|
266
|
-
transition:background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease)}
|
|
267
|
-
.rk-dir-selbtn.is-primary{background:var(--rk-gold-500);border-color:var(--rk-gold-600);color:var(--rk-ink)}
|
|
268
|
-
.rk-dir-selbtn.is-primary:hover{background:var(--rk-gold-600)}
|
|
269
|
-
.rk-dir-selbtn.is-ghost{border-color:var(--rk-border);color:var(--rk-text-muted);background:transparent}
|
|
270
|
-
.rk-dir-selbtn.is-ghost:hover{background:var(--rk-gold-tint);border-color:var(--rk-gold-600);color:var(--rk-ink)}
|
|
271
|
-
.rk-dir-selmore{padding:5px 10px;font-size:15px;line-height:1;font-weight:700}
|
|
272
|
-
/* per-row select checkbox — discoverable on hover, sticky when selected */
|
|
273
|
-
.rk-dir-check{flex:none;width:15px;height:15px;margin:0;accent-color:var(--rk-gold-600);cursor:pointer;opacity:0;
|
|
274
|
-
transition:opacity var(--rk-dur) var(--rk-ease)}
|
|
275
|
-
.rk-aichat-frow:hover .rk-dir-check,.rk-dir-row.is-selected .rk-dir-check,.rk-dir-check:focus-visible{opacity:1}
|
|
276
|
-
.rk-dir-row.is-selected{background:var(--rk-gold-tint);outline:1.5px solid var(--rk-gold-600);outline-offset:-1.5px}
|
|
277
|
-
/* folder Open button — always visible (it's the navigation affordance) */
|
|
278
|
-
.rk-dir-open{opacity:1;color:var(--rk-text-muted)}
|
|
279
|
-
.rk-aichat-frow:hover .rk-dir-open{color:var(--rk-gold-700)}
|
|
280
|
-
/* per-row "…" kebab */
|
|
281
|
-
.rk-dir-kebab{flex:none;width:26px;height:26px;border-radius:var(--rk-r-md);border:1px solid transparent;background:transparent;
|
|
282
|
-
cursor:pointer;color:var(--rk-n-500);font-size:16px;line-height:1;display:grid;place-items:center;opacity:0;
|
|
283
|
-
transition:opacity var(--rk-dur) var(--rk-ease),background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
284
|
-
.rk-aichat-frow:hover .rk-dir-kebab,.rk-dir-kebab:focus-visible{opacity:1}
|
|
285
|
-
.rk-dir-kebab:hover{background:var(--rk-n-100);color:var(--rk-ink);border-color:var(--rk-border)}
|
|
286
|
-
/* kebab popup + copy toast (appended to <body>, so plain colors not tokens for
|
|
287
|
-
portability onto any host page) */
|
|
288
|
-
.rk-dir-menu{position:fixed;z-index:2147483000;min-width:150px;background:#fff;border:1px solid var(--rk-border,#e6e1d8);
|
|
289
|
-
border-radius:var(--rk-r-lg,12px);box-shadow:var(--rk-shadow-md,0 10px 30px rgba(40,30,10,.16));padding:5px;display:grid;gap:1px}
|
|
290
|
-
.rk-dir-menuitem{font-family:inherit;font-size:12.5px;font-weight:600;color:var(--rk-ink,#2b2620);cursor:pointer;
|
|
291
|
-
text-align:left;background:transparent;border:0;border-radius:var(--rk-r-md,8px);padding:7px 10px}
|
|
292
|
-
.rk-dir-menuitem:hover{background:var(--rk-n-100,#f2efe9)}
|
|
293
|
-
.rk-dir-menuitem.is-danger{color:#b4341f}
|
|
294
|
-
.rk-dir-menuitem.is-danger:hover{background:#fbeae6}
|
|
295
|
-
.rk-dir-toast{position:fixed;z-index:2147483001;left:50%;bottom:26px;transform:translate(-50%,12px);
|
|
296
|
-
background:#2b2620;color:#fff;font-family:var(--rk-font-body,inherit);font-size:12.5px;font-weight:600;
|
|
297
|
-
padding:9px 15px;border-radius:999px;box-shadow:0 10px 30px rgba(0,0,0,.25);max-width:80vw;overflow:hidden;
|
|
298
|
-
text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none;
|
|
299
|
-
transition:opacity .18s ease,transform .18s ease}
|
|
300
|
-
.rk-dir-toast.is-on{opacity:1;transform:translate(-50%,0)}
|
|
301
|
-
|
|
302
|
-
/* chat column */
|
|
303
|
-
.rk-aichat-main{flex:1;min-width:0;display:flex;flex-direction:column}
|
|
304
|
-
.rk-aichat-head{display:flex;align-items:center;gap:8px;padding:14px 14px;border-bottom:1px solid var(--rk-border);flex:none}
|
|
305
|
-
.rk-aichat-head-main{flex:1;min-width:0;display:grid;gap:1px}
|
|
306
|
-
.rk-aichat-title{font-family:var(--rk-font-display);font-weight:800;font-size:15px;color:var(--rk-ink);letter-spacing:-.01em}
|
|
307
|
-
.rk-aichat-sub{font-size:11.5px;color:var(--rk-text-muted)}
|
|
308
|
-
.rk-aichat-back{flex:1;min-width:0;display:inline-flex;align-items:center;gap:8px;padding:7px 12px 7px 9px;
|
|
309
|
-
border-radius:999px;border:1px solid var(--rk-border);background:#fff;cursor:pointer;text-decoration:none;
|
|
310
|
-
font-family:var(--rk-font-display);font-weight:700;font-size:13.5px;color:var(--rk-ink);letter-spacing:-.01em;
|
|
311
|
-
transition:background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
312
|
-
.rk-aichat-back:hover{background:var(--rk-n-100);border-color:var(--rk-n-300)}
|
|
313
|
-
.rk-aichat-back svg{width:17px;height:17px;flex:none;color:var(--rk-n-600)}
|
|
314
|
-
.rk-aichat-back span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
315
|
-
.rk-aichat-tool{width:30px;height:30px;border-radius:var(--rk-r-lg);border:1px solid var(--rk-border);background:#fff;
|
|
316
|
-
cursor:pointer;color:var(--rk-n-600);display:grid;place-items:center;font-size:13px;flex:none;
|
|
317
|
-
transition:background var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
318
|
-
.rk-aichat-tool:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
319
|
-
.rk-aichat-tool svg{width:15px;height:15px}
|
|
320
|
-
.rk-aichat-tool.is-on{background:var(--rk-gold-tint);border-color:var(--rk-gold-600);color:var(--rk-ink)}
|
|
321
|
-
/* overflow-x:hidden + a capped single column (minmax(0,1fr), NOT the default
|
|
322
|
-
auto track which grows to content) keep the log scrolling ONLY vertically —
|
|
323
|
-
a wide child (long tool note / URL / file path) can no longer widen the grid
|
|
324
|
-
and force a horizontal scrollbar in the narrow dock column. */
|
|
325
|
-
.rk-aichat-log{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px;display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-content:start;background:var(--rk-n-50)}
|
|
326
|
-
.rk-aichat-msg{max-width:85%;min-width:0;padding:10px 14px;border-radius:var(--rk-r-2xl);font-size:13.5px;line-height:1.5;overflow-wrap:anywhere;word-break:break-word}
|
|
327
|
-
.rk-aichat-msg.is-ai{background:#fff;border:1px solid var(--rk-border);color:var(--rk-text);justify-self:start;
|
|
328
|
-
border-bottom-left-radius:var(--rk-r-sm);box-shadow:var(--rk-shadow-xs)}
|
|
329
|
-
.rk-aichat-msg.is-user{background:var(--rk-gold-tint2);color:var(--rk-ink);justify-self:end;border-bottom-right-radius:var(--rk-r-sm)}
|
|
330
|
-
/* rendered markdown inside assistant replies (bold / italic / links) */
|
|
331
|
-
.rk-aichat-msg.is-ai a,.rk-aichat-stream a{color:var(--rk-gold-700);font-weight:600;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
|
|
332
|
-
.rk-aichat-msg.is-ai strong,.rk-aichat-stream strong{color:var(--rk-ink);font-weight:700}
|
|
333
|
-
.rk-aichat-msg.is-ai em,.rk-aichat-stream em{font-style:italic}
|
|
334
|
-
.rk-aichat-chips{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px 0;flex:none}
|
|
335
|
-
.rk-aichat-chips:empty{display:none}
|
|
336
|
-
.rk-aichat-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 6px 4px 10px;border-radius:var(--rk-r-full);
|
|
337
|
-
background:var(--rk-gold-tint2);color:var(--rk-gold-700);font-size:11.5px;font-weight:600;max-width:190px}
|
|
338
|
-
.rk-aichat-chip span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
339
|
-
.rk-aichat-chip button{border:0;background:transparent;color:inherit;cursor:pointer;font-size:14px;line-height:1;padding:0 2px}
|
|
340
|
-
.rk-aichat-chip-label{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:inherit;
|
|
341
|
-
font-size:11.5px;font-weight:600;text-align:left;text-decoration:underline;text-underline-offset:2px;text-decoration-color:transparent}
|
|
342
|
-
.rk-aichat-chip-label:hover{text-decoration-color:currentColor}
|
|
343
|
-
.rk-aichat-chip.is-pending{opacity:.75}
|
|
344
|
-
.rk-aichat-chip.is-pending .rk-aichat-chip-label{text-decoration:none;cursor:default}
|
|
345
|
-
.rk-aichat-chip-spin{width:11px;height:11px;flex:none;border-radius:50%;border:2px solid currentColor;
|
|
346
|
-
border-top-color:transparent;animation:rk-aichat-chip-spin .7s linear infinite}
|
|
347
|
-
@keyframes rk-aichat-chip-spin{to{transform:rotate(360deg)}}
|
|
348
|
-
/* composer = one bordered "text area" box: the textarea fills the top and the
|
|
349
|
-
attach + send controls sit inside it along the bottom row. */
|
|
350
|
-
.rk-aichat-composer{display:flex;flex-direction:column;gap:8px;margin:12px;padding:10px 10px 9px;flex:none;background:#fff;
|
|
351
|
-
border:1px solid var(--rk-border-strong);border-radius:var(--rk-r-2xl);box-shadow:var(--rk-shadow-xs);
|
|
352
|
-
transition:border-color var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease)}
|
|
353
|
-
.rk-aichat-composer:focus-within{border-color:var(--rk-gold-600);box-shadow:var(--rk-ring-gold)}
|
|
354
|
-
.rk-aichat-field{width:100%;min-height:70px;max-height:210px;resize:none;border:0;background:transparent;
|
|
355
|
-
color:var(--rk-ink);font-family:var(--rk-font-body);font-size:14px;line-height:1.5;padding:4px 4px 0}
|
|
356
|
-
.rk-aichat-field:focus{outline:none;box-shadow:none}
|
|
357
|
-
.rk-aichat-field::placeholder{color:var(--rk-n-400)}
|
|
358
|
-
.rk-aichat-composer-actions{display:flex;align-items:center;gap:8px}
|
|
359
|
-
.rk-aichat-composer-actions .rk-btn{margin-left:auto}
|
|
360
|
-
/* composer paperclip — opens the folder directory nav to browse + attach files
|
|
361
|
-
(tokens so it re-themes on the dark editor dock automatically) */
|
|
362
|
-
.rk-aichat-attach{flex:none;width:38px;height:38px;border-radius:var(--rk-r-full);border:1px solid var(--rk-border);
|
|
363
|
-
background:var(--rk-surface);color:var(--rk-n-500);cursor:pointer;display:grid;place-items:center;
|
|
364
|
-
transition:background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease)}
|
|
365
|
-
.rk-aichat-attach:hover,.rk-aichat-attach.is-on{border-color:var(--rk-gold-600);background:var(--rk-gold-tint);color:var(--rk-ink)}
|
|
366
|
-
.rk-aichat-attach svg{width:18px;height:18px}
|
|
367
|
-
|
|
368
|
-
/* ── live agentic turn: status → actions (tool notes + HTTP cards) → text ── */
|
|
369
|
-
.rk-aichat-turn{display:grid;gap:8px;justify-items:start;width:100%;min-width:0}
|
|
370
|
-
.rk-aichat-stream{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;max-width:100%}
|
|
371
|
-
.rk-aichat-stream[hidden]{display:none}
|
|
372
|
-
.rk-aichat-actions{display:grid;gap:6px;width:100%}
|
|
373
|
-
.rk-aichat-actions:empty{display:none}
|
|
374
|
-
.rk-aichat-status{display:flex;align-items:center;padding:2px 2px}
|
|
375
|
-
.rk-aichat-status[hidden]{display:none}
|
|
376
|
-
.rk-aichat-typing{display:inline-flex;gap:4px;align-items:center}
|
|
377
|
-
.rk-aichat-typing span{width:6px;height:6px;border-radius:50%;background:var(--rk-n-400);
|
|
378
|
-
animation:rk-aichat-blink 1.2s var(--rk-ease) infinite}
|
|
379
|
-
.rk-aichat-typing span:nth-child(2){animation-delay:.18s}
|
|
380
|
-
.rk-aichat-typing span:nth-child(3){animation-delay:.36s}
|
|
381
|
-
@keyframes rk-aichat-blink{0%,80%,100%{opacity:.28;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}
|
|
382
|
-
.rk-aichat-toolnote{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;color:var(--rk-text-muted);
|
|
383
|
-
font-family:var(--rk-font-mono);background:#fff;border:1px solid var(--rk-border);
|
|
384
|
-
border-radius:var(--rk-r-lg);padding:5px 10px;width:fit-content;max-width:100%;overflow-wrap:anywhere;word-break:break-word}
|
|
385
|
-
.rk-aichat-toolnote::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--rk-gold-500);flex:none}
|
|
386
|
-
.rk-aichat-loadmore{width:100%;margin-top:6px;padding:9px 12px;font-size:12.5px;font-weight:600;
|
|
387
|
-
color:var(--rk-text);background:var(--rk-white);border:1px solid var(--rk-border);
|
|
388
|
-
border-radius:var(--rk-r-lg);cursor:pointer;font-family:var(--rk-font-mono)}
|
|
389
|
-
.rk-aichat-loadmore:hover{background:var(--rk-n-50);border-color:var(--rk-border-strong)}
|
|
390
|
-
.rk-aichat-loadmore:disabled{opacity:.6;cursor:default}
|
|
391
|
-
.rk-aichat-toolnote.is-ok{color:#0a7c3f}
|
|
392
|
-
.rk-aichat-toolnote.is-ok::before{background:#12a150}
|
|
393
|
-
.rk-aichat-toolnote.is-err{color:#b42318}
|
|
394
|
-
.rk-aichat-toolnote.is-err::before{background:#d92d20}
|
|
395
|
-
.rk-aichat-err{font-size:12.5px;color:#b42318;background:#fff;border:1px solid var(--rk-border);
|
|
396
|
-
border-radius:var(--rk-r-lg);padding:9px 11px;white-space:pre-wrap;width:100%}
|
|
397
|
-
|
|
398
|
-
/* first-class HTTP action card (chip → modal) */
|
|
399
|
-
.rk-aichat-http{display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;cursor:pointer;text-align:left;
|
|
400
|
-
background:#fff;border:1px solid var(--rk-border);border-radius:var(--rk-r-lg);box-shadow:var(--rk-shadow-xs);
|
|
401
|
-
transition:border-color var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease)}
|
|
402
|
-
.rk-aichat-http:hover{border-color:var(--rk-gold-600);box-shadow:var(--rk-shadow-sm)}
|
|
403
|
-
.rk-aichat-http-method{flex:none;font-family:var(--rk-font-mono);font-size:10.5px;font-weight:700;letter-spacing:.03em;
|
|
404
|
-
color:var(--rk-gold-700);background:var(--rk-gold-tint);border-radius:var(--rk-r-sm);padding:2px 7px}
|
|
405
|
-
.rk-aichat-http-url{flex:1;min-width:0;font-family:var(--rk-font-mono);font-size:11.5px;color:var(--rk-n-700);
|
|
406
|
-
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
407
|
-
.rk-aichat-http-status{flex:none;font-family:var(--rk-font-mono);font-size:11px;font-weight:700;color:var(--rk-green);
|
|
408
|
-
background:var(--rk-green-tint);border-radius:var(--rk-r-sm);padding:2px 7px}
|
|
409
|
-
.rk-aichat-http-status[data-error="true"]{color:var(--rk-red);background:var(--rk-red-tint)}
|
|
410
|
-
|
|
411
|
-
/* HTTP request/response modal (portalled to body, above the fixed panel) */
|
|
412
|
-
.rk-aichat-modal-back{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:20px;
|
|
413
|
-
background:rgba(23,23,23,.42);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
|
|
414
|
-
animation:rk-aichat-in .16s var(--rk-ease)}
|
|
415
|
-
.rk-aichat-modal{width:min(720px,100%);max-height:min(82vh,calc(100vh - 24px));display:flex;flex-direction:column;background:var(--rk-surface);
|
|
416
|
-
border:1px solid var(--rk-border);border-radius:var(--rk-r-2xl);box-shadow:var(--rk-shadow-xl);overflow:hidden}
|
|
417
|
-
.rk-aichat-modal-head{display:flex;align-items:center;gap:9px;padding:14px 16px;border-bottom:1px solid var(--rk-border);flex:none}
|
|
418
|
-
.rk-aichat-modal-head .rk-aichat-http-url{font-size:12.5px}
|
|
419
|
-
.rk-aichat-modal-x{flex:none;margin-left:2px;width:28px;height:28px;border-radius:var(--rk-r-lg);border:1px solid var(--rk-border);
|
|
420
|
-
background:#fff;color:var(--rk-n-500);cursor:pointer;font-size:17px;line-height:1;display:grid;place-items:center}
|
|
421
|
-
.rk-aichat-modal-x:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
422
|
-
.rk-aichat-modal-body{padding:14px 16px;overflow-y:auto;display:grid;gap:14px}
|
|
423
|
-
.rk-aichat-http-note{font-size:12.5px;color:var(--rk-text-muted);line-height:1.5}
|
|
424
|
-
.rk-aichat-http-block{display:grid;gap:5px}
|
|
425
|
-
.rk-aichat-http-blabel{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--rk-text-faint)}
|
|
426
|
-
.rk-aichat-http-pre{margin:0;font-family:var(--rk-font-mono);font-size:11.5px;line-height:1.55;color:var(--rk-n-700);
|
|
427
|
-
background:var(--rk-n-50);border:1px solid var(--rk-border);border-radius:var(--rk-r-lg);padding:10px 12px;
|
|
428
|
-
max-height:220px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}
|
|
429
|
-
|
|
430
|
-
/* collapsible JSON tree (request/response/headers inspection in the modal) */
|
|
431
|
-
.rk-aichat-json{border:1px solid var(--rk-border);border-radius:var(--rk-r-lg);background:#fff;overflow:hidden}
|
|
432
|
-
.rk-aichat-json-bar{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--rk-border);
|
|
433
|
-
background:var(--rk-n-50)}
|
|
434
|
-
.rk-aichat-json-all{font-family:var(--rk-font-body);font-size:11px;font-weight:700;color:var(--rk-n-600);cursor:pointer;
|
|
435
|
-
background:#fff;border:1px solid var(--rk-border);border-radius:var(--rk-r-full);padding:3px 10px}
|
|
436
|
-
.rk-aichat-json-all:hover{background:var(--rk-gold-tint);border-color:var(--rk-gold-600);color:var(--rk-ink)}
|
|
437
|
-
.rk-aichat-json-scroll{max-height:300px;overflow:auto;padding:8px 0}
|
|
438
|
-
.rk-aichat-json-line{position:relative;display:flex;align-items:flex-start;width:100%;min-height:22px;padding-right:34px}
|
|
439
|
-
.rk-aichat-json-line:hover{background:var(--rk-gold-tint)}
|
|
440
|
-
.rk-aichat-json-line.is-toggle{padding-left:0}
|
|
441
|
-
.rk-aichat-json-caret{flex:none;width:20px;height:20px;margin-top:1px;display:grid;place-items:center;border:0;
|
|
442
|
-
background:transparent;color:var(--rk-n-500);cursor:pointer}
|
|
443
|
-
.rk-aichat-json-caret svg{transition:transform var(--rk-dur) var(--rk-ease)}
|
|
444
|
-
.rk-aichat-json-caret[data-open="true"] svg{transform:rotate(90deg)}
|
|
445
|
-
.rk-aichat-json-text{display:block;width:100%;font-family:var(--rk-font-mono);font-size:11.5px;line-height:1.5;
|
|
446
|
-
color:var(--rk-n-700);white-space:pre-wrap;word-break:break-word}
|
|
447
|
-
.rk-aichat-json-copy{position:absolute;right:8px;top:2px;width:20px;height:20px;border-radius:var(--rk-r-sm);
|
|
448
|
-
display:grid;place-items:center;border:1px solid var(--rk-border);background:#fff;color:var(--rk-n-500);cursor:pointer;
|
|
449
|
-
opacity:0;box-shadow:var(--rk-shadow-xs);transition:opacity var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease)}
|
|
450
|
-
.rk-aichat-json-line:hover .rk-aichat-json-copy,.rk-aichat-json-copy:focus-visible{opacity:1}
|
|
451
|
-
.rk-aichat-json-copy:hover{color:var(--rk-gold-700);border-color:var(--rk-gold-600)}
|
|
452
|
-
|
|
453
|
-
/* ── file preview modal (images carousel, video, audio, pdf, md/txt/json) ── */
|
|
454
|
-
.rk-aichat-preview{width:min(880px,100%);max-height:min(88vh,calc(100vh - 24px))}
|
|
455
|
-
.rk-aichat-preview-name{flex:1;min-width:0;font-family:var(--rk-font-body);font-weight:700;font-size:13px;color:var(--rk-ink);
|
|
456
|
-
white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
457
|
-
.rk-aichat-preview-open{flex:none;font-size:11.5px;font-weight:700;color:var(--rk-gold-700);text-decoration:none;
|
|
458
|
-
border:1px solid var(--rk-border);border-radius:var(--rk-r-full);padding:4px 11px}
|
|
459
|
-
.rk-aichat-preview-open:hover{background:var(--rk-gold-tint);border-color:var(--rk-gold-600)}
|
|
460
|
-
.rk-aichat-preview-body{padding:0;display:block;min-height:120px;background:var(--rk-n-50)}
|
|
461
|
-
.rk-aichat-preview-img{display:block;max-width:100%;max-height:70vh;margin:0 auto;object-fit:contain;background:var(--rk-n-100)}
|
|
462
|
-
.rk-aichat-preview-media{display:block;width:100%;max-height:70vh;background:#000}
|
|
463
|
-
.rk-aichat-preview-audiowrap{padding:34px 20px;display:grid;place-items:center}
|
|
464
|
-
.rk-aichat-preview-audio{width:100%;max-width:460px}
|
|
465
|
-
.rk-aichat-preview-frame{display:block;width:100%;height:70vh;border:0;background:#fff}
|
|
466
|
-
.rk-aichat-preview-loading{padding:34px 16px;text-align:center;font-size:12.5px;color:var(--rk-text-muted)}
|
|
467
|
-
.rk-aichat-preview-text{margin:0;border:0;border-radius:0;max-height:70vh;background:#fff}
|
|
468
|
-
.rk-aichat-preview .rk-aichat-json{border:0;border-radius:0}
|
|
469
|
-
.rk-aichat-preview .rk-aichat-json-scroll{max-height:70vh}
|
|
470
|
-
.rk-aichat-preview-md{padding:18px 22px;max-height:70vh;overflow:auto;background:#fff;font-size:13.5px;line-height:1.6;color:var(--rk-n-700)}
|
|
471
|
-
.rk-aichat-preview-md h1,.rk-aichat-preview-md h2,.rk-aichat-preview-md h3,.rk-aichat-preview-md h4,.rk-aichat-preview-md h5,.rk-aichat-preview-md h6{
|
|
472
|
-
font-family:var(--rk-font-display);color:var(--rk-ink);font-weight:800;line-height:1.25;margin:16px 0 8px}
|
|
473
|
-
.rk-aichat-preview-md h1{font-size:20px}.rk-aichat-preview-md h2{font-size:17px}.rk-aichat-preview-md h3{font-size:15px}
|
|
474
|
-
.rk-aichat-preview-md h4,.rk-aichat-preview-md h5,.rk-aichat-preview-md h6{font-size:13.5px}
|
|
475
|
-
.rk-aichat-preview-md p{margin:0 0 10px}
|
|
476
|
-
.rk-aichat-preview-md ul,.rk-aichat-preview-md ol{margin:0 0 10px;padding-left:22px}
|
|
477
|
-
.rk-aichat-preview-md li{margin:3px 0}
|
|
478
|
-
.rk-aichat-preview-md a{color:var(--rk-gold-700);font-weight:600;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
|
|
479
|
-
.rk-aichat-preview-md strong{color:var(--rk-ink);font-weight:700}.rk-aichat-preview-md em{font-style:italic}
|
|
480
|
-
.rk-aichat-preview-md code{font-family:var(--rk-font-mono);font-size:12px;background:var(--rk-n-100);border-radius:5px;padding:1px 5px;color:var(--rk-n-700)}
|
|
481
|
-
.rk-aichat-preview-md blockquote{margin:0 0 10px;padding:2px 0 2px 12px;border-left:3px solid var(--rk-border-strong);color:var(--rk-text-muted)}
|
|
482
|
-
.rk-aichat-preview-md hr{border:0;border-top:1px solid var(--rk-border);margin:14px 0}
|
|
483
|
-
.rk-aichat-preview-code{margin:0 0 10px;font-family:var(--rk-font-mono);font-size:11.5px;line-height:1.5;color:var(--rk-n-700);
|
|
484
|
-
background:var(--rk-n-50);border:1px solid var(--rk-border);border-radius:var(--rk-r-lg);padding:10px 12px;overflow:auto;white-space:pre}
|
|
485
|
-
.rk-aichat-preview-code code{background:transparent;padding:0}
|
|
486
|
-
.rk-aichat-preview-empty{padding:40px 16px;display:grid;gap:12px;justify-items:center;text-align:center;font-size:12.5px;color:var(--rk-text-muted)}
|
|
487
|
-
.rk-aichat-preview-dl{font-size:12.5px;font-weight:700;color:var(--rk-ink);cursor:pointer;background:var(--rk-gold-tint);
|
|
488
|
-
border:1px solid var(--rk-gold-600);border-radius:var(--rk-r-full);padding:7px 15px;text-decoration:none}
|
|
489
|
-
.rk-aichat-preview-dl:hover{background:var(--rk-gold-tint2)}
|
|
490
|
-
.rk-aichat-preview-nav{display:flex;align-items:center;justify-content:center;gap:14px;padding:11px 16px;
|
|
491
|
-
border-top:1px solid var(--rk-border);flex:none;background:var(--rk-surface)}
|
|
492
|
-
.rk-aichat-preview-nav[hidden]{display:none}
|
|
493
|
-
.rk-aichat-preview-btn{font-family:inherit;font-size:12px;font-weight:700;color:var(--rk-ink);cursor:pointer;
|
|
494
|
-
background:#fff;border:1px solid var(--rk-border);border-radius:var(--rk-r-full);padding:6px 14px;
|
|
495
|
-
transition:background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
496
|
-
.rk-aichat-preview-btn:hover:not(:disabled){background:var(--rk-gold-tint);border-color:var(--rk-gold-600)}
|
|
497
|
-
.rk-aichat-preview-btn:disabled{opacity:.4;cursor:default}
|
|
498
|
-
.rk-aichat-preview-count{font-size:11.5px;font-weight:600;color:var(--rk-text-muted);font-variant-numeric:tabular-nums;min-width:52px;text-align:center}
|
|
499
|
-
|
|
500
|
-
/* create_video pipeline: live status row + clickable result links */
|
|
501
|
-
.rk-aichat-flow{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--rk-text-muted);padding:2px 2px}
|
|
502
|
-
.rk-aichat-flow[hidden]{display:none}
|
|
503
|
-
.rk-aichat-flow-label{line-height:1.4}
|
|
504
|
-
.rk-aichat-msg a,.rk-aichat-stream a{color:var(--rk-gold-700);font-weight:700;text-decoration:underline;
|
|
505
|
-
text-underline-offset:2px;overflow-wrap:anywhere}
|
|
506
|
-
.rk-aichat-msg a:hover,.rk-aichat-stream a:hover{color:var(--rk-ink)}
|
|
507
|
-
|
|
508
|
-
/* narrow: stack the left drawer above the chat so neither pane is cut off.
|
|
509
|
-
Cap the drawer to a fraction of the *viewport* (not 44% of the panel) and
|
|
510
|
-
floor the chat log so the composer is never crushed on short/landscape phones. */
|
|
511
|
-
@media(max-width:700px){
|
|
512
|
-
.rk-aichat.has-files,.rk-aichat.has-history{flex-direction:column}
|
|
513
|
-
.rk-aichat.has-files .rk-aichat-files,
|
|
514
|
-
.rk-aichat.has-history .rk-aichat-history{width:auto;max-height:min(44%,34vh);border-right:0;border-bottom:1px solid var(--rk-border)}
|
|
515
|
-
.rk-aichat-log{min-height:60px}
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
/* touch devices have no hover, so controls that reveal on :hover would stay
|
|
519
|
-
invisible. Un-hide them on coarse pointers: the row kebab "…" (Copy path /
|
|
520
|
-
Delete), the multi-select checkbox, the folder Open chevron, the chat +Attach
|
|
521
|
-
button, and the JSON copy button. (Hover-only decorative states stay as-is.) */
|
|
522
|
-
@media(hover:none){
|
|
523
|
-
.rk-dir-kebab,.rk-dir-check,.rk-dir-open,.rk-aichat-fadd,.rk-aichat-json-copy{opacity:1}
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
/* brand + glass helpers (kept — reused by the sidebar brand + the login page) */
|
|
527
|
-
.rk-glass{background:rgba(255,255,255,.72);backdrop-filter:blur(var(--rk-glass-blur));
|
|
528
|
-
-webkit-backdrop-filter:blur(var(--rk-glass-blur));border:1px solid var(--rk-border);box-shadow:var(--rk-shadow-nav)}
|
|
529
|
-
.rk-brand{display:inline-flex;align-items:center;gap:8px;font-family:var(--rk-font-display);
|
|
530
|
-
font-weight:800;font-size:20px;color:var(--rk-ink);letter-spacing:-.02em;flex:none}
|
|
531
|
-
.rk-brand-mark{display:inline-block;vertical-align:middle;width:26px;height:26px;border-radius:8px;
|
|
532
|
-
background:center/contain no-repeat url("/assets/logo-vidfarm.png");
|
|
533
|
-
font-size:0;color:transparent;flex:none;text-indent:-9999px;overflow:hidden}
|
|
534
|
-
.rk-brand-tag{font-family:var(--rk-font-body);font-size:11px;font-weight:600;color:var(--rk-gold-700);
|
|
535
|
-
background:var(--rk-gold-tint2);padding:2px 8px;border-radius:var(--rk-r-full);letter-spacing:.02em}
|
|
536
|
-
|
|
537
|
-
/* narrow: sidebar collapses to a horizontal top strip */
|
|
538
|
-
@media(max-width:900px){
|
|
539
|
-
.rk-sidebar{position:static;width:auto;flex-direction:row;align-items:center;gap:6px;
|
|
540
|
-
padding:10px 14px;border-right:0;border-bottom:1px solid var(--rk-border);overflow-x:auto}
|
|
541
|
-
.rk-sidebar-brand{padding:6px 8px;flex:none}
|
|
542
|
-
.rk-sidebar-nav{flex-direction:row;gap:4px;flex:1}
|
|
543
|
-
.rk-sidebar-sep{display:none}
|
|
544
|
-
.rk-sidebar-item{padding:8px 12px}
|
|
545
|
-
/* horizontal strip: FAB no longer collides with the foot, drop the reserve */
|
|
546
|
-
/* horizontal strip: kill the foot border + top offset so the account block
|
|
547
|
-
sits centered in the row instead of showing a stray hairline above it */
|
|
548
|
-
.rk-sidebar-account{padding:8px 13px 2px;border-top:0;margin-top:0}
|
|
549
|
-
/* strip/burger layout: the account block is no longer at the sidebar foot,
|
|
550
|
-
so drop the FAB back to its normal bottom-left resting spot */
|
|
551
|
-
.rk-signed-in .rk-fab{bottom:calc(16px + env(safe-area-inset-bottom))}
|
|
552
|
-
.rk-content{margin-left:0}
|
|
553
|
-
.rk-chat-left .rk-sidebar{visibility:visible}
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
/* hamburger button — hidden except on phones (see ≤640 block below) */
|
|
557
|
-
.rk-nav-burger{display:none;margin-left:auto;flex:none;width:40px;height:40px;border-radius:var(--rk-r-lg);
|
|
558
|
-
border:1px solid var(--rk-border);background:#fff;color:var(--rk-n-700);cursor:pointer;place-items:center;
|
|
559
|
-
transition:background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
560
|
-
.rk-nav-burger:hover{background:var(--rk-n-100);border-color:var(--rk-border-strong)}
|
|
561
|
-
|
|
562
|
-
/* phones: swap the horizontal-scroll strip for a real hamburger dropdown so all
|
|
563
|
-
nav items + the account block are reachable (the strip pushes them off-screen). */
|
|
564
|
-
@media(max-width:640px){
|
|
565
|
-
.rk-sidebar{flex-wrap:wrap;overflow:visible;position:sticky;top:0;z-index:60;gap:8px;
|
|
566
|
-
background:#fff;border-bottom:1px solid var(--rk-border)}
|
|
567
|
-
.rk-nav-burger{display:grid}
|
|
568
|
-
.rk-sidebar-nav{order:3;flex-basis:100%;flex-direction:column;gap:3px;display:none;padding-bottom:4px}
|
|
569
|
-
.rk-nav-toggle-cb:checked~.rk-sidebar-nav{display:flex}
|
|
570
|
-
.rk-sidebar-item{width:100%;padding:11px 13px}
|
|
571
|
-
/* account block only inside the open dropdown (it's just noise in the collapsed bar) */
|
|
572
|
-
.rk-sidebar-account{display:none;order:4;flex-basis:100%;border-top:1px solid var(--rk-border);
|
|
573
|
-
margin-top:2px;padding-top:8px}
|
|
574
|
-
.rk-nav-toggle-cb:checked~.rk-sidebar-account{display:block}
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
/* buttons */
|
|
578
|
-
.rk-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;
|
|
579
|
-
border-radius:var(--rk-r-full);font-family:var(--rk-font-body);font-size:14px;font-weight:600;
|
|
580
|
-
border:1px solid transparent;cursor:pointer;white-space:nowrap;text-align:center;
|
|
581
|
-
transition:transform var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease),background var(--rk-dur) var(--rk-ease),border-color var(--rk-dur) var(--rk-ease)}
|
|
582
|
-
.rk-btn .rk-arrow{transition:transform var(--rk-dur) var(--rk-ease)}
|
|
583
|
-
.rk-btn:hover .rk-arrow{transform:translateX(3px)}
|
|
584
|
-
.rk-btn-ink{background:var(--rk-ink);color:#fff;box-shadow:var(--rk-shadow-sm)}
|
|
585
|
-
.rk-btn-ink:hover{background:#000;box-shadow:var(--rk-shadow-md);transform:translateY(-1px)}
|
|
586
|
-
.rk-btn-gold{background:var(--rk-gold-500);color:var(--rk-ink);font-weight:700;box-shadow:var(--rk-shadow-sm)}
|
|
587
|
-
.rk-btn-gold:hover{background:var(--rk-gold-700);box-shadow:0 6px 18px -6px rgba(252,185,0,.6);transform:translateY(-1px)}
|
|
588
|
-
/* interruptive Stop — the composer send button while a reply is streaming.
|
|
589
|
-
Fixed charcoal (not token-based) so it reads on both the light /chat page
|
|
590
|
-
and the dark editor dock. */
|
|
591
|
-
.rk-btn.is-stop{background:#2f2f2f;color:#fff;box-shadow:var(--rk-shadow-sm)}
|
|
592
|
-
.rk-btn.is-stop:hover{background:#1a1a1a;box-shadow:var(--rk-shadow-md);transform:none}
|
|
593
|
-
.rk-btn.is-stop svg{width:14px;height:14px}
|
|
594
|
-
.rk-btn-ghost{background:#fff;color:var(--rk-ink);border-color:var(--rk-border);box-shadow:var(--rk-shadow-xs)}
|
|
595
|
-
.rk-btn-ghost:hover{border-color:var(--rk-border-strong);box-shadow:var(--rk-shadow-sm)}
|
|
596
|
-
.rk-btn-danger{background:#fff;color:var(--rk-red);border-color:var(--rk-red-tint)}
|
|
597
|
-
.rk-btn-danger:hover{background:var(--rk-red-tint)}
|
|
598
|
-
.rk-btn-sm{padding:7px 13px;font-size:13px}
|
|
599
|
-
.rk-btn-lg{padding:14px 24px;font-size:15px}
|
|
600
|
-
.rk-btn-block{width:100%}
|
|
601
|
-
/* touch: guarantee a comfortable tap size on the small pill buttons */
|
|
602
|
-
@media(hover:none){.rk-btn-sm{min-height:40px}}
|
|
603
|
-
|
|
604
|
-
/* badges + pills */
|
|
605
|
-
.rk-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:var(--rk-r-full);
|
|
606
|
-
background:#fff;border:1px solid var(--rk-border);box-shadow:var(--rk-shadow-xs);
|
|
607
|
-
font-size:13px;font-weight:500;color:var(--rk-n-700);justify-self:start;width:fit-content}
|
|
608
|
-
.rk-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:var(--rk-r-full);
|
|
609
|
-
font-size:12px;font-weight:600;background:var(--rk-n-100);color:var(--rk-n-600)}
|
|
610
|
-
.rk-pill-gold{background:var(--rk-gold-tint2);color:var(--rk-gold-700)}
|
|
611
|
-
.rk-pill-green{background:var(--rk-green-tint);color:#15803d}
|
|
612
|
-
.rk-pill-sky{background:var(--rk-sky-tint);color:#1d6fb8}
|
|
613
|
-
.rk-pill-violet{background:var(--rk-violet-tint);color:#7c3aed}
|
|
614
|
-
.rk-pill-red{background:var(--rk-red-tint);color:#b91c1c}
|
|
615
|
-
|
|
616
|
-
/* cards */
|
|
617
|
-
.rk-card{background:var(--rk-surface);border:1px solid var(--rk-border);border-radius:var(--rk-r-3xl);
|
|
618
|
-
padding:28px;box-shadow:var(--rk-shadow-card)}
|
|
619
|
-
.rk-card-hover{transition:transform var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease)}
|
|
620
|
-
.rk-card-hover:hover{transform:translateY(-2px);box-shadow:var(--rk-shadow-lg)}
|
|
621
|
-
/* subtle loading spinner injected over any <video> that is still buffering (see document.ts) */
|
|
622
|
-
.rk-vspin{position:absolute;top:50%;left:50%;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;border:2.5px solid rgba(255,255,255,.28);border-top-color:rgba(255,255,255,.92);box-shadow:0 1px 5px rgba(0,0,0,.28);animation:rk-vspin-rot .72s linear infinite;pointer-events:none;opacity:0;transition:opacity .2s var(--rk-ease);z-index:4}
|
|
623
|
-
.rk-vspin.is-on{opacity:1}
|
|
624
|
-
@keyframes rk-vspin-rot{to{transform:rotate(360deg)}}
|
|
625
|
-
@media(prefers-reduced-motion:reduce){.rk-vspin{animation-duration:1.5s}}
|
|
626
|
-
.rk-card-pad-sm{padding:20px}
|
|
627
|
-
.rk-card h2{font-size:var(--rk-text-2xl);letter-spacing:-.02em}
|
|
628
|
-
.rk-card h3{font-size:var(--rk-text-lg);font-weight:700;font-family:var(--rk-font-display)}
|
|
629
|
-
.rk-card-head{display:grid;gap:6px;margin-bottom:20px}
|
|
630
|
-
.rk-eyebrow{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;
|
|
631
|
-
color:var(--rk-gold-700);text-transform:uppercase;letter-spacing:.04em;justify-self:start;width:fit-content}
|
|
632
|
-
|
|
633
|
-
/* icon tiles */
|
|
634
|
-
.rk-tile{width:40px;height:40px;border-radius:var(--rk-r-xl);display:grid;place-items:center;font-size:18px;flex:none}
|
|
635
|
-
.rk-tile-sm{width:32px;height:32px;font-size:15px;border-radius:var(--rk-r-lg)}
|
|
636
|
-
.rk-tile-lg{width:52px;height:52px;font-size:24px}
|
|
637
|
-
.rk-tile-gold{background:var(--rk-gold-tint2);color:var(--rk-gold-700)}
|
|
638
|
-
.rk-tile-sky{background:var(--rk-sky-tint);color:var(--rk-sky)}
|
|
639
|
-
.rk-tile-violet{background:var(--rk-violet-tint);color:var(--rk-violet)}
|
|
640
|
-
.rk-tile-green{background:var(--rk-green-tint);color:#16a34a}
|
|
641
|
-
.rk-tile-amber{background:var(--rk-gold-tint2);color:var(--rk-gold-700)}
|
|
642
|
-
.rk-tile-coral{background:var(--rk-coral-tint);color:var(--rk-coral)}
|
|
643
|
-
.rk-tile-ink{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
644
|
-
|
|
645
|
-
/* forms */
|
|
646
|
-
.rk-field{display:grid;gap:7px}
|
|
647
|
-
.rk-label{font-size:13px;font-weight:600;color:var(--rk-n-700)}
|
|
648
|
-
.rk-hint{font-size:12px;color:var(--rk-text-muted)}
|
|
649
|
-
.rk-input,.rk-textarea,.rk-select{width:100%;font-family:var(--rk-font-body);font-size:14px;
|
|
650
|
-
color:var(--rk-ink);background:#fff;border:1px solid var(--rk-border-strong);border-radius:var(--rk-r-xl);
|
|
651
|
-
padding:11px 14px;transition:border-color var(--rk-dur) var(--rk-ease),box-shadow var(--rk-dur) var(--rk-ease)}
|
|
652
|
-
.rk-input::placeholder,.rk-textarea::placeholder{color:var(--rk-n-400)}
|
|
653
|
-
.rk-textarea{min-height:110px;resize:vertical;line-height:1.5}
|
|
654
|
-
.rk-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' stroke='%23737373' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}
|
|
655
|
-
.rk-input:focus,.rk-textarea:focus,.rk-select:focus{outline:none;border-color:var(--rk-gold-600);box-shadow:var(--rk-ring-gold)}
|
|
656
|
-
.rk-input-group{display:flex;align-items:stretch;gap:8px}
|
|
657
|
-
.rk-input-group .rk-input{flex:1}
|
|
658
|
-
|
|
659
|
-
/* notice / flash */
|
|
660
|
-
.rk-notice{display:flex;align-items:center;gap:10px;padding:13px 16px;border-radius:var(--rk-r-2xl);
|
|
661
|
-
font-size:14px;font-weight:500;border:1px solid transparent}
|
|
662
|
-
.rk-notice-ok{background:var(--rk-green-tint);color:#15803d;border-color:#bbf7d0}
|
|
663
|
-
.rk-notice-err{background:var(--rk-red-tint);color:#b91c1c;border-color:#fecaca}
|
|
664
|
-
|
|
665
|
-
/* two-column shell with sticky side rail (settings, etc.) */
|
|
666
|
-
.rk-shell{display:grid;grid-template-columns:248px minmax(0,1fr);gap:32px;align-items:start}
|
|
667
|
-
@media(max-width:900px){.rk-shell{grid-template-columns:1fr}}
|
|
668
|
-
.rk-side{position:sticky;top:88px;display:grid;gap:4px;background:#fff;border:1px solid var(--rk-border);
|
|
669
|
-
border-radius:var(--rk-r-2xl);padding:12px;box-shadow:var(--rk-shadow-card)}
|
|
670
|
-
@media(max-width:900px){.rk-side{position:static;grid-auto-flow:column;overflow:auto}}
|
|
671
|
-
.rk-side-item{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:var(--rk-r-xl);
|
|
672
|
-
font-size:14px;font-weight:600;color:var(--rk-n-600);cursor:pointer;border:0;background:transparent;
|
|
673
|
-
box-sizing:border-box;text-decoration:none;
|
|
674
|
-
width:100%;text-align:left;white-space:nowrap;transition:background var(--rk-dur) var(--rk-ease),color var(--rk-dur) var(--rk-ease)}
|
|
675
|
-
.rk-side-item:hover{background:var(--rk-n-100);color:var(--rk-ink)}
|
|
676
|
-
.rk-side-item.is-active{background:var(--rk-gold-tint);color:var(--rk-ink)}
|
|
677
|
-
.rk-side-item.is-active .rk-side-ic{background:var(--rk-gold-500)}
|
|
678
|
-
.rk-side-ic{width:26px;height:26px;border-radius:8px;background:var(--rk-n-100);display:grid;place-items:center;font-size:14px;flex:none}
|
|
679
|
-
|
|
680
|
-
/* simple list rows */
|
|
681
|
-
.rk-list{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
|
|
682
|
-
.rk-item{display:flex;align-items:center;gap:14px;padding:14px 16px;background:#fff;min-width:0;
|
|
683
|
-
border:1px solid var(--rk-border);border-radius:var(--rk-r-2xl);box-shadow:var(--rk-shadow-xs)}
|
|
684
|
-
.rk-item-main{flex:1;min-width:0}
|
|
685
|
-
.rk-item-title{font-weight:600;color:var(--rk-ink);font-size:14px}
|
|
686
|
-
.rk-item-sub{font-size:13px;color:var(--rk-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
687
|
-
|
|
688
|
-
/* stat tiles */
|
|
689
|
-
.rk-stat{display:grid;gap:6px}
|
|
690
|
-
.rk-stat-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--rk-text-muted)}
|
|
691
|
-
.rk-stat-num{font-family:var(--rk-font-display);font-size:var(--rk-text-4xl);font-weight:800;letter-spacing:-.02em;color:var(--rk-ink)}
|
|
692
|
-
|
|
693
|
-
/* footer — warm-dark charcoal */
|
|
694
|
-
.rk-footer{background:var(--rk-ink);color:var(--rk-n-400);padding:56px var(--rk-gutter) 40px;margin-top:64px}
|
|
695
|
-
.rk-footer-inner{width:min(var(--rk-container),100%);margin:0 auto;display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between}
|
|
696
|
-
.rk-footer-brand{font-family:var(--rk-font-display);font-weight:800;font-size:22px;color:var(--rk-gold-500);display:inline-flex;align-items:center;gap:8px}
|
|
697
|
-
.rk-footer a{color:var(--rk-n-300)}.rk-footer a:hover{color:#fff}
|
|
698
|
-
.rk-footer-links{display:flex;gap:8px;flex-wrap:wrap}
|
|
699
|
-
.rk-trust-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:var(--rk-r-full);background:#ffffff0d;color:var(--rk-n-400);font-size:13px}
|
|
700
|
-
|
|
701
|
-
/* hero band (sunny sky) — sits flush at the top of the content column */
|
|
702
|
-
.rk-hero-band{position:relative;overflow:hidden;margin-top:0}
|
|
703
|
-
.rk-hero-art{position:absolute;inset:0;z-index:0;background:
|
|
704
|
-
radial-gradient(58% 46% at 78% 20%,rgba(255,241,204,.9),transparent 60%),
|
|
705
|
-
linear-gradient(180deg,#3f9fe0 0%,#6cc0f5 55%,#a9dbfb 100%)}
|
|
706
|
-
.rk-hero{position:relative;z-index:1;text-align:center;padding:clamp(56px,12vh,119px) var(--rk-gutter) clamp(44px,8vh,72px)}
|
|
707
|
-
|
|
708
|
-
:where(.rk-root a,.rk-root button,.rk-root input,.rk-root textarea,.rk-root select):focus-visible{outline:none;box-shadow:var(--rk-ring-gold)}
|
|
709
|
-
.rk-reveal[hidden]{display:none}
|
|
710
|
-
`;
|
|
711
|
-
//# sourceMappingURL=theme.js.map
|