/* ============================================================ GLASSGRID — GLASSMORPHISM UTILITY SYSTEM Reusable glass surface classes. All visual values come from tokens. Structure-free — layout is defined in layout.css. ============================================================ */ /* ── Base Glass Mixin Pattern ── */ .glass { background: var(--color-glass-fill); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); border: 1px solid var(--color-glass-border); box-shadow: var(--shadow-md); } .glass-sm { background: var(--color-glass-fill); backdrop-filter: blur(var(--glass-blur-sm)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--glass-blur-sm)) saturate(var(--glass-saturation)); border: 1px solid var(--color-glass-border); box-shadow: var(--shadow-sm); } .glass-md { background: var(--color-glass-fill-md); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); border: 1px solid var(--color-glass-border-md); box-shadow: var(--shadow-lg); } .glass-lg { background: var(--color-glass-fill-lg); backdrop-filter: blur(var(--blur-xl)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--blur-xl)) saturate(var(--glass-saturation)); border: 1px solid var(--color-glass-border-md); box-shadow: var(--shadow-xl); } /* ── Glass with Highlight (top edge) ── */ .glass-elevated { background: var(--color-glass-fill-md); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); border: 1px solid var(--color-glass-border-md); box-shadow: var(--shadow-lg), inset 0 1px 0 var(--color-glass-highlight); } /* ── Glass Accent Border ── */ .glass-accent { background: var(--color-glass-fill); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); border: 1px solid var(--color-border-accent); box-shadow: var(--shadow-md), var(--shadow-glow); } /* ── Gradient Glass ── */ .glass-gradient { background: linear-gradient( 135deg, var(--color-glass-fill-md), var(--color-glass-fill) ); backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-saturation)); border: 1px solid var(--color-glass-border); box-shadow: var(--shadow-lg); } /* ── Navigation Glass ── */ .glass-nav { background: var(--navbar-bg); backdrop-filter: blur(var(--navbar-blur)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--navbar-blur)) saturate(var(--glass-saturation)); border-bottom: 1px solid var(--color-glass-border); } /* ── Glass Bottom Bar ── */ .glass-bottom { background: var(--navbar-bg); backdrop-filter: blur(var(--navbar-blur)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--navbar-blur)) saturate(var(--glass-saturation)); border-top: 1px solid var(--color-glass-border); } /* ── Glass Modal ── */ .glass-modal { background: rgba(10, 10, 20, 0.85); backdrop-filter: blur(var(--blur-2xl)) saturate(var(--glass-saturation)); -webkit-backdrop-filter: blur(var(--blur-2xl)) saturate(var(--glass-saturation)); border: 1px solid var(--color-glass-border-md); box-shadow: var(--shadow-xl), inset 0 1px 0 var(--color-glass-highlight); } /* ── Glass Input ── */ .glass-input { background: var(--color-glass-fill); backdrop-filter: blur(var(--blur-sm)); -webkit-backdrop-filter: blur(var(--blur-sm)); border: 1px solid var(--color-glass-border); transition: border-color var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out); } .glass-input:focus { background: var(--color-glass-fill-md); border-color: var(--color-accent-primary); box-shadow: 0 0 0 3px rgba(168, 85, 247, 0.15); } .glass-input::placeholder { color: var(--color-text-muted); } /* ── Radius Helpers ── */ .r-sm { border-radius: var(--radius-sm); } .r-md { border-radius: var(--radius-md); } .r-lg { border-radius: var(--radius-lg); } .r-xl { border-radius: var(--radius-xl); } .r-2xl { border-radius: var(--radius-2xl); } .r-full { border-radius: var(--radius-full); } /* ── Glow Helpers ── */ .glow { box-shadow: var(--shadow-glow); } .glow-accent { box-shadow: var(--shadow-glow-accent); } /* ── Gradient Border (using pseudo) ── */ .gradient-border { position: relative; } .gradient-border::before { content: ''; position: absolute; inset: -1px; border-radius: inherit; background: var(--color-accent-gradient-full); z-index: -1; opacity: 0.5; }