Files
SkinbaseNova/resources/scss/nova.scss
2026-02-26 21:12:32 +01:00

154 lines
5.1 KiB
SCSS

/*
* Nova overrides (keep minimal).
* The Nova layout is styled primarily via Tailwind utilities from resources/css/app.css.
*/
/* Hero radial background moved from inline styles to a class to respect Nova rules */
.nb-hero-radial {
background-image: radial-gradient(circle at 20% 10%, rgba(77,163,255,.25), transparent 35%),
radial-gradient(circle at 70% 30%, rgba(255,196,77,.18), transparent 40%),
radial-gradient(circle at 30% 80%, rgba(180,77,255,.16), transparent 45%);
}
/* Nova design tokens and helper classes copied from nova.html preview
These provide the same color tokens and small utilities used by the preview
so `blank` renders consistently until Tailwind config is consolidated. */
:root {
--sb-bg: #141416;
--sb-top: #1c1c1f;
--sb-panel: #191a1f;
--sb-panel2: #15161b;
--sb-line: #2a2a33;
--sb-text: #e3e3e3;
--sb-muted: #a6a6b0;
--sb-blue: #4da3ff;
/* Primary UI color tokens (Nova palette) */
--nova-blue: #09101acc;
--deep-space: #0F1724;
--panel-dark: #151E2E;
--soft-blue: #7A8CA5;
--accent-orange: #E07A21;
/* Toolbar color (Skinbase Nova) */
--toolbar-bg: #0F1724;
/* RGB variants for subtle overlays */
--nova-blue-rgb: 100,111,131;
--deep-space-rgb: 15,23,36;
--panel-dark-rgb: 21,30,46;
--toolbar-bg-rgb: 15,23,36;
}
/* Background / text helpers (used in preview markup) */
.bg-sb-bg { background-color: var(--sb-bg) !important; }
.bg-sb-top { background-color: var(--sb-top) !important; }
.bg-sb-panel { background-color: var(--sb-panel) !important; }
.bg-sb-panel2 { background-color: var(--sb-panel2) !important; }
.text-sb-text { color: var(--sb-text) !important; }
.text-sb-muted { color: var(--sb-muted) !important; }
.border-sb-line { border-color: var(--sb-line) !important; }
/* Small shadow token used by preview */
.shadow-sb { box-shadow: 0 12px 30px rgba(0,0,0,.45) !important; }
/* Scrollbar helpers used in preview */
.sb-scrollbar::-webkit-scrollbar { width: 10px; height: 10px; }
.sb-scrollbar::-webkit-scrollbar-thumb { background: rgba(255,255,255,.08); border-radius: 999px; }
.sb-scrollbar::-webkit-scrollbar-track { background: rgba(0,0,0,.15); }
/* Ensure header and dropdowns are not clipped and render above page content */
header {
overflow: visible;
/* Use the official toolbar background token from the Nova spec */
background-color: var(--toolbar-bg);
/* subtle divider to separate toolbar from content */
border-bottom: 1px solid rgba(255,255,255,0.02);
}
/* Menus may be absolute-positioned; ensure they sit above other UI layers */
[id^="dd-"] , [data-dropdown-menu], [data-submenu-menu] {
z-index: 9999 !important;
background-color: var(--panel-dark);
color: var(--sb-text);
border: 1px solid rgba(255,255,255,0.03);
}
/* Convenience helpers for the new nova tokens */
.bg-nova { background-color: var(--nova-blue) !important; -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(2px); }
.bg-deep { background-color: var(--deep-space) !important; }
.bg-panel-dark { background-color: var(--panel-dark) !important; }
.text-soft { color: var(--soft-blue) !important; }
.text-accent { color: var(--accent-orange) !important; }
/* Dropdown section header: subtle, smaller and visually separated */
.dd-section {
font-size: 11px;
color: rgba(166,166,176,0.65);
text-transform: uppercase;
letter-spacing: 0.08em;
border-top: 1px solid rgba(42,42,51,0.12);
margin-top: 0.5rem;
padding-top: 0.5rem;
padding-bottom: 0.25rem;
}
/* ─── Dropdown animations ─────────────────────────────────────── */
/**
* .dd-menu — base (closed) state.
* Invisible, shifted up slightly, non-interactive.
* On close the element fades out; visibility is hidden *after* the fade
* so the element is still rendered during the transition.
*/
.dd-menu {
opacity: 0;
transform: translateY(-6px) scale(0.97);
pointer-events: none;
visibility: hidden;
transition:
opacity 140ms ease,
transform 140ms ease,
visibility 0s linear 140ms;
}
/**
* .dd-menu.is-open — open state.
* Fully visible, interactive, with a snappy entrance spring.
* visibility is made visible immediately (0s delay), then
* opacity + transform animate in.
*/
.dd-menu.is-open {
opacity: 1;
transform: translateY(0) scale(1);
pointer-events: auto;
visibility: visible;
transition:
opacity 170ms cubic-bezier(0.16, 1, 0.3, 1),
transform 170ms cubic-bezier(0.16, 1, 0.3, 1),
visibility 0s linear 0s;
}
/* Chevron rotation indicator for open dropdowns */
[data-dd] svg:last-child,
[data-dropdown-toggle] svg:last-child {
transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1);
}
[data-dd][aria-expanded="true"] svg:last-child,
[data-dropdown-toggle][aria-expanded="true"] svg:last-child {
transform: rotate(180deg);
}
/* Item hover: subtle left-border accent when hovering menu links */
.dd-menu a:hover,
.dd-menu button:hover {
border-left: 2px solid rgba(77,163,255,0.4);
padding-left: calc(1rem - 2px);
}
.dd-menu a,
.dd-menu button {
border-left: 2px solid transparent;
transition: border-color 120ms ease, background-color 120ms ease, padding-left 120ms ease;
}