@work-zhanguo/light-file-preview 0.0.14 → 0.0.16
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/README.md +286 -3
- package/dist/standalone/style.css +1 -1
- package/dist/style.css +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/standalone.d.ts +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
<h1 align="center">轻量预览 Light Preview</h1>
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
|
|
4
|
+
Lightweight file preview component for Vue 3, Vue 2, and standalone usage.
|
|
5
|
+
<br />
|
|
6
|
+
用于业务系统附件预览的轻量级文件预览组件,支持 Vue 3、Vue 2 与独立产物嵌入。
|
|
5
7
|
</p>
|
|
6
8
|
|
|
7
9
|
<p align="center">
|
|
@@ -10,18 +12,28 @@
|
|
|
10
12
|
<a href="https://www.npmjs.com/package/@work-zhanguo/light-file-preview" target="_blank" rel="noreferrer">npm</a>
|
|
11
13
|
</p>
|
|
12
14
|
|
|
15
|
+
<p align="center">
|
|
16
|
+
<strong>Language</strong>: expand the section you want to read.
|
|
17
|
+
<br />
|
|
18
|
+
<strong>语言切换</strong>:展开你想查看的语言版本即可。
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<details open>
|
|
22
|
+
<summary><strong>简体中文</strong></summary>
|
|
23
|
+
|
|
13
24
|
## 项目简介
|
|
14
25
|
|
|
15
|
-
- 当前版本:`0.0.
|
|
26
|
+
- 当前版本:`0.0.16`
|
|
16
27
|
- 适用场景:业务系统附件预览、在线查看、弹窗预览、新页面预览
|
|
17
28
|
- 支持 Vue 3、Vue 2 适配入口,以及非 Vue 项目的 standalone 产物
|
|
18
29
|
|
|
19
30
|
最近更新:
|
|
20
31
|
|
|
32
|
+
- `0.0.16`:修复 `style.css` 引入后污染业务全局样式的问题,组件样式已收敛到 `.lfp-*` 作用域
|
|
33
|
+
- `0.0.15`:新增 npm `README.md` 的中英文双版本折叠切换展示,同步调整包描述与文档版本信息
|
|
21
34
|
- `0.0.14`:优化 `xlsx` 空白区域填充,移除未声明的表头/首列固定效果,并为 `PDF`、`DOCX` 增加默认分页与全部展示切换
|
|
22
35
|
- `0.0.13`:修复弹窗失败后同文件无法重试、运行时配置更新不生效的问题,补充 README 示例图与发包说明
|
|
23
36
|
- `0.0.12`:修复 `xlsx` 部分单元格背景色、文字颜色和边框颜色未正确展示的问题,补充 `theme / tint / indexed` 颜色解析
|
|
24
|
-
- `0.0.11`:修复 `xlsx` 图片拉伸和底色覆盖问题,优化单元格内容的对齐、换行和数值展示
|
|
25
37
|
|
|
26
38
|
详细版本记录见 [CHANGELOG.md](./CHANGELOG.md)。
|
|
27
39
|
|
|
@@ -272,3 +284,274 @@ npm run build:site
|
|
|
272
284
|
站点部署目录:
|
|
273
285
|
|
|
274
286
|
- `dist-site/`
|
|
287
|
+
|
|
288
|
+
</details>
|
|
289
|
+
|
|
290
|
+
<details>
|
|
291
|
+
<summary><strong>English</strong></summary>
|
|
292
|
+
|
|
293
|
+
## Overview
|
|
294
|
+
|
|
295
|
+
- Current version: `0.0.16`
|
|
296
|
+
- Use cases: attachment preview in business systems, inline viewing, dialog preview, and standalone preview pages
|
|
297
|
+
- Supports Vue 3, a Vue 2 adapter entry, and standalone assets for non-Vue projects
|
|
298
|
+
|
|
299
|
+
Recent updates:
|
|
300
|
+
|
|
301
|
+
- `0.0.16`: fixed global style leakage caused by importing `style.css`, and scoped published component styles to `.lfp-*` rules only
|
|
302
|
+
- `0.0.15`: rewrote `README.md` for npm with collapsible Chinese and English sections, and synchronized package description and documentation version info
|
|
303
|
+
- `0.0.14`: optimized blank area handling in `xlsx`, removed undeclared frozen header/column behavior, and added paged/all display switching for `PDF` and `DOCX`
|
|
304
|
+
- `0.0.13`: fixed retry behavior after preview failures in dialog mode, refreshed README examples, and clarified packaging details
|
|
305
|
+
- `0.0.12`: fixed missing background, text, and border colors for some `xlsx` cells, and added `theme / tint / indexed` color parsing
|
|
306
|
+
|
|
307
|
+
For the full release history, see [CHANGELOG.md](./CHANGELOG.md).
|
|
308
|
+
|
|
309
|
+
## Preview Screenshots
|
|
310
|
+
|
|
311
|
+
Original screenshots are stored in `public/screenshots/`.
|
|
312
|
+
|
|
313
|
+
The images below use the npm CDN URL. Local repository changes do not affect the already published package immediately; after publishing a new version, npm will show the latest screenshots directly.
|
|
314
|
+
|
|
315
|
+
### DOCX
|
|
316
|
+
|
|
317
|
+

|
|
318
|
+
|
|
319
|
+
### XLSX
|
|
320
|
+
|
|
321
|
+

|
|
322
|
+
|
|
323
|
+
### PDF
|
|
324
|
+
|
|
325
|
+

|
|
326
|
+
|
|
327
|
+
### PPTX fallback
|
|
328
|
+
|
|
329
|
+
`PPT` / `PPTX` files are intentionally not parsed as online previews for now. The component keeps a download entry instead of pretending the format is fully supported.
|
|
330
|
+
|
|
331
|
+

|
|
332
|
+
|
|
333
|
+
## Supported Files
|
|
334
|
+
|
|
335
|
+
Supported for online preview:
|
|
336
|
+
|
|
337
|
+
- `PNG`
|
|
338
|
+
- `JPG`
|
|
339
|
+
- `JPEG`
|
|
340
|
+
- `GIF`
|
|
341
|
+
- `WEBP`
|
|
342
|
+
- `BMP`
|
|
343
|
+
- `SVG`
|
|
344
|
+
- `PDF`
|
|
345
|
+
- `TXT`
|
|
346
|
+
- `JSON`
|
|
347
|
+
- `JS`
|
|
348
|
+
- `TS`
|
|
349
|
+
- `JSX`
|
|
350
|
+
- `TSX`
|
|
351
|
+
- `HTML`
|
|
352
|
+
- `CSS`
|
|
353
|
+
- `MD`
|
|
354
|
+
- `DOCX`
|
|
355
|
+
- `XLS`
|
|
356
|
+
- `XLSX`
|
|
357
|
+
- `CSV`
|
|
358
|
+
- `MP4`
|
|
359
|
+
- `WEBM`
|
|
360
|
+
- `MP3`
|
|
361
|
+
- `WAV`
|
|
362
|
+
|
|
363
|
+
Fallback to download entry:
|
|
364
|
+
|
|
365
|
+
- `DOC`
|
|
366
|
+
- `PPT`
|
|
367
|
+
- `PPTX`
|
|
368
|
+
- any unrecognized format
|
|
369
|
+
|
|
370
|
+
Notes:
|
|
371
|
+
|
|
372
|
+
- Supports remote `URL`, local `File`, and `Blob`
|
|
373
|
+
- Supports both inline embedding and dialog preview
|
|
374
|
+
- Unsupported formats are not force-rendered and always keep a download entry
|
|
375
|
+
|
|
376
|
+
## Dependencies
|
|
377
|
+
|
|
378
|
+
- [pdf.js](https://github.com/mozilla/pdf.js)
|
|
379
|
+
- [docx-preview](https://github.com/VolodymyrBaydalka/docxjs)
|
|
380
|
+
- [SheetJS](https://github.com/SheetJS/sheetjs)
|
|
381
|
+
- [marked](https://github.com/markedjs/marked)
|
|
382
|
+
- [DOMPurify](https://github.com/cure53/DOMPurify)
|
|
383
|
+
|
|
384
|
+
## Installation
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
npm install @work-zhanguo/light-file-preview
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
## Component Props
|
|
391
|
+
|
|
392
|
+
| Prop | Type | Default | Description |
|
|
393
|
+
| --- | --- | --- | --- |
|
|
394
|
+
| `source` | `string \| File \| Blob` | - | Required. Supports remote URLs, local `File`, and `Blob`. |
|
|
395
|
+
| `fileName` | `string` | - | Optional file name. Recommended when a remote URL has no extension. |
|
|
396
|
+
| `mode` | `'inline' \| 'dialog'` | `'inline'` | Inline preview or dialog preview. |
|
|
397
|
+
| `visible` | `boolean` | `true` | Controls dialog visibility and works with `v-model:visible`. |
|
|
398
|
+
| `loadingText` | `string` | `'文件加载中...'` | Loading text displayed during parsing. |
|
|
399
|
+
| `textEncoding` | `string` | `'utf-8'` | Encoding used for text-like files. |
|
|
400
|
+
| `maxTextBytes` | `number` | `2097152` | Max size for text preview, default is 2 MB. |
|
|
401
|
+
| `maxSheetRows` | `number` | `200` | Maximum number of rows rendered in sheet preview. |
|
|
402
|
+
| `maxSheetCols` | `number` | `50` | Maximum number of columns rendered in sheet preview. |
|
|
403
|
+
| `pdfScale` | `number` | `1.35` | Render scale used for PDF pages. |
|
|
404
|
+
| `showToolbar` | `boolean` | `true` | Whether to show the top toolbar. |
|
|
405
|
+
| `dialogTitle` | `string` | `'文件预览'` | Fallback title used in dialog mode. |
|
|
406
|
+
|
|
407
|
+
Events:
|
|
408
|
+
|
|
409
|
+
- `update:visible`: emitted when the dialog closes
|
|
410
|
+
- `error`: emitted with the parsing error object
|
|
411
|
+
|
|
412
|
+
## Vue 3 Integration
|
|
413
|
+
|
|
414
|
+
```ts
|
|
415
|
+
import { createApp } from 'vue';
|
|
416
|
+
import App from './App.vue';
|
|
417
|
+
import LightFilePreview from '@work-zhanguo/light-file-preview';
|
|
418
|
+
import '@work-zhanguo/light-file-preview/style.css';
|
|
419
|
+
|
|
420
|
+
createApp(App).use(LightFilePreview).mount('#app');
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
```vue
|
|
424
|
+
<template>
|
|
425
|
+
<LightFilePreview source="/files/demo.pdf" />
|
|
426
|
+
</template>
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
## Vue 2 Integration
|
|
430
|
+
|
|
431
|
+
```js
|
|
432
|
+
import Vue from 'vue';
|
|
433
|
+
import LightFilePreview from '@work-zhanguo/light-file-preview/vue2';
|
|
434
|
+
import '@work-zhanguo/light-file-preview/style.css';
|
|
435
|
+
|
|
436
|
+
Vue.use(LightFilePreview);
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
```vue
|
|
440
|
+
<template>
|
|
441
|
+
<light-file-preview :source="fileUrl" />
|
|
442
|
+
</template>
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## Dialog Preview
|
|
446
|
+
|
|
447
|
+
```vue
|
|
448
|
+
<template>
|
|
449
|
+
<button @click="show = true">Open dialog preview</button>
|
|
450
|
+
|
|
451
|
+
<LightFilePreview
|
|
452
|
+
v-model:visible="show"
|
|
453
|
+
source="https://501351981.github.io/vue-office/examples/dist/static/test-files/test.docx"
|
|
454
|
+
mode="dialog"
|
|
455
|
+
/>
|
|
456
|
+
</template>
|
|
457
|
+
|
|
458
|
+
<script setup lang="ts">
|
|
459
|
+
import { ref } from 'vue';
|
|
460
|
+
|
|
461
|
+
const show = ref(false);
|
|
462
|
+
</script>
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
## Standalone Preview Page
|
|
466
|
+
|
|
467
|
+
It is recommended to pass `name` as well so extension detection stays stable.
|
|
468
|
+
|
|
469
|
+
```js
|
|
470
|
+
const remoteUrl = 'https://example.com/files/test.docx';
|
|
471
|
+
const previewUrl =
|
|
472
|
+
'/?preview=1&src=' +
|
|
473
|
+
encodeURIComponent(remoteUrl) +
|
|
474
|
+
'&name=' +
|
|
475
|
+
encodeURIComponent('test.docx');
|
|
476
|
+
|
|
477
|
+
window.open(previewUrl, '_blank');
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## Native Project Integration
|
|
481
|
+
|
|
482
|
+
Non-Vue projects can directly use the standalone bundle.
|
|
483
|
+
|
|
484
|
+
If you copy static assets from the npm package, the recommended files are:
|
|
485
|
+
|
|
486
|
+
- `dist/standalone/light-file-preview.iife.js`
|
|
487
|
+
- `dist/standalone/style.css`
|
|
488
|
+
|
|
489
|
+
```html
|
|
490
|
+
<link rel="stylesheet" href="/vendor/light-file-preview/style.css" />
|
|
491
|
+
<div id="preview-root"></div>
|
|
492
|
+
<script src="/vendor/light-file-preview/light-file-preview.iife.js"></script>
|
|
493
|
+
<script>
|
|
494
|
+
window.LightFilePreview.mount('#preview-root', {
|
|
495
|
+
source: '/uploads/report.xlsx'
|
|
496
|
+
});
|
|
497
|
+
</script>
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
## Odoo Integration
|
|
501
|
+
|
|
502
|
+
For Odoo projects, the recommended approach is to mount the standalone bundle through static assets and an Owl component.
|
|
503
|
+
|
|
504
|
+
```js
|
|
505
|
+
/** @odoo-module **/
|
|
506
|
+
|
|
507
|
+
import { Component, onMounted, useRef } from '@odoo/owl';
|
|
508
|
+
|
|
509
|
+
export class FilePreviewBlock extends Component {
|
|
510
|
+
setup() {
|
|
511
|
+
this.rootRef = useRef('root');
|
|
512
|
+
|
|
513
|
+
onMounted(() => {
|
|
514
|
+
window.LightFilePreview.mount(this.rootRef.el, {
|
|
515
|
+
source: this.props.source,
|
|
516
|
+
fileName: this.props.fileName || 'report.pdf'
|
|
517
|
+
});
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
FilePreviewBlock.template = 'your_module.FilePreviewBlock';
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
```xml
|
|
526
|
+
<templates xml:space="preserve">
|
|
527
|
+
<t t-name="your_module.FilePreviewBlock">
|
|
528
|
+
<div class="o_file_preview_root" t-ref="root" />
|
|
529
|
+
</t>
|
|
530
|
+
</templates>
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
## Deployment
|
|
534
|
+
|
|
535
|
+
Build the component library:
|
|
536
|
+
|
|
537
|
+
```bash
|
|
538
|
+
npm install
|
|
539
|
+
npm run build
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
Output directories:
|
|
543
|
+
|
|
544
|
+
- `dist/`
|
|
545
|
+
- `dist/standalone/`
|
|
546
|
+
|
|
547
|
+
If you want to deploy both the demo home page and the docs page as a static site:
|
|
548
|
+
|
|
549
|
+
```bash
|
|
550
|
+
npm run build:site
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
Static site output:
|
|
554
|
+
|
|
555
|
+
- `dist-site/`
|
|
556
|
+
|
|
557
|
+
</details>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--lfp-bg: #eef6ff;--lfp-panel: rgba(255, 255, 255, .84);--lfp-panel-solid: rgba(255, 255, 255, .96);--lfp-border: rgba(57, 84, 130, .16);--lfp-text: #10233d;--lfp-text-subtle: #59708c;--lfp-primary: #118ab2;--lfp-primary-strong: #2667ff;--lfp-accent: #36c9a7;--lfp-primary-soft: rgba(17, 138, 178, .12);--lfp-hero: linear-gradient(135deg, #2667ff 0%, #118ab2 52%, #36c9a7 100%);--lfp-hero-soft: linear-gradient(135deg, rgba(38, 103, 255, .14), rgba(17, 138, 178, .1) 48%, rgba(54, 201, 167, .14));--lfp-shadow: 0 28px 80px rgba(31, 64, 121, .16);--lfp-shadow-soft: 0 18px 44px rgba(31, 64, 121, .1)}*{box-sizing:border-box}body{margin:0;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:radial-gradient(circle at 12% 8%,rgba(38,103,255,.22),transparent 24%),radial-gradient(circle at 88% 14%,rgba(54,201,167,.2),transparent 22%),radial-gradient(circle at 50% 100%,rgba(17,138,178,.14),transparent 28%),linear-gradient(180deg,#f4f9ff,#edf7ff 44%,#f7fffd);color:var(--lfp-text)}button,input,textarea,select{font:inherit}.landing-shell{position:relative;min-height:100vh;padding:24px;overflow:hidden;background:radial-gradient(circle at 18% 0%,rgba(59,130,246,.32),transparent 30%),radial-gradient(circle at 84% 8%,rgba(125,211,252,.26),transparent 26%),linear-gradient(180deg,#07111f,#091423);color:#eef6ff;animation:landingBaseShift 12s ease-in-out infinite}.landing-shell:before,.landing-shell:after{content:"";position:absolute;inset:auto;border-radius:999px;pointer-events:none;filter:blur(34px);opacity:.78}.landing-shell:before{top:-2%;left:-14%;width:620px;height:620px;background:radial-gradient(circle,#3b82f67a,#3b82f62e 34%,#3b82f600 74%);animation:landingGlowFloat 8s ease-in-out infinite}.landing-shell:after{right:-10%;bottom:-4%;width:560px;height:560px;background:radial-gradient(circle,#67e8f96b,#67e8f924 34%,#67e8f900 76%);animation:landingGlowFloatAlt 9s ease-in-out infinite}.landing-topbar{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:16px;max-width:1280px;margin:0 auto}.brand-mark{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border-radius:999px;background:#ffffff08;border:1px solid rgba(125,211,252,.08);color:#eef6ffd1;font-size:13px}.brand-mark--link{text-decoration:none}.brand-mark__dot{width:10px;height:10px;border-radius:999px;background:linear-gradient(135deg,#56ccf2,#2f80ed);box-shadow:0 0 18px #56ccf2bf}.social-links{display:flex;gap:10px}.social-link{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;background:#ffffff08;border:1px solid rgba(125,211,252,.08);color:#dcecffd1;transition:transform .2s ease,border-color .2s ease,background .2s ease}.social-link:hover{transform:translateY(-2px);border-color:#56ccf24d;background:#ffffff14}.social-link--text{width:auto;padding:0 14px;text-decoration:none;font-size:13px;font-weight:600}.social-link svg{width:18px;height:18px;fill:currentColor}.landing-main{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - 90px);max-width:820px;margin:0 auto;text-align:center}.landing-main--wide{max-width:1120px;gap:22px;justify-content:center}.landing-main:before{content:"";position:absolute;top:-2%;left:50%;width:720px;height:280px;transform:translate(-50%);background:radial-gradient(circle,#7dd3fc42,#7dd3fc1f 34%,#7dd3fc00 76%);filter:blur(34px);pointer-events:none;animation:landingGlowPulse 5.5s ease-in-out infinite}.landing-main:after{content:none}.landing-title{margin:0;font-size:clamp(40px,7vw,68px);line-height:1;letter-spacing:-.04em;background:linear-gradient(90deg,#f8fbff,#7cecff 18%,#fff 34%,#4f8cff 52%,#fff,#7cecff,#f8fbff);background-size:260% auto;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 10px rgba(124,236,255,.18));animation:landingTitleShine 5.2s ease-in-out infinite}.landing-subtitle{max-width:420px;margin:12px auto 0;color:#dcecff9e;font-size:15px;line-height:1.6}.hero-panel,.demo-panel{width:min(980px,100%);text-align:center}.hero-panel{padding:38px 28px 8px}.hero-panel__content{max-width:760px;margin:0 auto}.hero-panel__eyebrow,.demo-panel__eyebrow{margin:0 0 10px;color:#7cecffdb;font-size:12px;letter-spacing:.18em;text-transform:uppercase}.demo-panel{padding:24px 28px 28px;border-radius:24px;border:1px solid rgba(94,170,255,.18);background:linear-gradient(180deg,#0c1626e6,#0a121fdb),radial-gradient(circle at top left,rgba(86,204,242,.12),transparent 42%);box-shadow:0 24px 70px #0000003d,inset 0 1px #ffffff0a}.demo-panel__header{display:flex;justify-content:space-between;align-items:center;gap:18px;text-align:left}.demo-panel__title{margin:0;color:#f6fbff;font-size:clamp(26px,4vw,34px);line-height:1.1}.demo-panel__summary{margin:0;max-width:360px;color:#dcecffa3;font-size:13px;line-height:1.6;text-align:right}.demo-format-list{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:22px}.demo-format-tag{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:214px;padding:16px;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#ffffff0a;color:#ecf4ffe6;cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease}.demo-format-tag:hover{transform:translateY(-2px);border-color:#7cecff3d;background:#ffffff0f}.demo-format-tag span{font-size:16px;font-weight:700}.demo-format-tag small{color:#dcecff94;font-size:12px}.demo-format-tag.is-active{border-color:#7cecff4d;background:linear-gradient(135deg,#56ccf233,#2f80ed2e);box-shadow:0 16px 34px #2f80ed2e}.demo-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:20px}.demo-panel .tag-list{margin-top:18px}.upload-panel{width:min(680px,100%);margin-top:24px;padding:30px 28px 24px;border-radius:24px;border:1px solid rgba(94,170,255,.22);background:linear-gradient(180deg,#101c2ef5,#0b1422f0),radial-gradient(circle at top,rgba(86,204,242,.12),transparent 38%);box-shadow:0 24px 70px #00000047,inset 0 1px #ffffff0d;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.upload-panel--secondary{width:min(980px,100%);margin-top:0;text-align:left}.upload-panel.is-dragging{transform:translateY(-1px);border-color:#56ccf26b;box-shadow:0 28px 76px #0000004d,0 0 0 1px #56ccf21f}.upload-panel__input{display:none}.upload-panel__icon{display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:18px;margin:0 auto 16px;background:linear-gradient(135deg,#56ccf22e,#2f80ed2e);box-shadow:0 12px 30px #2f80ed29}.upload-panel__icon svg{width:24px;height:24px;fill:#8adfff}.upload-panel__title{margin:0;font-size:clamp(24px,4vw,32px);line-height:1.1}.upload-panel__desc{margin:10px 0 0;color:#dcecff8f;font-size:14px}.upload-panel__actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:20px}.landing-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:18px}.upload-panel__summary{margin:16px 0 0;color:#dcecffb8;font-size:13px}.tag-list{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;max-width:760px;margin:18px auto 0}.tag-item{padding:8px 12px;border-radius:999px;border:1px solid rgba(125,211,252,.12);background:#ffffff0a;color:#dcecffa3;font-size:12px}.tag-item.is-active{border-color:#56ccf257;background:linear-gradient(135deg,#56ccf22e,#2f80ed2e);color:#f4fbff}.upload-panel__tip{max-width:760px;margin:16px auto 0;color:#dcecff70;font-size:12px;line-height:1.6}.docs-shell{min-height:100vh;padding:24px 20px 64px;background:radial-gradient(circle at 14% 0%,rgba(59,130,246,.18),transparent 24%),linear-gradient(180deg,#08111d,#0b1524);color:#eef6ff}.docs-topbar{margin-bottom:28px}.docs-page{width:min(1240px,100%);margin:0 auto;display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px}.docs-sidebar{position:sticky;top:24px;align-self:start;padding:22px 18px;border-radius:22px;border:1px solid rgba(125,211,252,.1);background:linear-gradient(180deg,#ffffff0d,#ffffff08),#ffffff05;box-shadow:0 18px 44px #00000029}.docs-page__kicker{margin:0;color:#67e8f9;font-size:12px;text-transform:uppercase;letter-spacing:.18em}.docs-page__title{margin:10px 0 0;color:#f8fbff;font-size:clamp(28px,4vw,42px);line-height:1.08}.docs-page__lead{max-width:220px;margin:14px 0 0;color:#c4daf4b3;line-height:1.8;font-size:14px}.docs-page__content{display:flex;flex-direction:column;gap:20px;width:min(980px,100%)}.docs-nav{display:flex;flex-direction:column;gap:8px;margin-top:22px}.docs-nav a{padding:10px 12px;border-radius:12px;color:#c4daf4db;text-decoration:none;transition:background .2s ease,color .2s ease,transform .2s ease}.docs-nav a:hover{background:#ffffff14;color:#fff;transform:translate(2px)}.docs-section{padding:26px;border-radius:22px;border:1px solid rgba(125,211,252,.1);background:linear-gradient(180deg,#ffffff0d,#ffffff08),#ffffff05;box-shadow:0 18px 44px #00000024}.docs-section__eyebrow{margin:0 0 10px;color:#7cecff;font-size:12px;letter-spacing:.16em;text-transform:uppercase}.docs-section h2{margin:0 0 14px;font-size:28px;color:#f8fbff;line-height:1.18}.docs-section p{margin:0;color:#bdd2ecd1;line-height:1.8}.docs-section__lead{max-width:760px;color:#d6e7fcf0!important;font-size:16px}.docs-section p+p{margin-top:10px}.docs-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}.docs-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr))}.docs-card{padding:18px;border-radius:18px;border:1px solid rgba(125,211,252,.1);background:#ffffff09;text-align:left}.docs-card h3{margin:0 0 8px;font-size:16px;color:#f7fbff}.docs-card p{margin:0;color:#b4cae6d1;line-height:1.65;font-size:14px}.docs-tag-group{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.docs-tag{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid rgba(124,236,255,.16);background:linear-gradient(135deg,#7cecff14,#3b82f614);color:#dff8ff;font-size:13px;font-weight:600}.docs-tag--active{border-color:#7cecff4d;background:linear-gradient(135deg,#7cecff2e,#3b82f62e);color:#f5fcff;box-shadow:0 10px 24px #3b82f629}.docs-code{margin-top:16px;overflow:hidden;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#060e1ab8}.docs-code__title{padding:12px 14px;border-bottom:1px solid rgba(125,211,252,.1);color:#aecaebd1;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.docs-code pre{margin:0;padding:16px;overflow:auto;color:#dbeafe;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.7;text-align:left}.docs-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.docs-feature-card{padding:16px;border-radius:16px;border:1px solid rgba(125,211,252,.08);background:#ffffff08}.docs-feature-card--accent{border-color:#67e8f938;background:linear-gradient(135deg,#67e8f914,#3b82f60f),#ffffff08}.docs-feature-card h3{margin:0 0 8px;color:#f8fbff;font-size:15px}.docs-feature-card p{margin:0;font-size:14px;line-height:1.65;color:#b4cae6d6}.docs-open-source{margin-top:20px}.docs-shot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:20px}.docs-shot-card{overflow:hidden;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#ffffff0a}.docs-shot-card img{display:block;width:100%;aspect-ratio:16 / 10;object-fit:cover;background:#07111f99}.docs-shot-card__body{padding:14px 16px 16px}.docs-shot-card__body h3{margin:0 0 8px;color:#f7fbff;font-size:15px}.docs-shot-card__body p{margin:0;color:#b4cae6d1;font-size:13px;line-height:1.65}.docs-table-wrap{margin-top:18px;overflow:auto;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#060e1a9e}.docs-table{width:100%;min-width:820px;border-collapse:collapse;text-align:left}.docs-table th,.docs-table td{padding:14px 16px;border-bottom:1px solid rgba(125,211,252,.08);vertical-align:top}.docs-table th{color:#f7fbff;font-size:13px;font-weight:700;background:#ffffff0a;white-space:nowrap}.docs-table td{color:#bdd2ecd6;font-size:14px;line-height:1.65}.docs-table tbody tr:last-child td{border-bottom:none}.docs-table code{color:#dff8ff}.docs-open-source h3{margin:0 0 12px;color:#f7fbff;font-size:16px}.docs-open-source__links{display:flex;flex-wrap:wrap;gap:10px}.docs-open-source__links a{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:999px;text-decoration:none;color:#7cecff;border:1px solid rgba(124,236,255,.16);background:#ffffff08;transition:transform .2s ease,border-color .2s ease,color .2s ease,background .2s ease}.docs-open-source__links a:hover{transform:translateY(-1px);border-color:#7cecff47;color:#f3fcff;background:#ffffff0d}.docs-list{margin:0;padding-left:18px;color:#c6dbf3db;line-height:1.8}.docs-list li+li{margin-top:6px}.upload-button{border:1px solid transparent;border-radius:999px;min-width:132px;padding:11px 16px;background:linear-gradient(135deg,#56ccf2,#2f80ed);color:#07111f;font-weight:600;cursor:pointer;border-color:transparent;box-shadow:0 12px 28px #2f80ed38;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,opacity .2s ease}.upload-button:hover{transform:translateY(-1px);box-shadow:0 16px 34px #2f80ed47}.upload-button.is-secondary{background:linear-gradient(135deg,#67e8f9,#3b82f6);color:#07111f;border-color:transparent;box-shadow:0 14px 34px #3b82f63d}.upload-button.is-accent{background:linear-gradient(135deg,#7c3aed,#2563eb);color:#f8fbff;border-color:transparent;box-shadow:0 16px 38px #6366f147}.upload-button.is-muted{background:#ffffff0f;color:#eef6ff;border-color:#7dd3fc1f;box-shadow:none}.upload-button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.preview-page{min-height:100vh;padding:0;background:#fff}.preview-page__header{display:flex;align-items:center;justify-content:flex-start;padding:16px 20px;border-bottom:1px solid rgba(57,84,130,.08);background:#fff}.preview-page__body{padding:18px}.docs-section code{padding:2px 6px;border-radius:8px;background:#ffffff0f;color:#7cecff;font-family:SFMono-Regular,JetBrains Mono,monospace}.lfp-button,.lfp-sheet__tab{border:1px solid rgba(81,114,170,.12);border-radius:999px;background:linear-gradient(180deg,#fffffffa,#f0f8fff2);color:var(--lfp-text);cursor:pointer;box-shadow:0 10px 24px #32579714;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease,color .2s ease}.lfp-button{padding:10px 15px}.lfp-icon-button{width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:12px}.lfp-icon-button svg{width:18px;height:18px;fill:currentColor}.lfp-button:hover,.lfp-sheet__tab:hover{transform:translateY(-2px);border-color:#118ab242;box-shadow:0 14px 30px #2756a424}.lfp-button{border-color:transparent;background:var(--lfp-hero);color:#fff}.lfp-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.lfp-wrapper{position:relative}.lfp-wrapper.is-dialog{position:fixed;inset:0;z-index:99999999;display:flex;align-items:center;justify-content:center;padding:24px}.lfp-backdrop{position:absolute;inset:0;backdrop-filter:blur(8px);background:radial-gradient(circle at top,rgba(38,103,255,.16),transparent 30%),#0a162d70}.lfp-panel{position:relative;display:flex;flex-direction:column;min-height:420px;width:100%;background:linear-gradient(180deg,#ffffffe6,#f4fbffe0),var(--lfp-hero-soft);border:1px solid var(--lfp-border);border-radius:24px;overflow:hidden;box-shadow:var(--lfp-shadow);backdrop-filter:blur(16px)}.lfp-wrapper.is-dialog .lfp-panel{max-width:min(1280px,100%);max-height:min(88vh,100%)}.lfp-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--lfp-border);background:linear-gradient(180deg,#ffffffe0,#f1f9ffd1)}.lfp-toolbar__meta,.lfp-toolbar__actions{display:flex;gap:12px;align-items:center}.lfp-title{max-width:min(60vw,720px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-badge{padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,#2667ff1f,#36c9a724);color:var(--lfp-primary-strong);font-size:12px;text-transform:uppercase}.lfp-button.is-ghost{background:linear-gradient(180deg,#ffffffe6,#f2f8ffdb);color:var(--lfp-text);border-color:var(--lfp-border)}.lfp-content{position:relative;flex:1;min-height:360px;padding:16px;overflow:auto}.lfp-loading,.lfp-error,.lfp-empty{display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;min-height:280px;text-align:center}@media(max-width:1024px){.docs-page{grid-template-columns:1fr}.docs-sidebar{position:static}.docs-page__lead{max-width:none}}@media(max-width:720px){.docs-shell,.landing-shell{padding:20px 16px 40px}.landing-topbar{align-items:flex-start;flex-direction:column}.docs-grid,.docs-feature-grid{grid-template-columns:1fr}.docs-section{padding:22px 18px}.docs-section h2{font-size:24px}.lfp-page-toolbar{align-items:stretch}.lfp-page-toolbar__meta,.lfp-page-toolbar__actions{width:100%}}@keyframes landingTitleShine{0%{background-position:0% 50%;filter:drop-shadow(0 0 8px rgba(124,236,255,.14))}50%{background-position:100% 50%;filter:drop-shadow(0 0 16px rgba(124,236,255,.28)) drop-shadow(0 0 28px rgba(79,140,255,.22))}to{background-position:0% 50%;filter:drop-shadow(0 0 8px rgba(124,236,255,.14))}}.lfp-spinner{width:28px;height:28px;border:3px solid rgba(17,138,178,.16);border-top-color:var(--lfp-primary-strong);border-radius:50%;animation:lfp-spin .8s linear infinite}.lfp-document{background:linear-gradient(180deg,#fffffff0,#f5fbffe6),var(--lfp-hero-soft);border-radius:18px;border:1px solid rgba(57,84,130,.08);padding:16px;box-shadow:inset 0 1px #ffffffb8}.lfp-image,.lfp-media{display:block;max-width:100%;margin:0 auto;border-radius:18px;background:#ffffffb8}.lfp-image{object-fit:contain}.lfp-media{width:100%}.lfp-audio{width:100%;margin-top:32px}.lfp-code{margin:0;padding:20px;overflow:auto;background:linear-gradient(180deg,#0a1429fa,#0b1c36f5),linear-gradient(135deg,#2667ff29,#118ab214);color:#dbeafe;border-radius:16px;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.6;white-space:pre-wrap;word-break:break-word}.lfp-markdown{padding:12px;line-height:1.8}.lfp-markdown img{max-width:100%}.lfp-hint{margin:0 0 12px;color:var(--lfp-text-subtle);font-size:13px}.lfp-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding:12px 14px;border:1px solid rgba(57,84,130,.08);border-radius:14px;background:linear-gradient(180deg,#fffffff5,#f4faffeb)}.lfp-page-toolbar__meta,.lfp-page-toolbar__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lfp-page-toolbar__title{color:#1c3f68;font-size:13px;font-weight:700}.lfp-page-toolbar__status,.lfp-page-toolbar__pager{color:var(--lfp-text-subtle);font-size:13px}.lfp-page-toolbar__toggle,.lfp-page-toolbar__nav{min-height:36px;padding:8px 14px}.lfp-page-toolbar__toggle.is-active{background:var(--lfp-hero);color:#fff;border-color:transparent}.lfp-pdf{display:flex;flex-direction:column;gap:18px}.lfp-pdf-page{display:flex;justify-content:center}.lfp-pdf-page canvas{max-width:100%;height:auto;border-radius:12px;box-shadow:0 18px 40px #1f40791f;background:#fff}.lfp-docx{overflow:auto}.lfp-docx .docx-wrapper{display:flex;flex-direction:column;align-items:center;gap:18px;background:transparent;padding:0}.lfp-docx-page{width:100%}.lfp-sheet{display:flex;flex-direction:column;gap:14px}.lfp-sheet__toolbar{display:flex;align-items:stretch;justify-content:space-between;gap:12px;flex-wrap:wrap}.lfp-sheet__tabs{display:flex;flex-wrap:wrap;gap:0;align-items:flex-end;flex:1 1 520px;padding:10px 12px 0;border:1px solid rgba(27,44,66,.08);border-radius:14px 14px 0 0;background:linear-gradient(180deg,#f2f8f5f5,#e8f3edeb);overflow-x:auto}.lfp-sheet__tab{display:inline-flex;align-items:center;gap:10px;padding:9px 16px 10px;margin-right:6px;border:1px solid transparent;border-bottom:none;border-radius:10px 10px 0 0;background:transparent;color:#2a3a4cb8;font-size:13px;font-weight:600;transition:all .18s ease}.lfp-sheet__tab-label{max-width:168px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-sheet__tab-meta{color:#445e75ad;font-size:12px;font-weight:500}.lfp-sheet__tab.is-active{position:relative;background:linear-gradient(180deg,#fff,#f7fff9);color:#0f6f50;border-color:#20946147;box-shadow:0 -1px #ffffffb8,0 10px 22px #12785514}.lfp-sheet__tab.is-active:after{content:"";position:absolute;left:12px;right:12px;bottom:-2px;height:3px;border-radius:999px;background:linear-gradient(90deg,#1ba86f,#44d196)}.lfp-sheet__tab:hover{color:#1e7c5d;background:#ffffff8c}.lfp-sheet__summary{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 1 auto;min-height:54px;padding:10px 14px;border:1px solid rgba(27,44,66,.08);border-radius:14px;background:linear-gradient(180deg,#fffffffa,#f7fbf9f0)}.lfp-sheet__summary-item{display:inline-flex;align-items:center;gap:8px;color:#37475bc2;font-size:13px;white-space:nowrap}.lfp-sheet__summary-item strong{color:#114b38;font-weight:700}.lfp-sheet__formula-bar{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid rgba(27,44,66,.08);border-radius:10px;background:linear-gradient(180deg,#f7f8fafa,#eff2f6f5),#ffffffeb}.lfp-sheet__name-box{display:inline-flex;align-items:center;justify-content:space-between;width:82px;min-width:82px;min-height:28px;padding:0 8px 0 10px;border-radius:6px;border:1px solid rgba(31,44,61,.14);background:linear-gradient(180deg,#fffffffa,#f1f5f9f0);color:#425368;font-weight:700;font-size:12px;box-shadow:inset 0 1px #ffffffd1}.lfp-sheet__name-box-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-sheet__name-box-caret{width:0;height:0;margin-left:8px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid rgba(71,85,105,.72)}.lfp-sheet__formula-input{display:flex;align-items:center;gap:10px;flex:1;min-height:28px;padding:0 10px 0 8px;border-radius:6px;border:1px solid rgba(31,44,61,.14);background:#fffffffa;box-shadow:inset 0 1px #ffffffeb,0 1px #ffffff80}.lfp-sheet__formula-label{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:18px;padding:0 5px;border-radius:999px;border:1px solid rgba(31,44,61,.1);background:#f1f5f9eb;color:#64748b;font-style:italic;font-weight:700;font-size:11px}.lfp-sheet__formula-text{color:#1f2937;font-size:12px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lfp-sheet__table-wrap{overflow:auto;border-radius:0 0 10px 10px;border:1px solid rgba(27,44,66,.08);border-top:none;background:#fff;box-shadow:inset 0 1px #fffc}.lfp-sheet__grid{position:relative;width:max-content;min-width:0}.lfp-sheet__table{width:auto;border-collapse:collapse;font-size:12px;background:#fff;table-layout:fixed}.lfp-sheet__table th,.lfp-sheet__table td{padding:4px 6px;border:1px solid #d9dee5;vertical-align:middle;box-sizing:border-box}.lfp-sheet__table td{background-color:var(--lfp-cell-bg, #fff);position:relative;transition:background-color .16s ease,box-shadow .16s ease,outline-color .16s ease}.lfp-sheet__header-row th,.lfp-sheet__row-header{font-weight:600;color:#5b6472;text-align:center;background:#f3f4f6;user-select:none}.lfp-sheet__corner-header,.lfp-sheet__row-header{min-width:46px;width:46px}.lfp-sheet__corner-header{background:#eef0f3}.lfp-sheet__col-header{min-height:28px;box-shadow:inset 0 -1px #182c4014}.lfp-sheet__row-header{box-shadow:inset -1px 0 #182c4014}.lfp-sheet__col-header.is-related,.lfp-sheet__row-header.is-related{color:#0b7a53;background:linear-gradient(180deg,#e4faeffa,#d4f5e4f5)}.lfp-sheet__cell-text{display:flex;align-items:var(--lfp-cell-align, center);justify-content:var(--lfp-cell-justify, flex-start);width:100%;min-height:100%;line-height:1.35;white-space:var(--lfp-cell-white-space, nowrap);overflow:hidden;text-overflow:ellipsis;word-break:var(--lfp-cell-word-break, normal);box-sizing:border-box}.lfp-sheet__cell-text--rich{display:block;width:100%;min-height:100%}.lfp-sheet__cell-text--rich span{white-space:inherit}.lfp-sheet__table td:hover,.lfp-sheet__table td:focus{outline:none}.lfp-sheet__table td.is-row-active,.lfp-sheet__table td.is-col-active{box-shadow:none}.lfp-sheet__table td.is-selected{z-index:1;box-shadow:none}.lfp-sheet__table td.is-selected:after{content:none}.lfp-sheet__images{position:absolute;inset:0;pointer-events:none;z-index:5}.lfp-sheet__image-frame{position:absolute;overflow:hidden}.lfp-sheet__floating-image{position:absolute;display:block;max-width:none;object-fit:contain;object-position:top left;box-shadow:0 10px 26px #0f172a1f}.lfp-sheet__empty{margin:0;padding:18px;border:1px dashed rgba(31,44,61,.14);border-radius:14px;background:#ffffffb8;color:#36465abd}@media(max-width:900px){.lfp-sheet__summary{width:100%;justify-content:flex-start;flex-wrap:wrap}.lfp-sheet__tabs{flex-basis:100%}.lfp-sheet__formula-bar{align-items:stretch;flex-direction:column}.lfp-sheet__corner-header,.lfp-sheet__row-header{min-width:46px;width:46px}}.lfp-fade-enter-active,.lfp-fade-leave-active{transition:opacity .2s ease}.lfp-fade-enter-from,.lfp-fade-leave-to{opacity:0}@keyframes lfp-spin{to{transform:rotate(360deg)}}@keyframes landingGlowFloat{0%,to{transform:translateZ(0) scale(1);opacity:.48}50%{transform:translate3d(110px,58px,0) scale(1.28);opacity:1}}@keyframes landingGlowFloatAlt{0%,to{transform:translateZ(0) scale(1);opacity:.38}50%{transform:translate3d(-108px,-64px,0) scale(1.32);opacity:.96}}@keyframes landingGlowPulse{0%,to{opacity:.38;transform:translate(-50%) scale(.94)}50%{opacity:.88;transform:translate(-50%) scale(1.14)}}@keyframes landingBeamSweep{0%{transform:translate3d(-34%,0,0) rotate(12deg);opacity:0}12%{opacity:.24}50%{transform:translate3d(102%,0,0) rotate(12deg);opacity:.78}88%{opacity:.18}to{transform:translate3d(136%,0,0) rotate(12deg);opacity:0}}@keyframes landingBaseShift{0%,to{background-position:0% 0%,100% 0%,0% 0%}50%{background-position:6% 2%,94% 6%,0% 0%}}@media(max-width:768px){.landing-shell,.preview-page{padding:16px 12px 24px}.preview-page{padding:0}.landing-topbar{align-items:flex-start}.landing-main{min-height:auto;padding-top:52px}.landing-main--wide{gap:16px}.landing-title{font-size:48px}.landing-subtitle{font-size:15px}.landing-shell:before{width:420px;height:420px;left:-20%}.landing-shell:after{width:340px;height:340px;right:-18%}.landing-main:before{width:420px;height:180px}.landing-main:after{width:88%;left:-46%}.upload-panel{padding:24px 16px 20px}.hero-panel,.demo-panel,.upload-panel--secondary{width:100%}.hero-panel{padding:18px 4px 4px}.demo-panel{padding:20px 16px}.demo-panel__header{flex-direction:column;align-items:center;text-align:center}.demo-panel__summary{max-width:none;text-align:center}.demo-format-list{justify-content:center}.demo-format-tag{width:min(100%,320px)}.landing-actions{gap:10px}.docs-page{grid-template-columns:1fr;padding:20px 12px 40px}.docs-sidebar{position:static}.docs-grid,.docs-feature-grid,.docs-shot-grid{grid-template-columns:1fr}.lfp-wrapper.is-dialog,.lfp-content{padding:12px}}
|
|
1
|
+
.lfp-wrapper{--lfp-bg: #eef6ff;--lfp-panel: rgba(255, 255, 255, .84);--lfp-panel-solid: rgba(255, 255, 255, .96);--lfp-border: rgba(57, 84, 130, .16);--lfp-text: #10233d;--lfp-text-subtle: #59708c;--lfp-primary: #118ab2;--lfp-primary-strong: #2667ff;--lfp-accent: #36c9a7;--lfp-primary-soft: rgba(17, 138, 178, .12);--lfp-hero: linear-gradient(135deg, #2667ff 0%, #118ab2 52%, #36c9a7 100%);--lfp-hero-soft: linear-gradient(135deg, rgba(38, 103, 255, .14), rgba(17, 138, 178, .1) 48%, rgba(54, 201, 167, .14));--lfp-shadow: 0 28px 80px rgba(31, 64, 121, .16);--lfp-shadow-soft: 0 18px 44px rgba(31, 64, 121, .1);position:relative;color:var(--lfp-text)}.lfp-wrapper,.lfp-wrapper *,.lfp-wrapper *:before,.lfp-wrapper *:after{box-sizing:border-box}.lfp-wrapper button,.lfp-wrapper input,.lfp-wrapper textarea,.lfp-wrapper select{font:inherit}.lfp-button,.lfp-sheet__tab{border:1px solid rgba(81,114,170,.12);border-radius:999px;background:linear-gradient(180deg,#fffffffa,#f0f8fff2);color:var(--lfp-text);cursor:pointer;box-shadow:0 10px 24px #32579714;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease,color .2s ease}.lfp-button{padding:10px 15px}.lfp-icon-button{width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:12px}.lfp-icon-button svg{width:18px;height:18px;fill:currentColor}.lfp-button:hover,.lfp-sheet__tab:hover{transform:translateY(-2px);border-color:#118ab242;box-shadow:0 14px 30px #2756a424}.lfp-button{border-color:transparent;background:var(--lfp-hero);color:#fff}.lfp-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.lfp-wrapper.is-dialog{position:fixed;inset:0;z-index:99999999;display:flex;align-items:center;justify-content:center;padding:24px}.lfp-backdrop{position:absolute;inset:0;backdrop-filter:blur(8px);background:radial-gradient(circle at top,rgba(38,103,255,.16),transparent 30%),#0a162d70}.lfp-panel{position:relative;display:flex;flex-direction:column;min-height:420px;width:100%;background:linear-gradient(180deg,#ffffffe6,#f4fbffe0),var(--lfp-hero-soft);border:1px solid var(--lfp-border);border-radius:24px;overflow:hidden;box-shadow:var(--lfp-shadow);backdrop-filter:blur(16px)}.lfp-wrapper.is-dialog .lfp-panel{max-width:min(1280px,100%);max-height:min(88vh,100%)}.lfp-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--lfp-border);background:linear-gradient(180deg,#ffffffe0,#f1f9ffd1)}.lfp-toolbar__meta,.lfp-toolbar__actions{display:flex;gap:12px;align-items:center}.lfp-title{max-width:min(60vw,720px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-badge{padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,#2667ff1f,#36c9a724);color:var(--lfp-primary-strong);font-size:12px;text-transform:uppercase}.lfp-button.is-ghost{background:linear-gradient(180deg,#ffffffe6,#f2f8ffdb);color:var(--lfp-text);border-color:var(--lfp-border)}.lfp-content{position:relative;flex:1;min-height:360px;padding:16px;overflow:auto}.lfp-loading,.lfp-error,.lfp-empty{display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;min-height:280px;text-align:center}.lfp-spinner{width:28px;height:28px;border:3px solid rgba(17,138,178,.16);border-top-color:var(--lfp-primary-strong);border-radius:50%;animation:lfp-spin .8s linear infinite}.lfp-document{background:linear-gradient(180deg,#fffffff0,#f5fbffe6),var(--lfp-hero-soft);border-radius:18px;border:1px solid rgba(57,84,130,.08);padding:16px;box-shadow:inset 0 1px #ffffffb8}.lfp-image,.lfp-media{display:block;max-width:100%;margin:0 auto;border-radius:18px;background:#ffffffb8}.lfp-image{object-fit:contain}.lfp-media{width:100%}.lfp-audio{width:100%;margin-top:32px}.lfp-code{margin:0;padding:20px;overflow:auto;background:linear-gradient(180deg,#0a1429fa,#0b1c36f5),linear-gradient(135deg,#2667ff29,#118ab214);color:#dbeafe;border-radius:16px;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.6;white-space:pre-wrap;word-break:break-word}.lfp-markdown{padding:12px;line-height:1.8}.lfp-markdown img{max-width:100%}.lfp-hint{margin:0 0 12px;color:var(--lfp-text-subtle);font-size:13px}.lfp-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding:12px 14px;border:1px solid rgba(57,84,130,.08);border-radius:14px;background:linear-gradient(180deg,#fffffff5,#f4faffeb)}.lfp-page-toolbar__meta,.lfp-page-toolbar__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lfp-page-toolbar__title{color:#1c3f68;font-size:13px;font-weight:700}.lfp-page-toolbar__status,.lfp-page-toolbar__pager{color:var(--lfp-text-subtle);font-size:13px}.lfp-page-toolbar__toggle,.lfp-page-toolbar__nav{min-height:36px;padding:8px 14px}.lfp-page-toolbar__toggle.is-active{background:var(--lfp-hero);color:#fff;border-color:transparent}.lfp-pdf{display:flex;flex-direction:column;gap:18px}.lfp-pdf-page{display:flex;justify-content:center}.lfp-pdf-page canvas{max-width:100%;height:auto;border-radius:12px;box-shadow:0 18px 40px #1f40791f;background:#fff}.lfp-docx{overflow:auto}.lfp-docx .docx-wrapper{display:flex;flex-direction:column;align-items:center;gap:18px;background:transparent;padding:0}.lfp-docx-page{width:100%}.lfp-sheet{display:flex;flex-direction:column;gap:14px}.lfp-sheet__toolbar{display:flex;align-items:stretch;justify-content:space-between;gap:12px;flex-wrap:wrap}.lfp-sheet__tabs{display:flex;flex-wrap:wrap;gap:0;align-items:flex-end;flex:1 1 520px;padding:10px 12px 0;border:1px solid rgba(27,44,66,.08);border-radius:14px 14px 0 0;background:linear-gradient(180deg,#f2f8f5f5,#e8f3edeb);overflow-x:auto}.lfp-sheet__tab{display:inline-flex;align-items:center;gap:10px;padding:9px 16px 10px;margin-right:6px;border:1px solid transparent;border-bottom:none;border-radius:10px 10px 0 0;background:transparent;color:#2a3a4cb8;font-size:13px;font-weight:600;transition:all .18s ease}.lfp-sheet__tab-label{max-width:168px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-sheet__tab-meta{color:#445e75ad;font-size:12px;font-weight:500}.lfp-sheet__tab.is-active{position:relative;background:linear-gradient(180deg,#fff,#f7fff9);color:#0f6f50;border-color:#20946147;box-shadow:0 -1px #ffffffb8,0 10px 22px #12785514}.lfp-sheet__tab.is-active:after{content:"";position:absolute;left:12px;right:12px;bottom:-2px;height:3px;border-radius:999px;background:linear-gradient(90deg,#1ba86f,#44d196)}.lfp-sheet__tab:hover{color:#1e7c5d;background:#ffffff8c}.lfp-sheet__summary{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 1 auto;min-height:54px;padding:10px 14px;border:1px solid rgba(27,44,66,.08);border-radius:14px;background:linear-gradient(180deg,#fffffffa,#f7fbf9f0)}.lfp-sheet__summary-item{display:inline-flex;align-items:center;gap:8px;color:#37475bc2;font-size:13px;white-space:nowrap}.lfp-sheet__summary-item strong{color:#114b38;font-weight:700}.lfp-sheet__formula-bar{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid rgba(27,44,66,.08);border-radius:10px;background:linear-gradient(180deg,#f7f8fafa,#eff2f6f5),#ffffffeb}.lfp-sheet__name-box{display:inline-flex;align-items:center;justify-content:space-between;width:82px;min-width:82px;min-height:28px;padding:0 8px 0 10px;border-radius:6px;border:1px solid rgba(31,44,61,.14);background:linear-gradient(180deg,#fffffffa,#f1f5f9f0);color:#425368;font-weight:700;font-size:12px;box-shadow:inset 0 1px #ffffffd1}.lfp-sheet__name-box-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-sheet__name-box-caret{width:0;height:0;margin-left:8px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid rgba(71,85,105,.72)}.lfp-sheet__formula-input{display:flex;align-items:center;gap:10px;flex:1;min-height:28px;padding:0 10px 0 8px;border-radius:6px;border:1px solid rgba(31,44,61,.14);background:#fffffffa;box-shadow:inset 0 1px #ffffffeb,0 1px #ffffff80}.lfp-sheet__formula-label{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:18px;padding:0 5px;border-radius:999px;border:1px solid rgba(31,44,61,.1);background:#f1f5f9eb;color:#64748b;font-style:italic;font-weight:700;font-size:11px}.lfp-sheet__formula-text{color:#1f2937;font-size:12px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lfp-sheet__table-wrap{overflow:auto;border-radius:0 0 10px 10px;border:1px solid rgba(27,44,66,.08);border-top:none;background:#fff;box-shadow:inset 0 1px #fffc}.lfp-sheet__grid{position:relative;width:max-content;min-width:0}.lfp-sheet__table{width:auto;border-collapse:collapse;font-size:12px;background:#fff;table-layout:fixed}.lfp-sheet__table th,.lfp-sheet__table td{padding:4px 6px;border:1px solid #d9dee5;vertical-align:middle;box-sizing:border-box}.lfp-sheet__table td{background-color:var(--lfp-cell-bg, #fff);position:relative;transition:background-color .16s ease,box-shadow .16s ease,outline-color .16s ease}.lfp-sheet__header-row th,.lfp-sheet__row-header{font-weight:600;color:#5b6472;text-align:center;background:#f3f4f6;user-select:none}.lfp-sheet__corner-header,.lfp-sheet__row-header{min-width:46px;width:46px}.lfp-sheet__corner-header{background:#eef0f3}.lfp-sheet__col-header{min-height:28px;box-shadow:inset 0 -1px #182c4014}.lfp-sheet__row-header{box-shadow:inset -1px 0 #182c4014}.lfp-sheet__col-header.is-related,.lfp-sheet__row-header.is-related{color:#0b7a53;background:linear-gradient(180deg,#e4faeffa,#d4f5e4f5)}.lfp-sheet__cell-text{display:flex;align-items:var(--lfp-cell-align, center);justify-content:var(--lfp-cell-justify, flex-start);width:100%;min-height:100%;line-height:1.35;white-space:var(--lfp-cell-white-space, nowrap);overflow:hidden;text-overflow:ellipsis;word-break:var(--lfp-cell-word-break, normal);box-sizing:border-box}.lfp-sheet__cell-text--rich{display:block;width:100%;min-height:100%}.lfp-sheet__cell-text--rich span{white-space:inherit}.lfp-sheet__table td:hover,.lfp-sheet__table td:focus{outline:none}.lfp-sheet__table td.is-row-active,.lfp-sheet__table td.is-col-active{box-shadow:none}.lfp-sheet__table td.is-selected{z-index:1;box-shadow:none}.lfp-sheet__table td.is-selected:after{content:none}.lfp-sheet__images{position:absolute;inset:0;pointer-events:none;z-index:5}.lfp-sheet__image-frame{position:absolute;overflow:hidden}.lfp-sheet__floating-image{position:absolute;display:block;max-width:none;object-fit:contain;object-position:top left;box-shadow:0 10px 26px #0f172a1f}.lfp-sheet__empty{margin:0;padding:18px;border:1px dashed rgba(31,44,61,.14);border-radius:14px;background:#ffffffb8;color:#36465abd}@media(max-width:900px){.lfp-sheet__summary{width:100%;justify-content:flex-start;flex-wrap:wrap}.lfp-sheet__tabs{flex-basis:100%}.lfp-sheet__formula-bar{align-items:stretch;flex-direction:column}.lfp-sheet__corner-header,.lfp-sheet__row-header{min-width:46px;width:46px}}@media(max-width:720px){.lfp-page-toolbar{align-items:stretch}.lfp-page-toolbar__meta,.lfp-page-toolbar__actions{width:100%}}.lfp-fade-enter-active,.lfp-fade-leave-active{transition:opacity .2s ease}.lfp-fade-enter-from,.lfp-fade-leave-to{opacity:0}@keyframes lfp-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.lfp-wrapper.is-dialog,.lfp-content{padding:12px}}
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--lfp-bg: #eef6ff;--lfp-panel: rgba(255, 255, 255, .84);--lfp-panel-solid: rgba(255, 255, 255, .96);--lfp-border: rgba(57, 84, 130, .16);--lfp-text: #10233d;--lfp-text-subtle: #59708c;--lfp-primary: #118ab2;--lfp-primary-strong: #2667ff;--lfp-accent: #36c9a7;--lfp-primary-soft: rgba(17, 138, 178, .12);--lfp-hero: linear-gradient(135deg, #2667ff 0%, #118ab2 52%, #36c9a7 100%);--lfp-hero-soft: linear-gradient(135deg, rgba(38, 103, 255, .14), rgba(17, 138, 178, .1) 48%, rgba(54, 201, 167, .14));--lfp-shadow: 0 28px 80px rgba(31, 64, 121, .16);--lfp-shadow-soft: 0 18px 44px rgba(31, 64, 121, .1)}*{box-sizing:border-box}body{margin:0;font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:radial-gradient(circle at 12% 8%,rgba(38,103,255,.22),transparent 24%),radial-gradient(circle at 88% 14%,rgba(54,201,167,.2),transparent 22%),radial-gradient(circle at 50% 100%,rgba(17,138,178,.14),transparent 28%),linear-gradient(180deg,#f4f9ff,#edf7ff 44%,#f7fffd);color:var(--lfp-text)}button,input,textarea,select{font:inherit}.landing-shell{position:relative;min-height:100vh;padding:24px;overflow:hidden;background:radial-gradient(circle at 18% 0%,rgba(59,130,246,.32),transparent 30%),radial-gradient(circle at 84% 8%,rgba(125,211,252,.26),transparent 26%),linear-gradient(180deg,#07111f,#091423);color:#eef6ff;animation:landingBaseShift 12s ease-in-out infinite}.landing-shell:before,.landing-shell:after{content:"";position:absolute;inset:auto;border-radius:999px;pointer-events:none;filter:blur(34px);opacity:.78}.landing-shell:before{top:-2%;left:-14%;width:620px;height:620px;background:radial-gradient(circle,#3b82f67a,#3b82f62e 34%,#3b82f600 74%);animation:landingGlowFloat 8s ease-in-out infinite}.landing-shell:after{right:-10%;bottom:-4%;width:560px;height:560px;background:radial-gradient(circle,#67e8f96b,#67e8f924 34%,#67e8f900 76%);animation:landingGlowFloatAlt 9s ease-in-out infinite}.landing-topbar{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:16px;max-width:1280px;margin:0 auto}.brand-mark{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border-radius:999px;background:#ffffff08;border:1px solid rgba(125,211,252,.08);color:#eef6ffd1;font-size:13px}.brand-mark--link{text-decoration:none}.brand-mark__dot{width:10px;height:10px;border-radius:999px;background:linear-gradient(135deg,#56ccf2,#2f80ed);box-shadow:0 0 18px #56ccf2bf}.social-links{display:flex;gap:10px}.social-link{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;background:#ffffff08;border:1px solid rgba(125,211,252,.08);color:#dcecffd1;transition:transform .2s ease,border-color .2s ease,background .2s ease}.social-link:hover{transform:translateY(-2px);border-color:#56ccf24d;background:#ffffff14}.social-link--text{width:auto;padding:0 14px;text-decoration:none;font-size:13px;font-weight:600}.social-link svg{width:18px;height:18px;fill:currentColor}.landing-main{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - 90px);max-width:820px;margin:0 auto;text-align:center}.landing-main--wide{max-width:1120px;gap:22px;justify-content:center}.landing-main:before{content:"";position:absolute;top:-2%;left:50%;width:720px;height:280px;transform:translate(-50%);background:radial-gradient(circle,#7dd3fc42,#7dd3fc1f 34%,#7dd3fc00 76%);filter:blur(34px);pointer-events:none;animation:landingGlowPulse 5.5s ease-in-out infinite}.landing-main:after{content:none}.landing-title{margin:0;font-size:clamp(40px,7vw,68px);line-height:1;letter-spacing:-.04em;background:linear-gradient(90deg,#f8fbff,#7cecff 18%,#fff 34%,#4f8cff 52%,#fff,#7cecff,#f8fbff);background-size:260% auto;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 10px rgba(124,236,255,.18));animation:landingTitleShine 5.2s ease-in-out infinite}.landing-subtitle{max-width:420px;margin:12px auto 0;color:#dcecff9e;font-size:15px;line-height:1.6}.hero-panel,.demo-panel{width:min(980px,100%);text-align:center}.hero-panel{padding:38px 28px 8px}.hero-panel__content{max-width:760px;margin:0 auto}.hero-panel__eyebrow,.demo-panel__eyebrow{margin:0 0 10px;color:#7cecffdb;font-size:12px;letter-spacing:.18em;text-transform:uppercase}.demo-panel{padding:24px 28px 28px;border-radius:24px;border:1px solid rgba(94,170,255,.18);background:linear-gradient(180deg,#0c1626e6,#0a121fdb),radial-gradient(circle at top left,rgba(86,204,242,.12),transparent 42%);box-shadow:0 24px 70px #0000003d,inset 0 1px #ffffff0a}.demo-panel__header{display:flex;justify-content:space-between;align-items:center;gap:18px;text-align:left}.demo-panel__title{margin:0;color:#f6fbff;font-size:clamp(26px,4vw,34px);line-height:1.1}.demo-panel__summary{margin:0;max-width:360px;color:#dcecffa3;font-size:13px;line-height:1.6;text-align:right}.demo-format-list{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:22px}.demo-format-tag{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:214px;padding:16px;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#ffffff0a;color:#ecf4ffe6;cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease}.demo-format-tag:hover{transform:translateY(-2px);border-color:#7cecff3d;background:#ffffff0f}.demo-format-tag span{font-size:16px;font-weight:700}.demo-format-tag small{color:#dcecff94;font-size:12px}.demo-format-tag.is-active{border-color:#7cecff4d;background:linear-gradient(135deg,#56ccf233,#2f80ed2e);box-shadow:0 16px 34px #2f80ed2e}.demo-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:20px}.demo-panel .tag-list{margin-top:18px}.upload-panel{width:min(680px,100%);margin-top:24px;padding:30px 28px 24px;border-radius:24px;border:1px solid rgba(94,170,255,.22);background:linear-gradient(180deg,#101c2ef5,#0b1422f0),radial-gradient(circle at top,rgba(86,204,242,.12),transparent 38%);box-shadow:0 24px 70px #00000047,inset 0 1px #ffffff0d;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.upload-panel--secondary{width:min(980px,100%);margin-top:0;text-align:left}.upload-panel.is-dragging{transform:translateY(-1px);border-color:#56ccf26b;box-shadow:0 28px 76px #0000004d,0 0 0 1px #56ccf21f}.upload-panel__input{display:none}.upload-panel__icon{display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:18px;margin:0 auto 16px;background:linear-gradient(135deg,#56ccf22e,#2f80ed2e);box-shadow:0 12px 30px #2f80ed29}.upload-panel__icon svg{width:24px;height:24px;fill:#8adfff}.upload-panel__title{margin:0;font-size:clamp(24px,4vw,32px);line-height:1.1}.upload-panel__desc{margin:10px 0 0;color:#dcecff8f;font-size:14px}.upload-panel__actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:20px}.landing-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:18px}.upload-panel__summary{margin:16px 0 0;color:#dcecffb8;font-size:13px}.tag-list{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;max-width:760px;margin:18px auto 0}.tag-item{padding:8px 12px;border-radius:999px;border:1px solid rgba(125,211,252,.12);background:#ffffff0a;color:#dcecffa3;font-size:12px}.tag-item.is-active{border-color:#56ccf257;background:linear-gradient(135deg,#56ccf22e,#2f80ed2e);color:#f4fbff}.upload-panel__tip{max-width:760px;margin:16px auto 0;color:#dcecff70;font-size:12px;line-height:1.6}.docs-shell{min-height:100vh;padding:24px 20px 64px;background:radial-gradient(circle at 14% 0%,rgba(59,130,246,.18),transparent 24%),linear-gradient(180deg,#08111d,#0b1524);color:#eef6ff}.docs-topbar{margin-bottom:28px}.docs-page{width:min(1240px,100%);margin:0 auto;display:grid;grid-template-columns:260px minmax(0,1fr);gap:28px}.docs-sidebar{position:sticky;top:24px;align-self:start;padding:22px 18px;border-radius:22px;border:1px solid rgba(125,211,252,.1);background:linear-gradient(180deg,#ffffff0d,#ffffff08),#ffffff05;box-shadow:0 18px 44px #00000029}.docs-page__kicker{margin:0;color:#67e8f9;font-size:12px;text-transform:uppercase;letter-spacing:.18em}.docs-page__title{margin:10px 0 0;color:#f8fbff;font-size:clamp(28px,4vw,42px);line-height:1.08}.docs-page__lead{max-width:220px;margin:14px 0 0;color:#c4daf4b3;line-height:1.8;font-size:14px}.docs-page__content{display:flex;flex-direction:column;gap:20px;width:min(980px,100%)}.docs-nav{display:flex;flex-direction:column;gap:8px;margin-top:22px}.docs-nav a{padding:10px 12px;border-radius:12px;color:#c4daf4db;text-decoration:none;transition:background .2s ease,color .2s ease,transform .2s ease}.docs-nav a:hover{background:#ffffff14;color:#fff;transform:translate(2px)}.docs-section{padding:26px;border-radius:22px;border:1px solid rgba(125,211,252,.1);background:linear-gradient(180deg,#ffffff0d,#ffffff08),#ffffff05;box-shadow:0 18px 44px #00000024}.docs-section__eyebrow{margin:0 0 10px;color:#7cecff;font-size:12px;letter-spacing:.16em;text-transform:uppercase}.docs-section h2{margin:0 0 14px;font-size:28px;color:#f8fbff;line-height:1.18}.docs-section p{margin:0;color:#bdd2ecd1;line-height:1.8}.docs-section__lead{max-width:760px;color:#d6e7fcf0!important;font-size:16px}.docs-section p+p{margin-top:10px}.docs-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}.docs-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr))}.docs-card{padding:18px;border-radius:18px;border:1px solid rgba(125,211,252,.1);background:#ffffff09;text-align:left}.docs-card h3{margin:0 0 8px;font-size:16px;color:#f7fbff}.docs-card p{margin:0;color:#b4cae6d1;line-height:1.65;font-size:14px}.docs-tag-group{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.docs-tag{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid rgba(124,236,255,.16);background:linear-gradient(135deg,#7cecff14,#3b82f614);color:#dff8ff;font-size:13px;font-weight:600}.docs-tag--active{border-color:#7cecff4d;background:linear-gradient(135deg,#7cecff2e,#3b82f62e);color:#f5fcff;box-shadow:0 10px 24px #3b82f629}.docs-code{margin-top:16px;overflow:hidden;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#060e1ab8}.docs-code__title{padding:12px 14px;border-bottom:1px solid rgba(125,211,252,.1);color:#aecaebd1;font-size:12px;letter-spacing:.08em;text-transform:uppercase}.docs-code pre{margin:0;padding:16px;overflow:auto;color:#dbeafe;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.7;text-align:left}.docs-feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.docs-feature-card{padding:16px;border-radius:16px;border:1px solid rgba(125,211,252,.08);background:#ffffff08}.docs-feature-card--accent{border-color:#67e8f938;background:linear-gradient(135deg,#67e8f914,#3b82f60f),#ffffff08}.docs-feature-card h3{margin:0 0 8px;color:#f8fbff;font-size:15px}.docs-feature-card p{margin:0;font-size:14px;line-height:1.65;color:#b4cae6d6}.docs-open-source{margin-top:20px}.docs-shot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:20px}.docs-shot-card{overflow:hidden;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#ffffff0a}.docs-shot-card img{display:block;width:100%;aspect-ratio:16 / 10;object-fit:cover;background:#07111f99}.docs-shot-card__body{padding:14px 16px 16px}.docs-shot-card__body h3{margin:0 0 8px;color:#f7fbff;font-size:15px}.docs-shot-card__body p{margin:0;color:#b4cae6d1;font-size:13px;line-height:1.65}.docs-table-wrap{margin-top:18px;overflow:auto;border-radius:18px;border:1px solid rgba(125,211,252,.12);background:#060e1a9e}.docs-table{width:100%;min-width:820px;border-collapse:collapse;text-align:left}.docs-table th,.docs-table td{padding:14px 16px;border-bottom:1px solid rgba(125,211,252,.08);vertical-align:top}.docs-table th{color:#f7fbff;font-size:13px;font-weight:700;background:#ffffff0a;white-space:nowrap}.docs-table td{color:#bdd2ecd6;font-size:14px;line-height:1.65}.docs-table tbody tr:last-child td{border-bottom:none}.docs-table code{color:#dff8ff}.docs-open-source h3{margin:0 0 12px;color:#f7fbff;font-size:16px}.docs-open-source__links{display:flex;flex-wrap:wrap;gap:10px}.docs-open-source__links a{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:999px;text-decoration:none;color:#7cecff;border:1px solid rgba(124,236,255,.16);background:#ffffff08;transition:transform .2s ease,border-color .2s ease,color .2s ease,background .2s ease}.docs-open-source__links a:hover{transform:translateY(-1px);border-color:#7cecff47;color:#f3fcff;background:#ffffff0d}.docs-list{margin:0;padding-left:18px;color:#c6dbf3db;line-height:1.8}.docs-list li+li{margin-top:6px}.upload-button{border:1px solid transparent;border-radius:999px;min-width:132px;padding:11px 16px;background:linear-gradient(135deg,#56ccf2,#2f80ed);color:#07111f;font-weight:600;cursor:pointer;border-color:transparent;box-shadow:0 12px 28px #2f80ed38;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,opacity .2s ease}.upload-button:hover{transform:translateY(-1px);box-shadow:0 16px 34px #2f80ed47}.upload-button.is-secondary{background:linear-gradient(135deg,#67e8f9,#3b82f6);color:#07111f;border-color:transparent;box-shadow:0 14px 34px #3b82f63d}.upload-button.is-accent{background:linear-gradient(135deg,#7c3aed,#2563eb);color:#f8fbff;border-color:transparent;box-shadow:0 16px 38px #6366f147}.upload-button.is-muted{background:#ffffff0f;color:#eef6ff;border-color:#7dd3fc1f;box-shadow:none}.upload-button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.preview-page{min-height:100vh;padding:0;background:#fff}.preview-page__header{display:flex;align-items:center;justify-content:flex-start;padding:16px 20px;border-bottom:1px solid rgba(57,84,130,.08);background:#fff}.preview-page__body{padding:18px}.docs-section code{padding:2px 6px;border-radius:8px;background:#ffffff0f;color:#7cecff;font-family:SFMono-Regular,JetBrains Mono,monospace}.lfp-button,.lfp-sheet__tab{border:1px solid rgba(81,114,170,.12);border-radius:999px;background:linear-gradient(180deg,#fffffffa,#f0f8fff2);color:var(--lfp-text);cursor:pointer;box-shadow:0 10px 24px #32579714;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease,color .2s ease}.lfp-button{padding:10px 15px}.lfp-icon-button{width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:12px}.lfp-icon-button svg{width:18px;height:18px;fill:currentColor}.lfp-button:hover,.lfp-sheet__tab:hover{transform:translateY(-2px);border-color:#118ab242;box-shadow:0 14px 30px #2756a424}.lfp-button{border-color:transparent;background:var(--lfp-hero);color:#fff}.lfp-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.lfp-wrapper{position:relative}.lfp-wrapper.is-dialog{position:fixed;inset:0;z-index:99999999;display:flex;align-items:center;justify-content:center;padding:24px}.lfp-backdrop{position:absolute;inset:0;backdrop-filter:blur(8px);background:radial-gradient(circle at top,rgba(38,103,255,.16),transparent 30%),#0a162d70}.lfp-panel{position:relative;display:flex;flex-direction:column;min-height:420px;width:100%;background:linear-gradient(180deg,#ffffffe6,#f4fbffe0),var(--lfp-hero-soft);border:1px solid var(--lfp-border);border-radius:24px;overflow:hidden;box-shadow:var(--lfp-shadow);backdrop-filter:blur(16px)}.lfp-wrapper.is-dialog .lfp-panel{max-width:min(1280px,100%);max-height:min(88vh,100%)}.lfp-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--lfp-border);background:linear-gradient(180deg,#ffffffe0,#f1f9ffd1)}.lfp-toolbar__meta,.lfp-toolbar__actions{display:flex;gap:12px;align-items:center}.lfp-title{max-width:min(60vw,720px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-badge{padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,#2667ff1f,#36c9a724);color:var(--lfp-primary-strong);font-size:12px;text-transform:uppercase}.lfp-button.is-ghost{background:linear-gradient(180deg,#ffffffe6,#f2f8ffdb);color:var(--lfp-text);border-color:var(--lfp-border)}.lfp-content{position:relative;flex:1;min-height:360px;padding:16px;overflow:auto}.lfp-loading,.lfp-error,.lfp-empty{display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;min-height:280px;text-align:center}@media(max-width:1024px){.docs-page{grid-template-columns:1fr}.docs-sidebar{position:static}.docs-page__lead{max-width:none}}@media(max-width:720px){.docs-shell,.landing-shell{padding:20px 16px 40px}.landing-topbar{align-items:flex-start;flex-direction:column}.docs-grid,.docs-feature-grid{grid-template-columns:1fr}.docs-section{padding:22px 18px}.docs-section h2{font-size:24px}.lfp-page-toolbar{align-items:stretch}.lfp-page-toolbar__meta,.lfp-page-toolbar__actions{width:100%}}@keyframes landingTitleShine{0%{background-position:0% 50%;filter:drop-shadow(0 0 8px rgba(124,236,255,.14))}50%{background-position:100% 50%;filter:drop-shadow(0 0 16px rgba(124,236,255,.28)) drop-shadow(0 0 28px rgba(79,140,255,.22))}to{background-position:0% 50%;filter:drop-shadow(0 0 8px rgba(124,236,255,.14))}}.lfp-spinner{width:28px;height:28px;border:3px solid rgba(17,138,178,.16);border-top-color:var(--lfp-primary-strong);border-radius:50%;animation:lfp-spin .8s linear infinite}.lfp-document{background:linear-gradient(180deg,#fffffff0,#f5fbffe6),var(--lfp-hero-soft);border-radius:18px;border:1px solid rgba(57,84,130,.08);padding:16px;box-shadow:inset 0 1px #ffffffb8}.lfp-image,.lfp-media{display:block;max-width:100%;margin:0 auto;border-radius:18px;background:#ffffffb8}.lfp-image{object-fit:contain}.lfp-media{width:100%}.lfp-audio{width:100%;margin-top:32px}.lfp-code{margin:0;padding:20px;overflow:auto;background:linear-gradient(180deg,#0a1429fa,#0b1c36f5),linear-gradient(135deg,#2667ff29,#118ab214);color:#dbeafe;border-radius:16px;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.6;white-space:pre-wrap;word-break:break-word}.lfp-markdown{padding:12px;line-height:1.8}.lfp-markdown img{max-width:100%}.lfp-hint{margin:0 0 12px;color:var(--lfp-text-subtle);font-size:13px}.lfp-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding:12px 14px;border:1px solid rgba(57,84,130,.08);border-radius:14px;background:linear-gradient(180deg,#fffffff5,#f4faffeb)}.lfp-page-toolbar__meta,.lfp-page-toolbar__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lfp-page-toolbar__title{color:#1c3f68;font-size:13px;font-weight:700}.lfp-page-toolbar__status,.lfp-page-toolbar__pager{color:var(--lfp-text-subtle);font-size:13px}.lfp-page-toolbar__toggle,.lfp-page-toolbar__nav{min-height:36px;padding:8px 14px}.lfp-page-toolbar__toggle.is-active{background:var(--lfp-hero);color:#fff;border-color:transparent}.lfp-pdf{display:flex;flex-direction:column;gap:18px}.lfp-pdf-page{display:flex;justify-content:center}.lfp-pdf-page canvas{max-width:100%;height:auto;border-radius:12px;box-shadow:0 18px 40px #1f40791f;background:#fff}.lfp-docx{overflow:auto}.lfp-docx .docx-wrapper{display:flex;flex-direction:column;align-items:center;gap:18px;background:transparent;padding:0}.lfp-docx-page{width:100%}.lfp-sheet{display:flex;flex-direction:column;gap:14px}.lfp-sheet__toolbar{display:flex;align-items:stretch;justify-content:space-between;gap:12px;flex-wrap:wrap}.lfp-sheet__tabs{display:flex;flex-wrap:wrap;gap:0;align-items:flex-end;flex:1 1 520px;padding:10px 12px 0;border:1px solid rgba(27,44,66,.08);border-radius:14px 14px 0 0;background:linear-gradient(180deg,#f2f8f5f5,#e8f3edeb);overflow-x:auto}.lfp-sheet__tab{display:inline-flex;align-items:center;gap:10px;padding:9px 16px 10px;margin-right:6px;border:1px solid transparent;border-bottom:none;border-radius:10px 10px 0 0;background:transparent;color:#2a3a4cb8;font-size:13px;font-weight:600;transition:all .18s ease}.lfp-sheet__tab-label{max-width:168px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-sheet__tab-meta{color:#445e75ad;font-size:12px;font-weight:500}.lfp-sheet__tab.is-active{position:relative;background:linear-gradient(180deg,#fff,#f7fff9);color:#0f6f50;border-color:#20946147;box-shadow:0 -1px #ffffffb8,0 10px 22px #12785514}.lfp-sheet__tab.is-active:after{content:"";position:absolute;left:12px;right:12px;bottom:-2px;height:3px;border-radius:999px;background:linear-gradient(90deg,#1ba86f,#44d196)}.lfp-sheet__tab:hover{color:#1e7c5d;background:#ffffff8c}.lfp-sheet__summary{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 1 auto;min-height:54px;padding:10px 14px;border:1px solid rgba(27,44,66,.08);border-radius:14px;background:linear-gradient(180deg,#fffffffa,#f7fbf9f0)}.lfp-sheet__summary-item{display:inline-flex;align-items:center;gap:8px;color:#37475bc2;font-size:13px;white-space:nowrap}.lfp-sheet__summary-item strong{color:#114b38;font-weight:700}.lfp-sheet__formula-bar{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid rgba(27,44,66,.08);border-radius:10px;background:linear-gradient(180deg,#f7f8fafa,#eff2f6f5),#ffffffeb}.lfp-sheet__name-box{display:inline-flex;align-items:center;justify-content:space-between;width:82px;min-width:82px;min-height:28px;padding:0 8px 0 10px;border-radius:6px;border:1px solid rgba(31,44,61,.14);background:linear-gradient(180deg,#fffffffa,#f1f5f9f0);color:#425368;font-weight:700;font-size:12px;box-shadow:inset 0 1px #ffffffd1}.lfp-sheet__name-box-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-sheet__name-box-caret{width:0;height:0;margin-left:8px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid rgba(71,85,105,.72)}.lfp-sheet__formula-input{display:flex;align-items:center;gap:10px;flex:1;min-height:28px;padding:0 10px 0 8px;border-radius:6px;border:1px solid rgba(31,44,61,.14);background:#fffffffa;box-shadow:inset 0 1px #ffffffeb,0 1px #ffffff80}.lfp-sheet__formula-label{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:18px;padding:0 5px;border-radius:999px;border:1px solid rgba(31,44,61,.1);background:#f1f5f9eb;color:#64748b;font-style:italic;font-weight:700;font-size:11px}.lfp-sheet__formula-text{color:#1f2937;font-size:12px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lfp-sheet__table-wrap{overflow:auto;border-radius:0 0 10px 10px;border:1px solid rgba(27,44,66,.08);border-top:none;background:#fff;box-shadow:inset 0 1px #fffc}.lfp-sheet__grid{position:relative;width:max-content;min-width:0}.lfp-sheet__table{width:auto;border-collapse:collapse;font-size:12px;background:#fff;table-layout:fixed}.lfp-sheet__table th,.lfp-sheet__table td{padding:4px 6px;border:1px solid #d9dee5;vertical-align:middle;box-sizing:border-box}.lfp-sheet__table td{background-color:var(--lfp-cell-bg, #fff);position:relative;transition:background-color .16s ease,box-shadow .16s ease,outline-color .16s ease}.lfp-sheet__header-row th,.lfp-sheet__row-header{font-weight:600;color:#5b6472;text-align:center;background:#f3f4f6;user-select:none}.lfp-sheet__corner-header,.lfp-sheet__row-header{min-width:46px;width:46px}.lfp-sheet__corner-header{background:#eef0f3}.lfp-sheet__col-header{min-height:28px;box-shadow:inset 0 -1px #182c4014}.lfp-sheet__row-header{box-shadow:inset -1px 0 #182c4014}.lfp-sheet__col-header.is-related,.lfp-sheet__row-header.is-related{color:#0b7a53;background:linear-gradient(180deg,#e4faeffa,#d4f5e4f5)}.lfp-sheet__cell-text{display:flex;align-items:var(--lfp-cell-align, center);justify-content:var(--lfp-cell-justify, flex-start);width:100%;min-height:100%;line-height:1.35;white-space:var(--lfp-cell-white-space, nowrap);overflow:hidden;text-overflow:ellipsis;word-break:var(--lfp-cell-word-break, normal);box-sizing:border-box}.lfp-sheet__cell-text--rich{display:block;width:100%;min-height:100%}.lfp-sheet__cell-text--rich span{white-space:inherit}.lfp-sheet__table td:hover,.lfp-sheet__table td:focus{outline:none}.lfp-sheet__table td.is-row-active,.lfp-sheet__table td.is-col-active{box-shadow:none}.lfp-sheet__table td.is-selected{z-index:1;box-shadow:none}.lfp-sheet__table td.is-selected:after{content:none}.lfp-sheet__images{position:absolute;inset:0;pointer-events:none;z-index:5}.lfp-sheet__image-frame{position:absolute;overflow:hidden}.lfp-sheet__floating-image{position:absolute;display:block;max-width:none;object-fit:contain;object-position:top left;box-shadow:0 10px 26px #0f172a1f}.lfp-sheet__empty{margin:0;padding:18px;border:1px dashed rgba(31,44,61,.14);border-radius:14px;background:#ffffffb8;color:#36465abd}@media(max-width:900px){.lfp-sheet__summary{width:100%;justify-content:flex-start;flex-wrap:wrap}.lfp-sheet__tabs{flex-basis:100%}.lfp-sheet__formula-bar{align-items:stretch;flex-direction:column}.lfp-sheet__corner-header,.lfp-sheet__row-header{min-width:46px;width:46px}}.lfp-fade-enter-active,.lfp-fade-leave-active{transition:opacity .2s ease}.lfp-fade-enter-from,.lfp-fade-leave-to{opacity:0}@keyframes lfp-spin{to{transform:rotate(360deg)}}@keyframes landingGlowFloat{0%,to{transform:translateZ(0) scale(1);opacity:.48}50%{transform:translate3d(110px,58px,0) scale(1.28);opacity:1}}@keyframes landingGlowFloatAlt{0%,to{transform:translateZ(0) scale(1);opacity:.38}50%{transform:translate3d(-108px,-64px,0) scale(1.32);opacity:.96}}@keyframes landingGlowPulse{0%,to{opacity:.38;transform:translate(-50%) scale(.94)}50%{opacity:.88;transform:translate(-50%) scale(1.14)}}@keyframes landingBeamSweep{0%{transform:translate3d(-34%,0,0) rotate(12deg);opacity:0}12%{opacity:.24}50%{transform:translate3d(102%,0,0) rotate(12deg);opacity:.78}88%{opacity:.18}to{transform:translate3d(136%,0,0) rotate(12deg);opacity:0}}@keyframes landingBaseShift{0%,to{background-position:0% 0%,100% 0%,0% 0%}50%{background-position:6% 2%,94% 6%,0% 0%}}@media(max-width:768px){.landing-shell,.preview-page{padding:16px 12px 24px}.preview-page{padding:0}.landing-topbar{align-items:flex-start}.landing-main{min-height:auto;padding-top:52px}.landing-main--wide{gap:16px}.landing-title{font-size:48px}.landing-subtitle{font-size:15px}.landing-shell:before{width:420px;height:420px;left:-20%}.landing-shell:after{width:340px;height:340px;right:-18%}.landing-main:before{width:420px;height:180px}.landing-main:after{width:88%;left:-46%}.upload-panel{padding:24px 16px 20px}.hero-panel,.demo-panel,.upload-panel--secondary{width:100%}.hero-panel{padding:18px 4px 4px}.demo-panel{padding:20px 16px}.demo-panel__header{flex-direction:column;align-items:center;text-align:center}.demo-panel__summary{max-width:none;text-align:center}.demo-format-list{justify-content:center}.demo-format-tag{width:min(100%,320px)}.landing-actions{gap:10px}.docs-page{grid-template-columns:1fr;padding:20px 12px 40px}.docs-sidebar{position:static}.docs-grid,.docs-feature-grid,.docs-shot-grid{grid-template-columns:1fr}.lfp-wrapper.is-dialog,.lfp-content{padding:12px}}
|
|
1
|
+
.lfp-wrapper{--lfp-bg: #eef6ff;--lfp-panel: rgba(255, 255, 255, .84);--lfp-panel-solid: rgba(255, 255, 255, .96);--lfp-border: rgba(57, 84, 130, .16);--lfp-text: #10233d;--lfp-text-subtle: #59708c;--lfp-primary: #118ab2;--lfp-primary-strong: #2667ff;--lfp-accent: #36c9a7;--lfp-primary-soft: rgba(17, 138, 178, .12);--lfp-hero: linear-gradient(135deg, #2667ff 0%, #118ab2 52%, #36c9a7 100%);--lfp-hero-soft: linear-gradient(135deg, rgba(38, 103, 255, .14), rgba(17, 138, 178, .1) 48%, rgba(54, 201, 167, .14));--lfp-shadow: 0 28px 80px rgba(31, 64, 121, .16);--lfp-shadow-soft: 0 18px 44px rgba(31, 64, 121, .1);position:relative;color:var(--lfp-text)}.lfp-wrapper,.lfp-wrapper *,.lfp-wrapper *:before,.lfp-wrapper *:after{box-sizing:border-box}.lfp-wrapper button,.lfp-wrapper input,.lfp-wrapper textarea,.lfp-wrapper select{font:inherit}.lfp-button,.lfp-sheet__tab{border:1px solid rgba(81,114,170,.12);border-radius:999px;background:linear-gradient(180deg,#fffffffa,#f0f8fff2);color:var(--lfp-text);cursor:pointer;box-shadow:0 10px 24px #32579714;transition:transform .2s ease,border-color .2s ease,background .2s ease,box-shadow .2s ease,color .2s ease}.lfp-button{padding:10px 15px}.lfp-icon-button{width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:12px}.lfp-icon-button svg{width:18px;height:18px;fill:currentColor}.lfp-button:hover,.lfp-sheet__tab:hover{transform:translateY(-2px);border-color:#118ab242;box-shadow:0 14px 30px #2756a424}.lfp-button{border-color:transparent;background:var(--lfp-hero);color:#fff}.lfp-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.lfp-wrapper.is-dialog{position:fixed;inset:0;z-index:99999999;display:flex;align-items:center;justify-content:center;padding:24px}.lfp-backdrop{position:absolute;inset:0;backdrop-filter:blur(8px);background:radial-gradient(circle at top,rgba(38,103,255,.16),transparent 30%),#0a162d70}.lfp-panel{position:relative;display:flex;flex-direction:column;min-height:420px;width:100%;background:linear-gradient(180deg,#ffffffe6,#f4fbffe0),var(--lfp-hero-soft);border:1px solid var(--lfp-border);border-radius:24px;overflow:hidden;box-shadow:var(--lfp-shadow);backdrop-filter:blur(16px)}.lfp-wrapper.is-dialog .lfp-panel{max-width:min(1280px,100%);max-height:min(88vh,100%)}.lfp-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--lfp-border);background:linear-gradient(180deg,#ffffffe0,#f1f9ffd1)}.lfp-toolbar__meta,.lfp-toolbar__actions{display:flex;gap:12px;align-items:center}.lfp-title{max-width:min(60vw,720px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-badge{padding:4px 10px;border-radius:999px;background:linear-gradient(135deg,#2667ff1f,#36c9a724);color:var(--lfp-primary-strong);font-size:12px;text-transform:uppercase}.lfp-button.is-ghost{background:linear-gradient(180deg,#ffffffe6,#f2f8ffdb);color:var(--lfp-text);border-color:var(--lfp-border)}.lfp-content{position:relative;flex:1;min-height:360px;padding:16px;overflow:auto}.lfp-loading,.lfp-error,.lfp-empty{display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;min-height:280px;text-align:center}.lfp-spinner{width:28px;height:28px;border:3px solid rgba(17,138,178,.16);border-top-color:var(--lfp-primary-strong);border-radius:50%;animation:lfp-spin .8s linear infinite}.lfp-document{background:linear-gradient(180deg,#fffffff0,#f5fbffe6),var(--lfp-hero-soft);border-radius:18px;border:1px solid rgba(57,84,130,.08);padding:16px;box-shadow:inset 0 1px #ffffffb8}.lfp-image,.lfp-media{display:block;max-width:100%;margin:0 auto;border-radius:18px;background:#ffffffb8}.lfp-image{object-fit:contain}.lfp-media{width:100%}.lfp-audio{width:100%;margin-top:32px}.lfp-code{margin:0;padding:20px;overflow:auto;background:linear-gradient(180deg,#0a1429fa,#0b1c36f5),linear-gradient(135deg,#2667ff29,#118ab214);color:#dbeafe;border-radius:16px;font-family:SFMono-Regular,JetBrains Mono,monospace;line-height:1.6;white-space:pre-wrap;word-break:break-word}.lfp-markdown{padding:12px;line-height:1.8}.lfp-markdown img{max-width:100%}.lfp-hint{margin:0 0 12px;color:var(--lfp-text-subtle);font-size:13px}.lfp-page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding:12px 14px;border:1px solid rgba(57,84,130,.08);border-radius:14px;background:linear-gradient(180deg,#fffffff5,#f4faffeb)}.lfp-page-toolbar__meta,.lfp-page-toolbar__actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lfp-page-toolbar__title{color:#1c3f68;font-size:13px;font-weight:700}.lfp-page-toolbar__status,.lfp-page-toolbar__pager{color:var(--lfp-text-subtle);font-size:13px}.lfp-page-toolbar__toggle,.lfp-page-toolbar__nav{min-height:36px;padding:8px 14px}.lfp-page-toolbar__toggle.is-active{background:var(--lfp-hero);color:#fff;border-color:transparent}.lfp-pdf{display:flex;flex-direction:column;gap:18px}.lfp-pdf-page{display:flex;justify-content:center}.lfp-pdf-page canvas{max-width:100%;height:auto;border-radius:12px;box-shadow:0 18px 40px #1f40791f;background:#fff}.lfp-docx{overflow:auto}.lfp-docx .docx-wrapper{display:flex;flex-direction:column;align-items:center;gap:18px;background:transparent;padding:0}.lfp-docx-page{width:100%}.lfp-sheet{display:flex;flex-direction:column;gap:14px}.lfp-sheet__toolbar{display:flex;align-items:stretch;justify-content:space-between;gap:12px;flex-wrap:wrap}.lfp-sheet__tabs{display:flex;flex-wrap:wrap;gap:0;align-items:flex-end;flex:1 1 520px;padding:10px 12px 0;border:1px solid rgba(27,44,66,.08);border-radius:14px 14px 0 0;background:linear-gradient(180deg,#f2f8f5f5,#e8f3edeb);overflow-x:auto}.lfp-sheet__tab{display:inline-flex;align-items:center;gap:10px;padding:9px 16px 10px;margin-right:6px;border:1px solid transparent;border-bottom:none;border-radius:10px 10px 0 0;background:transparent;color:#2a3a4cb8;font-size:13px;font-weight:600;transition:all .18s ease}.lfp-sheet__tab-label{max-width:168px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-sheet__tab-meta{color:#445e75ad;font-size:12px;font-weight:500}.lfp-sheet__tab.is-active{position:relative;background:linear-gradient(180deg,#fff,#f7fff9);color:#0f6f50;border-color:#20946147;box-shadow:0 -1px #ffffffb8,0 10px 22px #12785514}.lfp-sheet__tab.is-active:after{content:"";position:absolute;left:12px;right:12px;bottom:-2px;height:3px;border-radius:999px;background:linear-gradient(90deg,#1ba86f,#44d196)}.lfp-sheet__tab:hover{color:#1e7c5d;background:#ffffff8c}.lfp-sheet__summary{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 1 auto;min-height:54px;padding:10px 14px;border:1px solid rgba(27,44,66,.08);border-radius:14px;background:linear-gradient(180deg,#fffffffa,#f7fbf9f0)}.lfp-sheet__summary-item{display:inline-flex;align-items:center;gap:8px;color:#37475bc2;font-size:13px;white-space:nowrap}.lfp-sheet__summary-item strong{color:#114b38;font-weight:700}.lfp-sheet__formula-bar{display:flex;align-items:center;gap:10px;padding:6px 8px;border:1px solid rgba(27,44,66,.08);border-radius:10px;background:linear-gradient(180deg,#f7f8fafa,#eff2f6f5),#ffffffeb}.lfp-sheet__name-box{display:inline-flex;align-items:center;justify-content:space-between;width:82px;min-width:82px;min-height:28px;padding:0 8px 0 10px;border-radius:6px;border:1px solid rgba(31,44,61,.14);background:linear-gradient(180deg,#fffffffa,#f1f5f9f0);color:#425368;font-weight:700;font-size:12px;box-shadow:inset 0 1px #ffffffd1}.lfp-sheet__name-box-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lfp-sheet__name-box-caret{width:0;height:0;margin-left:8px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid rgba(71,85,105,.72)}.lfp-sheet__formula-input{display:flex;align-items:center;gap:10px;flex:1;min-height:28px;padding:0 10px 0 8px;border-radius:6px;border:1px solid rgba(31,44,61,.14);background:#fffffffa;box-shadow:inset 0 1px #ffffffeb,0 1px #ffffff80}.lfp-sheet__formula-label{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:18px;padding:0 5px;border-radius:999px;border:1px solid rgba(31,44,61,.1);background:#f1f5f9eb;color:#64748b;font-style:italic;font-weight:700;font-size:11px}.lfp-sheet__formula-text{color:#1f2937;font-size:12px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lfp-sheet__table-wrap{overflow:auto;border-radius:0 0 10px 10px;border:1px solid rgba(27,44,66,.08);border-top:none;background:#fff;box-shadow:inset 0 1px #fffc}.lfp-sheet__grid{position:relative;width:max-content;min-width:0}.lfp-sheet__table{width:auto;border-collapse:collapse;font-size:12px;background:#fff;table-layout:fixed}.lfp-sheet__table th,.lfp-sheet__table td{padding:4px 6px;border:1px solid #d9dee5;vertical-align:middle;box-sizing:border-box}.lfp-sheet__table td{background-color:var(--lfp-cell-bg, #fff);position:relative;transition:background-color .16s ease,box-shadow .16s ease,outline-color .16s ease}.lfp-sheet__header-row th,.lfp-sheet__row-header{font-weight:600;color:#5b6472;text-align:center;background:#f3f4f6;user-select:none}.lfp-sheet__corner-header,.lfp-sheet__row-header{min-width:46px;width:46px}.lfp-sheet__corner-header{background:#eef0f3}.lfp-sheet__col-header{min-height:28px;box-shadow:inset 0 -1px #182c4014}.lfp-sheet__row-header{box-shadow:inset -1px 0 #182c4014}.lfp-sheet__col-header.is-related,.lfp-sheet__row-header.is-related{color:#0b7a53;background:linear-gradient(180deg,#e4faeffa,#d4f5e4f5)}.lfp-sheet__cell-text{display:flex;align-items:var(--lfp-cell-align, center);justify-content:var(--lfp-cell-justify, flex-start);width:100%;min-height:100%;line-height:1.35;white-space:var(--lfp-cell-white-space, nowrap);overflow:hidden;text-overflow:ellipsis;word-break:var(--lfp-cell-word-break, normal);box-sizing:border-box}.lfp-sheet__cell-text--rich{display:block;width:100%;min-height:100%}.lfp-sheet__cell-text--rich span{white-space:inherit}.lfp-sheet__table td:hover,.lfp-sheet__table td:focus{outline:none}.lfp-sheet__table td.is-row-active,.lfp-sheet__table td.is-col-active{box-shadow:none}.lfp-sheet__table td.is-selected{z-index:1;box-shadow:none}.lfp-sheet__table td.is-selected:after{content:none}.lfp-sheet__images{position:absolute;inset:0;pointer-events:none;z-index:5}.lfp-sheet__image-frame{position:absolute;overflow:hidden}.lfp-sheet__floating-image{position:absolute;display:block;max-width:none;object-fit:contain;object-position:top left;box-shadow:0 10px 26px #0f172a1f}.lfp-sheet__empty{margin:0;padding:18px;border:1px dashed rgba(31,44,61,.14);border-radius:14px;background:#ffffffb8;color:#36465abd}@media(max-width:900px){.lfp-sheet__summary{width:100%;justify-content:flex-start;flex-wrap:wrap}.lfp-sheet__tabs{flex-basis:100%}.lfp-sheet__formula-bar{align-items:stretch;flex-direction:column}.lfp-sheet__corner-header,.lfp-sheet__row-header{min-width:46px;width:46px}}@media(max-width:720px){.lfp-page-toolbar{align-items:stretch}.lfp-page-toolbar__meta,.lfp-page-toolbar__actions{width:100%}}.lfp-fade-enter-active,.lfp-fade-leave-active{transition:opacity .2s ease}.lfp-fade-enter-from,.lfp-fade-leave-to{opacity:0}@keyframes lfp-spin{to{transform:rotate(360deg)}}@media(max-width:768px){.lfp-wrapper.is-dialog,.lfp-content{padding:12px}}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { App } from 'vue';
|
|
2
2
|
import FilePreview from './components/FilePreview.vue';
|
|
3
|
-
import './styles/
|
|
3
|
+
import './styles/component.css';
|
|
4
4
|
export type { FilePreviewMode, FilePreviewProps, PreviewKind, PreviewSource } from './types';
|
|
5
5
|
export { openFilePreviewDialog, registerStandaloneApi } from './standalone-api';
|
|
6
6
|
export { FilePreview };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@work-zhanguo/light-file-preview",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.0.16",
|
|
4
|
+
"description": "Lightweight file preview component for Vue 3, Vue 2, and standalone usage / 轻量级文件预览组件,支持 Vue3、Vue2 与独立产物嵌入。",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/light-file-preview.umd.cjs",
|
|
7
7
|
"module": "./dist/light-file-preview.js",
|