| |
1 | +/* Trawls UI — thème clair par défaut, sombre en option ; mobile-first. */ |
| 1 | :root{ |
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 | --fg:#e6e8eb;--fg2:#a2a8b3;--fg3:#6b7280; |
17 | --fg:#e6e8eb;--fg2:#a2a8b3;--fg3:#6b7280; |
| 4 | − --accent:#f5a524;--accent2:#c98416;--ok:#3fb950;--warn:#d29922;--err:#f85149;--info:#58a6ff; |
18 | + --accent:#f5a524;--accent2:#c98416;--accent-soft:rgba(245,165,36,.12);--accent-fg:#161000; |
| 5 | − --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--sans:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif; |
19 | + --ok:#3fb950;--warn:#d29922;--err:#f85149;--info:#58a6ff; |
| 6 | − --r:6px;--top:44px;--foot:28px; |
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 | *{box-sizing:border-box} |
25 | *{box-sizing:border-box} |
| |
26 | +html{-webkit-text-size-adjust:100%} |
| 9 | html,body{height:100%} |
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} |
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)} |
| 11 | −a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline} |
29 | +a{color:var(--accent2);text-decoration:none}a:hover{text-decoration:underline} |
| 12 | −.mono,code,pre,kbd,.input.mono,textarea.mono{font-family:var(--mono);font-size:12px} |
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 | .muted{color:var(--fg2)}.hidden{display:none!important}.grow{flex:1;min-width:0} |
32 | .muted{color:var(--fg2)}.hidden{display:none!important}.grow{flex:1;min-width:0} |
| 14 | .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} |
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} |
34 | +.stack{display:flex;flex-direction:column;gap:12px}.stack.sm{gap:8px} |
| 16 | −.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px} |
35 | +.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px} |
| 17 | −h3,h4{margin:6px 0;font-weight:600}h4{font-size:12px;color:var(--fg2);text-transform:uppercase;letter-spacing:.04em} |
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} |
| 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} |
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)} |
41 | +/* ---- top bar ---- */ |
| 21 | −.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;color:var(--fg)}.brand:hover{text-decoration:none} |
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 | .brand .ver{font-family:var(--mono);font-size:10px;color:var(--fg3);font-weight:400} |
44 | .brand .ver{font-family:var(--mono);font-size:10px;color:var(--fg3);font-weight:400} |
| 23 | .nav{display:flex;gap:2px;flex:1} |
45 | .nav{display:flex;gap:2px;flex:1} |
| 24 | −.nav a{padding:5px 10px;border-radius:var(--r);color:var(--fg2);font-weight:500} |
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} |
| 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)} |
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 | .top-right{display:flex;align-items:center;gap:8px} |
50 | .top-right{display:flex;align-items:center;gap:8px} |
| 27 | .status{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11px;color:var(--fg2)} |
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 | .status.ok i{background:var(--ok)}.status.err i{background:var(--err)}.status.warn i{background:var(--warn)} |
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 | .view{flex:1;display:flex;min-height:0} |
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))} |
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))} |
| 33 | −.page.mapp,.page.keys{grid-template-columns:1fr} |
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 | .page.keys{grid-template-columns:minmax(320px,400px) 1fr} |
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 | .panel.left{border-right:1px solid var(--line);background:var(--bg2)} |
72 | .panel.left{border-right:1px solid var(--line);background:var(--bg2)} |
| 37 | .panel.right{display:flex;flex-direction:column;min-height:0} |
73 | .panel.right{display:flex;flex-direction:column;min-height:0} |
| 38 | |
74 | |
| 39 | −.field{display:flex;flex-direction:column;gap:4px} |
75 | +/* ---- forms ---- */ |
| 40 | −.field>span{font-size:11px;color:var(--fg2);font-weight:500} |
76 | +.field{display:flex;flex-direction:column;gap:5px} |
| 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%} |
77 | +.field>span{font-size:12px;color:var(--fg2);font-weight:500} |
| 42 | −.input:focus{border-color:var(--accent);box-shadow:0 0 0 2px rgba(245,165,36,.18)} |
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)} |
| 43 | −textarea.input{resize:vertical;line-height:1.4} |
79 | +html[data-theme="dark"] .input{background:var(--bg)} |
| 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} |
80 | +.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)} |
| 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} |
81 | +textarea.input{resize:vertical;line-height:1.45;min-height:64px} |
| 46 | −.btn:hover{background:#ffb640}.btn:disabled{opacity:.5;cursor:progress} |
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} |
| 47 | −.btn.ghost{background:transparent;color:var(--fg2);border-color:var(--line2)}.btn.ghost:hover{color:var(--fg);background:var(--bg3)} |
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)} |
| 48 | −.btn.sm{padding:3px 8px;font-size:11px} |
84 | +.btn:hover{filter:brightness(1.06)}.btn:disabled{opacity:.55;cursor:progress} |
| 49 | −.btn.danger{background:transparent;color:var(--err);border-color:var(--line2)} |
85 | +.btn.ghost{background:var(--bg2);color:var(--fg2);border-color:var(--line2)}.btn.ghost:hover{color:var(--fg);background:var(--bg3);filter:none} |
| 50 | −.check{display:flex;align-items:center;gap:5px;color:var(--fg2);font-size:12px;cursor:pointer;user-select:none} |
86 | +html[data-theme="dark"] .btn.ghost{background:transparent} |
| 51 | −.check input{accent-color:var(--accent)} |
87 | +.btn.sm{padding:5px 10px;font-size:12px;min-height:32px} |
| 52 | −.chips{display:flex;flex-wrap:wrap;gap:4px} |
88 | +.btn.danger{background:var(--bg2);color:var(--err);border-color:var(--line2)} |
| 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)} |
89 | +.check{display:flex;align-items:center;gap:6px;color:var(--fg2);font-size:13px;cursor:pointer;user-select:none;min-height:32px} |
| 54 | −.chips label:has(input:checked){border-color:var(--accent);color:var(--accent);background:rgba(245,165,36,.08)} |
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 | .chips input{display:none} |
95 | .chips input{display:none} |
| 56 | −details.adv{border:1px solid var(--line);border-radius:var(--r);padding:6px 8px;background:var(--bg)} |
96 | +details.adv{border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;background:var(--bg)} |
| 57 | −details.adv summary{cursor:pointer;color:var(--fg2);font-size:12px;font-weight:500} |
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 | details.adv[open] summary{margin-bottom:8px} |
99 | details.adv[open] summary{margin-bottom:8px} |
| 59 | details.adv .input{margin-top:6px} |
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} |
102 | +/* ---- tabs & results ---- */ |
| 62 | −.tabs>button{background:none;border:0;color:var(--fg2);padding:5px 10px;border-radius:var(--r);cursor:pointer;font:inherit;font-weight:500} |
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} |
| 63 | −.tabs>button:hover{color:var(--fg);background:var(--bg3)}.tabs>button.on{color:var(--accent);background:rgba(245,165,36,.08)} |
104 | +.tabs::-webkit-scrollbar{display:none} |
| 64 | −.copy-group{display:flex;gap:4px} |
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} |
| 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} |
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 | .result-bar .ok{color:var(--ok)}.result-bar .err{color:var(--err)}.result-bar .warn{color:var(--warn)}.result-bar b{color:var(--fg)} |
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} |
111 | +.result{flex:1;overflow:auto;padding:14px 4px;min-height:0;-webkit-overflow-scrolling:touch} |
| 68 | −.empty{color:var(--fg3);padding:40px;text-align:center} |
112 | +.empty{color:var(--fg3);padding:48px 20px;text-align:center} |
| 69 | −.prose{max-width:860px;line-height:1.6;font-size:14px} |
113 | +.prose{max-width:860px;line-height:1.65;font-size:15px;overflow-wrap:anywhere} |
| 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} |
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} |
| 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} |
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} |
| 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)} |
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)} |
| 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)} |
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)} |
| 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} |
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} |
| 75 | −.json-k{color:#79c0ff}.json-s{color:#a5d6ff}.json-n{color:#f5a524}.json-b{color:#ff7b72}.json-null{color:var(--fg3)} |
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} |
121 | +/* ---- tables ---- */ |
| 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} |
122 | +.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r);background:var(--bg2)} |
| 79 | −.tbl td{padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:top} |
123 | +.tbl{width:100%;border-collapse:collapse;font-size:13px;min-width:520px} |
| 80 | −.tbl tr:hover td{background:var(--bg3)}.tbl tr.sel td{background:rgba(245,165,36,.07)} |
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} |
| 81 | −.tbl.sm td,.tbl.sm th{padding:3px 6px;font-size:11px} |
125 | +.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top} |
| 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)} |
126 | +.tbl tr:last-child td{border-bottom:0} |
| 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)} |
127 | +.tbl tbody tr{cursor:pointer}.tbl tr:hover td{background:var(--bg3)}.tbl tr.sel td{background:var(--accent-soft)} |
| 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)} |
128 | +.tbl.sm td,.tbl.sm th{padding:5px 8px;font-size:12px} |
| 85 | −.link-btn{background:none;border:0;color:var(--accent);cursor:pointer;font:inherit;padding:0} |
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 | .list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px} |
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 | .list li:hover{background:var(--bg3);color:var(--fg)}.list li span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis} |
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 | .progress>i{display:block;height:100%;background:var(--accent);transition:width .3s} |
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 | .tree details{margin-left:10px}.tree summary{cursor:pointer;color:var(--fg2)}.tree summary:hover{color:var(--fg)} |
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} |
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} |
| 97 | −.tree .leaf:hover{color:var(--accent)} |
146 | +.tree .leaf:hover{color:var(--accent2)} |
| 98 | −.split{display:grid;grid-template-columns:minmax(260px,38%) 1fr;gap:12px;flex:1;min-height:0} |
147 | +.split{display:grid;grid-template-columns:minmax(260px,38%) 1fr;gap:14px;flex:1;min-height:0} |
| 99 | .split>div{min-height:0;overflow:auto} |
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 | .log .ok{color:var(--ok)}.log .failed{color:var(--err)}.log .skipped{color:var(--warn)} |
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)} |
152 | +/* ---- map ---- */ |
| 104 | −.tools{padding:8px 14px;border-bottom:1px solid var(--line)} |
153 | +.top-form{padding:12px 16px;border-bottom:1px solid var(--line);background:var(--bg2)} |
| 105 | −.mapp .result-bar{padding:6px 14px} |
154 | +.tools{padding:10px 16px;border-bottom:1px solid var(--line)} |
| 106 | −.vlist{flex:1;overflow:auto;font-family:var(--mono);font-size:11px;padding:4px 14px} |
155 | +.mapp .result-bar{padding:8px 16px} |
| 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} |
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 | .vrow:hover{background:var(--bg3)}.vrow span{overflow:hidden;text-overflow:ellipsis}.vrow .src{color:var(--fg3)} |
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} |
163 | +/* ---- extract / keys ---- */ |
| 112 | −.ex-field.llm{grid-template-columns:1fr 100px 1.4fr 24px} |
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)} |
| 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} |
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 | .bars{display:flex;align-items:flex-end;gap:2px;height:80px;border-bottom:1px solid var(--line);padding:0 2px} |
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 | .bars>i:hover{opacity:1} |
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)} |
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)} |
| 118 | −.dlg{background:var(--bg2);color:var(--fg);border:1px solid var(--line2);border-radius:8px;padding:16px;width:min(460px,92vw)} |
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)} |
| 119 | −.dlg::backdrop{background:rgba(0,0,0,.6)}.dlg form{display:flex;flex-direction:column;gap:10px} |
172 | +.dlg::backdrop{background:rgba(0,0,0,.45)}.dlg form{display:flex;flex-direction:column;gap:12px} |
| 120 | .shot{max-width:100%;border:1px solid var(--line2);border-radius:var(--r)} |
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)} |
174 | +.chunk{border:1px solid var(--line);border-radius:var(--r);padding:10px;margin-bottom:10px;background:var(--bg2)} |
| 122 | −.chunk .h{font-family:var(--mono);font-size:10px;color:var(--fg3);margin-bottom:4px;display:flex;gap:10px} |
175 | +.chunk .h{font-family:var(--mono);font-size:11px;color:var(--fg3);margin-bottom:6px;display:flex;gap:10px;flex-wrap:wrap} |
| 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)} |
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)} |
| 124 | −.toast.err{border-color:var(--err)} |
177 | +.toast.err{background:var(--err);color:#fff} |
| 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}} |
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 | |