Mohammed AL Sarraj commited on
Commit
2741f14
·
1 Parent(s): 30e2e2f

restore light theme tools + light landing pages + height fix

Browse files
app/home/templates/home/index.html CHANGED
@@ -5,48 +5,45 @@
5
  <link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600&display=swap" rel="stylesheet">
6
  <style>
7
  *{box-sizing:border-box;margin:0;padding:0}
8
- .dk{background:#0e0e10;color:#f0f0f2;min-height:100vh;font-family:'DM Sans',sans-serif;display:flex;flex-direction:column}
9
  .dk a{color:inherit;text-decoration:none}
10
- .dk-nav{position:sticky;top:0;z-index:50;height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 2rem;background:rgba(14,14,16,.9);backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.06)}
11
  .dk-logo{display:flex;align-items:center;gap:10px}
12
- .dk-logo-icon{width:26px;height:26px;border-radius:6px;background:#00d97e;display:flex;align-items:center;justify-content:center;font-family:'Space Mono',monospace;font-weight:700;font-size:11px;color:#0e0e10}
13
- .dk-logo-name{font-family:'Space Mono',monospace;font-weight:700;font-size:14px;letter-spacing:-.02em}
14
- .dk-badge{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:3px 10px;border-radius:100px;color:#00d97e;border:1px solid rgba(0,217,126,.3)}
15
- .dk-hero{flex:0 0 auto;padding:6rem 2rem 5rem;max-width:860px;margin:0 auto;width:100%;text-align:center}
16
- .dk-eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#00d97e;margin-bottom:1.75rem}
17
- .dk-eyebrow span{width:28px;height:1px;background:rgba(0,217,126,.45)}
18
- .dk-h1{font-family:'Space Mono',monospace;font-size:clamp(2.2rem,5vw,3.8rem);font-weight:700;line-height:1.08;letter-spacing:-.04em;color:#fff;margin-bottom:1.25rem}
19
- .dk-h1 em{color:#00d97e;font-style:normal}
20
- .cursor{display:inline-block;width:3px;height:.85em;background:#00d97e;vertical-align:middle;margin-left:2px;animation:blink 1s step-end infinite}
21
  @keyframes blink{50%{opacity:0}}
22
- .dk-sub{font-size:1rem;line-height:1.75;color:#6b7280;max-width:480px;margin:0 auto 2.5rem}
23
- .dk-meta{display:flex;align-items:center;justify-content:center;gap:1.5rem;font-family:'Space Mono',monospace;font-size:11px;color:#4b5563}
24
  .dk-meta span{display:flex;align-items:center;gap:6px}
25
- .dk-meta span::before{content:'';width:4px;height:4px;border-radius:50%;background:#00d97e}
26
- .dk-section{flex:1;background:#0a0a0c;border-top:1px solid rgba(255,255,255,.05);padding:3.5rem 2rem 5rem}
27
- .dk-section-label{text-align:center;font-family:'Space Mono',monospace;font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#374151;margin-bottom:2rem}
28
- .dk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:1px;max-width:1060px;margin:0 auto;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.04);border-radius:12px;overflow:hidden}
29
- .dk-card{background:#111113;padding:1.6rem;display:flex;flex-direction:column;gap:14px;transition:background .12s}
30
- .dk-card:hover{background:rgba(0,217,126,.04)}
31
- .dk-card:hover .dk-arr{color:#00d97e;transform:translate(2px,-2px)}
32
  .dk-card-top{display:flex;align-items:flex-start;justify-content:space-between}
33
- .dk-icon{width:34px;height:34px;border-radius:7px;background:rgba(0,217,126,.1);border:1px solid rgba(0,217,126,.18);display:flex;align-items:center;justify-content:center;color:#00d97e}
34
- .dk-arr{color:#374151;font-size:18px;transition:all .12s}
35
- .dk-card-name{font-size:.9rem;font-weight:600;color:#e5e7eb;letter-spacing:-.01em}
36
- .dk-card-desc{font-size:.8rem;line-height:1.65;color:#6b7280}
37
- .dk-footer{border-top:1px solid rgba(255,255,255,.05);padding:1rem 2rem;display:flex;align-items:center;justify-content:space-between;background:#0e0e10;flex-shrink:0}
38
- .dk-status{display:flex;align-items:center;gap:8px;font-family:'Space Mono',monospace;font-size:11px;color:#374151}
39
- .dot{width:6px;height:6px;border-radius:50%;background:#00d97e;box-shadow:0 0 6px #00d97e}
40
  @keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
41
  .dk-hero>*{animation:fadeUp .45s ease both}
42
  .dk-eyebrow{animation-delay:.04s}.dk-h1{animation-delay:.1s}.dk-sub{animation-delay:.18s}.dk-meta{animation-delay:.26s}
43
  </style>
44
  <div class="dk">
45
  <nav class="dk-nav">
46
- <div class="dk-logo">
47
- <div class="dk-logo-icon">&gt;_</div>
48
- <span class="dk-logo-name">DevKit</span>
49
- </div>
50
  <span class="dk-badge">6 tools</span>
51
  </nav>
52
  <div class="dk-hero">
@@ -58,41 +55,14 @@
58
  <div class="dk-section">
59
  <div class="dk-section-label">// pick a tool</div>
60
  <div class="dk-grid">
61
- <a class="dk-card" href="/schema-detective/">
62
- <div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">table_view</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div>
63
- <div class="dk-card-name">Schema Detective</div>
64
- <div class="dk-card-desc">Audit database schemas for vulnerabilities, missing indexes, and design flaws.</div>
65
- </a>
66
- <a class="dk-card" href="/test-forge/">
67
- <div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">science</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div>
68
- <div class="dk-card-name">Test Forge</div>
69
- <div class="dk-card-desc">Generate complete, runnable test suites across 8 frameworks from any source code.</div>
70
- </a>
71
- <a class="dk-card" href="/sql-whisperer/">
72
- <div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">data_object</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div>
73
- <div class="dk-card-name">SQL Whisperer</div>
74
- <div class="dk-card-desc">Convert plain-English questions to SQL for PostgreSQL, MySQL, SQLite, and more.</div>
75
- </a>
76
- <a class="dk-card" href="/doc-forge/">
77
- <div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">article</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div>
78
- <div class="dk-card-name">Doc Forge</div>
79
- <div class="dk-card-desc">Generate README, architecture overviews, and API docs from any GitHub repo.</div>
80
- </a>
81
- <a class="dk-card" href="/changelog-ai/">
82
- <div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">update</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div>
83
- <div class="dk-card-name">Changelog AI</div>
84
- <div class="dk-card-desc">Turn commit history into changelogs for developers, users, or executives.</div>
85
- </a>
86
- <a class="dk-card" href="/git-narrator/">
87
- <div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">history</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div>
88
- <div class="dk-card-name">Git Narrator</div>
89
- <div class="dk-card-desc">Transform raw git logs into readable project narratives and milestone timelines.</div>
90
- </a>
91
  </div>
92
  </div>
93
- <footer class="dk-footer">
94
- <div class="dk-status"><div class="dot"></div>All systems operational</div>
95
- <span style="font-family:'Space Mono',monospace;font-size:11px;color:#374151">Free &middot; No login</span>
96
- </footer>
97
  </div>
98
  {% endblock %}
 
5
  <link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600&display=swap" rel="stylesheet">
6
  <style>
7
  *{box-sizing:border-box;margin:0;padding:0}
8
+ .dk{background:#f5f5f7;color:#1d1d1f;min-height:100vh;font-family:'DM Sans',sans-serif;display:flex;flex-direction:column}
9
  .dk a{color:inherit;text-decoration:none}
10
+ .dk-nav{position:sticky;top:0;z-index:50;height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 2rem;background:rgba(245,245,247,.88);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(0,0,0,.08)}
11
  .dk-logo{display:flex;align-items:center;gap:10px}
12
+ .dk-logo-icon{width:26px;height:26px;border-radius:6px;background:#00d97e;display:flex;align-items:center;justify-content:center;font-family:'Space Mono',monospace;font-weight:700;font-size:11px;color:#001a0d}
13
+ .dk-logo-name{font-family:'Space Mono',monospace;font-weight:700;font-size:14px;letter-spacing:-.02em;color:#1d1d1f}
14
+ .dk-badge{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:3px 10px;border-radius:100px;color:#00a85e;border:1px solid rgba(0,168,94,.3);background:rgba(0,217,126,.07)}
15
+ .dk-hero{flex:0 0 auto;padding:5.5rem 2rem 4.5rem;max-width:860px;margin:0 auto;width:100%;text-align:center}
16
+ .dk-eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#00a85e;margin-bottom:1.5rem}
17
+ .dk-eyebrow span{width:28px;height:1px;background:rgba(0,168,94,.4)}
18
+ .dk-h1{font-family:'Space Mono',monospace;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;line-height:1.1;letter-spacing:-.04em;color:#1d1d1f;margin-bottom:1.1rem}
19
+ .dk-h1 em{color:#00a85e;font-style:normal}
20
+ .cursor{display:inline-block;width:3px;height:.85em;background:#00a85e;vertical-align:middle;margin-left:2px;animation:blink 1s step-end infinite}
21
  @keyframes blink{50%{opacity:0}}
22
+ .dk-sub{font-size:1rem;line-height:1.75;color:#6e6e73;max-width:480px;margin:0 auto 2.25rem}
23
+ .dk-meta{display:flex;align-items:center;justify-content:center;gap:1.5rem;font-family:'Space Mono',monospace;font-size:11px;color:#86868b}
24
  .dk-meta span{display:flex;align-items:center;gap:6px}
25
+ .dk-meta span::before{content:'';width:4px;height:4px;border-radius:50%;background:#00a85e}
26
+ .dk-section{flex:1;background:#fff;border-top:1px solid rgba(0,0,0,.07);padding:3.5rem 2rem 5rem}
27
+ .dk-section-label{text-align:center;font-family:'Space Mono',monospace;font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:#86868b;margin-bottom:2rem}
28
+ .dk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:1px;max-width:1060px;margin:0 auto;background:rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06);border-radius:14px;overflow:hidden}
29
+ .dk-card{background:#fff;padding:1.6rem;display:flex;flex-direction:column;gap:14px;transition:background .12s}
30
+ .dk-card:hover{background:#f0fdf8}
31
+ .dk-card:hover .dk-arr{color:#00a85e;transform:translate(2px,-2px)}
32
  .dk-card-top{display:flex;align-items:flex-start;justify-content:space-between}
33
+ .dk-icon{width:34px;height:34px;border-radius:7px;background:rgba(0,217,126,.1);border:1px solid rgba(0,217,126,.2);display:flex;align-items:center;justify-content:center;color:#00a85e}
34
+ .dk-arr{color:#c7c7cc;font-size:18px;transition:all .12s}
35
+ .dk-card-name{font-size:.9rem;font-weight:600;color:#1d1d1f;letter-spacing:-.01em}
36
+ .dk-card-desc{font-size:.8rem;line-height:1.65;color:#6e6e73}
37
+ .dk-footer{border-top:1px solid rgba(0,0,0,.07);padding:1rem 2rem;display:flex;align-items:center;justify-content:space-between;background:#f5f5f7;flex-shrink:0}
38
+ .dk-status{display:flex;align-items:center;gap:8px;font-family:'Space Mono',monospace;font-size:11px;color:#86868b}
39
+ .dot{width:6px;height:6px;border-radius:50%;background:#00a85e}
40
  @keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
41
  .dk-hero>*{animation:fadeUp .45s ease both}
42
  .dk-eyebrow{animation-delay:.04s}.dk-h1{animation-delay:.1s}.dk-sub{animation-delay:.18s}.dk-meta{animation-delay:.26s}
43
  </style>
44
  <div class="dk">
45
  <nav class="dk-nav">
46
+ <div class="dk-logo"><div class="dk-logo-icon">&gt;_</div><span class="dk-logo-name">DevKit</span></div>
 
 
 
47
  <span class="dk-badge">6 tools</span>
48
  </nav>
49
  <div class="dk-hero">
 
55
  <div class="dk-section">
56
  <div class="dk-section-label">// pick a tool</div>
57
  <div class="dk-grid">
58
+ <a class="dk-card" href="/schema-detective/"><div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">table_view</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div><div class="dk-card-name">Schema Detective</div><div class="dk-card-desc">Audit database schemas for vulnerabilities, missing indexes, and design flaws.</div></a>
59
+ <a class="dk-card" href="/test-forge/"><div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">science</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div><div class="dk-card-name">Test Forge</div><div class="dk-card-desc">Generate complete, runnable test suites across 8 frameworks from any source code.</div></a>
60
+ <a class="dk-card" href="/sql-whisperer/"><div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">data_object</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div><div class="dk-card-name">SQL Whisperer</div><div class="dk-card-desc">Convert plain-English questions to SQL for PostgreSQL, MySQL, SQLite, and more.</div></a>
61
+ <a class="dk-card" href="/doc-forge/"><div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">article</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div><div class="dk-card-name">Doc Forge</div><div class="dk-card-desc">Generate README, architecture overviews, and API docs from any GitHub repo.</div></a>
62
+ <a class="dk-card" href="/changelog-ai/"><div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">update</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div><div class="dk-card-name">Changelog AI</div><div class="dk-card-desc">Turn commit history into changelogs for developers, users, or executives.</div></a>
63
+ <a class="dk-card" href="/git-narrator/"><div class="dk-card-top"><div class="dk-icon"><span class="material-symbols-outlined" style="font-size:16px;font-variation-settings:'FILL' 1">history</span></div><span class="dk-arr material-symbols-outlined">arrow_outward</span></div><div class="dk-card-name">Git Narrator</div><div class="dk-card-desc">Transform raw git logs into readable project narratives and milestone timelines.</div></a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  </div>
65
  </div>
66
+ <footer class="dk-footer"><div class="dk-status"><div class="dot"></div>All systems operational</div><span style="font-family:'Space Mono',monospace;font-size:11px;color:#86868b">Free &middot; No login</span></footer>
 
 
 
67
  </div>
68
  {% endblock %}
app/templates/base.html CHANGED
@@ -13,211 +13,132 @@ tailwind.config = {
13
  theme: {
14
  extend: {
15
  colors: {
16
- "surface": "#0e0e10",
17
- "background": "#0e0e10",
18
- "surface-container-lowest": "#131315",
19
- "surface-container-low": "#18181a",
20
- "surface-container": "#1e1e20",
21
- "surface-container-high": "#252527",
22
- "surface-container-highest": "#2c2c2e",
23
- "surface-bright": "#222224",
24
- "surface-dim": "#0a0a0c",
25
- "on-surface": "#e8e8ea",
26
- "on-surface-variant": "#8b9198",
27
- "on-background": "#e8e8ea",
28
- "primary": "#00d97e",
29
- "on-primary": "#001a0d",
30
- "primary-container": "#003d1c",
31
- "on-primary-container": "#67ffb4",
32
- "secondary": "#8b9198",
33
- "on-secondary": "#e8e8ea",
34
- "secondary-container": "#252527",
35
- "on-secondary-container": "#c8cdd0",
36
- "outline": "#4b5563",
37
- "outline-variant": "#2a2e30",
38
- "surface-variant": "#252527",
39
- "inverse-surface": "#e8e8ea",
40
- "inverse-on-surface": "#18181a",
41
- "inverse-primary": "#005c33",
42
- "error-container":"#7f1d1d","on-error-container":"#fca5a5","error":"#f87171","on-error":"#fff",
43
- "tertiary":"#00d97e","on-tertiary":"#001a0d",
44
- "tertiary-container":"#1e1e20","on-tertiary-container":"#67ffb4",
45
- "tertiary-dim":"#00d97e","tertiary-fixed":"#1e1e20","tertiary-fixed-dim":"#00d97e",
46
- "on-tertiary-fixed":"#001a0d","on-tertiary-fixed-variant":"#001a0d",
47
- "primary-fixed":"#003d1c","primary-fixed-dim":"#00d97e",
48
- "on-primary-fixed":"#67ffb4","on-primary-fixed-variant":"#00d97e",
49
- "secondary-fixed":"#252527","secondary-fixed-dim":"#252527",
50
- "on-secondary-fixed":"#c8cdd0","on-secondary-fixed-variant":"#c8cdd0",
51
- "surface-tint":"#00d97e","primary-dim":"#00d97e","secondary-dim":"#8b9198",
52
- "error-dim":"#450a0a","on-primary-fixed":"#67ffb4",
53
- "on-primary-container":"#67ffb4","on-secondary-container":"#c8cdd0",
54
- "on-tertiary-container":"#67ffb4",
 
 
 
 
 
 
 
 
 
 
 
 
55
  },
56
  borderRadius: {"DEFAULT":"0.25rem","lg":"0.5rem","xl":"0.75rem","full":"9999px"},
57
  fontFamily: {
58
- "headline": ["DM Sans", "sans-serif"],
59
- "body": ["DM Sans", "sans-serif"],
60
- "label": ["DM Sans", "sans-serif"]
61
  }
62
  }
63
  }
64
  }
65
  </script>
66
  <style>
67
- :root {
68
- --accent: #00d97e;
69
- --accent-rgb: 0,217,126;
70
- --on-primary: #001a0d;
71
- --surface: #0e0e10;
72
- --text: #e8e8ea;
73
- --text-dim: #8b9198;
74
- --border: #2a2e30;
75
- }
76
  *, *::before, *::after { box-sizing: border-box; }
77
- html, body { height: 100%; overflow: hidden;
78
- background: #0e0e10 !important;
79
- color: #e8e8ea;
80
- font-family: DM Sans, sans-serif;
81
- }
82
  .material-symbols-outlined {
83
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
84
  vertical-align: middle;
85
  }
86
-
87
- /* Remap hardcoded light-theme classes */
88
- .bg-white { background: #131315 !important; }
89
- .bg-slate-50 { background: #18181a !important; }
90
- .bg-slate-100 { background: #1e1e20 !important; }
91
- .bg-slate-200 { background: #252527 !important; }
92
- .border-slate-200,
93
- .border-slate-300 { border-color: #2a2e30 !important; }
94
- .divide-slate-200 > * + * { border-color: #2a2e30 !important; }
95
- .text-slate-400, .text-slate-500 { color: #8b9198 !important; }
96
- .text-slate-600, .text-slate-700,
97
- .text-slate-800, .text-slate-900 { color: #e8e8ea !important; }
98
- .text-gray-400, .text-gray-500 { color: #8b9198 !important; }
99
- .text-gray-600, .text-gray-700 { color: #e8e8ea !important; }
100
- .hover\:bg-slate-200\/60:hover { background: rgba(255,255,255,.06) !important; }
101
- .shadow-sm { box-shadow: 0 1px 3px rgba(0,0,0,.5) !important; }
102
- .shadow-md { box-shadow: 0 4px 12px rgba(0,0,0,.6) !important; }
103
- .glass-effect { background: rgba(0,0,0,.5) !important; backdrop-filter: blur(12px); }
104
-
105
- /* Forms dark */
106
- input:not([type=checkbox]):not([type=radio]):not([type=range]),
107
- textarea, select {
108
- background: #18181a !important;
109
- color: #e8e8ea !important;
110
- border-color: #2a2e30 !important;
111
- }
112
- input::placeholder, textarea::placeholder { color: #8b9198 !important; opacity: 1; }
113
- input:focus, textarea:focus, select:focus {
114
- border-color: #00d97e !important;
115
- box-shadow: 0 0 0 2px rgba(0,217,126,.2) !important;
116
- }
117
- label { color: #8b9198; }
118
-
119
- /* Scrollbar */
120
  ::-webkit-scrollbar { width: 6px; }
121
  ::-webkit-scrollbar-track { background: transparent; }
122
- ::-webkit-scrollbar-thumb { background: #4b5563; border-radius: 10px; }
123
  .no-scrollbar::-webkit-scrollbar { display: none; }
124
  .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
125
  .custom-scrollbar::-webkit-scrollbar { width: 6px; }
126
- .custom-scrollbar::-webkit-scrollbar-thumb { background: #4b5563; border-radius: 10px; }
127
-
128
- /* Code editor */
129
- .code-editor { font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace; }
130
- .editor-bg { background: #0d0d14 !important; color: #cdd6f4; }
131
- .arabic-text { font-family: 'Segoe UI', Tahoma, Arial, sans-serif; }
132
-
133
- /* Prompt-bench scoped overrides */
134
- .toolbar-blur { background: rgba(20,20,28,.88); backdrop-filter: blur(20px); }
135
  .btn-primary { display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:#00d97e;color:#001a0d;border-radius:8px;font-size:13px;font-weight:600;border:none;cursor:pointer; }
136
- .btn-secondary { display:inline-flex;align-items:center;gap:4px;padding:5px 10px;background:rgba(255,255,255,.08);color:#e8e8ea;border-radius:7px;font-size:12px;font-weight:500;border:none;cursor:pointer; }
137
- .section-label { font-size:11px;font-weight:600;color:#8b9198;text-transform:uppercase;letter-spacing:.06em; }
138
- .sys-label, .text-sys-label { color: #e8e8ea; }
139
-
140
- /* Mobile: collapse fixed sidebars on small screens */
141
  @media (max-width: 768px) {
142
- .shrink-0.w-64, aside.w-64 {
143
- display: none !important;
144
- }
145
- .flex-1.overflow-hidden {
146
- flex: 1 1 auto;
147
- min-width: 0;
148
- }
149
  }
150
-
151
- /* Back-to-hub button */
152
  .hub-back-btn {
153
- position: fixed;
154
- top: 0.9rem;
155
- left: 1rem;
156
- z-index: 9999;
157
- display: flex;
158
- align-items: center;
159
- gap: 5px;
160
- padding: 4px 10px 4px 7px;
161
- border-radius: 100px;
162
- background: rgba(0,217,126, .12);
163
  border: 1px solid rgba(0,217,126, .28);
164
- color: #00d97e;
165
- font-size: 11px;
166
- font-weight: 500;
167
- text-decoration: none;
168
- backdrop-filter: blur(10px);
169
- -webkit-backdrop-filter: blur(10px);
170
  transition: background .15s, transform .12s;
171
- font-family: DM Sans, sans-serif;
172
- white-space: nowrap;
173
- }
174
- .hub-back-btn:hover {
175
- background: rgba(0,217,126, .22);
176
- transform: translateY(-1px);
177
- }
178
- .hub-back-btn-icon {
179
- font-size: 15px !important;
180
- color: #00d97e;
181
- line-height: 1;
182
- vertical-align: middle;
183
  }
 
 
184
  </style>
185
  {% block extra_head %}{% endblock %}
186
  <meta name="csrf-token" content="{{ csrf_token() }}"/>
187
  </head>
188
- <body class="bg-surface text-on-surface">
189
  {% block content %}{% endblock %}
190
  {% block extra_scripts %}{% endblock %}
191
  <script>
192
  (function() {
193
- var toolAlphas = {"schema-detective": "0.10", "test-forge": "0.13", "sql-whisperer": "0.08", "doc-forge": "0.11", "changelog-ai": "0.09", "git-narrator": "0.12"};
194
- var path = window.location.pathname.replace(/\/+$/, '').split('/').filter(Boolean)[0] || '';
195
-
196
- // Per-tool micro-variation: slightly shift border opacity for each tool
197
- var alpha = toolAlphas[path];
198
- if (alpha) {
199
- var s = document.createElement('style');
200
- s.textContent =
201
- '.border-outline-variant\/10 { border-color: rgba(0,217,126,' + alpha + ') !important; }' +
202
- '.border-slate-200 { border-color: rgba(0,217,126,' + (parseFloat(alpha) * 0.6).toFixed(2) + ') !important; }';
203
- document.head.appendChild(s);
204
- }
205
-
206
- // Back-to-hub button on all tool pages (not home)
207
- if (path !== '') {
208
- var btn = document.createElement('a');
209
- btn.href = '/';
210
- btn.className = 'hub-back-btn';
211
-
212
- var icon = document.createElement('span');
213
- icon.className = 'material-symbols-outlined hub-back-btn-icon';
214
- icon.textContent = 'arrow_back_ios_new';
215
-
216
- var label = document.createElement('span');
217
- label.textContent = 'DevKit';
218
-
219
  btn.appendChild(icon);
220
- btn.appendChild(label);
221
  document.body.appendChild(btn);
222
  }
223
  })();
 
13
  theme: {
14
  extend: {
15
  colors: {
16
+ "error-container": "#fe8983",
17
+ "on-primary-fixed-variant": "#005bb0",
18
+ "on-secondary-fixed-variant": "#505d68",
19
+ "surface-bright": "#f8f9fa",
20
+ "surface": "#f8f9fa",
21
+ "surface-tint": "#00d97e",
22
+ "primary": "#00d97e",
23
+ "on-surface-variant": "#586064",
24
+ "primary-fixed-dim": "#bfd5ff",
25
+ "inverse-surface": "#0c0f10",
26
+ "on-tertiary": "#fbf7ff",
27
+ "background": "#f8f9fa",
28
+ "secondary": "#54616b",
29
+ "on-secondary-fixed": "#34414b",
30
+ "on-background": "#2b3437",
31
+ "surface-container": "#eaeff1",
32
+ "tertiary-dim": "#51516c",
33
+ "on-primary": "#001a0d",
34
+ "secondary-container": "#d7e4f1",
35
+ "tertiary": "#5d5c78",
36
+ "primary-dim": "#0052a0",
37
+ "on-error": "#fff7f6",
38
+ "surface-container-lowest": "#ffffff",
39
+ "outline-variant": "#abb3b7",
40
+ "on-secondary": "#f5f9ff",
41
+ "inverse-primary": "#5f9efb",
42
+ "tertiary-fixed-dim": "#cbc9e9",
43
+ "outline": "#737c7f",
44
+ "on-secondary-container": "#46535e",
45
+ "primary-container": "#d6e3ff",
46
+ "error-dim": "#4e0309",
47
+ "error": "#9f403d",
48
+ "secondary-fixed": "#d7e4f1",
49
+ "primary-fixed": "#d6e3ff",
50
+ "inverse-on-surface": "#9b9d9e",
51
+ "on-tertiary-container": "#4a4a65",
52
+ "tertiary-fixed": "#d9d7f8",
53
+ "on-tertiary-fixed-variant": "#54546f",
54
+ "on-surface": "#2b3437",
55
+ "on-primary-fixed": "#003f7d",
56
+ "on-primary-container": "#00519e",
57
+ "on-tertiary-fixed": "#383751",
58
+ "surface-container-low": "#f1f4f6",
59
+ "surface-dim": "#d1dce0",
60
+ "secondary-fixed-dim": "#c9d6e3",
61
+ "on-error-container": "#752121",
62
+ "surface-container-high": "#e3e9ec",
63
+ "surface-variant": "#dbe4e7",
64
+ "tertiary-container": "#d9d7f8",
65
+ "surface-container-highest": "#dbe4e7",
66
+ "secondary-dim": "#48555f"
67
  },
68
  borderRadius: {"DEFAULT":"0.25rem","lg":"0.5rem","xl":"0.75rem","full":"9999px"},
69
  fontFamily: {
70
+ "headline": ["DM Sans","sans-serif"],
71
+ "body": ["DM Sans","sans-serif"],
72
+ "label": ["DM Sans","sans-serif"]
73
  }
74
  }
75
  }
76
  }
77
  </script>
78
  <style>
 
 
 
 
 
 
 
 
 
79
  *, *::before, *::after { box-sizing: border-box; }
80
+ html, body { height: 100%; }
81
+ body { font-family: DM Sans, sans-serif; }
 
 
 
82
  .material-symbols-outlined {
83
  font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
84
  vertical-align: middle;
85
  }
86
+ .glass-effect { background: rgba(248,249,250,0.8); backdrop-filter: blur(12px); }
87
+ .ghost-border { outline: 1px solid rgba(171,179,183,0.15); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  ::-webkit-scrollbar { width: 6px; }
89
  ::-webkit-scrollbar-track { background: transparent; }
90
+ ::-webkit-scrollbar-thumb { background: #abb3b7; border-radius: 10px; }
91
  .no-scrollbar::-webkit-scrollbar { display: none; }
92
  .no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
93
  .custom-scrollbar::-webkit-scrollbar { width: 6px; }
94
+ .custom-scrollbar::-webkit-scrollbar-thumb { background: #abb3b7; border-radius: 10px; }
95
+ .code-editor { font-family: 'JetBrains Mono','Fira Code','Cascadia Code','Consolas',monospace; }
96
+ .editor-bg { background: #1e1e2e; color: #cdd6f4; }
97
+ .arabic-text { font-family: 'Segoe UI',Tahoma,Arial,sans-serif; }
98
+ .toolbar-blur { background: rgba(242,242,247,0.85); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); }
 
 
 
 
99
  .btn-primary { display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:#00d97e;color:#001a0d;border-radius:8px;font-size:13px;font-weight:600;border:none;cursor:pointer; }
100
+ .btn-secondary { display:inline-flex;align-items:center;gap:4px;padding:5px 10px;background:rgba(0,0,0,0.06);color:#3C3C43;border-radius:7px;font-size:12px;font-weight:500;border:none;cursor:pointer; }
101
+ .section-label { font-size:11px;font-weight:600;color:#636366;text-transform:uppercase;letter-spacing:.06em; }
102
+ .sys-label, .text-sys-label { color: #1C1C1E; }
 
 
103
  @media (max-width: 768px) {
104
+ .shrink-0.w-64, aside.w-64 { display: none !important; }
105
+ .flex-1.overflow-hidden { flex: 1 1 auto; min-width: 0; }
 
 
 
 
 
106
  }
 
 
107
  .hub-back-btn {
108
+ position: fixed; top: 0.9rem; left: 1rem; z-index: 9999;
109
+ display: flex; align-items: center; gap: 5px;
110
+ padding: 4px 10px 4px 7px; border-radius: 100px;
111
+ background: rgba(0,217,126, .1);
 
 
 
 
 
 
112
  border: 1px solid rgba(0,217,126, .28);
113
+ color: #00d97e; font-size: 11px; font-weight: 600;
114
+ text-decoration: none; backdrop-filter: blur(8px);
 
 
 
 
115
  transition: background .15s, transform .12s;
116
+ font-family: DM Sans, sans-serif; white-space: nowrap;
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
+ .hub-back-btn:hover { background: rgba(0,217,126, .18); transform: translateY(-1px); }
119
+ .hub-back-btn-icon { font-size: 14px !important; color: #00d97e; line-height: 1; vertical-align: middle; }
120
  </style>
121
  {% block extra_head %}{% endblock %}
122
  <meta name="csrf-token" content="{{ csrf_token() }}"/>
123
  </head>
124
+ <body class="bg-surface text-on-surface selection:bg-primary-container selection:text-on-primary-container">
125
  {% block content %}{% endblock %}
126
  {% block extra_scripts %}{% endblock %}
127
  <script>
128
  (function() {
129
+ var toolAlphas = {"schema-detective":"0.10","test-forge":"0.13","sql-whisperer":"0.08","doc-forge":"0.11","changelog-ai":"0.09","git-narrator":"0.12"};
130
+ var path = window.location.pathname.replace(/\/+$/, "").split("/").filter(Boolean)[0] || "";
131
+ if (path !== "") {
132
+ var btn = document.createElement("a");
133
+ btn.href = "/";
134
+ btn.className = "hub-back-btn";
135
+ var icon = document.createElement("span");
136
+ icon.className = "material-symbols-outlined hub-back-btn-icon";
137
+ icon.textContent = "arrow_back_ios_new";
138
+ var lbl = document.createElement("span");
139
+ lbl.textContent = "DevKit";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  btn.appendChild(icon);
141
+ btn.appendChild(lbl);
142
  document.body.appendChild(btn);
143
  }
144
  })();