This commit is contained in:
2026-02-13 19:24:20 +01:00
parent 56d56395ee
commit 9dc2dff84a
22 changed files with 5897 additions and 528 deletions

544
style.css
View File

@@ -1,51 +1,348 @@
:root {
--ink: #0f172a;
--muted: #64748b;
--panel: #ffffff;
--panel-soft: #f8fafc;
--stroke: rgba(148, 163, 184, 0.28);
--accent: #0ea5e9;
--accent-2: #22d3ee;
--success: #22c55e;
--danger: #ef4444;
}
body {
width: 100%;
height: 100%;
padding: 20px;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #f0f4f8;
color: #333;
padding: 18px;
font-family: "Space Grotesk", "IBM Plex Sans", "Helvetica Neue", sans-serif;
background: radial-gradient(circle at top, #f0f9ff 0%, #e2e8f0 45%, #e8ecf3 100%);
color: var(--ink);
margin: 0;
box-sizing: border-box;
}
#app {
background-color: white;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
background: linear-gradient(145deg, rgba(255, 255, 255, 0.96), rgba(248, 250, 252, 0.92));
border-radius: 16px;
border: 1px solid var(--stroke);
box-shadow: 0 18px 40px rgba(15, 23, 42, 0.12);
padding: 20px;
height: calc(100% - 40px);
min-width: 76vw;
height: calc(100% - 36px);
min-width: 0;
display: flex;
flex-direction: column;
gap: 16px;
}
.panel-group {
border: 1px solid var(--stroke);
border-radius: 14px;
background: var(--panel);
box-shadow: 0 10px 20px rgba(15, 23, 42, 0.06);
overflow: hidden;
}
.panel-group > summary {
list-style: none;
cursor: pointer;
padding: 12px 14px;
font-weight: 600;
color: var(--ink);
background: rgba(14, 165, 233, 0.06);
border-bottom: 1px solid transparent;
}
.panel-group > summary::-webkit-details-marker {
display: none;
}
.panel-group[open] > summary {
border-bottom-color: var(--stroke);
}
.panel-group > :not(summary) {
padding: 14px;
}
.app-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 4px;
}
h3 {
font-size: 22px;
margin-bottom: 20px;
color: #2c3e50;
text-align: center;
margin: 0;
color: var(--ink);
text-align: left;
}
input[type="password"], select {
input[type="password"],
input[type="text"],
input[type="number"],
input[type="url"],
select {
width: 100%;
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ddd;
border-radius: 4px;
padding: 10px 12px;
margin-bottom: 12px;
border: 1px solid var(--stroke);
border-radius: 10px;
font-size: 14px;
background-color: white;
background-color: var(--panel);
color: var(--ink);
box-sizing: border-box;
}
.ai-provider-section, .model-selection, .api-key-section, .capture-mode-section, .performance-section, .overlay-visibility-section, .mic-monitor-section, .active-state-section {
margin-bottom: 20px;
input[type="password"]:focus,
input[type="text"]:focus,
input[type="number"]:focus,
input[type="url"]:focus,
select:focus,
textarea:focus {
outline: none;
border-color: rgba(14, 165, 233, 0.6);
box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.12);
}
.ai-provider-section label, .model-selection label, .capture-mode-section label {
textarea {
width: 100%;
min-height: 90px;
padding: 10px;
border: 1px solid var(--stroke);
border-radius: 10px;
resize: vertical;
font-family: inherit;
margin-bottom: 10px;
background: var(--panel);
color: var(--ink);
box-sizing: border-box;
}
textarea.code-input {
font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
}
.mcp-key-row {
display: flex;
gap: 8px;
align-items: center;
}
.automation-manager {
padding: 20px;
}
.automation-layout {
display: grid;
grid-template-columns: minmax(160px, 1fr) minmax(0, 2fr);
gap: 16px;
}
.automation-list {
display: flex;
flex-direction: column;
gap: 10px;
}
.automation-list button {
margin-bottom: 0;
}
.automation-item {
padding: 10px 12px;
border-radius: 10px;
border: 1px solid var(--stroke);
background: var(--panel-soft);
cursor: pointer;
font-size: 14px;
text-align: left;
}
.automation-item.active {
border-color: rgba(14, 165, 233, 0.6);
box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.12);
}
.automation-editor {
display: flex;
flex-direction: column;
gap: 12px;
}
.automation-editor-fields {
display: flex;
flex-direction: column;
gap: 10px;
}
.placeholder-help {
padding: 10px;
border-radius: 10px;
border: 1px dashed var(--stroke);
background: var(--panel-soft);
}
.placeholder-list {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.placeholder-chip {
background: rgba(14, 165, 233, 0.1);
border: 1px solid rgba(14, 165, 233, 0.25);
padding: 4px 8px;
border-radius: 999px;
font-size: 12px;
color: var(--ink);
width: auto;
margin: 0;
box-shadow: none;
}
.placeholder-chip:hover {
transform: none;
box-shadow: none;
background: rgba(14, 165, 233, 0.2);
}
.profile-manager {
border: 1px solid var(--stroke);
border-radius: 10px;
background: var(--panel-soft);
margin-bottom: 12px;
}
.profile-manager > summary {
cursor: pointer;
list-style: none;
padding: 10px 12px;
font-weight: 600;
}
.profile-manager > summary::-webkit-details-marker {
display: none;
}
.profile-manager-content {
padding: 0 12px 12px 12px;
}
.profile-actions-row {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
}
.profile-actions-row button {
margin-bottom: 0;
font-size: 14px;
padding: 9px 10px;
}
.session-advanced {
margin-top: 6px;
border: 1px dashed var(--stroke);
border-radius: 10px;
background: var(--panel-soft);
}
.session-advanced > summary {
cursor: pointer;
list-style: none;
padding: 10px 12px;
font-weight: 600;
color: var(--ink);
}
.session-advanced > summary::-webkit-details-marker {
display: none;
}
.session-advanced[open] {
border-style: solid;
}
.session-advanced > :not(summary) {
padding: 0 12px 12px 12px;
}
@media (max-width: 720px) {
.automation-layout {
grid-template-columns: 1fr;
}
.profile-actions-row {
grid-template-columns: 1fr;
}
}
.mcp-key-row input[type="password"],
.mcp-key-row input[type="text"] {
margin-bottom: 0;
}
.mcp-key-row button {
width: auto;
padding: 8px 12px;
margin-bottom: 0;
font-size: 14px;
}
pre {
background: var(--panel-soft);
border: 1px solid var(--stroke);
border-radius: 10px;
padding: 12px;
max-height: 220px;
overflow: auto;
font-size: 12px;
color: var(--ink);
white-space: pre-wrap;
}
.ai-provider-section,
.model-selection,
.stt-settings-section,
.api-key-section,
.capture-mode-section,
.session-context-section,
.session-automation-section,
.performance-section,
.overlay-visibility-section,
.mic-monitor-section,
.active-state-section,
.session-summary-section,
.context-section,
.device-section {
margin: 0 0 14px 0;
padding: 0;
border-radius: 0;
border: none;
background: transparent;
box-shadow: none;
}
.panel-group > :not(summary) > div:last-child {
margin-bottom: 0;
}
.ai-provider-section label,
.model-selection label,
.stt-settings-section label,
.capture-mode-section label,
.session-context-section label,
.session-automation-section label {
display: block;
margin-bottom: 5px;
font-weight: 600;
color: #2c3e50;
color: var(--ink);
}
.stt-settings-section .inline-toggle {
display: flex;
align-items: center;
gap: 8px;
}
.performance-section label,
@@ -55,53 +352,69 @@ input[type="password"], select {
align-items: center;
gap: 8px;
font-weight: 600;
color: #2c3e50;
color: var(--ink);
}
.status-message {
font-size: 12px;
margin-top: 5px;
padding: 5px;
border-radius: 3px;
padding: 6px 8px;
border-radius: 8px;
background: var(--panel-soft);
color: var(--muted);
}
.status-message.success {
color: #27ae60;
background-color: #d5f4e6;
color: var(--success);
background-color: rgba(34, 197, 94, 0.12);
}
.status-message.error {
color: #e74c3c;
background-color: #fdf2f2;
color: var(--danger);
background-color: rgba(239, 68, 68, 0.12);
}
/* Context Management Styles */
.context-section, .device-section {
margin-bottom: 20px;
border: 1px solid #e0e6ed;
border-radius: 6px;
padding: 15px;
background-color: #f8fafc;
}
.mic-monitor-section {
border: 1px solid #e0e6ed;
border-radius: 6px;
padding: 15px;
background-color: #f8fafc;
}
.mic-monitor-section h4 {
.session-summary-section h4,
.mic-monitor-section h4,
.context-section h4,
.device-section h4 {
margin: 0 0 12px 0;
color: #2c3e50;
color: var(--ink);
font-size: 16px;
}
#sessionSummaryInput,
#contextTextInput {
width: 100%;
min-height: 90px;
padding: 10px;
border: 1px solid var(--stroke);
border-radius: 10px;
resize: vertical;
font-family: inherit;
margin-bottom: 10px;
background: var(--panel);
color: var(--ink);
}
#contextTextInput {
min-height: 100px;
}
.summary-save-toggle {
display: flex;
align-items: center;
gap: 8px;
font-weight: 600;
color: var(--ink);
margin-bottom: 10px;
}
.mic-level {
height: 8px;
width: 100%;
border-radius: 999px;
background-color: #e8eef5;
background-color: #e2e8f0;
overflow: hidden;
margin: 6px 0 12px 0;
}
@@ -109,20 +422,14 @@ input[type="password"], select {
.mic-level-bar {
height: 100%;
width: 0%;
background: linear-gradient(90deg, #2ecc71, #1abc9c);
background: linear-gradient(90deg, #22c55e, #0ea5e9);
transition: width 80ms linear;
}
.context-section h4, .device-section h4 {
margin: 0 0 15px 0;
color: #2c3e50;
font-size: 16px;
}
.context-tabs {
display: flex;
margin-bottom: 15px;
border-bottom: 1px solid #ddd;
border-bottom: 1px solid var(--stroke);
}
.tab-button {
@@ -132,18 +439,18 @@ input[type="password"], select {
cursor: pointer;
border-bottom: 2px solid transparent;
font-size: 14px;
color: #666;
color: var(--muted);
margin: 0;
width: auto;
}
.tab-button.active {
color: #3498db;
border-bottom-color: #3498db;
color: var(--accent);
border-bottom-color: var(--accent);
}
.tab-button:hover {
background-color: #f0f4f8;
background-color: rgba(14, 165, 233, 0.08);
}
.tab-content {
@@ -154,37 +461,24 @@ input[type="password"], select {
display: block;
}
#contextTextInput {
width: 100%;
min-height: 100px;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
resize: vertical;
font-family: inherit;
margin-bottom: 10px;
}
#contextTypeSelect {
width: 100%;
padding: 8px;
margin-bottom: 10px;
border: 1px solid #ddd;
border-radius: 4px;
background-color: white;
#contextTypeSelect,
#contextTitleInput,
#sessionSummaryInput {
background-color: var(--panel);
border: 1px solid var(--stroke);
border-radius: 10px;
}
#contextTypeSelect,
#contextTitleInput {
width: 100%;
padding: 8px;
margin-bottom: 10px;
border: 1px solid #ddd;
border-radius: 4px;
}
.upload-info {
font-size: 12px;
color: #666;
color: var(--muted);
margin-top: 5px;
}
@@ -193,10 +487,10 @@ input[type="password"], select {
justify-content: space-between;
align-items: center;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
border: 1px solid var(--stroke);
border-radius: 10px;
margin-bottom: 8px;
background-color: white;
background-color: var(--panel);
}
.context-item-info {
@@ -205,12 +499,12 @@ input[type="password"], select {
.context-item-title {
font-weight: 600;
color: #2c3e50;
color: var(--ink);
}
.context-item-preview {
font-size: 12px;
color: #666;
color: var(--muted);
margin-top: 2px;
}
@@ -227,14 +521,14 @@ input[type="password"], select {
}
.danger-btn {
background-color: #e74c3c !important;
background-color: var(--danger) !important;
color: #fff !important;
}
.danger-btn:hover {
background-color: #c0392b !important;
background-color: #dc2626 !important;
}
/* Device Section Styles */
.device-options {
display: flex;
flex-direction: column;
@@ -242,14 +536,14 @@ input[type="password"], select {
}
.access-url {
background-color: #f0f4f8;
background-color: var(--panel-soft);
padding: 10px;
border-radius: 4px;
border-radius: 10px;
font-family: monospace;
font-size: 12px;
word-break: break-all;
margin: 10px 0;
border: 1px solid #ddd;
border: 1px solid var(--stroke);
}
.qr-code {
@@ -258,81 +552,103 @@ input[type="password"], select {
}
.device-info {
background-color: white;
background-color: var(--panel);
padding: 15px;
border-radius: 4px;
border: 1px solid #ddd;
border-radius: 10px;
border: 1px solid var(--stroke);
margin-top: 10px;
}
button {
width: 100%;
padding: 10px;
margin-bottom: 15px;
background-color: #3498db;
color: white;
margin-bottom: 12px;
background: linear-gradient(135deg, var(--accent), var(--accent-2));
color: #0f172a;
border: none;
border-radius: 4px;
border-radius: 10px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s ease;
transition: transform 0.2s ease, box-shadow 0.2s ease;
box-shadow: 0 10px 18px rgba(14, 165, 233, 0.18);
}
.icon-button {
width: auto;
padding: 6px 10px;
margin: 0;
font-size: 16px;
background-color: rgba(14, 165, 233, 0.1);
color: var(--ink);
border: 1px solid rgba(14, 165, 233, 0.3);
box-shadow: none;
}
.icon-button:hover {
background-color: rgba(14, 165, 233, 0.2);
}
button:hover {
background-color: #2980b9;
transform: translateY(-1px);
box-shadow: 0 12px 24px rgba(14, 165, 233, 0.24);
}
#saveApiKey {
background-color: #2ecc71;
background: linear-gradient(135deg, #22c55e, #16a34a);
color: #052e16;
}
#saveApiKey:hover {
background-color: #27ae60;
box-shadow: 0 12px 24px rgba(34, 197, 94, 0.28);
}
#transcript, #aiResponse {
#transcript,
#aiResponse {
margin-top: 15px;
border: 1px solid #ddd;
border: 1px solid var(--stroke);
padding: 15px;
min-height: 60px;
max-height: 150px;
overflow-y: auto;
border-radius: 4px;
border-radius: 10px;
font-size: 14px;
line-height: 1.5;
background: var(--panel);
}
#transcript {
background-color: #ecf0f1;
background: #eef6ff;
}
#aiResponse {
background-color: #e8f6fd;
background: #f0fdfa;
}
/* Scrollbar styling */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
background: #e2e8f0;
}
::-webkit-scrollbar-thumb {
background: #888;
background: #94a3b8;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
background: #64748b;
}
button:disabled {
background-color: #95a5a6;
background: #cbd5f5;
color: #475569;
box-shadow: none;
cursor: not-allowed;
}
button:disabled:hover {
background-color: #95a5a6;
transform: none;
box-shadow: none;
}