html, body { height: 100%; } *:focus { outline: none; } .skeleton-box { background-color: hsl(var(--border)); color: hsl(var(--border)); user-select: none; cursor: default; animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; border-color: transparent; } .skeleton-circle { background-color: hsl(var(--border)); border-radius: 1000px; color: hsl(var(--border)); user-select: none; cursor: default; animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; border-color: transparent; } .skeleton-circle > *, .skeleton-box > *, .skeleton-line > * { opacity: 0; } .pin-field-container { display: grid; grid-auto-columns: max-content; grid-auto-flow: column; justify-content: center; margin: 4rem 0; } .pin-field { border: 1px solid hsl(var(--border)); background-color: hsl(var(--accent)); border-right: none; font-size: 2rem; height: 4rem; outline: none; text-align: center; transition-duration: 250ms; transition-property: color, border, box-shadow, transform; width: 4rem; } .pin-field:last-of-type { border-radius: 0 0.5rem 0.5rem 0; border-right: 1px solid hsl(var(--border)); } .pin-field:focus { box-shadow: "0 0 0.25rem rgba(white, 0.5)"; opacity: 0.9; outline: none; } .invalid { animation: shake 0.2s ease-in-out 0s 2; } .pin-field:first-of-type { border-radius: 0.5rem 0 0 0.5rem; } .pin-field[disabled] { cursor: not-allowed; opacity: 0.5; } @keyframes shake { 0% { transform: translateX(0rem); } 25% { transform: translateX(0.5rem); } 75% { transform: translateX(-0.5rem); } 100% { transform: translateX(0rem); } } /* Desktop App */ html.desktop { background: transparent; user-select: none; -webkit-user-select: none; overscroll-behavior: none; border-radius: 10px; overflow: hidden; height: 100vh; width: 100vw; position: fixed; top: 0; left: 0; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; } html.desktop body { position: relative; background: hsl(var(--background)); overscroll-behavior: none; margin: 0; padding: 0; box-sizing: border-box; height: 100vh; width: 100%; overflow: auto; } html.desktop body::before { content: ""; position: fixed; top: 0; left: 0; width: 100%; height: 100%; border: 0.5px solid rgba(0, 0, 0, 0.15); border-radius: 10px; z-index: 100; pointer-events: none; } html.desktop.dark body::before { border: 0.5px solid rgba(255, 255, 255, 0.15); } html.desktop .wrapper::-webkit-scrollbar, html.desktop::-webkit-scrollbar, html.desktop body::-webkit-scrollbar { display: none; /* Chrome, Safari, Opera */ } .desktop div, .desktop a, .desktop button { cursor: default; } .color-picker .react-colorful { height: 240px; } .color-picker .react-colorful__saturation { border-radius: 4px 4px 0 0; } .color-picker .react-colorful__hue { height: 40px; border-radius: 0 0 4px 4px; } .color-picker .react-colorful__hue-pointer { width: 8px; height: inherit; } .color-picker .react-colorful__pointer { width: 15px; height: 15px; } .color-picker .react-colorful__hue { height: 20px; } .remove-arrow::-webkit-inner-spin-button, .remove-arrow::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } .remove-arrow { appearance: textfield; } input[type="time"]::-webkit-clear-button { display: none; } input[type="time"]::-webkit-calendar-picker-indicator { display: none; } .invoice-editor, .invoice-editor div[aria-expanded="false"], .invoice-editor .ProseMirror, .invoice-editor .is-empty { height: 100%; } .ProseMirror-focused p.is-editor-empty:first-child::before { content: attr(data-placeholder); float: left; color: #434343; pointer-events: none; height: 0; } .tiptap { font-size: 11px; line-height: 18px; } .dark .dotted-bg { background-image: radial-gradient( circle at 1px 1px, #232323 0.5px, transparent 0 ); background-size: 6px 6px; } .light .dotted-bg { background-size: 6px 6px; background-image: radial-gradient( circle at 1px 1px, #e0e0e0 0.5px, transparent 0 ); } .global-search-list { height: min(450px, var(--search-list-height)); overscroll-behavior: contain; transition: 100ms ease; transition-property: height; } .desktop-search .global-search-list { height: 450px; } .desktop-search .search-container { border: none; border-bottom: 0.5px solid hsl(var(--border)); } .desktop-search .search-footer { border-left: 0px; border-right: 0px; border-bottom: 0px; border-top: 1px; } /* Wiggle Animations for Customize Mode - Faster & Smaller Movements */ @keyframes wiggle1 { 0%, 100% { transform: rotate(0deg); } 20% { transform: rotate(0.6deg); } 40% { transform: rotate(-0.4deg); } 60% { transform: rotate(0.7deg); } 80% { transform: rotate(-0.5deg); } } @keyframes wiggle2 { 0%, 100% { transform: rotate(0deg); } 15% { transform: rotate(-0.6deg); } 35% { transform: rotate(0.5deg); } 55% { transform: rotate(-0.4deg); } 75% { transform: rotate(0.7deg); } } @keyframes wiggle3 { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(0.4deg); } 45% { transform: rotate(-0.6deg); } 65% { transform: rotate(0.6deg); } 85% { transform: rotate(-0.3deg); } } @keyframes wiggle4 { 0%, 100% { transform: rotate(0deg); } 18% { transform: rotate(0.7deg); } 38% { transform: rotate(-0.5deg); } 58% { transform: rotate(0.4deg); } 78% { transform: rotate(-0.6deg); } } @keyframes wiggle5 { 0%, 100% { transform: rotate(0deg); } 22% { transform: rotate(-0.5deg); } 42% { transform: rotate(0.6deg); } 62% { transform: rotate(-0.7deg); } 82% { transform: rotate(0.5deg); } } @keyframes wiggle6 { 0%, 100% { transform: rotate(0deg); } 28% { transform: rotate(0.5deg); } 48% { transform: rotate(-0.4deg); } 68% { transform: rotate(0.6deg); } 88% { transform: rotate(-0.7deg); } } @keyframes wiggle7 { 0%, 100% { transform: rotate(0deg); } 16% { transform: rotate(-0.6deg); } 36% { transform: rotate(0.7deg); } 56% { transform: rotate(-0.4deg); } 76% { transform: rotate(0.5deg); } } .wiggle-1 { animation: wiggle1 1.2s linear infinite; } .wiggle-2 { animation: wiggle2 1.3s linear infinite; } .wiggle-3 { animation: wiggle3 1.1s linear infinite; } .wiggle-4 { animation: wiggle4 1.25s linear infinite; } .wiggle-5 { animation: wiggle5 1.35s linear infinite; } .wiggle-6 { animation: wiggle6 1.15s linear infinite; } .wiggle-7 { animation: wiggle7 1.4s linear infinite; } /* Chat input positioning for small viewport heights on homepage */ @media (max-height: 860px) { .chat-input-wrapper-static { position: relative; bottom: auto; left: 0; right: 0; width: 100%; margin-top: auto; margin-bottom: 0; } .chat-input-static { position: relative; bottom: 30px; left: 0; right: 0; width: 100%; margin-top: 1.5rem; margin-bottom: 1.5rem; } .widgets-container-spacing { padding-bottom: 0px; } /* Allow scrolling when chat input is not fixed */ .chat-interface-container-scrollable { overflow-y: auto; overflow-x: hidden; height: auto; min-height: calc(100vh - 764px); } } /* Chart selection overlay - exclude labels from background effect */ /* Ensure chart axis labels are not affected by the overlay */ .recharts-wrapper .recharts-xAxis .recharts-cartesian-axis-tick text, .recharts-wrapper .recharts-yAxis .recharts-cartesian-axis-tick text { position: relative; z-index: 10; user-select: none; pointer-events: none; isolation: isolate; } /* Ensure the overlay doesn't affect labels */ .chart-selection-overlay { isolation: isolate; } /* Dark mode support for chart selection overlay */ .dark .chart-selection-overlay { background: rgba(255, 255, 255, 0.08); } .dark .chart-selection-border { border-left-color: #999999; }