@import "tailwindcss"; @import "./theme.css"; @import "./variables.css"; /* ── Zero Horizontal Scrollbar – Global Enforcement ── */ /* Per AGENTS.md §9: horizontal scrollbar strictly prohibited at any level. */ html { overflow-x: hidden; } body { overflow-x: hidden; width: 100%; } body { font-family: var(--font-sans); color: var(--foreground); /* Optical sizing + smoothing */ font-optical-sizing: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } /* 1-Second Dual-Layer Smooth Background Crossfade */ /* Dark Mode Background Layer (Active by default, fades out on .light) */ body::before, body::after { content: ""; position: fixed; inset: 0; z-index: -1; transition: opacity 150ms ease-in-out; pointer-events: none; background-size: cover; background-attachment: fixed; } body::before { background-color: #09090b; background-image: radial-gradient(circle at 0% 0%, rgba(30, 58, 138, 0.35) 0%, transparent 40%), radial-gradient(circle at 100% 20%, rgba(220, 38, 38, 0.15) 0%, transparent 40%), radial-gradient(circle at 50% 100%, rgba(15, 23, 42, 0.8) 0%, transparent 60%); opacity: 1; } .light body::before { opacity: 0; } /* Light Mode Background Layer (Hidden by default, fades in on .light) */ body::after { background-color: #f1f5f9; background-image: radial-gradient(circle at 0% 0%, rgba(59, 130, 246, 0.1) 0px, transparent 40%), radial-gradient(circle at 100% 0%, rgba(239, 68, 68, 0.05) 0px, transparent 40%); opacity: 0; } .light body::after { opacity: 1; } /* Ambient Colors for Cards & Sidebars */ :root { --ambient-card-bg: rgba(24, 24, 27, 0.7); --ambient-sidebar-bg: rgba(9, 9, 11, 0.95); } .light { --ambient-card-bg: rgba(255, 255, 255, 0.9); --ambient-sidebar-bg: rgba(255, 255, 255, 1); } .bg-card { background-color: var(--ambient-card-bg) !important; background-image: none !important; backdrop-filter: blur(12px); } .bg-sidebar { background-color: var(--ambient-sidebar-bg) !important; background-image: none !important; backdrop-filter: blur(16px); } /* Global smooth transition for theme change */ *, *::before, *::after { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, box-shadow, opacity, transform !important; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important; transition-duration: 500ms !important; } canvas { transition: none !important; } /* View Transitions API (For perfect whole-screen crossfade including WebGL/Canvas) */ ::view-transition-old(root), ::view-transition-new(root) { animation-duration: 500ms; animation-timing-function: ease-in-out; } /* ── Custom Scrollbar for Fixed Modals ── */ .custom-scrollbar::-webkit-scrollbar { width: 6px; height: 6px; } .custom-scrollbar::-webkit-scrollbar-track { background: transparent; } .custom-scrollbar::-webkit-scrollbar-thumb { background-color: var(--muted); border-radius: 10px; } .dark .custom-scrollbar::-webkit-scrollbar-thumb { background-color: rgba(255, 255, 255, 0.1); } .light .custom-scrollbar::-webkit-scrollbar-thumb { background-color: rgba(0, 0, 0, 0.1); } /* ── Modal Animations (0.5s) ── */ @keyframes modalFadeIn { from { opacity: 0; transform: scale(0.95) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } } @keyframes modalFadeOut { from { opacity: 1; transform: scale(1) translateY(0); } to { opacity: 0; transform: scale(0.95) translateY(10px); } } @keyframes overlayFadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes overlayFadeOut { from { opacity: 1; } to { opacity: 0; } } .animate-modal-in { animation: modalFadeIn 500ms cubic-bezier(0.16, 1, 0.3, 1) forwards; } .animate-modal-out { animation: modalFadeOut 500ms cubic-bezier(0.16, 1, 0.3, 1) forwards; } .animate-overlay-in { animation: overlayFadeIn 500ms ease-out forwards; } .animate-overlay-out { animation: overlayFadeOut 500ms ease-in forwards; } /* Hide native Edge/IE password reveal icon (the second eye) */ input::-ms-reveal, input::-ms-clear { display: none; } /* Accordion Animation Fix */ .accordion-grid { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 1s ease-in-out, margin-top 1s ease-in-out, opacity 1s ease-in-out; opacity: 0; margin-top: 0; } .accordion-grid.expanded { grid-template-rows: 1fr; opacity: 1; margin-top: 0.375rem; } .accordion-inner { overflow: hidden; min-height: 0; }