This commit is contained in:
2025-10-29 00:40:13 +01:00
parent d9b2297eca
commit 4b18429945
6 changed files with 622 additions and 47 deletions
+214 -24
View File
@@ -36,6 +36,18 @@
--shadow-faint: color-mix(in oklch, black 6%, transparent);
--shadow-soft: color-mix(in oklch, black 12%, transparent);
--shadow-medium: color-mix(in oklch, black 18%, transparent);
--shadow-strong: color-mix(in oklch, black 28%, transparent);
--shadow-deep: color-mix(in oklch, black 55%, transparent);
--shadow-pop: color-mix(in oklch, black 25%, transparent);
--outline-subtle: color-mix(in oklch, black 6%, transparent);
--overlay-dark: color-mix(in oklch, black 55%, transparent);
--overlay-dim: color-mix(in oklch, oklch(0.28 0.01 calc(265deg + var(--warmth))) 20%, transparent);
--overlay-darker: color-mix(in oklch, black 75%, transparent);
--surface-danger-subtle: color-mix(in oklch, var(--danger) 12%, transparent);
--overlay-accent-subtle: color-mix(in oklch, var(--accent) 12%, transparent);
--border-strong: color-mix(in oklch, var(--fg) 24%, transparent);
--surface-hover: color-mix(in oklch, white 10%, transparent);
--overlay-accent-strong: color-mix(in oklch, var(--accent) 24%, transparent);
--overlay-backdrop: color-mix(in oklch, oklch(0.22 0.015 calc(265deg + var(--warmth))) 45%, transparent);
--overlay-shadow: color-mix(in oklch, oklch(0.22 0.015 calc(265deg + var(--warmth))) 18%, transparent);
@@ -57,9 +69,17 @@
--sidebar-active-bg: color-mix(in oklch, var(--selection) 16%, transparent);
--selection-ring: oklch(0.78 0.16 calc(260deg + var(--warmth)));
--sidebar-active-pill-border: color-mix(in oklch, var(--accent) 64%, transparent);
--link: var(--accent);
--link-visited: color-mix(in oklch, var(--accent) 75%, var(--fg) 25%);
--preview-nav-bg: oklch(0.18 0.05 calc(270deg + var(--warmth)));
--preview-nav-bg-hover: oklch(0.14 0.05 calc(270deg + var(--warmth)));
--preview-nav-fg: var(--on-accent);
--text-on-dark: color-mix(in oklch, white 90%, transparent);
--surface-ink-soft: color-mix(in oklch, var(--fg) 8%, transparent);
font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
font-size: 15px;
--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
--detail-panel-width: 30em;
--documents-grid-title-size: 0.8rem;
@@ -86,7 +106,7 @@ a {
}
a:visited {
color: color-mix(in oklch, var(--accent) 75%, var(--fg) 25%);
color: var(--link-visited);
}
a:hover,
@@ -244,7 +264,7 @@ button.danger:hover:not([disabled]) {
.preview-zoom-backdrop {
position: fixed;
inset: 0;
background: rgba(15, 23, 42, 0);
background: var(--overlay-backdrop);
transition: background 0.25s ease, opacity 0.25s ease;
display: flex;
align-items: center;
@@ -283,7 +303,7 @@ button.danger:hover:not([disabled]) {
justify-content: center;
max-width: 95vw;
max-height: 95vh;
box-shadow: 0 32px 120px rgba(15, 23, 42, 0.55);
box-shadow: 0 32px 120px var(--shadow-deep);
}
.preview-zoom__scroll:focus {
@@ -322,23 +342,23 @@ button.danger:hover:not([disabled]) {
height: 2.8rem;
border: none;
border-radius: 999px;
background: rgba(0, 0, 0, 0.62);
color: #fff;
background: var(--preview-nav-bg);
color: var(--preview-nav-fg);
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 1;
transition: background 0.15s ease, transform 0.15s ease;
box-shadow: 0 12px 28px rgba(15, 23, 42, 0.28);
box-shadow: 0 12px 28px var(--shadow-strong);
}
.preview-zoom__nav-button:hover {
background: rgba(0, 0, 0, 0.82);
background: var(--preview-nav-bg-hover);
}
.preview-zoom__nav-button:focus-visible {
outline: 2px solid var(--accent, #4f46e5);
outline: 2px solid var(--accent);
outline-offset: 3px;
}
@@ -604,9 +624,9 @@ button.danger:hover:not([disabled]) {
width: 64px;
height: 64px;
border-radius: 6px;
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.25);
box-shadow: 0 6px 12px var(--shadow-pop);
overflow: hidden;
background-color: rgba(32, 34, 40, 0.2);
background-color: var(--overlay-dim);
display: flex;
align-items: center;
justify-content: center;
@@ -668,7 +688,7 @@ button.danger:hover:not([disabled]) {
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: rgba(255, 255, 255, 0.9);
color: var(--text-on-dark);
}
.document-drag-preview__count {
@@ -676,12 +696,12 @@ button.danger:hover:not([disabled]) {
bottom: 4px;
right: 4px;
background-color: var(--accent);
color: #fff;
color: var(--on-accent);
border-radius: 999px;
padding: 0.25rem 0.5rem;
font-size: 0.75rem;
font-weight: 600;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.25);
box-shadow: 0 4px 8px var(--shadow-pop);
pointer-events: none;
}
@@ -703,7 +723,7 @@ button.danger:hover:not([disabled]) {
.preview-workspace__info {
background: var(--surface-subtle);
padding: 1rem;
box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);
box-shadow: inset 0 0 0 1px var(--outline-subtle);
}
.preview-workspace__summary {
@@ -1152,7 +1172,7 @@ button.danger:hover:not([disabled]) {
}
.sidebar__title-button:focus-visible {
outline: 2px solid var(--accent, #2563eb);
outline: 2px solid var(--accent);
outline-offset: 2px;
}
@@ -1215,12 +1235,12 @@ button.danger:hover:not([disabled]) {
.menu button.menu__item.active,
.menu .menu__item.active {
font-weight: 600;
color: var(--accent, #2563eb);
color: var(--accent);
}
.menu button.menu__item:focus-visible,
.menu .menu__item:focus-visible {
outline: 2px solid var(--accent, #2563eb);
outline: 2px solid var(--accent);
outline-offset: -2px;
}
@@ -1235,7 +1255,7 @@ button.danger:hover:not([disabled]) {
display: flex;
align-items: center;
justify-content: center;
color: var(--accent, #2563eb);
color: var(--accent);
}
.menu__active-indicator {
@@ -1888,7 +1908,7 @@ button.danger:hover:not([disabled]) {
border: none;
padding: 0;
margin: 0;
color: var(--accent, #2563eb);
color: var(--accent);
text-decoration: none;
font: inherit;
cursor: pointer;
@@ -1939,7 +1959,7 @@ button.danger:hover:not([disabled]) {
}
.documents-panel tbody tr.document.tag-drop-target {
background: var(--accent-soft, rgba(63, 106, 216, 0.12));
background: var(--accent-soft);
box-shadow: inset 0 0 0 2px var(--accent);
}
@@ -2113,7 +2133,7 @@ button.danger:hover:not([disabled]) {
margin: 0;
white-space: pre-wrap;
word-break: break-word;
font-family: var(--font-mono, 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace);
font-family: var(--font-mono);
font-size: 0.85rem;
line-height: 1.4;
}
@@ -2354,7 +2374,7 @@ button.danger:hover:not([disabled]) {
}
.preview-pane__nav-button:focus-visible {
outline: 2px solid var(--accent, #2684ff);
outline: 2px solid var(--accent);
outline-offset: 2px;
}
@@ -2426,7 +2446,7 @@ button.danger:hover:not([disabled]) {
border: 1px solid var(--border-muted, var(--border));
white-space: pre-wrap;
word-break: break-word;
font-family: var(--font-mono, 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace);
font-family: var(--font-mono);
font-size: 0.82rem;
line-height: 1.45;
}
@@ -2531,7 +2551,8 @@ form.inline {
}
.modal--panel {
width: min(80vw, 960px);
width: 80vw;
max-width: 960px;
max-height: 90vh;
padding: 0;
border-radius: 12px;
@@ -2539,6 +2560,175 @@ form.inline {
gap: 0;
}
.settings-modal__body {
display: grid;
grid-template-columns: 12rem 1fr;
gap: 1.5rem;
height: 90vh;
padding: 1.5rem;
}
.settings-modal__sidebar {
border-right: 1px solid var(--border-muted, var(--border));
padding-right: 1rem;
}
.settings-modal__sidebar ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.settings-modal__sidebar button {
width: 100%;
display: inline-flex;
align-items: center;
justify-content: flex-start;
gap: 0.4rem;
border: none;
background: none;
color: inherit;
font: inherit;
padding: 0.45rem 0.6rem;
border-radius: 0.35rem;
cursor: pointer;
}
.settings-modal__sidebar button:hover,
.settings-modal__sidebar button:focus-visible {
background: var(--sidebar-hover-bg);
}
.settings-modal__sidebar button.active {
background: var(--surface-soft, rgba(148, 163, 184, 0.18));
font-weight: 600;
}
.settings-modal__content {
overflow-y: auto;
padding-bottom: 1rem;
}
.settings-section h4 {
margin-top: 0;
}
.settings-section {
display: flex;
flex-direction: column;
}
.settings-actions {
display: flex;
justify-content: flex-end;
margin-bottom: 1rem;
}
.settings-actions .secondary {
min-width: 7rem;
}
.settings-form {
display: flex;
flex-wrap: wrap;
gap: 1rem;
align-items: flex-end;
margin-bottom: 0.75rem;
}
.settings-form__field {
display: flex;
flex-direction: column;
gap: 0.35rem;
min-width: 14rem;
}
.settings-form__field input[type='text'],
.settings-form__field input[type='datetime-local'] {
padding: 0.45rem 0.6rem;
border: 1px solid var(--border);
border-radius: 0.35rem;
background: var(--surface-soft, rgba(148, 163, 184, 0.12));
color: inherit;
}
.settings-form__actions {
display: flex;
gap: 0.5rem;
}
.settings-form__error {
color: var(--danger, #d14343);
font-size: 0.85rem;
margin: 0 0 0.75rem;
}
.settings-empty {
margin: 1rem 0;
color: var(--muted);
}
.settings-table {
width: 100%;
border-collapse: collapse;
margin-top: 0.5rem;
}
.settings-table th,
.settings-table td {
padding: 0.55rem 0.75rem;
border-bottom: 1px solid var(--border-muted, var(--border));
text-align: left;
font-size: 0.9rem;
}
.settings-table tr:last-child td {
border-bottom: none;
}
.settings-table__actions {
white-space: nowrap;
}
.settings-status {
color: var(--muted);
font-size: 0.9rem;
}
.settings-table tr.is-revoked {
opacity: 0.65;
}
.settings-notice {
border: 1px solid var(--accent);
background: rgba(37, 99, 235, 0.08);
padding: 0.9rem 1rem;
border-radius: 0.5rem;
margin-bottom: 1rem;
}
.token-display {
background: rgba(15, 23, 42, 0.08);
padding: 0.5rem 0.65rem;
border-radius: 0.35rem;
font-family: var(--font-mono);
font-size: 0.95rem;
overflow-x: auto;
}
.settings-notice__actions {
display: flex;
gap: 0.5rem;
margin-top: 0.6rem;
}
.settings-notice__actions button {
flex: 0 0 auto;
}
.panel-modal__header {
display: flex;
align-items: center;