3ee564ef70
Build and Deploy Verso / deploy (push) Successful in 14m19s
- Header: revert column layout; title+zoom stay on left, search+button on right — all on one row (flex-wrap handles narrow viewports) - Selected cards: switch from teal tint (invisible on teal bg) to solid white + blue ring, clearly distinguishable from the page background - Editor toolbar: replace flat teal wash with an exponential-like decay (20%→9%→3%→0% teal overlay) so only the very top has colour Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
352 lines
11 KiB
SCSS
352 lines
11 KiB
SCSS
// Verso Lumière — editor chrome overrides.
|
|
// Scoped to body[data-lumiere='true'] — zero impact on Classic themes.
|
|
|
|
$lum-teal: #2a9d8f;
|
|
$lum-blue: #3d7ebf;
|
|
$lum-border: #daeae7;
|
|
|
|
// Same noise as the dashboard
|
|
$lum-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.22'/%3E%3C/svg%3E");
|
|
|
|
// ── CSS variable overrides ─────────────────────────────────────────────────
|
|
|
|
[data-lumiere='true'] {
|
|
// Toolbar
|
|
--redesign-toolbar-background: #f4fbf9;
|
|
--redesign-toolbar-border-divider: #{$lum-border};
|
|
--redesign-toolbar-home-button-hover-background: rgba(42, 157, 143, 0.12);
|
|
--redesign-subdued-button-hover-background: rgba(42, 157, 143, 0.12);
|
|
--redesign-subdued-button-color: #1a2e3b;
|
|
|
|
// Rail icon strip
|
|
--ide-rail-background: #e8f5f2;
|
|
--ide-rail-border-colour: #{$lum-border};
|
|
--ide-rail-color: #2d5a52;
|
|
--ide-rail-link-background: transparent;
|
|
--ide-rail-link-hover-background: rgba(42, 157, 143, 0.15);
|
|
--ide-rail-link-hover-color: #{$lum-teal};
|
|
--ide-rail-link-active-color: #ffffff;
|
|
--ide-rail-link-active-background: #{$lum-teal};
|
|
--ide-rail-header-subdued-button-color: #2d5a52;
|
|
--ide-rail-header-subdued-button-hover-background: rgba(42, 157, 143, 0.15);
|
|
|
|
// File tree
|
|
--file-tree-bg: #f4fbf9;
|
|
--file-tree-item-color: #1a2e3b;
|
|
--file-tree-icon-colour: #2a9d8f;
|
|
--file-tree-expand-button-color: #1a2e3b;
|
|
--file-tree-item-hover-bg: rgba(42, 157, 143, 0.10);
|
|
--file-tree-item-selected-bg: rgba(42, 157, 143, 0.20);
|
|
--file-tree-item-selected-color: #1a5c52;
|
|
|
|
// Compile/recompile button: teal instead of blue
|
|
--bg-accent-01: #{$lum-teal};
|
|
--bg-accent-02: #{$lum-teal};
|
|
--bg-accent-03: rgba(42, 157, 143, 0.15);
|
|
}
|
|
|
|
// ── Toolbar — gradient background + accent stripe ──────────────────────────
|
|
|
|
[data-lumiere='true'] .ide-redesign-toolbar {
|
|
position: relative;
|
|
// Exponential-ish teal wash: strong at top, nearly gone by mid-height
|
|
background:
|
|
linear-gradient(
|
|
180deg,
|
|
rgba(42, 157, 143, 0.20) 0%,
|
|
rgba(42, 157, 143, 0.09) 30%,
|
|
rgba(42, 157, 143, 0.03) 60%,
|
|
transparent 100%
|
|
),
|
|
#f7fdfc !important;
|
|
border-bottom: 1px solid $lum-border;
|
|
box-shadow: 0 2px 10px rgba(42, 157, 143, 0.10);
|
|
|
|
// 4px teal→blue gradient stripe at the very top
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: 4px;
|
|
background: linear-gradient(90deg, $lum-teal 0%, $lum-blue 100%);
|
|
pointer-events: none;
|
|
}
|
|
}
|
|
|
|
// ── Rail icon strip — grainy teal-tinted background ────────────────────────
|
|
|
|
[data-lumiere='true'] .ide-rail {
|
|
background: linear-gradient(180deg, #cceee8 0%, #daf2ee 100%);
|
|
border-right-color: $lum-border;
|
|
}
|
|
|
|
// Active tab bottom indicator: white dot on teal background
|
|
[data-lumiere='true'] .ide-rail-tab-link.open-rail::after {
|
|
background-color: rgba(255, 255, 255, 0.8);
|
|
}
|
|
|
|
// ── Rail panel (file tree / outline / search) — grainy gradient ───────────
|
|
|
|
[data-lumiere='true'] .file-tree-outline-panel-group {
|
|
background-image:
|
|
#{$lum-noise},
|
|
radial-gradient(ellipse 100% 60% at 100% 0%, rgba($lum-teal, 0.30) 0%, transparent 60%),
|
|
radial-gradient(ellipse 80% 50% at 0% 95%, rgba($lum-blue, 0.18) 0%, transparent 55%);
|
|
background-size: 200px 200px, cover, cover;
|
|
background-repeat: repeat, no-repeat, no-repeat;
|
|
background-color: #f4fbf9;
|
|
}
|
|
|
|
// Panel header bar inside rail panels
|
|
[data-lumiere='true'] .rail-panel-header {
|
|
background: linear-gradient(90deg, rgba($lum-teal, 0.12) 0%, transparent 80%);
|
|
border-bottom: 1px solid $lum-border;
|
|
}
|
|
|
|
[data-lumiere='true'] .rail-panel-title {
|
|
color: #1a5c52;
|
|
}
|
|
|
|
// File tree toolbar row
|
|
[data-lumiere='true'] .file-tree-toolbar {
|
|
border-bottom: 1px solid rgba($lum-teal, 0.15);
|
|
}
|
|
|
|
// ── CodeMirror toolbar buttons — rounded square style ─────────────────────
|
|
|
|
[data-lumiere='true'] .ol-cm-toolbar {
|
|
// Source editor formatting buttons (Bold, Italic, Link, etc.)
|
|
.ol-cm-toolbar-button {
|
|
border-radius: 7px !important;
|
|
transition: background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
|
|
|
|
&:hover:not(:disabled) {
|
|
background-color: rgba(42, 157, 143, 0.10) !important;
|
|
color: $lum-teal !important;
|
|
}
|
|
|
|
&.active,
|
|
&[aria-pressed='true'] {
|
|
background-color: rgba(42, 157, 143, 0.18) !important;
|
|
color: $lum-teal !important;
|
|
}
|
|
}
|
|
|
|
// Toolbar group dividers
|
|
.ol-cm-toolbar-button-group {
|
|
gap: 2px;
|
|
}
|
|
}
|
|
|
|
// ── Toolbar action buttons (Share, Present, History, Layout, etc.) ─────────
|
|
// Targets the right-hand action area of the toolbar; covers OLButton (btn),
|
|
// subdued icon buttons, and the layout dropdown toggle.
|
|
|
|
[data-lumiere='true'] .ide-redesign-toolbar-actions {
|
|
.btn {
|
|
border-radius: 7px !important;
|
|
}
|
|
|
|
.ide-redesign-toolbar-button-subdued,
|
|
.ide-redesign-toolbar-button-icon {
|
|
border-radius: 7px !important;
|
|
&:hover:not(:disabled) {
|
|
background-color: rgba(42, 157, 143, 0.10) !important;
|
|
color: $lum-teal !important;
|
|
}
|
|
}
|
|
|
|
.layout-dropdown .dropdown-toggle {
|
|
border-radius: 7px !important;
|
|
}
|
|
}
|
|
|
|
// Also round the left-hand menu-bar subdued buttons (File, Edit, Help…)
|
|
[data-lumiere='true'] .ide-redesign-toolbar-menu {
|
|
.ide-redesign-toolbar-button-subdued,
|
|
.ide-redesign-toolbar-button-icon {
|
|
border-radius: 7px !important;
|
|
}
|
|
}
|
|
|
|
// ── PDF panel toolbar (Recompile, Logs, Download) ──────────────────────────
|
|
// The compile button and its neighbours live in .toolbar-pdf, not in the
|
|
// main ide-redesign-toolbar, so they need their own border-radius rule.
|
|
|
|
[data-lumiere='true'] .toolbar-pdf {
|
|
.btn {
|
|
border-radius: 7px !important;
|
|
}
|
|
}
|
|
|
|
// ── Settings modal ────────────────────────────────────────────────────────
|
|
// :has() scopes to only this modal so other editor modals are unaffected.
|
|
|
|
[data-lumiere='true'] .modal-content:has(.ide-settings-modal-body) {
|
|
border: 1px solid $lum-border;
|
|
border-radius: 14px;
|
|
overflow: hidden;
|
|
box-shadow: 0 8px 32px rgba($lum-teal, 0.14);
|
|
|
|
.modal-header {
|
|
position: relative;
|
|
background: linear-gradient(180deg, #e8f5f2 0%, #f8fffe 100%);
|
|
border-bottom: 1px solid $lum-border;
|
|
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: 3px;
|
|
background: linear-gradient(90deg, $lum-teal 0%, $lum-blue 100%);
|
|
}
|
|
}
|
|
|
|
.modal-title {
|
|
color: #1a5c52;
|
|
font-weight: 600;
|
|
}
|
|
}
|
|
|
|
[data-lumiere='true'] .ide-settings-tab-nav.nav {
|
|
background: linear-gradient(180deg, rgba($lum-teal, 0.04) 0%, transparent 100%);
|
|
border-right-color: $lum-border;
|
|
}
|
|
|
|
[data-lumiere='true'] .ide-settings-tab-link {
|
|
color: #1a2e3b;
|
|
|
|
&:visited { color: #1a2e3b; }
|
|
|
|
&.active {
|
|
color: $lum-teal;
|
|
background-color: rgba($lum-teal, 0.12);
|
|
font-weight: 600;
|
|
}
|
|
|
|
&:hover:not(.active) {
|
|
background-color: rgba($lum-teal, 0.07);
|
|
color: darken($lum-teal, 5%);
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
|
|
[data-lumiere='true'] .ide-settings-section-title {
|
|
color: $lum-teal;
|
|
border-bottom-color: $lum-border;
|
|
}
|
|
|
|
[data-lumiere='true'] .ide-settings-tab-content {
|
|
.form-select:focus,
|
|
.form-control:focus {
|
|
border-color: rgba($lum-teal, 0.5);
|
|
box-shadow: 0 0 0 0.2rem rgba($lum-teal, 0.18);
|
|
}
|
|
}
|
|
|
|
// ── Compile button — teal gradient ────────────────────────────────────────
|
|
// .compile-button-group is a split button: main Recompile + dropdown arrow.
|
|
// Only the outer corners get rounded; the inner shared edge stays flat.
|
|
|
|
[data-lumiere='true'] .compile-button-group {
|
|
// Main (left) button: round left side, flat right side
|
|
.compile-button {
|
|
border-radius: 7px 0 0 7px !important;
|
|
}
|
|
|
|
// Dropdown arrow (right button): flat left side, round right side
|
|
.compile-dropdown-toggle {
|
|
border-radius: 0 7px 7px 0 !important;
|
|
}
|
|
|
|
// Teal gradient on the main compile button only
|
|
.compile-button.btn-primary {
|
|
background: linear-gradient(135deg, $lum-teal 0%, darken($lum-teal, 8%) 100%) !important;
|
|
border-color: darken($lum-teal, 10%) !important;
|
|
box-shadow: 0 2px 8px rgba($lum-teal, 0.35) !important;
|
|
|
|
&:hover,
|
|
&:focus {
|
|
background: linear-gradient(135deg, lighten($lum-teal, 4%) 0%, $lum-teal 100%) !important;
|
|
box-shadow: 0 4px 14px rgba($lum-teal, 0.45) !important;
|
|
}
|
|
}
|
|
|
|
// Dropdown toggle also gets the teal background (same button group, same color)
|
|
.compile-dropdown-toggle.btn-primary {
|
|
background: linear-gradient(135deg, darken($lum-teal, 5%) 0%, darken($lum-teal, 12%) 100%) !important;
|
|
border-color: darken($lum-teal, 10%) !important;
|
|
border-left-color: rgba(255, 255, 255, 0.2) !important;
|
|
box-shadow: 0 2px 8px rgba($lum-teal, 0.35) !important;
|
|
}
|
|
}
|
|
|
|
// ── Code / Visual editor toggle ────────────────────────────────────────────
|
|
// Replace the pill shape with rounded-square and add a sliding indicator that
|
|
// moves under the active tab instead of a simple background-color crossfade.
|
|
|
|
[data-lumiere='true'] .toggle-switch {
|
|
border-radius: 10px;
|
|
background-color: rgba($lum-teal, 0.07);
|
|
border: 1px solid rgba($lum-teal, 0.18);
|
|
padding: 3px;
|
|
position: relative;
|
|
|
|
// Sliding indicator — absolutely positioned under the active label
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 3px;
|
|
left: 3px;
|
|
// Each tab gets exactly half the inner area (enforced by flex: 1 below)
|
|
width: calc(50% - 3px);
|
|
height: calc(100% - 6px);
|
|
background: $lum-teal;
|
|
border-radius: 7px;
|
|
box-shadow: 0 2px 6px rgba($lum-teal, 0.35);
|
|
transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
pointer-events: none;
|
|
z-index: 0;
|
|
}
|
|
|
|
// Slide the indicator right when Visual is active
|
|
&:has(input[value='rich-text']:checked)::before {
|
|
transform: translateX(100%);
|
|
}
|
|
|
|
// Force Code label and Visual span wrapper to equal width
|
|
> label.toggle-switch-label {
|
|
flex: 1;
|
|
}
|
|
|
|
> span {
|
|
flex: 1;
|
|
display: flex;
|
|
}
|
|
}
|
|
|
|
[data-lumiere='true'] .toggle-switch-label {
|
|
flex: 1;
|
|
border-radius: 7px;
|
|
position: relative;
|
|
z-index: 1;
|
|
color: $lum-teal;
|
|
transition: color 0.18s ease;
|
|
}
|
|
|
|
// Active tab: white text over the teal slider; remove built-in bg/shadow
|
|
[data-lumiere='true'] .toggle-switch-input:checked + .toggle-switch-label {
|
|
color: #fff;
|
|
background-color: transparent !important;
|
|
box-shadow: none !important;
|
|
}
|
|
|
|
// Disabled tab (Visual locked on non-.tex files)
|
|
[data-lumiere='true'] .toggle-switch-input:disabled + .toggle-switch-label {
|
|
color: rgba($lum-teal, 0.35);
|
|
}
|