coderadar 0.1.0
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/bin/coderadar.js +2 -0
- package/dist/collector.d.ts +12 -0
- package/dist/collector.d.ts.map +1 -0
- package/dist/collector.js +253 -0
- package/dist/collector.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +64 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/generate.d.ts +8 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +44 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +57 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/sync.d.ts +8 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +90 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/output/html-generator.d.ts +11 -0
- package/dist/output/html-generator.d.ts.map +1 -0
- package/dist/output/html-generator.js +106 -0
- package/dist/output/html-generator.js.map +1 -0
- package/package.json +61 -0
- package/templates/app.js +1294 -0
- package/templates/styles.css +489 -0
- package/templates/template.html +325 -0
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
2
|
+
:root{--bg:#09090b;--s1:#18181b;--s2:#27272a;--bd:#3f3f46;--ac:#8b5cf6;--ac2:#7c3aed;
|
|
3
|
+
--ok:#22c55e;--warn:#eab308;--err:#ef4444;--info:#3b82f6;--txt:#fafafa;--mut:#a1a1aa;--dim:#71717a}
|
|
4
|
+
:root.light{--bg:#f8fafc;--s1:#ffffff;--s2:#f1f5f9;--bd:#e2e8f0;--txt:#0f172a;--mut:#64748b;--dim:#94a3b8}
|
|
5
|
+
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);color:var(--txt);min-height:100vh;padding:1.5rem;transition:background .2s,color .2s}
|
|
6
|
+
.app{max-width:1600px;margin:0 auto}
|
|
7
|
+
button{font-family:inherit;cursor:pointer}
|
|
8
|
+
input[type="text"],input[type="search"]{font-family:inherit;background:var(--s1);color:var(--txt);border:1px solid var(--bd);border-radius:6px;padding:.4rem .7rem;font-size:.8rem}
|
|
9
|
+
input:focus{outline:none;border-color:var(--ac)}
|
|
10
|
+
textarea{font-family:inherit;background:var(--s1);color:var(--txt);border:1px solid var(--bd);border-radius:8px;padding:.75rem;width:100%;min-height:60px;resize:vertical;font-size:.85rem}
|
|
11
|
+
textarea:focus{outline:none;border-color:var(--ac)}
|
|
12
|
+
header{display:flex;align-items:center;gap:1rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--bd);flex-wrap:wrap}
|
|
13
|
+
.brand{display:flex;align-items:center;gap:.6rem}
|
|
14
|
+
.brand-icon{width:32px;height:32px;background:linear-gradient(135deg,var(--ac),#6366f1);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}
|
|
15
|
+
.brand h1{font-size:1.1rem;font-weight:700}
|
|
16
|
+
.brand h1 span{color:var(--dim);font-weight:400;font-size:.7rem;margin-left:.4rem}
|
|
17
|
+
.header-actions{display:flex;gap:.5rem;margin-left:auto;align-items:center}
|
|
18
|
+
.icon-btn{width:32px;height:32px;border-radius:6px;border:1px solid var(--bd);background:var(--s1);color:var(--mut);display:flex;align-items:center;justify-content:center;font-size:.8rem;transition:all .15s}
|
|
19
|
+
.icon-btn:hover{border-color:var(--ac);color:var(--ac)}
|
|
20
|
+
.icon-btn.tts-active{border-color:var(--ok);color:var(--ok);animation:tts-pulse 1.5s infinite}
|
|
21
|
+
@keyframes tts-pulse{0%,100%{opacity:1}50%{opacity:.5}}
|
|
22
|
+
.icon-btn{position:relative}
|
|
23
|
+
.sync-badge{position:absolute;top:-4px;right:-4px;background:var(--ac);color:white;font-size:.55rem;font-weight:700;min-width:14px;height:14px;border-radius:7px;display:flex;align-items:center;justify-content:center;padding:0 3px}
|
|
24
|
+
.icon-btn.syncing svg{animation:spin 1s linear infinite}
|
|
25
|
+
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
|
|
26
|
+
.stats-bar{display:flex;gap:1rem;padding:.75rem 1rem;background:var(--s1);border:1px solid var(--bd);border-radius:10px;margin-bottom:1rem;flex-wrap:wrap;align-items:center;transition:max-height .25s ease,opacity .2s,padding .25s,margin .25s;max-height:120px;overflow:hidden}
|
|
27
|
+
.stats-bar.collapsed{max-height:0;padding:0;margin:0;border-color:transparent;opacity:0}
|
|
28
|
+
.stats-toggle{background:none;border:none;color:var(--dim);cursor:pointer;font-size:.6rem;padding:0 .3rem;transition:transform .2s}
|
|
29
|
+
.stats-toggle.flipped{transform:rotate(180deg)}
|
|
30
|
+
.stat{display:flex;flex-direction:column;align-items:center;padding:0 .75rem}
|
|
31
|
+
.stat-val{font-size:1.25rem;font-weight:700;color:var(--ac)}
|
|
32
|
+
.stat-val.ok{color:var(--ok)}.stat-val.warn{color:var(--warn)}.stat-val.err{color:var(--err)}
|
|
33
|
+
.stat-label{font-size:.65rem;color:var(--dim);text-transform:uppercase}
|
|
34
|
+
.stat-divider{width:1px;height:30px;background:var(--bd)}
|
|
35
|
+
.stat-stacks{display:flex;gap:.3rem;flex-wrap:wrap}
|
|
36
|
+
.stat-stack{font-size:.65rem;padding:.15rem .4rem;border-radius:4px;background:var(--s2);color:var(--mut)}
|
|
37
|
+
/* Tab navigation */
|
|
38
|
+
.persistent-bar{display:flex;gap:.75rem;margin-bottom:1rem;align-items:center;flex-wrap:wrap}
|
|
39
|
+
.tab-bar{display:flex;gap:2px;background:var(--s1);border-radius:8px;border:1px solid var(--bd);padding:2px;flex-shrink:0}
|
|
40
|
+
.tab-nav{padding:.4rem .8rem;font-size:.75rem;border:none;background:transparent;color:var(--dim);font-weight:500;border-radius:6px;cursor:pointer;transition:all .15s;white-space:nowrap}
|
|
41
|
+
.tab-nav.active{background:var(--ac);color:white}
|
|
42
|
+
.tab-nav:hover:not(.active){background:var(--s2);color:var(--txt)}
|
|
43
|
+
.tab-panel{display:none}
|
|
44
|
+
.tab-panel.active{display:block}
|
|
45
|
+
.toolbar{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap;align-items:center}
|
|
46
|
+
.search-box{position:relative;flex:1;min-width:200px}
|
|
47
|
+
.search-box input{width:100%;padding-left:2rem}
|
|
48
|
+
.search-box::before{content:'O';position:absolute;left:.7rem;top:50%;transform:translateY(-50%);font-size:.7rem;opacity:.4}
|
|
49
|
+
.filter-group{display:flex;gap:2px;background:var(--s1);border-radius:6px;border:1px solid var(--bd);overflow:hidden}
|
|
50
|
+
.filter-btn{padding:.35rem .6rem;font-size:.7rem;border:none;background:transparent;color:var(--dim);font-weight:500;transition:all .15s}
|
|
51
|
+
.filter-btn.active{background:var(--ac);color:white}
|
|
52
|
+
.filter-btn:hover:not(.active){background:var(--s2);color:var(--txt)}
|
|
53
|
+
.toolbar-right{margin-left:auto;display:flex;gap:.5rem;align-items:center}
|
|
54
|
+
.sync-indicator{font-size:.65rem;color:var(--dim)}
|
|
55
|
+
.section{margin-bottom:1.5rem}
|
|
56
|
+
.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.6rem}
|
|
57
|
+
.section-head h2{font-size:.7rem;font-weight:600;color:var(--mut);text-transform:uppercase;letter-spacing:.05em}
|
|
58
|
+
.tabs{display:flex;gap:2px;background:var(--s1);border-radius:6px;border:1px solid var(--bd);overflow:hidden}
|
|
59
|
+
.tab{padding:.3rem .6rem;font-size:.7rem;border:none;background:transparent;color:var(--dim);font-weight:500;transition:all .15s}
|
|
60
|
+
.tab.active{background:var(--ac);color:white}
|
|
61
|
+
.tab:hover:not(.active){background:var(--s2);color:var(--txt)}
|
|
62
|
+
.projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.6rem}
|
|
63
|
+
.p-card{background:var(--s1);border:1px solid var(--bd);border-radius:10px;padding:.85rem;transition:all .15s;position:relative}
|
|
64
|
+
.p-card:hover{border-color:var(--ac)}
|
|
65
|
+
.p-card.warn-border{border-left:3px solid var(--warn)}
|
|
66
|
+
.p-card.err-border{border-left:3px solid var(--err)}
|
|
67
|
+
.p-card.fav{background:linear-gradient(135deg,rgba(139,92,246,.08),transparent)}
|
|
68
|
+
.p-card.hidden{display:none}
|
|
69
|
+
.p-fav{position:absolute;top:.6rem;right:.6rem;width:22px;height:22px;border-radius:5px;border:1px solid var(--bd);background:var(--bg);color:var(--dim);display:flex;align-items:center;justify-content:center;font-size:.7rem;cursor:pointer;transition:all .15s}
|
|
70
|
+
.p-fav:hover,.p-fav.active{color:var(--warn);border-color:var(--warn)}
|
|
71
|
+
.p-fav.active{background:rgba(234,179,8,.15)}
|
|
72
|
+
.p-top{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem;padding-right:28px}
|
|
73
|
+
.p-name{font-size:.95rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
74
|
+
.p-idx{font-size:.6rem;color:var(--dim);opacity:.6;margin-right:.2rem}
|
|
75
|
+
.p-stack{font-size:.6rem;padding:.12rem .35rem;background:rgba(139,92,246,.12);color:var(--ac);border-radius:4px;font-weight:500;white-space:nowrap}
|
|
76
|
+
.p-health{width:40px;height:4px;background:var(--bd);border-radius:2px;overflow:hidden;margin-left:auto}
|
|
77
|
+
.p-health-fill{height:100%;border-radius:2px;transition:width .3s}
|
|
78
|
+
.p-info{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.4rem;font-size:.65rem;color:var(--dim)}
|
|
79
|
+
.p-info .tag{padding:.1rem .35rem;border-radius:4px;border:1px solid var(--bd);background:var(--bg)}
|
|
80
|
+
.p-info .tag.ok{border-color:rgba(34,197,94,.3);color:var(--ok)}
|
|
81
|
+
.p-info .tag.bad{border-color:rgba(239,68,68,.3);color:var(--err)}
|
|
82
|
+
.p-info .tag.changed{border-color:rgba(234,179,8,.3);color:var(--warn)}
|
|
83
|
+
.p-info .tag.gh{border-color:rgba(139,92,246,.3);color:var(--ac)}
|
|
84
|
+
.p-commit{font-size:.65rem;color:var(--dim);margin-bottom:.35rem;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
85
|
+
.p-next{font-size:.65rem;color:var(--info);margin-bottom:.5rem;padding:.25rem .4rem;background:rgba(59,130,246,.08);border-radius:4px;border-left:2px solid var(--info)}
|
|
86
|
+
.p-actions{display:flex;gap:.25rem}
|
|
87
|
+
.p-btn{flex:1;padding:.35rem;border-radius:5px;border:none;font-size:.65rem;font-weight:500;transition:all .12s;text-align:center}
|
|
88
|
+
.p-btn.primary{background:var(--ac);color:white}
|
|
89
|
+
.p-btn.primary:hover{background:var(--ac2)}
|
|
90
|
+
.p-btn.ghost{background:transparent;color:var(--dim);border:1px solid var(--bd)}
|
|
91
|
+
.p-btn.ghost:hover{color:var(--txt);border-color:var(--ac)}
|
|
92
|
+
.p-note-btn{width:28px;flex:none;font-size:.7rem}
|
|
93
|
+
.sessions{display:flex;gap:.4rem;overflow-x:auto;padding:.3rem 0}
|
|
94
|
+
.session{background:var(--s1);border:1px solid var(--bd);border-radius:6px;padding:.5rem .7rem;min-width:180px;cursor:pointer;transition:all .15s}
|
|
95
|
+
.session:hover{border-color:var(--ac)}
|
|
96
|
+
.session-title{font-size:.7rem;font-weight:600;margin-bottom:.15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
97
|
+
.session-meta{font-size:.6rem;color:var(--dim)}
|
|
98
|
+
.ref-content{display:none;background:var(--s1);border:1px solid var(--bd);border-radius:10px;padding:1rem}
|
|
99
|
+
.ref-content.active{display:block}
|
|
100
|
+
.ref-content h3{font-size:.8rem;font-weight:600;margin-bottom:.4rem;color:var(--ac)}
|
|
101
|
+
.ref-content table{width:100%;border-collapse:collapse;font-size:.75rem}
|
|
102
|
+
.ref-content td{padding:.3rem .4rem;border-bottom:1px solid var(--bd);vertical-align:top}
|
|
103
|
+
.ref-content td:first-child{color:var(--ac);font-family:monospace;white-space:nowrap;width:38%}
|
|
104
|
+
.ref-content td:last-child{color:var(--mut)}
|
|
105
|
+
.prompts{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.4rem}
|
|
106
|
+
.prompt{background:var(--s1);border:1px solid var(--bd);border-radius:8px;padding:.6rem;cursor:pointer;transition:all .15s;position:relative}
|
|
107
|
+
.prompt:hover{border-color:var(--ac);background:var(--s2)}
|
|
108
|
+
.prompt h4{font-size:.75rem;font-weight:600;margin-bottom:.2rem}
|
|
109
|
+
.prompt p{font-size:.65rem;color:var(--mut);font-family:monospace;line-height:1.3;max-height:2.6em;overflow:hidden}
|
|
110
|
+
.prompt .prompt-del{display:none;position:absolute;top:.35rem;right:.35rem;width:16px;height:16px;border-radius:4px;border:none;background:var(--bg);color:var(--dim);font-size:.55rem;align-items:center;justify-content:center}
|
|
111
|
+
.prompt:hover .prompt-del{display:flex}
|
|
112
|
+
.prompt .prompt-del:hover{color:var(--err)}
|
|
113
|
+
.links{display:flex;gap:.35rem;flex-wrap:wrap}
|
|
114
|
+
.link{display:flex;align-items:center;gap:.3rem;padding:.35rem .55rem;border-radius:5px;border:1px solid var(--bd);background:var(--s1);color:var(--txt);text-decoration:none;font-size:.7rem;transition:all .12s}
|
|
115
|
+
.link:hover{border-color:var(--ac);background:var(--s2)}
|
|
116
|
+
.last-session-card{display:flex;align-items:center;gap:.75rem;padding:.65rem 1rem;background:linear-gradient(135deg,rgba(139,92,246,.1),rgba(99,102,241,.05));border:1px solid var(--ac);border-radius:10px;margin-bottom:1rem;cursor:pointer;transition:all .15s}
|
|
117
|
+
.last-session-card:hover{background:linear-gradient(135deg,rgba(139,92,246,.18),rgba(99,102,241,.1))}
|
|
118
|
+
.recent-sessions{display:flex;flex-direction:column;gap:.4rem}
|
|
119
|
+
.rs-item{display:flex;align-items:center;gap:.6rem;padding:.5rem .75rem;background:var(--s1);border:1px solid var(--bd);border-radius:8px;cursor:pointer;transition:all .15s}
|
|
120
|
+
.rs-item:hover{border-color:var(--ac);background:var(--s2)}
|
|
121
|
+
.rs-summary{flex:1;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
122
|
+
.rs-meta{display:flex;gap:.5rem;align-items:center;font-size:.65rem;color:var(--dim)}
|
|
123
|
+
.rs-date{color:var(--mut)}
|
|
124
|
+
.rs-msgs{color:var(--ac)}
|
|
125
|
+
.session-count{font-size:.7rem;color:var(--dim);margin-left:.5rem}
|
|
126
|
+
.insights-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin-bottom:1rem}
|
|
127
|
+
.insight-card{background:linear-gradient(135deg,var(--s1),var(--s2));border:1px solid var(--bd);border-radius:12px;padding:.85rem}
|
|
128
|
+
.insight-card h4{font-size:.75rem;color:var(--ac);margin-bottom:.5rem;display:flex;align-items:center;gap:.4rem}
|
|
129
|
+
.insight-card h4::before{content:'';width:8px;height:8px;border-radius:50%}
|
|
130
|
+
.insight-card.wip h4::before{background:var(--warn)}
|
|
131
|
+
.insight-card.keypoints h4::before{background:var(--ok)}
|
|
132
|
+
.insight-card.tags h4::before{background:var(--info)}
|
|
133
|
+
.insight-card.patterns h4::before{background:linear-gradient(135deg,#f59e0b,#8b5cf6)}
|
|
134
|
+
.insight-card.capture h4::before{background:var(--ac)}
|
|
135
|
+
.pattern-item{display:flex;gap:.5rem;padding:.4rem .5rem;background:var(--bg);border-radius:6px;margin-bottom:.3rem;align-items:flex-start}
|
|
136
|
+
.pattern-icon{width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;flex-shrink:0;background:rgba(139,92,246,.15);color:var(--ac)}
|
|
137
|
+
.pattern-text{font-size:.7rem;color:var(--txt);line-height:1.35}
|
|
138
|
+
.pattern-empty{font-size:.7rem;color:var(--dim);font-style:italic;padding:.4rem}
|
|
139
|
+
.wip-item{padding:.4rem .6rem;background:var(--bg);border-radius:6px;margin-bottom:.35rem;cursor:pointer;transition:all .15s}
|
|
140
|
+
.wip-item:hover{border-left:2px solid var(--warn);padding-left:calc(.6rem - 2px)}
|
|
141
|
+
.wip-proj{font-size:.7rem;color:var(--warn);font-weight:600}
|
|
142
|
+
.wip-next{font-size:.65rem;color:var(--mut);margin-top:.15rem}
|
|
143
|
+
.wip-gh-btn{background:transparent;border:1px solid var(--bd);border-radius:4px;padding:2px 6px;cursor:pointer;color:var(--dim);transition:all .15s;display:flex;align-items:center}
|
|
144
|
+
.wip-gh-btn:hover{color:var(--fg);border-color:var(--ac);background:rgba(139,92,246,.1)}
|
|
145
|
+
.kp-item{display:flex;gap:.4rem;padding:.3rem 0;border-bottom:1px solid var(--bd)}
|
|
146
|
+
.kp-item:last-child{border-bottom:none}
|
|
147
|
+
.kp-bullet{color:var(--ok);font-weight:bold}
|
|
148
|
+
.kp-text{font-size:.7rem;flex:1}
|
|
149
|
+
.kp-proj{font-size:.6rem;color:var(--dim)}
|
|
150
|
+
.tag-cloud{display:flex;flex-wrap:wrap;gap:.3rem}
|
|
151
|
+
.tag-pill{padding:.2rem .5rem;background:var(--bg);border:1px solid var(--bd);border-radius:12px;font-size:.6rem;color:var(--mut);cursor:pointer;transition:all .15s}
|
|
152
|
+
.tag-pill:hover{border-color:var(--ac);color:var(--ac)}
|
|
153
|
+
.tag-count{font-size:.5rem;color:var(--dim);margin-left:.2rem}
|
|
154
|
+
.quick-capture{display:flex;gap:.4rem}
|
|
155
|
+
.quick-capture input{flex:1;padding:.4rem .6rem;font-size:.7rem}
|
|
156
|
+
.quick-capture button{padding:.4rem .8rem;background:var(--ac);color:white;border:none;border-radius:6px;font-size:.7rem;font-weight:500}
|
|
157
|
+
.insight-card.coach h4::before{background:linear-gradient(135deg,#f59e0b,#ef4444)}
|
|
158
|
+
.coach-item{display:flex;gap:.5rem;padding:.4rem .5rem;background:var(--bg);border-radius:6px;margin-bottom:.3rem;align-items:flex-start}
|
|
159
|
+
.coach-icon{width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;flex-shrink:0}
|
|
160
|
+
.coach-icon.warning{background:rgba(245,158,11,.15);color:#f59e0b}
|
|
161
|
+
.coach-icon.info{background:rgba(59,130,246,.15);color:#3b82f6}
|
|
162
|
+
.coach-icon.success{background:rgba(34,197,94,.15);color:#22c55e}
|
|
163
|
+
.coach-text{font-size:.7rem;color:var(--txt);line-height:1.35}
|
|
164
|
+
.coach-empty{font-size:.7rem;color:var(--dim);font-style:italic;padding:.4rem}
|
|
165
|
+
.ls-icon{width:28px;height:28px;background:var(--ac);color:white;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700}
|
|
166
|
+
.ls-text{flex:1;font-size:.8rem;overflow:hidden}
|
|
167
|
+
.ls-text strong{color:var(--ac)}
|
|
168
|
+
.ls-text span{color:var(--mut);margin-left:.3rem}
|
|
169
|
+
.ls-date{font-size:.65rem;color:var(--dim)}
|
|
170
|
+
.toast-box{position:fixed;bottom:1.5rem;right:1.5rem;z-index:300;display:flex;flex-direction:column;gap:.3rem}
|
|
171
|
+
.toast{padding:.45rem .8rem;border-radius:6px;font-size:.7rem;font-weight:500;box-shadow:0 4px 16px rgba(0,0,0,.4);animation:slideIn .2s ease;background:#166534;color:#bbf7d0;border:1px solid #22c55e33}
|
|
172
|
+
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
|
|
173
|
+
.add-btn{padding:.2rem .5rem;border-radius:5px;border:1px dashed var(--bd);background:transparent;color:var(--dim);font-size:.65rem;transition:all .15s}
|
|
174
|
+
.add-btn:hover{border-color:var(--ac);color:var(--ac)}
|
|
175
|
+
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.7);display:none;align-items:center;justify-content:center;z-index:100;backdrop-filter:blur(3px)}
|
|
176
|
+
.modal-bg.open{display:flex}
|
|
177
|
+
.modal{background:var(--s1);border:1px solid var(--bd);border-radius:12px;padding:1.1rem;width:90%;max-width:480px;max-height:90vh;overflow-y:auto}
|
|
178
|
+
.modal h3{font-size:.95rem;margin-bottom:.65rem}
|
|
179
|
+
.modal-field{margin-bottom:.5rem}
|
|
180
|
+
.modal-field label{display:block;font-size:.65rem;color:var(--mut);margin-bottom:.15rem;font-weight:500}
|
|
181
|
+
.modal-field input,.modal-field textarea{font-family:inherit;background:var(--bg);color:var(--txt);border:1px solid var(--bd);border-radius:5px;padding:.35rem .5rem;font-size:.75rem;width:100%}
|
|
182
|
+
.modal-field input:focus,.modal-field textarea:focus{outline:none;border-color:var(--ac)}
|
|
183
|
+
.modal-actions{display:flex;gap:.35rem;justify-content:flex-end;margin-top:.85rem}
|
|
184
|
+
.modal-actions button{padding:.35rem .85rem;border-radius:6px;border:none;font-size:.75rem;font-weight:500}
|
|
185
|
+
.modal-actions .save{background:var(--ac);color:white}
|
|
186
|
+
.modal-actions .cancel{background:var(--s2);color:var(--mut)}
|
|
187
|
+
.kbd{display:inline-block;padding:.1rem .3rem;background:var(--bg);border:1px solid var(--bd);border-radius:3px;font-size:.6rem;font-family:monospace;color:var(--dim)}
|
|
188
|
+
.collapsible-head{cursor:pointer;user-select:none}
|
|
189
|
+
.collapsible-head::before{content:'V ';font-size:.6rem;opacity:.5}
|
|
190
|
+
.collapsible.closed .collapsible-head::before{content:'> '}
|
|
191
|
+
.collapsible.closed .collapsible-body{display:none}
|
|
192
|
+
/* Timeline v2 - List-based UX */
|
|
193
|
+
.timeline-container{background:var(--s1);border:1px solid var(--bd);border-radius:12px;padding:1rem;margin-bottom:.5rem}
|
|
194
|
+
.timeline-header{display:flex;align-items:center;gap:1rem;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--bd)}
|
|
195
|
+
.timeline-filters{display:flex;gap:.3rem;flex:1}
|
|
196
|
+
.timeline-filter{padding:.3rem .6rem;font-size:.65rem;background:var(--bg);border:1px solid var(--bd);border-radius:4px;color:var(--mut);cursor:pointer;transition:all .15s}
|
|
197
|
+
.timeline-filter:hover,.timeline-filter.active{border-color:var(--ac);color:var(--ac);background:rgba(139,92,246,.1)}
|
|
198
|
+
.timeline-view-toggle{display:flex;gap:2px;background:var(--bg);border-radius:4px;padding:2px}
|
|
199
|
+
.timeline-view-btn{padding:.25rem .5rem;font-size:.6rem;background:transparent;border:none;color:var(--mut);cursor:pointer;border-radius:3px}
|
|
200
|
+
.timeline-view-btn.active{background:var(--ac);color:white}
|
|
201
|
+
.timeline-list{display:flex;flex-direction:column;gap:.25rem;max-height:320px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--ac) var(--s2)}
|
|
202
|
+
.timeline-list::-webkit-scrollbar{width:6px}
|
|
203
|
+
.timeline-list::-webkit-scrollbar-track{background:var(--s2);border-radius:3px}
|
|
204
|
+
.timeline-list::-webkit-scrollbar-thumb{background:var(--ac);border-radius:3px}
|
|
205
|
+
.timeline-day-header{font-size:.65rem;font-weight:600;color:var(--dim);padding:.4rem .5rem;background:var(--bg);border-radius:4px;margin-top:.5rem;position:sticky;top:0;z-index:10}
|
|
206
|
+
.timeline-day-header:first-child{margin-top:0}
|
|
207
|
+
.timeline-row{display:flex;align-items:center;gap:.5rem;padding:.4rem .5rem;background:var(--bg);border:1px solid transparent;border-radius:6px;cursor:pointer;transition:all .12s}
|
|
208
|
+
.timeline-row:hover{border-color:var(--ac);background:rgba(139,92,246,.08)}
|
|
209
|
+
.timeline-row-time{font-size:.65rem;color:var(--dim);min-width:40px;font-family:monospace}
|
|
210
|
+
.timeline-row-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
|
|
211
|
+
.timeline-row-project{font-size:.7rem;font-weight:600;color:var(--ac);min-width:120px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
212
|
+
.timeline-row-summary{font-size:.7rem;color:var(--txt);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
213
|
+
.timeline-row-actions{display:flex;gap:.2rem;opacity:0;transition:opacity .15s}
|
|
214
|
+
.timeline-row:hover .timeline-row-actions{opacity:1}
|
|
215
|
+
.timeline-row-btn{padding:.2rem .4rem;font-size:.55rem;background:var(--s2);border:1px solid var(--bd);border-radius:3px;color:var(--mut);cursor:pointer}
|
|
216
|
+
.timeline-row-btn:hover{border-color:var(--ac);color:var(--ac)}
|
|
217
|
+
/* Compact dots view */
|
|
218
|
+
.timeline-dots-view{display:none}
|
|
219
|
+
.timeline-dots-view.active{display:block}
|
|
220
|
+
.timeline-list-view{display:block}
|
|
221
|
+
.timeline-list-view.hidden{display:none}
|
|
222
|
+
.timeline-scroll{display:flex;gap:.4rem;overflow-x:auto;padding:.5rem 0;scrollbar-width:thin;scrollbar-color:var(--ac) var(--s2)}
|
|
223
|
+
.timeline-scroll::-webkit-scrollbar{height:5px}
|
|
224
|
+
.timeline-scroll::-webkit-scrollbar-track{background:var(--s2);border-radius:3px}
|
|
225
|
+
.timeline-scroll::-webkit-scrollbar-thumb{background:var(--ac);border-radius:3px}
|
|
226
|
+
.timeline-day{display:flex;flex-direction:column;align-items:center;min-width:65px;padding:.4rem;background:var(--bg);border:1px solid var(--bd);border-radius:8px;transition:all .15s}
|
|
227
|
+
.timeline-day:hover{border-color:var(--ac)}
|
|
228
|
+
.timeline-date{font-size:.6rem;font-weight:600;color:var(--txt);margin-bottom:.35rem}
|
|
229
|
+
.timeline-dots{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;min-height:24px;align-items:center}
|
|
230
|
+
.timeline-dot{width:18px;height:18px;border-radius:50%;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;font-size:.5rem;font-weight:700;color:white;text-shadow:0 1px 2px rgba(0,0,0,.5);transition:transform .1s}
|
|
231
|
+
.timeline-dot:hover{transform:scale(1.3)}
|
|
232
|
+
.timeline-mini-tip{position:fixed;background:var(--s1);border:1px solid var(--ac);border-radius:6px;padding:.35rem .5rem;font-size:.65rem;z-index:300;pointer-events:none;box-shadow:0 4px 12px rgba(0,0,0,.4);white-space:nowrap;display:none}
|
|
233
|
+
.timeline-mini-tip.show{display:block}
|
|
234
|
+
.timeline-mini-tip-proj{font-weight:600;color:var(--ac)}
|
|
235
|
+
.timeline-mini-tip-time{color:var(--dim);margin-left:.3rem}
|
|
236
|
+
.timeline-legend{display:flex;flex-wrap:wrap;gap:.5rem;padding-top:.5rem;margin-top:.5rem;border-top:1px solid var(--bd)}
|
|
237
|
+
.timeline-legend-item{display:flex;align-items:center;gap:.3rem;font-size:.6rem;color:var(--mut);cursor:pointer;padding:.2rem .4rem;border-radius:4px;transition:all .15s;border:1px solid transparent}
|
|
238
|
+
.timeline-legend-item:hover,.timeline-legend-item.active{background:var(--s2);border-color:var(--bd)}
|
|
239
|
+
.timeline-legend-item.dimmed{opacity:.3}
|
|
240
|
+
.timeline-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
|
|
241
|
+
/* GitHub-style heatmap */
|
|
242
|
+
.timeline-heatmap-view{display:none;padding:.5rem 0}
|
|
243
|
+
.timeline-heatmap-view.active{display:block}
|
|
244
|
+
.heatmap-container{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.5rem}
|
|
245
|
+
.heatmap-months{display:flex;font-size:.55rem;color:var(--dim);margin-bottom:.25rem;margin-left:28px}
|
|
246
|
+
.heatmap-month{text-align:center}
|
|
247
|
+
.heatmap-wrapper{display:flex;gap:3px}
|
|
248
|
+
.heatmap-days{display:flex;flex-direction:column;gap:3px;font-size:.5rem;color:var(--dim);padding-right:4px}
|
|
249
|
+
.heatmap-day-label{height:11px;line-height:11px;text-align:right}
|
|
250
|
+
.heatmap-grid{display:flex;gap:3px}
|
|
251
|
+
.heatmap-week{display:flex;flex-direction:column;gap:3px}
|
|
252
|
+
.heatmap-cell{width:11px;height:11px;border-radius:2px;background:var(--s2);cursor:pointer;transition:all .1s}
|
|
253
|
+
.heatmap-cell:hover{transform:scale(1.3);outline:2px solid var(--ac)}
|
|
254
|
+
.heatmap-cell.l0{background:var(--s2)}
|
|
255
|
+
.heatmap-cell.l1{background:rgba(139,92,246,.25)}
|
|
256
|
+
.heatmap-cell.l2{background:rgba(139,92,246,.5)}
|
|
257
|
+
.heatmap-cell.l3{background:rgba(139,92,246,.75)}
|
|
258
|
+
.heatmap-cell.l4{background:rgba(139,92,246,1)}
|
|
259
|
+
.heatmap-legend{display:flex;align-items:center;gap:.5rem;justify-content:flex-end;margin-top:.5rem;font-size:.55rem;color:var(--dim)}
|
|
260
|
+
.heatmap-legend-label{margin-right:.25rem}
|
|
261
|
+
.heatmap-legend-cells{display:flex;gap:2px}
|
|
262
|
+
.heatmap-legend-cell{width:11px;height:11px;border-radius:2px}
|
|
263
|
+
.heatmap-stats{display:flex;gap:1.5rem;margin-top:.75rem;padding-top:.5rem;border-top:1px solid var(--bd)}
|
|
264
|
+
.heatmap-stat{text-align:center}
|
|
265
|
+
.heatmap-stat-value{font-size:1.2rem;font-weight:700;color:var(--ac)}
|
|
266
|
+
.heatmap-stat-label{font-size:.6rem;color:var(--dim);margin-top:.15rem}
|
|
267
|
+
@media(max-width:768px){.projects{grid-template-columns:1fr}.prompts{grid-template-columns:1fr}.stats-bar{flex-direction:column;gap:.5rem}.stat-divider{display:none}.persistent-bar{flex-direction:column;align-items:stretch}.tab-bar{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.tab-bar::-webkit-scrollbar{display:none}.search-box{max-width:none}}
|
|
268
|
+
.search-results{position:absolute;top:100%;left:0;right:0;max-height:400px;overflow-y:auto;background:var(--s1);border:1px solid var(--bd);border-top:none;border-radius:0 0 8px 8px;z-index:50;display:none;box-shadow:0 4px 12px rgba(0,0,0,.3)}
|
|
269
|
+
.search-results.active{display:block}
|
|
270
|
+
.search-results-header{padding:.5rem .75rem;font-size:.65rem;color:var(--dim);border-bottom:1px solid var(--bd);display:flex;justify-content:space-between}
|
|
271
|
+
.search-result{padding:.6rem .75rem;border-bottom:1px solid var(--bd);cursor:pointer;transition:background .15s}
|
|
272
|
+
.search-result:hover{background:var(--s2)}
|
|
273
|
+
.search-result:last-child{border-bottom:none}
|
|
274
|
+
.sr-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}
|
|
275
|
+
.sr-project{font-size:.7rem;font-weight:600;color:var(--ac)}
|
|
276
|
+
.sr-date{font-size:.6rem;color:var(--dim)}
|
|
277
|
+
.sr-tags{display:flex;gap:.2rem;margin-left:auto}
|
|
278
|
+
.sr-tag{font-size:.55rem;padding:.1rem .3rem;background:var(--s2);border-radius:3px;color:var(--mut)}
|
|
279
|
+
.sr-summary{font-size:.7rem;color:var(--mut);line-height:1.4}
|
|
280
|
+
.sr-summary mark{background:rgba(139,92,246,.3);color:var(--txt);padding:0 2px;border-radius:2px}
|
|
281
|
+
.sr-keypoint{font-size:.65rem;color:var(--info);margin-top:.2rem;padding-left:.5rem;border-left:2px solid var(--info)}
|
|
282
|
+
.sr-empty{padding:1rem;text-align:center;font-size:.75rem;color:var(--dim)}
|
|
283
|
+
.report-modal{max-width:700px}
|
|
284
|
+
.report-preview{background:white;color:#1a1a1a;padding:2rem;border-radius:8px;margin:.75rem 0;max-height:60vh;overflow-y:auto;font-size:.85rem;line-height:1.6}
|
|
285
|
+
.report-preview h1{font-size:1.4rem;color:#2d3748;border-bottom:2px solid #8b5cf6;padding-bottom:.5rem;margin-bottom:1rem}
|
|
286
|
+
.report-preview h2{font-size:1.1rem;color:#4a5568;margin-top:1.2rem;margin-bottom:.5rem;border-left:3px solid #8b5cf6;padding-left:.5rem}
|
|
287
|
+
.report-preview h3{font-size:.95rem;color:#718096;margin-top:.8rem}
|
|
288
|
+
.report-preview ul{list-style:disc;margin-left:1.5rem}
|
|
289
|
+
.report-preview li{margin:.3rem 0}
|
|
290
|
+
.report-preview .meta{color:#718096;font-size:.75rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid #e2e8f0}
|
|
291
|
+
.report-preview .total{background:#f7fafc;padding:.75rem;border-radius:6px;margin-top:1rem;font-weight:600}
|
|
292
|
+
.report-preview .tags{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.5rem}
|
|
293
|
+
.report-preview .tag{background:#e9d5ff;color:#7c3aed;padding:.15rem .4rem;border-radius:4px;font-size:.7rem}
|
|
294
|
+
.report-actions{display:flex;gap:.5rem;flex-wrap:wrap}
|
|
295
|
+
.report-actions button{padding:.5rem 1rem;border-radius:6px;border:none;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .15s}
|
|
296
|
+
.report-actions .btn-pdf{background:linear-gradient(135deg,#ef4444,#dc2626);color:white}
|
|
297
|
+
.report-actions .btn-pdf:hover{transform:translateY(-1px)}
|
|
298
|
+
.report-actions .btn-md{background:linear-gradient(135deg,#3b82f6,#2563eb);color:white}
|
|
299
|
+
.report-actions .btn-md:hover{transform:translateY(-1px)}
|
|
300
|
+
.report-actions .btn-copy{background:var(--s2);color:var(--txt);border:1px solid var(--bd)}
|
|
301
|
+
@media print{.report-preview{max-height:none;box-shadow:none}}
|
|
302
|
+
/* Plugin Catalog */
|
|
303
|
+
.plugin-toolbar{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}
|
|
304
|
+
.plugin-toolbar input[type=search]{flex:1;min-width:200px;padding:.5rem .75rem;border-radius:8px;border:1px solid var(--bd);background:var(--s2);color:var(--txt);font-size:.85rem}
|
|
305
|
+
.plugin-toolbar input[type=search]:focus{outline:none;border-color:var(--ac)}
|
|
306
|
+
.plugin-filter-group{display:flex;gap:.25rem;flex-wrap:wrap}
|
|
307
|
+
.plugin-filter-btn{padding:.35rem .65rem;border-radius:6px;border:1px solid var(--bd);background:var(--s2);color:var(--mut);font-size:.7rem;cursor:pointer;transition:all .15s;white-space:nowrap}
|
|
308
|
+
.plugin-filter-btn:hover{border-color:var(--ac);color:var(--txt)}
|
|
309
|
+
.plugin-filter-btn.active{background:var(--ac);color:white;border-color:var(--ac)}
|
|
310
|
+
.plugins-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1rem}
|
|
311
|
+
.pl-card{background:var(--s1);border:1px solid var(--bd);border-radius:12px;padding:1rem;border-left:4px solid var(--ac);transition:all .2s;cursor:default;display:flex;flex-direction:column;gap:.5rem}
|
|
312
|
+
.pl-card:hover{border-color:var(--ac);box-shadow:0 4px 12px rgba(0,0,0,.15)}
|
|
313
|
+
.pl-card.disabled{opacity:.5}
|
|
314
|
+
.pl-card[data-type=mcp]{border-left-color:#14b8a6}
|
|
315
|
+
.pl-card[data-type=workflow]{border-left-color:#8b5cf6}
|
|
316
|
+
.pl-card[data-type=skill]{border-left-color:#22c55e}
|
|
317
|
+
.pl-card[data-type=command]{border-left-color:#3b82f6}
|
|
318
|
+
.pl-card[data-type=agent]{border-left-color:#f59e0b}
|
|
319
|
+
.pl-top{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
|
|
320
|
+
.pl-status{width:8px;height:8px;border-radius:50%;flex-shrink:0}
|
|
321
|
+
.pl-status.on{background:#22c55e}
|
|
322
|
+
.pl-status.off{background:#6b7280}
|
|
323
|
+
.pl-name{font-weight:600;font-size:.9rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
324
|
+
.pl-version{font-size:.65rem;color:var(--dim);background:var(--s2);padding:.15rem .4rem;border-radius:4px}
|
|
325
|
+
.pl-type-badge{font-size:.6rem;text-transform:uppercase;font-weight:700;padding:.15rem .4rem;border-radius:4px;color:white}
|
|
326
|
+
.pl-type-badge[data-t=mcp]{background:#14b8a6}
|
|
327
|
+
.pl-type-badge[data-t=workflow]{background:#8b5cf6}
|
|
328
|
+
.pl-type-badge[data-t=skill]{background:#22c55e}
|
|
329
|
+
.pl-type-badge[data-t=command]{background:#3b82f6}
|
|
330
|
+
.pl-type-badge[data-t=agent]{background:#f59e0b}
|
|
331
|
+
.pl-desc{font-size:.8rem;color:var(--mut);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
|
|
332
|
+
.pl-meta{display:flex;gap:.35rem;flex-wrap:wrap;align-items:center}
|
|
333
|
+
.pl-badge{font-size:.65rem;padding:.15rem .35rem;border-radius:4px;background:var(--s2);color:var(--dim);border:1px solid var(--bd)}
|
|
334
|
+
.pl-badge.highlight{background:rgba(139,92,246,.15);color:var(--ac);border-color:var(--ac)}
|
|
335
|
+
.pl-marketplace{font-size:.65rem;color:var(--dim);margin-left:auto}
|
|
336
|
+
.pl-actions{display:flex;gap:.4rem;margin-top:auto;padding-top:.5rem}
|
|
337
|
+
.pl-actions button{flex:1;padding:.4rem .5rem;border-radius:6px;border:1px solid var(--bd);background:var(--s2);color:var(--txt);font-size:.7rem;cursor:pointer;transition:all .15s;text-align:center}
|
|
338
|
+
.pl-actions button:hover{border-color:var(--ac);color:var(--ac)}
|
|
339
|
+
.pl-actions button.primary{background:var(--ac);color:white;border-color:var(--ac)}
|
|
340
|
+
.pl-actions button.primary:hover{background:var(--ac2)}
|
|
341
|
+
.pl-detail-section{margin-top:1rem}
|
|
342
|
+
.pl-detail-section h4{font-size:.85rem;margin-bottom:.5rem;color:var(--ac);display:flex;align-items:center;gap:.4rem}
|
|
343
|
+
.pl-detail-item{padding:.5rem .75rem;background:var(--s2);border-radius:8px;margin-bottom:.4rem;font-size:.8rem;display:flex;flex-direction:column;gap:.25rem}
|
|
344
|
+
.pl-detail-item .item-name{font-weight:600;display:flex;align-items:center;gap:.5rem}
|
|
345
|
+
.pl-detail-item .item-desc{color:var(--mut);font-size:.75rem}
|
|
346
|
+
.pl-detail-item .item-meta{font-size:.65rem;color:var(--dim)}
|
|
347
|
+
.pl-detail-item button{padding:.25rem .5rem;border-radius:4px;border:1px solid var(--bd);background:var(--bg);color:var(--txt);font-size:.65rem;cursor:pointer}
|
|
348
|
+
.pl-detail-item button:hover{border-color:var(--ac);color:var(--ac)}
|
|
349
|
+
.pl-keywords{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.5rem}
|
|
350
|
+
.pl-keywords span{background:rgba(139,92,246,.1);color:var(--ac);padding:.15rem .35rem;border-radius:4px;font-size:.65rem}
|
|
351
|
+
.pl-empty{text-align:center;padding:3rem 1rem;color:var(--dim);font-size:.9rem}
|
|
352
|
+
/* TTS Player Modal */
|
|
353
|
+
.tts-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.85);display:none;z-index:210;align-items:center;justify-content:center}
|
|
354
|
+
.tts-modal-bg.open{display:flex}
|
|
355
|
+
.tts-modal{width:90%;max-width:600px;background:var(--s1);border-radius:16px;border:1px solid var(--bd);overflow:hidden}
|
|
356
|
+
.tts-header{display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;background:var(--s2);border-bottom:1px solid var(--bd)}
|
|
357
|
+
.tts-title{flex:1;font-size:1rem;font-weight:600;display:flex;align-items:center;gap:.5rem}
|
|
358
|
+
.tts-title svg{width:20px;height:20px;fill:var(--ac)}
|
|
359
|
+
.tts-close{width:32px;height:32px;border-radius:8px;border:1px solid var(--bd);background:transparent;color:var(--txt);font-size:1rem;cursor:pointer}
|
|
360
|
+
.tts-close:hover{border-color:var(--err);color:var(--err)}
|
|
361
|
+
.tts-body{padding:1.5rem}
|
|
362
|
+
.tts-current{background:var(--bg);border-radius:12px;padding:1.25rem;font-size:1rem;line-height:1.6;min-height:80px;max-height:120px;overflow-y:auto;margin-bottom:1rem;border:1px solid var(--bd)}
|
|
363
|
+
.tts-progress-bar{height:6px;background:var(--s2);border-radius:3px;overflow:hidden;margin-bottom:1rem}
|
|
364
|
+
.tts-progress-fill{height:100%;background:linear-gradient(90deg,var(--ac),var(--ac2));border-radius:3px;transition:width .2s ease}
|
|
365
|
+
.tts-controls{display:flex;align-items:center;gap:.75rem;justify-content:center;margin-bottom:1rem}
|
|
366
|
+
.tts-btn{width:44px;height:44px;border-radius:50%;border:2px solid var(--bd);background:var(--s2);color:var(--txt);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}
|
|
367
|
+
.tts-btn:hover{border-color:var(--ac);color:var(--ac)}
|
|
368
|
+
.tts-btn.play{width:56px;height:56px;font-size:1.2rem;background:var(--ac);border-color:var(--ac);color:white}
|
|
369
|
+
.tts-btn.play:hover{background:var(--ac2);border-color:var(--ac2)}
|
|
370
|
+
.tts-slider{flex:1;height:6px;-webkit-appearance:none;background:var(--s2);border-radius:3px;cursor:pointer}
|
|
371
|
+
.tts-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--ac);cursor:pointer}
|
|
372
|
+
.tts-footer{display:flex;align-items:center;justify-content:space-between;padding-top:1rem;border-top:1px solid var(--bd)}
|
|
373
|
+
.tts-counter{font-size:.8rem;color:var(--dim)}
|
|
374
|
+
.tts-rate-control{display:flex;align-items:center;gap:.5rem}
|
|
375
|
+
.tts-rate-control label{font-size:.75rem;color:var(--dim)}
|
|
376
|
+
.tts-rate-select{padding:.4rem .6rem;border-radius:6px;border:1px solid var(--bd);background:var(--bg);color:var(--txt);font-size:.8rem;cursor:pointer}
|
|
377
|
+
.tts-rate-display{font-size:.8rem;color:var(--ac);font-weight:600;min-width:35px}
|
|
378
|
+
.tts-full-text{margin-top:1rem;padding:1rem;background:var(--bg);border-radius:8px;font-size:.75rem;color:var(--dim);max-height:100px;overflow-y:auto;line-height:1.5;border:1px solid var(--bd)}
|
|
379
|
+
.tts-full-text summary{cursor:pointer;font-weight:500;color:var(--txt);margin-bottom:.5rem}
|
|
380
|
+
/* TTS Advanced Config */
|
|
381
|
+
.tts-modal-advanced{max-width:700px}
|
|
382
|
+
.tts-config{padding:1.5rem;background:var(--bg);border-bottom:1px solid var(--bd)}
|
|
383
|
+
.tts-config-row{display:flex;gap:1rem;margin-bottom:1.25rem}
|
|
384
|
+
.tts-config-item{flex:1}
|
|
385
|
+
.tts-config-item label{display:block;font-size:.7rem;color:var(--dim);margin-bottom:.4rem;text-transform:uppercase;letter-spacing:.5px}
|
|
386
|
+
.tts-config-item select{width:100%;padding:.6rem .8rem;border-radius:8px;border:1px solid var(--bd);background:var(--s1);color:var(--txt);font-size:.85rem;cursor:pointer}
|
|
387
|
+
.tts-config-item select:focus{border-color:var(--ac);outline:none}
|
|
388
|
+
.tts-detail-section{margin-bottom:1.25rem}
|
|
389
|
+
.tts-detail-section>label{display:block;font-size:.7rem;color:var(--dim);margin-bottom:.75rem;text-transform:uppercase;letter-spacing:.5px}
|
|
390
|
+
.tts-detail-slider-wrap{position:relative;padding:0 .5rem}
|
|
391
|
+
.tts-detail-slider{width:100%;height:8px;-webkit-appearance:none;background:linear-gradient(90deg,var(--ok),var(--ac),var(--ac2));border-radius:4px;cursor:pointer}
|
|
392
|
+
.tts-detail-slider::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:white;border:3px solid var(--ac);cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.3)}
|
|
393
|
+
.tts-detail-labels{display:flex;justify-content:space-between;margin-top:.5rem}
|
|
394
|
+
.tts-detail-labels span{font-size:.65rem;color:var(--dim);transition:all .15s}
|
|
395
|
+
.tts-detail-labels span.active{color:var(--ac);font-weight:600}
|
|
396
|
+
.tts-detail-desc{text-align:center;font-size:.75rem;color:var(--txt);margin-top:.75rem;padding:.5rem;background:var(--s1);border-radius:6px}
|
|
397
|
+
.tts-generate-btn{width:100%;padding:.9rem;border-radius:10px;border:none;background:linear-gradient(135deg,var(--ac),var(--ac2));color:white;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:0 4px 12px rgba(139,92,246,.3)}
|
|
398
|
+
.tts-generate-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(139,92,246,.4)}
|
|
399
|
+
.tts-generate-btn:active{transform:translateY(0)}
|
|
400
|
+
/* Session Replay Modal */
|
|
401
|
+
.replay-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.9);display:none;z-index:200;flex-direction:column}
|
|
402
|
+
.replay-modal-bg.open{display:flex}
|
|
403
|
+
.replay-header{display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;background:var(--s1);border-bottom:1px solid var(--bd)}
|
|
404
|
+
.replay-title{flex:1;font-size:1rem;font-weight:600}
|
|
405
|
+
.replay-meta{font-size:.7rem;color:var(--dim)}
|
|
406
|
+
.replay-close{width:36px;height:36px;border-radius:8px;border:1px solid var(--bd);background:var(--bg);color:var(--txt);font-size:1.2rem;cursor:pointer;display:flex;align-items:center;justify-content:center}
|
|
407
|
+
.replay-close:hover{border-color:var(--err);color:var(--err)}
|
|
408
|
+
.replay-body{flex:1;overflow-y:auto;padding:1.5rem;display:flex;flex-direction:column;gap:.75rem}
|
|
409
|
+
.replay-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:1rem;color:var(--dim)}
|
|
410
|
+
.replay-empty-icon{font-size:3rem;opacity:.3}
|
|
411
|
+
.replay-empty-text{font-size:.9rem}
|
|
412
|
+
.replay-load-btn{padding:.6rem 1.2rem;background:var(--ac);color:white;border:none;border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer}
|
|
413
|
+
.replay-load-btn:hover{background:var(--ac2)}
|
|
414
|
+
.replay-msg{max-width:85%;padding:.75rem 1rem;border-radius:12px;font-size:.85rem;line-height:1.5;animation:fadeInMsg .2s ease}
|
|
415
|
+
@keyframes fadeInMsg{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
|
|
416
|
+
.replay-msg.user{align-self:flex-start;background:var(--info);color:white;border-bottom-left-radius:4px}
|
|
417
|
+
.replay-msg.assistant{align-self:flex-end;background:var(--s2);color:var(--txt);border-bottom-right-radius:4px}
|
|
418
|
+
.replay-msg.tool{align-self:center;background:var(--bg);color:var(--mut);font-family:monospace;font-size:.75rem;padding:.5rem .75rem;border:1px solid var(--bd);max-width:95%;overflow-x:auto}
|
|
419
|
+
.replay-msg-role{font-size:.6rem;text-transform:uppercase;opacity:.7;margin-bottom:.25rem;font-weight:600}
|
|
420
|
+
.replay-msg-content{white-space:pre-wrap;word-break:break-word}
|
|
421
|
+
.replay-msg-content code{background:rgba(0,0,0,.2);padding:.1rem .3rem;border-radius:3px;font-family:monospace;font-size:.8em}
|
|
422
|
+
.replay-msg-time{font-size:.55rem;opacity:.5;margin-top:.25rem;text-align:right}
|
|
423
|
+
.replay-controls{display:flex;align-items:center;gap:1rem;padding:1rem 1.5rem;background:var(--s1);border-top:1px solid var(--bd)}
|
|
424
|
+
.replay-btn{width:40px;height:40px;border-radius:8px;border:1px solid var(--bd);background:var(--bg);color:var(--txt);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem}
|
|
425
|
+
.replay-btn:hover{border-color:var(--ac);color:var(--ac)}
|
|
426
|
+
.replay-btn.active{background:var(--ac);color:white;border-color:var(--ac)}
|
|
427
|
+
.replay-slider{flex:1;height:6px;-webkit-appearance:none;background:var(--bd);border-radius:3px;cursor:pointer}
|
|
428
|
+
.replay-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:var(--ac);border-radius:50%;cursor:pointer}
|
|
429
|
+
.replay-slider::-moz-range-thumb{width:16px;height:16px;background:var(--ac);border-radius:50%;cursor:pointer;border:none}
|
|
430
|
+
.replay-progress{font-size:.75rem;color:var(--dim);min-width:80px;text-align:center}
|
|
431
|
+
.replay-speed{padding:.3rem .6rem;border-radius:4px;border:1px solid var(--bd);background:var(--bg);color:var(--txt);font-size:.7rem;cursor:pointer}
|
|
432
|
+
.replay-folder-info{padding:.5rem .75rem;background:var(--s2);border-radius:6px;font-size:.7rem;color:var(--mut);display:flex;align-items:center;gap:.5rem}
|
|
433
|
+
.replay-folder-info code{background:var(--bg);padding:.2rem .4rem;border-radius:4px;font-family:monospace}
|
|
434
|
+
.replay-tool-summary{background:var(--bg);border:1px solid var(--bd);border-radius:8px;padding:.5rem .75rem;margin:.25rem 0;font-size:.75rem}
|
|
435
|
+
.replay-tool-name{color:var(--ac);font-weight:600;font-family:monospace}
|
|
436
|
+
.replay-tool-params{color:var(--dim);font-size:.7rem;margin-top:.25rem;max-height:100px;overflow-y:auto}
|
|
437
|
+
.cost-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1rem}
|
|
438
|
+
.cost-stat-card{background:var(--s1);border:1px solid var(--bd);border-radius:10px;padding:1rem;text-align:center}
|
|
439
|
+
.cost-stat-card .cost-val{font-size:1.4rem;font-weight:700;color:var(--txt)}
|
|
440
|
+
.cost-stat-card .cost-val.warn{color:var(--warn)}
|
|
441
|
+
.cost-stat-card .cost-val.err{color:var(--err)}
|
|
442
|
+
.cost-stat-card .cost-val.ok{color:var(--ok)}
|
|
443
|
+
.cost-stat-card .cost-label{font-size:.7rem;color:var(--mut);margin-top:.25rem}
|
|
444
|
+
.cost-charts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;margin-bottom:1rem}
|
|
445
|
+
.cost-period-bar{display:flex;gap:.4rem;justify-content:center;margin-bottom:.75rem;flex-wrap:wrap}
|
|
446
|
+
.btn-csv{background:var(--s2);color:var(--mut);border:1px solid var(--bd);border-radius:6px;padding:.3rem .6rem;font-size:.7rem;cursor:pointer;font-weight:500;transition:all .15s}
|
|
447
|
+
.btn-csv:hover{background:var(--ac);color:white;border-color:var(--ac)}
|
|
448
|
+
.compare-fab{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%);background:var(--ac);color:white;border:none;border-radius:2rem;padding:.6rem 1.2rem;font-size:.85rem;font-weight:600;cursor:pointer;z-index:50;box-shadow:0 4px 12px rgba(139,92,246,.4);transition:all .2s}
|
|
449
|
+
.compare-fab:hover{box-shadow:0 6px 16px rgba(139,92,246,.5)}
|
|
450
|
+
.p-check{position:absolute;top:.5rem;left:.5rem;width:1.1rem;height:1.1rem;accent-color:var(--ac);cursor:pointer;z-index:2}
|
|
451
|
+
.compare-table{width:100%;border-collapse:collapse;font-size:.75rem}
|
|
452
|
+
.compare-table th{text-align:left;padding:.4rem .5rem;color:var(--dim);font-weight:500;border-bottom:1px solid var(--bd);white-space:nowrap}
|
|
453
|
+
.compare-table td{padding:.4rem .5rem;border-bottom:1px solid var(--bd)}
|
|
454
|
+
.compare-table .metric-label{color:var(--mut);font-weight:500}
|
|
455
|
+
.cost-chart-card{background:var(--s1);border:1px solid var(--bd);border-radius:10px;padding:1rem}
|
|
456
|
+
.cost-chart-card h4{font-size:.75rem;color:var(--mut);margin-bottom:.5rem}
|
|
457
|
+
.cost-chart-wrapper{height:220px;position:relative}
|
|
458
|
+
.cost-currency-toggle{padding:.3rem .5rem;border-radius:6px;border:1px solid var(--bd);background:var(--bg);color:var(--txt);font-size:.7rem;cursor:pointer;font-weight:600;appearance:none;-webkit-appearance:none;padding-right:1.2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23888'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .4rem center}
|
|
459
|
+
.cost-currency-toggle:hover,.cost-currency-toggle:focus{border-color:var(--ac);color:var(--ac);outline:none}
|
|
460
|
+
.cost-table{width:100%;border-collapse:collapse;font-size:.75rem}
|
|
461
|
+
.cost-table th{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--bd);color:var(--mut);font-weight:600}
|
|
462
|
+
.cost-table td{padding:.4rem .6rem;border-bottom:1px solid var(--s2)}
|
|
463
|
+
.cost-plan-bar{height:18px;background:var(--s2);border-radius:4px;overflow:hidden;margin:.2rem 0}
|
|
464
|
+
.cost-plan-fill{height:100%;border-radius:4px;transition:width .3s}
|
|
465
|
+
.cost-plan-fill.ok{background:var(--ok)}
|
|
466
|
+
.cost-plan-fill.warn{background:var(--warn)}
|
|
467
|
+
.cost-plan-fill.err{background:var(--err)}
|
|
468
|
+
@media(max-width:768px){.cost-stats,.cost-charts-grid{grid-template-columns:1fr}}
|
|
469
|
+
.disk-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-bottom:1rem}
|
|
470
|
+
.disk-stat-card{background:var(--s1);border:1px solid var(--bd);border-radius:10px;padding:1rem;text-align:center}
|
|
471
|
+
.disk-stat-card .disk-val{font-size:1.4rem;font-weight:700;color:var(--txt)}
|
|
472
|
+
.disk-stat-card .disk-val.warn{color:var(--warn)}
|
|
473
|
+
.disk-stat-card .disk-val.err{color:var(--err)}
|
|
474
|
+
.disk-stat-card .disk-val.ok{color:var(--ok)}
|
|
475
|
+
.disk-stat-card .disk-label{font-size:.7rem;color:var(--mut);margin-top:.25rem}
|
|
476
|
+
.disk-charts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem;margin-bottom:1rem}
|
|
477
|
+
.disk-chart-card{background:var(--s1);border:1px solid var(--bd);border-radius:10px;padding:1rem}
|
|
478
|
+
.disk-chart-card h4{font-size:.75rem;color:var(--mut);margin-bottom:.5rem}
|
|
479
|
+
.disk-chart-wrapper{height:220px;position:relative}
|
|
480
|
+
.disk-table{width:100%;border-collapse:collapse;font-size:.75rem}
|
|
481
|
+
.disk-table th{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--bd);color:var(--mut);font-weight:600}
|
|
482
|
+
.disk-table td{padding:.4rem .6rem;border-bottom:1px solid var(--s2)}
|
|
483
|
+
.disk-gauge{height:22px;background:var(--s2);border-radius:6px;overflow:hidden;margin:.5rem 0;position:relative}
|
|
484
|
+
.disk-gauge-fill{height:100%;border-radius:6px;transition:width .3s}
|
|
485
|
+
.disk-gauge-fill.ok{background:var(--ok)}
|
|
486
|
+
.disk-gauge-fill.warn{background:var(--warn)}
|
|
487
|
+
.disk-gauge-fill.err{background:var(--err)}
|
|
488
|
+
.disk-gauge-text{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:600;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}
|
|
489
|
+
@media(max-width:768px){.disk-stats,.disk-charts-grid{grid-template-columns:1fr}}
|