supermemory/apps/desktop/app/globals.css
2026-06-24 08:11:34 -07:00

710 lines
12 KiB
CSS

@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap");
/*
* Desktop window chrome — supplements the shared @repo/ui theme, which is
* imported first in app/layout.tsx (`@ui/globals.css`) and provides the
* Tailwind layer + design tokens. Keep this file plain CSS (no @apply / no
* tailwind import) so there is a single Tailwind entry point.
*/
html,
body {
height: 100%;
/* No rubber-band overscroll inside the native window. */
overscroll-behavior: none;
}
.desktop-shell {
position: relative;
isolation: isolate;
background:
radial-gradient(
ellipse 80% 60% at 50% 0%,
rgba(75, 160, 250, 0.08) 0%,
rgba(34, 97, 202, 0.04) 35%,
transparent 70%
),
#05080d;
color: #fafafa;
}
.desktop-shell::before {
position: absolute;
inset: 0;
z-index: -2;
content: "";
background-image: radial-gradient(
circle,
rgba(105, 167, 240, 0.18) 1px,
transparent 1px
);
background-size: 32px 32px;
mask-image: radial-gradient(ellipse at center, black 55%, transparent 100%);
-webkit-mask-image: radial-gradient(
ellipse at center,
black 55%,
transparent 100%
);
pointer-events: none;
}
.desktop-shell::after {
position: absolute;
inset: 0;
z-index: -1;
content: "";
background: rgb(5 8 13 / 0.55);
pointer-events: none;
}
/* The draggable title bar should feel like native chrome, not selectable text. */
[data-tauri-drag-region] {
cursor: default;
user-select: none;
-webkit-user-select: none;
}
.desktop-login-page {
display: grid;
min-height: 100dvh;
height: 100dvh;
overflow-x: hidden;
overflow-y: auto;
grid-template-columns: 1fr;
grid-template-rows: auto minmax(0, 1fr);
}
@media (min-width: 1024px) {
.desktop-login-page {
height: 100dvh;
overflow: hidden;
grid-template-columns: 65% 35%;
grid-template-rows: minmax(0, 1fr);
}
}
.desktop-login-mobile-bg {
position: absolute;
inset: 0;
z-index: 0;
pointer-events: none;
}
@media (min-width: 1024px) {
.desktop-login-mobile-bg {
display: none;
}
}
.desktop-login-tools-panel {
position: relative;
display: none;
min-height: 0;
flex-direction: column;
overflow: hidden;
border-right: 1px solid rgb(255 255 255 / 0.06);
}
@media (min-width: 1024px) {
.desktop-login-tools-panel {
display: block;
}
}
.desktop-login-tools-panel::before {
position: absolute;
inset: 0;
content: "";
background: #030912;
pointer-events: none;
}
.desktop-login-panel-orb {
position: absolute;
inset: 0;
background:
radial-gradient(
ellipse 130% 100% at 50% 45%,
rgba(70, 155, 255, 0.24) 0%,
rgba(35, 100, 210, 0.14) 38%,
rgba(8, 22, 45, 0.55) 68%,
#030912 100%
),
radial-gradient(
ellipse 90% 70% at 50% 100%,
rgba(50, 130, 240, 0.16) 0%,
transparent 65%
);
}
.desktop-login-panel-orb-image {
position: absolute;
inset: -10% -15% -5% -15%;
background-image: url("/onboarding/bg-gradient-0.png");
background-size: cover;
background-position: center 35%;
background-repeat: no-repeat;
opacity: 0.22;
pointer-events: none;
}
.desktop-login-panel-orb-image-alt {
position: absolute;
inset: -10% -15% -5% -15%;
background-image: url("/onboarding/bg-gradient-1.png");
background-size: cover;
background-position: center 35%;
background-repeat: no-repeat;
opacity: 0.11;
pointer-events: none;
}
.desktop-login-panel-vignette {
position: absolute;
inset: 0;
background: linear-gradient(
180deg,
rgb(7 16 36 / 0.2),
transparent 42%,
rgb(3 9 18 / 0.36)
);
}
.desktop-login-tools-network {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
min-height: 240px;
}
.desktop-login-panel-caption {
position: absolute;
left: 50%;
bottom: 2rem;
z-index: 2;
margin: 0;
white-space: nowrap;
transform: translateX(-50%);
color: rgb(255 255 255 / 0.45);
font-size: 0.875rem;
text-align: center;
}
.desktop-login-tool-node-wrap {
position: absolute;
z-index: 2;
transform: translate(-50%, -50%);
}
.desktop-login-tool-node {
display: flex;
width: 2.875rem;
height: 2.875rem;
align-items: center;
justify-content: center;
border: 1px solid rgb(255 255 255 / 0.12);
border-radius: 0.8125rem;
background: rgb(12 22 40 / 0.82);
box-shadow:
0 1px 0 rgb(255 255 255 / 0.1) inset,
0 6px 20px rgb(0 0 0 / 0.22);
backdrop-filter: blur(12px);
transition:
border-color 0.35s ease,
background 0.35s ease,
box-shadow 0.35s ease,
transform 0.35s cubic-bezier(0.34, 1.2, 0.64, 1);
}
.desktop-login-tool-node-icon {
width: 1.375rem;
height: 1.375rem;
flex-shrink: 0;
font-weight: 700;
font-size: 0.625rem;
line-height: 1.375rem;
text-align: center;
opacity: 0.88;
transition: opacity 0.35s ease;
}
.desktop-login-tool-node-source {
border-color: rgb(100 180 255 / 0.55);
background: rgb(14 28 50 / 0.92);
box-shadow:
0 0 0 1px rgb(100 180 255 / 0.25),
0 0 24px rgb(75 160 250 / 0.28),
0 1px 0 rgb(255 255 255 / 0.1) inset;
transform: scale(1.05);
}
.desktop-login-tool-node-destination {
border-color: rgb(130 210 255 / 0.65);
background: rgb(16 32 58 / 0.95);
box-shadow:
0 0 0 1px rgb(130 210 255 / 0.3),
0 0 32px rgb(100 180 255 / 0.35),
0 1px 0 rgb(255 255 255 / 0.12) inset;
transform: scale(1.08);
}
.desktop-login-tool-node-source .desktop-login-tool-node-icon,
.desktop-login-tool-node-destination .desktop-login-tool-node-icon {
opacity: 1;
}
.desktop-login-tool-node-label {
position: absolute;
top: calc(100% + 0.4rem);
left: 50%;
max-width: 5.5rem;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
transform: translateX(-50%);
color: rgb(200 225 255 / 0.95);
font-weight: 500;
font-size: 0.6875rem;
text-shadow: 0 1px 8px rgb(0 0 0 / 0.65);
opacity: 0;
pointer-events: none;
transition: opacity 0.25s ease;
}
.desktop-login-tool-node-label-visible {
opacity: 1;
}
.desktop-login-active-path {
stroke-dasharray: 1;
stroke-dashoffset: 1;
animation: desktop-login-draw-path 1.1s cubic-bezier(0.33, 0, 0.2, 1) forwards;
}
.desktop-login-memory-chip-motion {
position: absolute;
z-index: 2;
transform: translate(-50%, -50%);
}
.desktop-login-chip-capture {
animation: desktop-login-chip-capture 1.1s cubic-bezier(0.35, 0, 0.15, 1)
forwards;
}
.desktop-login-chip-hold {
left: 50%;
top: 50%;
transform: translate(-50%, -50%) scale(1.05);
}
.desktop-login-chip-recall {
animation: desktop-login-chip-recall 1.1s cubic-bezier(0.35, 0, 0.15, 1)
forwards;
}
.desktop-login-memory-chip {
display: flex;
width: 2.75rem;
height: 1.625rem;
align-items: center;
justify-content: center;
border: 1px solid rgb(180 220 255 / 0.35);
border-radius: 0.375rem;
background: rgb(12 24 44 / 0.95);
box-shadow:
0 0 16px rgb(100 180 255 / 0.4),
0 1px 0 rgb(255 255 255 / 0.12) inset;
}
.desktop-login-memory-chip-lines {
display: flex;
width: 1.5rem;
flex-direction: column;
gap: 0.2rem;
}
.desktop-login-memory-chip-lines span {
display: block;
height: 0.125rem;
border-radius: 9999px;
background: rgb(180 220 255 / 0.55);
}
.desktop-login-memory-chip-lines span:nth-child(2) {
width: 78%;
opacity: 0.75;
}
.desktop-login-memory-chip-lines span:nth-child(3) {
width: 52%;
opacity: 0.5;
}
.desktop-login-orb-wrap {
position: absolute;
top: 50%;
left: 50%;
z-index: 3;
transform: translate(-50%, -50%);
}
.desktop-login-nova-orb {
position: relative;
display: flex;
width: 9rem;
height: 9rem;
align-items: center;
justify-content: center;
overflow: hidden;
border-radius: 9999px;
box-shadow:
0.3rem 0.6rem 1.2rem #0a0e14 inset,
0 0 54px rgb(65 135 255 / 0.58);
filter: blur(1px);
transition: transform 0.35s ease;
}
.desktop-login-nova-orb-active {
animation: desktop-login-orb-pulse 0.55s ease-out;
}
.desktop-login-nova-gradient {
position: absolute;
top: -32%;
left: -58%;
width: 16rem;
height: 16rem;
background:
radial-gradient(
circle at 28% 28%,
rgba(255, 255, 255, 0.95),
transparent 12%
),
conic-gradient(from 30deg, #7ce7ff, #295fff, #7c5cff, #22d3ee, #7ce7ff);
animation: desktop-login-orb-rotate 12s linear infinite;
}
.desktop-login-auth-pane {
display: flex;
min-height: 0;
flex-direction: column;
overflow-y: auto;
overflow-x: hidden;
}
.desktop-login-auth-header {
padding: 1.5rem;
}
.desktop-login-memory-api-button {
height: 2.75rem;
padding-inline: 1rem;
font-size: 1rem;
}
.desktop-login-auth-content {
display: flex;
min-height: 0;
flex: 1;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0.25rem 2.5rem 2.5rem;
}
.desktop-login-auth-stack {
width: 100%;
max-width: 36.875rem;
}
.desktop-login-headline {
margin-bottom: 2rem;
}
.desktop-login-headline h1 {
font-size: 1.875rem;
letter-spacing: 0;
}
.desktop-login-subtitle {
margin-top: 1rem;
font-family: "DM Sans", sans-serif;
font-size: 0.875rem;
line-height: 1.35;
}
.desktop-login-card {
border-radius: 1.375rem;
padding: 3rem 3.625rem;
}
.desktop-login-card-pending {
min-height: 38rem;
}
.desktop-login-form {
gap: 0.75rem;
width: 29.5rem;
max-width: 100%;
}
.desktop-login-email-form {
gap: 1.5rem;
}
.desktop-login-email-input,
.desktop-login-primary-button {
height: 3.5rem;
}
.desktop-login-terms {
font-family: "DM Sans", sans-serif;
font-size: 0.75rem;
line-height: 1.35;
}
@media (max-width: 1023px) {
.desktop-login-page {
height: 100dvh;
overflow-y: auto;
}
.desktop-login-auth-pane {
min-height: 100dvh;
}
.desktop-login-auth-content {
align-items: center;
padding-inline: 1rem;
}
.desktop-login-auth-stack {
max-width: 36.875rem;
}
}
@media (max-width: 1900px) and (min-width: 1024px) {
.desktop-login-tool-node {
width: 2.875rem;
height: 2.875rem;
border-radius: 0.8125rem;
}
.desktop-login-tool-node-icon {
width: 1.375rem;
height: 1.375rem;
font-size: 0.5625rem;
line-height: 1.375rem;
}
.desktop-login-tool-node-label {
top: calc(100% + 0.3rem);
font-size: 0.625rem;
}
.desktop-login-memory-chip {
width: 2.75rem;
height: 1.625rem;
}
.desktop-login-memory-chip-lines {
width: 1.5rem;
gap: 0.2rem;
}
.desktop-login-nova-orb {
width: 7.5rem;
height: 7.5rem;
box-shadow:
0.25rem 0.5rem 1rem #0a0e14 inset,
0 0 44px rgb(65 135 255 / 0.54);
}
.desktop-login-nova-gradient {
width: 13.5rem;
height: 13.5rem;
}
.desktop-login-panel-caption {
bottom: 1.5rem;
font-size: 0.875rem;
}
.desktop-login-auth-header {
padding: 1.5rem;
}
.desktop-login-memory-api-button {
height: 2.5rem;
padding-inline: 0.875rem;
font-size: 0.875rem;
}
.desktop-login-auth-content {
padding: 0.5rem 1.25rem 1.5rem;
}
.desktop-login-auth-stack {
max-width: 22.5rem;
}
.desktop-login-headline {
margin-bottom: 1.25rem;
}
.desktop-login-headline h1 {
font-size: 1.5rem;
}
.desktop-login-subtitle {
margin-top: 0.75rem;
font-size: 0.8125rem;
}
.desktop-login-card {
padding: 1.5rem;
}
.desktop-login-card-pending {
min-height: 27rem;
}
.desktop-login-email-form {
gap: 1rem;
}
.desktop-login-email-input,
.desktop-login-primary-button {
height: 3rem;
}
.desktop-login-terms {
font-size: 0.75rem;
}
}
@media (max-width: 760px) {
.desktop-login-auth-header {
height: 4.5rem;
padding-inline: 1rem;
}
.desktop-login-memory-api-button {
height: 2.5rem;
padding-inline: 0.75rem;
font-size: 0.875rem;
}
.desktop-login-headline h1 {
font-size: 1.5rem;
}
.desktop-login-card {
padding: 1.5rem;
}
}
@media (max-height: 620px) {
.desktop-login-auth-header {
height: 3.75rem;
}
.desktop-login-auth-content {
align-items: flex-start;
padding-block: 0.5rem 1rem;
}
.desktop-login-headline {
margin-bottom: 0.75rem;
}
.desktop-login-headline h1 {
font-size: 1.375rem;
}
.desktop-login-subtitle {
display: none;
}
.desktop-login-card {
padding: 1.125rem 1.25rem;
border-radius: 1rem;
}
.desktop-login-card-pending {
min-height: 18rem;
}
.desktop-login-form {
gap: 0.625rem;
}
.desktop-login-email-form {
gap: 0.75rem;
}
.desktop-login-email-input,
.desktop-login-primary-button {
height: 2.75rem;
}
.desktop-login-terms {
font-size: 0.6875rem;
}
.desktop-login-panel-caption {
bottom: 1rem;
}
}
@media (max-width: 1180px) and (min-width: 1024px) {
.desktop-login-panel-caption {
font-size: 0.75rem;
}
}
@keyframes desktop-login-draw-path {
to {
stroke-dashoffset: 0;
}
}
@keyframes desktop-login-chip-capture {
from {
left: var(--from-x);
top: var(--from-y);
}
to {
left: 50%;
top: 50%;
}
}
@keyframes desktop-login-chip-recall {
from {
left: 50%;
top: 50%;
}
to {
left: var(--to-x);
top: var(--to-y);
}
}
@keyframes desktop-login-orb-rotate {
to {
transform: rotate(360deg);
}
}
@keyframes desktop-login-orb-pulse {
0%,
100% {
transform: scale(1);
}
45% {
transform: scale(1.08);
}
}