|
1 |
+/* Trawls UI — thème clair par défaut, sombre en option ; mobile-first. */ |
| 1 |
2 |
:root{ |
| 2 |
|
− --bg:#0b0c0e;--bg2:#111317;--bg3:#171a1f;--line:#23272e;--line2:#2e333b; |
|
3 |
+ --bg:#f6f7f9;--bg2:#ffffff;--bg3:#eef0f3;--bg4:#e4e7eb;--line:#e3e6ea;--line2:#cfd4da; |
|
4 |
+ --fg:#111418;--fg2:#4b5563;--fg3:#8a929c; |
|
5 |
+ --accent:#d97706;--accent2:#b45309;--accent-soft:rgba(217,119,6,.10);--accent-fg:#ffffff; |
|
6 |
+ --ok:#15803d;--warn:#b45309;--err:#dc2626;--info:#2563eb; |
|
7 |
+ --ok-soft:rgba(21,128,61,.10);--err-soft:rgba(220,38,38,.10);--warn-soft:rgba(180,83,9,.10);--info-soft:rgba(37,99,235,.10); |
|
8 |
+ --shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);--shadow-lg:0 10px 30px rgba(16,24,40,.14); |
|
9 |
+ --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--sans:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; |
|
10 |
+ --r:8px;--r-lg:12px;--top:52px;--foot:30px;--tabbar:58px; |
|
11 |
+ --sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px); |
|
12 |
+ --json-k:#1d4ed8;--json-s:#047857;--json-n:#b45309;--json-b:#be123c; |
|
13 |
+ color-scheme:light; |
|
14 |
+} |
|
15 |
+html[data-theme="dark"]{ |
|
16 |
+ --bg:#0b0c0e;--bg2:#111317;--bg3:#171a1f;--bg4:#1f242b;--line:#23272e;--line2:#2e333b; |
| 3 |
17 |
--fg:#e6e8eb;--fg2:#a2a8b3;--fg3:#6b7280; |
| 4 |
|
− --accent:#f5a524;--accent2:#c98416;--ok:#3fb950;--warn:#d29922;--err:#f85149;--info:#58a6ff; |
| 5 |
|
− --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--sans:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif; |
| 6 |
|
− --r:6px;--top:44px;--foot:28px; |
|
18 |
+ --accent:#f5a524;--accent2:#c98416;--accent-soft:rgba(245,165,36,.12);--accent-fg:#161000; |
|
19 |
+ --ok:#3fb950;--warn:#d29922;--err:#f85149;--info:#58a6ff; |
|
20 |
+ --ok-soft:rgba(63,185,80,.14);--err-soft:rgba(248,81,73,.14);--warn-soft:rgba(210,153,34,.14);--info-soft:rgba(88,166,255,.14); |
|
21 |
+ --shadow:none;--shadow-lg:0 10px 30px rgba(0,0,0,.5); |
|
22 |
+ --json-k:#79c0ff;--json-s:#a5d6ff;--json-n:#f5a524;--json-b:#ff7b72; |
|
23 |
+ color-scheme:dark; |
| 7 |
24 |
} |
| 8 |
25 |
*{box-sizing:border-box} |
|
26 |
+html{-webkit-text-size-adjust:100%} |
| 9 |
27 |
html,body{height:100%} |
| 10 |
|
−body{margin:0;background:var(--bg);color:var(--fg);font:13px/1.45 var(--sans);-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100dvh} |
| 11 |
|
−a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline} |
| 12 |
|
−.mono,code,pre,kbd,.input.mono,textarea.mono{font-family:var(--mono);font-size:12px} |
|
28 |
+body{margin:0;background:var(--bg);color:var(--fg);font:14px/1.5 var(--sans);-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100dvh;padding-top:var(--sat)} |
|
29 |
+a{color:var(--accent2);text-decoration:none}a:hover{text-decoration:underline} |
|
30 |
+html[data-theme="dark"] a{color:var(--accent)} |
|
31 |
+.mono,code,pre,kbd,.input.mono,textarea.mono{font-family:var(--mono);font-size:13px} |
| 13 |
32 |
.muted{color:var(--fg2)}.hidden{display:none!important}.grow{flex:1;min-width:0} |
| 14 |
33 |
.row{display:flex;align-items:center}.row.gap{gap:8px}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.row.wrap{flex-wrap:wrap} |
| 15 |
|
−.stack{display:flex;flex-direction:column;gap:10px}.stack.sm{gap:6px} |
| 16 |
|
−.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px} |
| 17 |
|
−h3,h4{margin:6px 0;font-weight:600}h4{font-size:12px;color:var(--fg2);text-transform:uppercase;letter-spacing:.04em} |
| 18 |
|
−kbd{background:var(--bg3);border:1px solid var(--line2);border-radius:3px;padding:0 4px;font-size:10px;color:var(--fg2);margin-left:6px} |
|
34 |
+.stack{display:flex;flex-direction:column;gap:12px}.stack.sm{gap:8px} |
|
35 |
+.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px} |
|
36 |
+h3,h4{margin:8px 0;font-weight:600}h3{font-size:16px}h4{font-size:11px;color:var(--fg2);text-transform:uppercase;letter-spacing:.06em} |
|
37 |
+kbd{background:var(--bg3);border:1px solid var(--line2);border-radius:4px;padding:0 5px;font-size:10px;color:var(--fg2);margin-left:6px} |
|
38 |
+button,input,select,textarea{font-family:inherit} |
|
39 |
+:focus-visible{outline:2px solid var(--accent);outline-offset:1px} |
| 19 |
40 |
|
| 20 |
|
−.top{position:sticky;top:0;z-index:10;height:var(--top);display:flex;align-items:center;gap:18px;padding:0 14px;background:var(--bg2);border-bottom:1px solid var(--line)} |
| 21 |
|
−.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;color:var(--fg)}.brand:hover{text-decoration:none} |
|
41 |
+/* ---- top bar ---- */ |
|
42 |
+.top{position:sticky;top:0;z-index:20;height:var(--top);display:flex;align-items:center;gap:16px;padding:0 max(14px,env(safe-area-inset-left)) 0 max(14px,env(safe-area-inset-right));background:color-mix(in srgb,var(--bg2) 88%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)} |
|
43 |
+.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;color:var(--fg);letter-spacing:-.01em}.brand:hover{text-decoration:none} |
| 22 |
44 |
.brand .ver{font-family:var(--mono);font-size:10px;color:var(--fg3);font-weight:400} |
| 23 |
45 |
.nav{display:flex;gap:2px;flex:1} |
| 24 |
|
−.nav a{padding:5px 10px;border-radius:var(--r);color:var(--fg2);font-weight:500} |
| 25 |
|
−.nav a:hover{background:var(--bg3);text-decoration:none;color:var(--fg)}.nav a.on{color:var(--accent);background:rgba(245,165,36,.08)} |
|
46 |
+.nav a{padding:6px 11px;border-radius:var(--r);color:var(--fg2);font-weight:500;font-size:13px;display:inline-flex;align-items:center;gap:6px} |
|
47 |
+.nav a svg{width:15px;height:15px;display:none} |
|
48 |
+.nav a:hover{background:var(--bg3);text-decoration:none;color:var(--fg)}.nav a.on{color:var(--accent2);background:var(--accent-soft)} |
|
49 |
+html[data-theme="dark"] .nav a.on{color:var(--accent)} |
| 26 |
50 |
.top-right{display:flex;align-items:center;gap:8px} |
| 27 |
51 |
.status{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--fg2)} |
| 28 |
|
−.status i{width:8px;height:8px;border-radius:50%;background:var(--fg3);display:inline-block} |
|
52 |
+.status i{width:8px;height:8px;border-radius:50%;background:var(--fg3);display:inline-block;box-shadow:0 0 0 3px var(--bg3)} |
| 29 |
53 |
.status.ok i{background:var(--ok)}.status.err i{background:var(--err)}.status.warn i{background:var(--warn)} |
|
54 |
+.icon-btn{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line2);background:var(--bg2);color:var(--fg2);border-radius:var(--r);cursor:pointer;padding:0} |
|
55 |
+.icon-btn:hover{color:var(--fg);background:var(--bg3)}.icon-btn svg{width:16px;height:16px} |
|
56 |
+.icon-btn .sun{display:none}.icon-btn .moon{display:block} |
|
57 |
+html[data-theme="dark"] .icon-btn .sun{display:block}html[data-theme="dark"] .icon-btn .moon{display:none} |
| 30 |
58 |
|
|
59 |
+/* ---- layout ---- */ |
| 31 |
60 |
.view{flex:1;display:flex;min-height:0} |
| 32 |
|
−.page{flex:1;display:grid;grid-template-columns:minmax(340px,420px) 1fr;min-height:calc(100dvh - var(--top) - var(--foot))} |
| 33 |
|
−.page.mapp,.page.keys{grid-template-columns:1fr} |
|
61 |
+.page{flex:1;min-width:0;display:grid;grid-template-columns:minmax(340px,420px) 1fr;min-height:calc(100dvh - var(--top) - var(--foot) - var(--sat))} |
|
62 |
+details.opts{border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;background:var(--bg)} |
|
63 |
+details.opts>summary{cursor:pointer;color:var(--fg2);font-size:13px;font-weight:500;min-height:28px;display:flex;align-items:center;list-style:none} |
|
64 |
+details.opts>summary::-webkit-details-marker{display:none} |
|
65 |
+details.opts>summary::before{content:"▸";margin-right:8px;color:var(--fg3);transition:transform .15s} |
|
66 |
+details.opts[open]>summary::before{transform:rotate(90deg)} |
|
67 |
+details.opts[open]>summary{margin-bottom:10px} |
|
68 |
+details.opts>.stack{gap:12px} |
|
69 |
+.page.mapp{grid-template-columns:1fr;display:flex;flex-direction:column} |
| 34 |
70 |
.page.keys{grid-template-columns:minmax(320px,400px) 1fr} |
| 35 |
|
−.panel{padding:14px;overflow:auto;min-width:0} |
|
71 |
+.panel{padding:16px;overflow:auto;min-width:0;-webkit-overflow-scrolling:touch} |
| 36 |
72 |
.panel.left{border-right:1px solid var(--line);background:var(--bg2)} |
| 37 |
73 |
.panel.right{display:flex;flex-direction:column;min-height:0} |
| 38 |
74 |
|
| 39 |
|
−.field{display:flex;flex-direction:column;gap:4px} |
| 40 |
|
−.field>span{font-size:11px;color:var(--fg2);font-weight:500} |
| 41 |
|
−.input{background:var(--bg);border:1px solid var(--line2);color:var(--fg);border-radius:var(--r);padding:6px 8px;font:inherit;outline:none;min-width:0;width:100%} |
| 42 |
|
−.input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(245,165,36,.18)} |
| 43 |
|
−textarea.input{resize:vertical;line-height:1.4} |
| 44 |
|
−select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--fg2) 50%),linear-gradient(135deg,var(--fg2) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:26px} |
| 45 |
|
−.btn{background:var(--accent);color:#161000;border:1px solid var(--accent2);border-radius:var(--r);padding:6px 12px;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap} |
| 46 |
|
−.btn:hover{background:#ffb640}.btn:disabled{opacity:.5;cursor:progress} |
| 47 |
|
−.btn.ghost{background:transparent;color:var(--fg2);border-color:var(--line2)}.btn.ghost:hover{color:var(--fg);background:var(--bg3)} |
| 48 |
|
−.btn.sm{padding:3px 8px;font-size:11px} |
| 49 |
|
−.btn.danger{background:transparent;color:var(--err);border-color:var(--line2)} |
| 50 |
|
−.check{display:flex;align-items:center;gap:5px;color:var(--fg2);font-size:12px;cursor:pointer;user-select:none} |
| 51 |
|
−.check input{accent-color:var(--accent)} |
| 52 |
|
−.chips{display:flex;flex-wrap:wrap;gap:4px} |
| 53 |
|
−.chips label{display:flex;align-items:center;gap:4px;border:1px solid var(--line2);border-radius:999px;padding:2px 8px;font-size:11px;color:var(--fg2);cursor:pointer;font-family:var(--mono)} |
| 54 |
|
−.chips label:has(input:checked){border-color:var(--accent);color:var(--accent);background:rgba(245,165,36,.08)} |
|
75 |
+/* ---- forms ---- */ |
|
76 |
+.field{display:flex;flex-direction:column;gap:5px} |
|
77 |
+.field>span{font-size:12px;color:var(--fg2);font-weight:500} |
|
78 |
+.input{background:var(--bg2);border:1px solid var(--line2);color:var(--fg);border-radius:var(--r);padding:9px 11px;font:inherit;font-size:14px;outline:none;min-width:0;width:100%;min-height:40px;box-shadow:var(--shadow)} |
|
79 |
+html[data-theme="dark"] .input{background:var(--bg)} |
|
80 |
+.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)} |
|
81 |
+textarea.input{resize:vertical;line-height:1.45;min-height:64px} |
|
82 |
+select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--fg2) 50%),linear-gradient(135deg,var(--fg2) 50%,transparent 50%);background-position:calc(100% - 15px) 50%,calc(100% - 10px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:28px} |
|
83 |
+.btn{background:var(--accent);color:var(--accent-fg);border:1px solid var(--accent2);border-radius:var(--r);padding:9px 14px;font:inherit;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:6px;box-shadow:var(--shadow)} |
|
84 |
+.btn:hover{filter:brightness(1.06)}.btn:disabled{opacity:.55;cursor:progress} |
|
85 |
+.btn.ghost{background:var(--bg2);color:var(--fg2);border-color:var(--line2)}.btn.ghost:hover{color:var(--fg);background:var(--bg3);filter:none} |
|
86 |
+html[data-theme="dark"] .btn.ghost{background:transparent} |
|
87 |
+.btn.sm{padding:5px 10px;font-size:12px;min-height:32px} |
|
88 |
+.btn.danger{background:var(--bg2);color:var(--err);border-color:var(--line2)} |
|
89 |
+.check{display:flex;align-items:center;gap:6px;color:var(--fg2);font-size:13px;cursor:pointer;user-select:none;min-height:32px} |
|
90 |
+.check input{accent-color:var(--accent);width:16px;height:16px} |
|
91 |
+.chips{display:flex;flex-wrap:wrap;gap:6px} |
|
92 |
+.chips label{display:flex;align-items:center;gap:4px;border:1px solid var(--line2);border-radius:999px;padding:5px 11px;font-size:12px;color:var(--fg2);cursor:pointer;font-family:var(--mono);background:var(--bg2);min-height:30px} |
|
93 |
+.chips label:has(input:checked){border-color:var(--accent);color:var(--accent2);background:var(--accent-soft)} |
|
94 |
+html[data-theme="dark"] .chips label:has(input:checked){color:var(--accent)} |
| 55 |
95 |
.chips input{display:none} |
| 56 |
|
−details.adv{border:1px solid var(--line);border-radius:var(--r);padding:6px 8px;background:var(--bg)} |
| 57 |
|
−details.adv summary{cursor:pointer;color:var(--fg2);font-size:12px;font-weight:500} |
|
96 |
+details.adv{border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;background:var(--bg)} |
|
97 |
+html[data-theme="dark"] details.adv{background:var(--bg)} |
|
98 |
+details.adv summary{cursor:pointer;color:var(--fg2);font-size:13px;font-weight:500;min-height:28px;display:flex;align-items:center} |
| 58 |
99 |
details.adv[open] summary{margin-bottom:8px} |
| 59 |
100 |
details.adv .input{margin-top:6px} |
| 60 |
101 |
|
| 61 |
|
−.tabs{display:flex;align-items:center;gap:2px;border-bottom:1px solid var(--line);padding:0 0 6px;flex-wrap:wrap} |
| 62 |
|
−.tabs>button{background:none;border:0;color:var(--fg2);padding:5px 10px;border-radius:var(--r);cursor:pointer;font:inherit;font-weight:500} |
| 63 |
|
−.tabs>button:hover{color:var(--fg);background:var(--bg3)}.tabs>button.on{color:var(--accent);background:rgba(245,165,36,.08)} |
| 64 |
|
−.copy-group{display:flex;gap:4px} |
| 65 |
|
−.result-bar{padding:6px 0;color:var(--fg2);font-size:11px;border-bottom:1px solid var(--line);display:flex;gap:12px;flex-wrap:wrap} |
|
102 |
+/* ---- tabs & results ---- */ |
|
103 |
+.tabs{display:flex;align-items:center;gap:2px;border-bottom:1px solid var(--line);padding:0 0 8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch} |
|
104 |
+.tabs::-webkit-scrollbar{display:none} |
|
105 |
+.tabs>button{background:none;border:0;color:var(--fg2);padding:7px 11px;border-radius:var(--r);cursor:pointer;font:inherit;font-size:13px;font-weight:500;white-space:nowrap;flex:0 0 auto} |
|
106 |
+.tabs>button:hover{color:var(--fg);background:var(--bg3)}.tabs>button.on{color:var(--accent2);background:var(--accent-soft)} |
|
107 |
+html[data-theme="dark"] .tabs>button.on{color:var(--accent)} |
|
108 |
+.copy-group{display:flex;gap:4px;flex:0 0 auto} |
|
109 |
+.result-bar{padding:8px 0;color:var(--fg2);font-size:12px;border-bottom:1px solid var(--line);display:flex;gap:12px;flex-wrap:wrap;font-family:var(--mono)} |
| 66 |
110 |
.result-bar .ok{color:var(--ok)}.result-bar .err{color:var(--err)}.result-bar .warn{color:var(--warn)}.result-bar b{color:var(--fg)} |
| 67 |
|
−.result{flex:1;overflow:auto;padding:12px 4px;min-height:0} |
| 68 |
|
−.empty{color:var(--fg3);padding:40px;text-align:center} |
| 69 |
|
−.prose{max-width:860px;line-height:1.6;font-size:14px} |
| 70 |
|
−.prose h1{font-size:22px;margin:.6em 0 .4em}.prose h2{font-size:18px;margin:1em 0 .4em;border-bottom:1px solid var(--line);padding-bottom:4px}.prose h3{font-size:15px} |
| 71 |
|
−.prose pre{background:var(--bg2);border:1px solid var(--line);padding:10px;border-radius:var(--r);overflow:auto}.prose code{background:var(--bg3);padding:1px 4px;border-radius:3px}.prose pre code{background:none;padding:0} |
| 72 |
|
−.prose table{border-collapse:collapse;font-size:13px}.prose td,.prose th{border:1px solid var(--line2);padding:4px 8px}.prose th{background:var(--bg3)} |
| 73 |
|
−.prose img{max-width:100%;border-radius:var(--r)}.prose blockquote{border-left:3px solid var(--accent);margin:0;padding:2px 12px;color:var(--fg2)} |
| 74 |
|
−pre.code{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r);padding:10px;overflow:auto;white-space:pre-wrap;word-break:break-word;margin:0;font-size:12px;line-height:1.45} |
| 75 |
|
−.json-k{color:#79c0ff}.json-s{color:#a5d6ff}.json-n{color:#f5a524}.json-b{color:#ff7b72}.json-null{color:var(--fg3)} |
|
111 |
+.result{flex:1;overflow:auto;padding:14px 4px;min-height:0;-webkit-overflow-scrolling:touch} |
|
112 |
+.empty{color:var(--fg3);padding:48px 20px;text-align:center} |
|
113 |
+.prose{max-width:860px;line-height:1.65;font-size:15px;overflow-wrap:anywhere} |
|
114 |
+.prose h1{font-size:24px;margin:.5em 0 .4em;letter-spacing:-.01em}.prose h2{font-size:19px;margin:1em 0 .4em;border-bottom:1px solid var(--line);padding-bottom:4px}.prose h3{font-size:16px} |
|
115 |
+.prose pre{background:var(--bg3);border:1px solid var(--line);padding:12px;border-radius:var(--r);overflow:auto}.prose code{background:var(--bg3);padding:1px 5px;border-radius:4px}.prose pre code{background:none;padding:0} |
|
116 |
+.prose table{border-collapse:collapse;font-size:13px;display:block;overflow-x:auto;max-width:100%}.prose td,.prose th{border:1px solid var(--line2);padding:5px 9px}.prose th{background:var(--bg3)} |
|
117 |
+.prose img{max-width:100%;border-radius:var(--r)}.prose blockquote{border-left:3px solid var(--accent);margin:0;padding:2px 14px;color:var(--fg2)} |
|
118 |
+pre.code{background:var(--bg3);border:1px solid var(--line);border-radius:var(--r);padding:12px;overflow:auto;white-space:pre-wrap;word-break:break-word;margin:0;font-size:12.5px;line-height:1.5} |
|
119 |
+.json-k{color:var(--json-k)}.json-s{color:var(--json-s)}.json-n{color:var(--json-n)}.json-b{color:var(--json-b)}.json-null{color:var(--fg3)} |
| 76 |
120 |
|
| 77 |
|
−.tbl{width:100%;border-collapse:collapse;font-size:12px} |
| 78 |
|
−.tbl th{text-align:left;color:var(--fg2);font-weight:500;padding:6px 8px;border-bottom:1px solid var(--line);font-size:11px;text-transform:uppercase;letter-spacing:.03em} |
| 79 |
|
−.tbl td{padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:top} |
| 80 |
|
−.tbl tr:hover td{background:var(--bg3)}.tbl tr.sel td{background:rgba(245,165,36,.07)} |
| 81 |
|
−.tbl.sm td,.tbl.sm th{padding:3px 6px;font-size:11px} |
| 82 |
|
−.badge{display:inline-block;padding:1px 6px;border-radius:999px;font-size:10px;font-family:var(--mono);border:1px solid var(--line2);color:var(--fg2)} |
| 83 |
|
−.badge.ok{color:var(--ok);border-color:rgba(63,185,80,.4)}.badge.failed,.badge.err{color:var(--err);border-color:rgba(248,81,73,.4)} |
| 84 |
|
−.badge.running,.badge.queued{color:var(--accent);border-color:rgba(245,165,36,.4)}.badge.skipped{color:var(--warn)}.badge.completed{color:var(--info);border-color:rgba(88,166,255,.4)}.badge.cancelled{color:var(--fg3)} |
| 85 |
|
−.link-btn{background:none;border:0;color:var(--accent);cursor:pointer;font:inherit;padding:0} |
|
121 |
+/* ---- tables ---- */ |
|
122 |
+.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r);background:var(--bg2)} |
|
123 |
+.tbl{width:100%;border-collapse:collapse;font-size:13px;min-width:520px} |
|
124 |
+.tbl th{text-align:left;color:var(--fg2);font-weight:500;padding:8px 10px;border-bottom:1px solid var(--line);font-size:11px;text-transform:uppercase;letter-spacing:.04em;background:var(--bg3);position:sticky;top:0} |
|
125 |
+.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top} |
|
126 |
+.tbl tr:last-child td{border-bottom:0} |
|
127 |
+.tbl tbody tr{cursor:pointer}.tbl tr:hover td{background:var(--bg3)}.tbl tr.sel td{background:var(--accent-soft)} |
|
128 |
+.tbl.sm td,.tbl.sm th{padding:5px 8px;font-size:12px} |
|
129 |
+.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-family:var(--mono);border:1px solid var(--line2);color:var(--fg2);background:var(--bg2);line-height:1.4} |
|
130 |
+.badge.ok{color:var(--ok);border-color:transparent;background:var(--ok-soft)}.badge.failed,.badge.err{color:var(--err);border-color:transparent;background:var(--err-soft)} |
|
131 |
+.badge.running,.badge.queued{color:var(--accent2);border-color:transparent;background:var(--accent-soft)}.badge.skipped{color:var(--warn);border-color:transparent;background:var(--warn-soft)}.badge.completed{color:var(--info);border-color:transparent;background:var(--info-soft)}.badge.cancelled{color:var(--fg3)} |
|
132 |
+html[data-theme="dark"] .badge.running,html[data-theme="dark"] .badge.queued{color:var(--accent)} |
|
133 |
+.link-btn{background:none;border:0;color:var(--accent2);cursor:pointer;font:inherit;padding:6px;min-width:32px;min-height:32px} |
|
134 |
+html[data-theme="dark"] .link-btn{color:var(--accent)} |
| 86 |
135 |
|
| 87 |
136 |
.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px} |
| 88 |
|
−.list li{display:flex;gap:8px;align-items:center;padding:4px 6px;border-radius:var(--r);cursor:pointer;color:var(--fg2);font-family:var(--mono);font-size:11px;overflow:hidden} |
|
137 |
+.list li{display:flex;gap:8px;align-items:center;padding:7px 8px;border-radius:var(--r);cursor:pointer;color:var(--fg2);font-family:var(--mono);font-size:12px;overflow:hidden;min-height:36px} |
| 89 |
138 |
.list li:hover{background:var(--bg3);color:var(--fg)}.list li span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} |
| 90 |
|
−.hist{margin-top:16px} |
|
139 |
+.hist{margin-top:18px} |
| 91 |
140 |
|
| 92 |
|
−.progress{height:6px;background:var(--bg3);border-radius:3px;overflow:hidden;margin:6px 0} |
|
141 |
+.progress{height:6px;background:var(--bg4);border-radius:3px;overflow:hidden;margin:8px 0} |
| 93 |
142 |
.progress>i{display:block;height:100%;background:var(--accent);transition:width .3s} |
| 94 |
|
−.tree{font-family:var(--mono);font-size:11px;line-height:1.7} |
|
143 |
+.tree{font-family:var(--mono);font-size:12px;line-height:1.9} |
| 95 |
144 |
.tree details{margin-left:10px}.tree summary{cursor:pointer;color:var(--fg2)}.tree summary:hover{color:var(--fg)} |
| 96 |
|
−.tree .leaf{margin-left:24px;display:flex;gap:6px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer} |
| 97 |
|
−.tree .leaf:hover{color:var(--accent)} |
| 98 |
|
−.split{display:grid;grid-template-columns:minmax(260px,38%) 1fr;gap:12px;flex:1;min-height:0} |
|
145 |
+.tree .leaf{margin-left:24px;display:flex;gap:6px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;min-height:30px} |
|
146 |
+.tree .leaf:hover{color:var(--accent2)} |
|
147 |
+.split{display:grid;grid-template-columns:minmax(260px,38%) 1fr;gap:14px;flex:1;min-height:0} |
| 99 |
148 |
.split>div{min-height:0;overflow:auto} |
| 100 |
|
−.log{font-family:var(--mono);font-size:11px;line-height:1.6;white-space:pre-wrap} |
|
149 |
+.log{font-family:var(--mono);font-size:12px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere} |
| 101 |
150 |
.log .ok{color:var(--ok)}.log .failed{color:var(--err)}.log .skipped{color:var(--warn)} |
| 102 |
151 |
|
| 103 |
|
−.top-form{padding:12px 14px;border-bottom:1px solid var(--line);background:var(--bg2)} |
| 104 |
|
−.tools{padding:8px 14px;border-bottom:1px solid var(--line)} |
| 105 |
|
−.mapp .result-bar{padding:6px 14px} |
| 106 |
|
−.vlist{flex:1;overflow:auto;font-family:var(--mono);font-size:11px;padding:4px 14px} |
| 107 |
|
−.vrow{display:grid;grid-template-columns:20px 1fr 90px 70px;gap:8px;align-items:center;padding:3px 4px;border-bottom:1px solid var(--line);height:26px;white-space:nowrap;overflow:hidden} |
|
152 |
+/* ---- map ---- */ |
|
153 |
+.top-form{padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg2)} |
|
154 |
+.tools{padding:10px 16px;border-bottom:1px solid var(--line)} |
|
155 |
+.mapp .result-bar{padding:8px 16px} |
|
156 |
+.vlist{flex:1;overflow:auto;font-family:var(--mono);font-size:12px;padding:4px 16px;-webkit-overflow-scrolling:touch} |
|
157 |
+.vrow{display:grid;grid-template-columns:22px 1fr 90px 70px;gap:8px;align-items:center;padding:4px;border-bottom:1px solid var(--line);min-height:34px;white-space:nowrap;overflow:hidden} |
| 108 |
158 |
.vrow:hover{background:var(--bg3)}.vrow span{overflow:hidden;text-overflow:ellipsis}.vrow .src{color:var(--fg3)} |
| 109 |
|
−.vgroup{padding:6px 4px 2px;color:var(--accent);font-weight:600;border-bottom:1px solid var(--line2)} |
|
159 |
+.vrow input{width:16px;height:16px;accent-color:var(--accent)} |
|
160 |
+.vgroup{padding:8px 4px 3px;color:var(--accent2);font-weight:600;border-bottom:1px solid var(--line2)} |
|
161 |
+html[data-theme="dark"] .vgroup{color:var(--accent)} |
| 110 |
162 |
|
| 111 |
|
−.ex-field{display:grid;grid-template-columns:1fr 1.4fr 90px 24px;gap:6px;align-items:center} |
| 112 |
|
−.ex-field.llm{grid-template-columns:1fr 100px 1.4fr 24px} |
| 113 |
|
−.callout{background:rgba(245,165,36,.08);border:1px solid var(--accent2);border-radius:var(--r);padding:10px;margin:8px 0;font-family:var(--mono);font-size:12px;word-break:break-all} |
|
163 |
+/* ---- extract / keys ---- */ |
|
164 |
+.ex-field{display:grid;grid-template-columns:1fr 1.4fr 90px 32px;gap:6px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg)} |
|
165 |
+.ex-field.llm{grid-template-columns:1fr 100px 1.4fr 32px} |
|
166 |
+.callout{background:var(--accent-soft);border:1px solid var(--accent2);border-radius:var(--r);padding:12px;margin:10px 0;font-family:var(--mono);font-size:12px;word-break:break-all} |
| 114 |
167 |
.bars{display:flex;align-items:flex-end;gap:2px;height:80px;border-bottom:1px solid var(--line);padding:0 2px} |
| 115 |
|
−.bars>i{flex:1;background:var(--accent);opacity:.8;border-radius:2px 2px 0 0;min-height:1px} |
|
168 |
+.bars>i{flex:1;background:var(--accent);opacity:.85;border-radius:2px 2px 0 0;min-height:1px} |
| 116 |
169 |
.bars>i:hover{opacity:1} |
| 117 |
|
−.foot{height:var(--foot);display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-top:1px solid var(--line);color:var(--fg3);font-size:11px;background:var(--bg2)} |
| 118 |
|
−.dlg{background:var(--bg2);color:var(--fg);border:1px solid var(--line2);border-radius:8px;padding:16px;width:min(460px,92vw)} |
| 119 |
|
−.dlg::backdrop{background:rgba(0,0,0,.6)}.dlg form{display:flex;flex-direction:column;gap:10px} |
|
170 |
+.foot{height:var(--foot);display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-top:1px solid var(--line);color:var(--fg3);font-size:11px;background:var(--bg2)} |
|
171 |
+.dlg{background:var(--bg2);color:var(--fg);border:1px solid var(--line2);border-radius:var(--r-lg);padding:18px;width:min(460px,92vw);box-shadow:var(--shadow-lg)} |
|
172 |
+.dlg::backdrop{background:rgba(0,0,0,.45)}.dlg form{display:flex;flex-direction:column;gap:12px} |
| 120 |
173 |
.shot{max-width:100%;border:1px solid var(--line2);border-radius:var(--r)} |
| 121 |
|
−.chunk{border:1px solid var(--line);border-radius:var(--r);padding:8px;margin-bottom:8px;background:var(--bg2)} |
| 122 |
|
−.chunk .h{font-family:var(--mono);font-size:10px;color:var(--fg3);margin-bottom:4px;display:flex;gap:10px} |
| 123 |
|
−.toast{position:fixed;bottom:40px;right:14px;background:var(--bg3);border:1px solid var(--line2);padding:8px 12px;border-radius:var(--r);font-size:12px;z-index:20;box-shadow:0 6px 20px rgba(0,0,0,.4)} |
| 124 |
|
−.toast.err{border-color:var(--err)} |
| 125 |
|
−@media (max-width:900px){.page{grid-template-columns:1fr;min-height:auto}.panel.left{border-right:0;border-bottom:1px solid var(--line)}.split{grid-template-columns:1fr}.nav a{padding:5px 7px}.grid2{grid-template-columns:1fr}.top{gap:10px;overflow-x:auto}.page.keys{grid-template-columns:1fr}} |
|
174 |
+.chunk{border:1px solid var(--line);border-radius:var(--r);padding:10px;margin-bottom:10px;background:var(--bg2)} |
|
175 |
+.chunk .h{font-family:var(--mono);font-size:11px;color:var(--fg3);margin-bottom:6px;display:flex;gap:10px;flex-wrap:wrap} |
|
176 |
+.toast{position:fixed;bottom:calc(var(--foot) + var(--sab) + 12px);right:14px;left:auto;background:var(--fg);color:var(--bg2);border:0;padding:10px 14px;border-radius:var(--r);font-size:13px;z-index:40;box-shadow:var(--shadow-lg);max-width:min(92vw,420px)} |
|
177 |
+.toast.err{background:var(--err);color:#fff} |
|
178 |
+ |
|
179 |
+/* ---- mobile tab bar ---- */ |
|
180 |
+.tabbar{display:none} |
|
181 |
+ |
|
182 |
+/* ---- responsive ---- */ |
|
183 |
+@media (max-width:1100px){.page{grid-template-columns:minmax(300px,360px) 1fr}.grid2{grid-template-columns:1fr 1fr}} |
|
184 |
+@media (max-width:900px){ |
|
185 |
+ :root{--top:50px} |
|
186 |
+ body{padding-bottom:calc(var(--tabbar) + var(--sab))} |
|
187 |
+ .nav{display:none} |
|
188 |
+ .top{gap:10px} |
|
189 |
+ .status span{display:none} |
|
190 |
+ .view{display:block;min-height:0;overflow-x:hidden} |
|
191 |
+ .page{display:flex;flex-direction:column;min-height:auto;min-width:0;width:100%} |
|
192 |
+ .panel{padding:14px;overflow:visible;width:100%} |
|
193 |
+ .panel.left{border-right:0;border-bottom:1px solid var(--line)} |
|
194 |
+ .panel.right{min-height:auto;display:block} |
|
195 |
+ .result{overflow:visible;min-height:0} |
|
196 |
+ .tabs{position:sticky;top:var(--top);z-index:5;background:var(--bg);padding-top:6px} |
|
197 |
+ .prose{max-width:100%} |
|
198 |
+ .prose table{display:block;overflow-x:auto} |
|
199 |
+ pre.code,.prose pre{max-width:100%} |
|
200 |
+ details.opts>summary{font-weight:600;color:var(--fg)} |
|
201 |
+ .tabs,#cr-detail,.panel.right{scroll-margin-top:calc(var(--top) + 4px)} |
|
202 |
+ .split{grid-template-columns:1fr;gap:10px} |
|
203 |
+ .split>div{max-height:45dvh} |
|
204 |
+ .grid2{grid-template-columns:1fr} |
|
205 |
+ .input,select.input,textarea.input{font-size:16px} |
|
206 |
+ .btn{min-height:44px}.icon-btn{width:38px;height:38px} |
|
207 |
+ .check{min-height:36px} |
|
208 |
+ .tabs{gap:0;margin:0 -14px;padding:0 14px 8px;flex-wrap:nowrap} |
|
209 |
+ .copy-group{padding-left:8px;border-left:1px solid var(--line);margin-left:6px} |
|
210 |
+ .result{padding:12px 0} |
|
211 |
+ .foot{display:none} |
|
212 |
+ .toast{left:14px;right:14px;max-width:none;bottom:calc(var(--tabbar) + var(--sab) + 12px)} |
|
213 |
+ .tbl{min-width:0} |
|
214 |
+ .tbl th:nth-child(5),.tbl td:nth-child(5){display:none} |
|
215 |
+ .vrow{grid-template-columns:22px 1fr 60px} |
|
216 |
+ .vrow .src:last-child{display:none} |
|
217 |
+ .ex-field,.ex-field.llm{grid-template-columns:1fr 1fr;grid-auto-rows:auto} |
|
218 |
+ .ex-field .link-btn{justify-self:end} |
|
219 |
+ .top-form .input{flex:1 1 100%} |
|
220 |
+ .top-form .btn{flex:1 1 100%} |
|
221 |
+ .tools .grow{flex:1 1 100%} |
|
222 |
+ .tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);height:calc(var(--tabbar) + var(--sab));padding-bottom:var(--sab);background:color-mix(in srgb,var(--bg2) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line)} |
|
223 |
+ .tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--fg3);font-size:10.5px;font-weight:500;text-decoration:none;-webkit-tap-highlight-color:transparent} |
|
224 |
+ .tabbar a svg{width:22px;height:22px} |
|
225 |
+ .tabbar a.on{color:var(--accent2)} |
|
226 |
+ html[data-theme="dark"] .tabbar a.on{color:var(--accent)} |
|
227 |
+ .hist{margin-top:14px} |
|
228 |
+ .sticky-run{position:sticky;bottom:0;background:var(--bg2);padding-top:8px} |
|
229 |
+} |
|
230 |
+@media (max-width:480px){ |
|
231 |
+ .brand span:not(.ver){display:inline}.brand .ver{display:none} |
|
232 |
+ .result-bar{gap:8px;font-size:11px} |
|
233 |
+ .prose{font-size:15px}.prose h1{font-size:21px} |
|
234 |
+ .panel{padding:12px} |
|
235 |
+ .page.keys .row.between{flex-direction:column;align-items:stretch;gap:8px} |
|
236 |
+ #ky-form{flex-wrap:wrap}#ky-form .input{flex:1 1 40%} |
|
237 |
+} |
|
238 |
+@media (prefers-reduced-motion:reduce){*{transition:none!important}} |
| 126 |
239 |
|