From 4e3449b7f2c1f4a8bc6ac74193afcdd8d48f8a19 Mon Sep 17 00:00:00 2001 From: arsam Date: Fri, 18 Sep 2026 23:14:30 +0330 Subject: [PATCH] Import source: cshare-app/src/index Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality. --- cshare-app/src/index.css | 1023 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 1023 insertions(+) create mode 100644 cshare-app/src/index.css diff --git a/cshare-app/src/index.css b/cshare-app/src/index.css new file mode 100644 index 0000000..cd63a1b --- /dev/null +++ b/cshare-app/src/index.css @@ -0,0 +1,1023 @@ +@import "tailwindcss"; + +@font-face { + font-family: 'Syne'; + src: url('/fonts/Syne-400.ttf') format('truetype'); + font-weight: 400; + font-display: swap; +} +@font-face { + font-family: 'Syne'; + src: url('/fonts/Syne-600.ttf') format('truetype'); + font-weight: 600; + font-display: swap; +} +@font-face { + font-family: 'Syne'; + src: url('/fonts/Syne-700.ttf') format('truetype'); + font-weight: 700; + font-display: swap; +} +@font-face { + font-family: 'Syne'; + src: url('/fonts/Syne-800.ttf') format('truetype'); + font-weight: 800; + font-display: swap; +} + +@font-face { + font-family: 'Outfit'; + src: url('/fonts/Outfit-400.ttf') format('truetype'); + font-weight: 400; + font-display: swap; +} +@font-face { + font-family: 'Outfit'; + src: url('/fonts/Outfit-500.ttf') format('truetype'); + font-weight: 500; + font-display: swap; +} +@font-face { + font-family: 'Outfit'; + src: url('/fonts/Outfit-600.ttf') format('truetype'); + font-weight: 600; + font-display: swap; +} +@font-face { + font-family: 'Outfit'; + src: url('/fonts/Outfit-700.ttf') format('truetype'); + font-weight: 700; + font-display: swap; +} + +@font-face { + font-family: 'Playfair'; + src: url('/fonts/Playfair-700.ttf') format('truetype'); + font-weight: 700; + font-display: swap; +} +@font-face { + font-family: 'Playfair'; + src: url('/fonts/Playfair-700i.ttf') format('truetype'); + font-weight: 700; + font-style: italic; + font-display: swap; +} + +:root { + /* Core palette — warm charcoal + amber gold, zero purple */ + --bg-primary: #0D0D0F; + --bg-elevated: #16161A; + --bg-surface: #1E1E24; + --bg-hover: #26262E; + --bg-active: #2E2E38; + + --text-primary: #EDEDEF; + --text-secondary: #9494A0; + --text-muted: #62626E; + + --accent: #4A90FF; + --accent-hover: #6BA5FF; + --accent-muted: rgba(74, 144, 255, 0.12); + --accent-border: rgba(74, 144, 255, 0.25); + + --danger: #E84848; + --danger-muted: rgba(232, 72, 72, 0.15); + + --success: #38C87A; + --success-muted: rgba(56, 200, 122, 0.15); + + --border: #2A2A32; + --border-subtle: #222228; + + --font-heading: 'Syne', system-ui, sans-serif; + --font-body: 'Outfit', system-ui, sans-serif; + --font-display: 'Playfair', Georgia, serif; + + --radius-sm: 6px; + --radius-md: 10px; + --radius-lg: 16px; + --radius-xl: 24px; + + --shadow-sm: 0 1px 3px rgba(0,0,0,0.3); + --shadow-md: 0 4px 16px rgba(0,0,0,0.4); + --shadow-lg: 0 8px 32px rgba(0,0,0,0.5); + --shadow-glow: 0 0 40px rgba(74, 144, 255, 0.12); + + --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); + --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1); + --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1); +} + +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + font-size: 16px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font-family: var(--font-body); + background: var(--bg-primary); + color: var(--text-primary); + line-height: 1.6; + min-height: 100vh; + overflow-x: hidden; +} + +#root { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +/* ── Animations ──────────────────────────────────────── */ + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(8px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes fadeInUp { + from { opacity: 0; transform: translateY(24px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes slideDown { + from { opacity: 0; transform: translateY(-12px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes scaleIn { + from { opacity: 0; transform: scale(0.95); } + to { opacity: 1; transform: scale(1); } +} + +@keyframes shimmer { + 0% { background-position: -200% 0; } + 100% { background-position: 200% 0; } +} + +@keyframes progressPulse { + 0%, 100% { opacity: 1; } + 50% { opacity: 0.6; } +} + +@keyframes gradientMove { + 0% { background-position: 0% 50%; } + 50% { background-position: 100% 50%; } + 100% { background-position: 0% 50%; } +} + +@keyframes float { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-8px); } +} + +@keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +@keyframes dash { + to { stroke-dashoffset: 0; } +} + +@keyframes orbFloat1 { + 0%, 100% { transform: translate(0, 0) scale(1); } + 25% { transform: translate(30px, -50px) scale(1.05); } + 50% { transform: translate(-20px, -90px) scale(0.95); } + 75% { transform: translate(-40px, -40px) scale(1.02); } +} + +@keyframes orbFloat2 { + 0%, 100% { transform: translate(0, 0) scale(1); } + 25% { transform: translate(-40px, 30px) scale(0.95); } + 50% { transform: translate(30px, 60px) scale(1.05); } + 75% { transform: translate(50px, 20px) scale(0.98); } +} + +@keyframes orbFloat3 { + 0%, 100% { transform: translate(0, 0) scale(1); } + 33% { transform: translate(50px, -30px) scale(1.08); } + 66% { transform: translate(-30px, 40px) scale(0.94); } +} + +@keyframes dashMarch { + to { stroke-dashoffset: -20; } +} + +@keyframes shimmerBar { + 0% { transform: translateX(-100%); } + 100% { transform: translateX(200%); } +} + +@keyframes pulseGlow { + 0%, 100% { box-shadow: 0 0 20px rgba(74, 144, 255, 0.12); } + 50% { box-shadow: 0 0 40px rgba(74, 144, 255, 0.28); } +} + +@keyframes countPop { + 0% { transform: scale(1); } + 50% { transform: scale(1.08); } + 100% { transform: scale(1); } +} + +@keyframes revealLine { + from { width: 0; } + to { width: 100%; } +} + +@keyframes borderGlow { + 0%, 100% { border-color: var(--accent-border); } + 50% { border-color: rgba(74, 144, 255, 0.6); } +} + +@keyframes gentlePulse { + 0%, 100% { opacity: 0.5; } + 50% { opacity: 0.8; } +} + +@keyframes slideInRight { + from { transform: translateX(100%); } + to { transform: translateX(0); } +} + +@keyframes staggerIn { + from { opacity: 0; transform: translateY(12px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes pageFadeIn { + from { opacity: 0; transform: translateY(6px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes pageFadeOut { + from { opacity: 1; } + to { opacity: 0; } +} + +@keyframes copyPop { + 0% { transform: scale(1); } + 50% { transform: scale(1.15); } + 100% { transform: scale(1); } +} + +@keyframes iconBounce { + 0%, 100% { transform: translateY(0); } + 40% { transform: translateY(-4px); } + 60% { transform: translateY(-2px); } +} + +/* ── Skeleton Loading ─────────────────────────────────── */ + +.skeleton { + background: linear-gradient( + 90deg, + var(--bg-surface) 25%, + var(--bg-hover) 37%, + var(--bg-surface) 63% + ); + background-size: 400% 100%; + animation: shimmer 1.4s ease infinite; +} + +/* ── Utility Classes ──────────────────────────────────── */ + +.heading { + font-family: var(--font-heading); + font-weight: 700; + letter-spacing: -0.03em; + line-height: 1.1; +} + +.heading-lg { + font-family: var(--font-heading); + font-weight: 700; + font-size: clamp(2.5rem, 5vw, 4rem); + letter-spacing: -0.04em; + line-height: 1.05; +} + +.heading-md { + font-family: var(--font-heading); + font-weight: 600; + font-size: clamp(1.5rem, 3vw, 2rem); + letter-spacing: -0.02em; + line-height: 1.15; +} + +.heading-sm { + font-family: var(--font-heading); + font-weight: 600; + font-size: 1.125rem; + letter-spacing: -0.01em; + line-height: 1.3; +} + +.text-secondary { color: var(--text-secondary); } +.text-muted { color: var(--text-muted); } +.text-accent { color: var(--accent); } +.text-danger { color: var(--danger); } +.text-success { color: var(--success); } + +/* ── Buttons ──────────────────────────────────────────── */ + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + padding: 10px 24px; + font-family: var(--font-body); + font-weight: 600; + font-size: 0.9375rem; + letter-spacing: 0.01em; + border: none; + border-radius: var(--radius-md); + cursor: pointer; + transition: all var(--transition-base); + position: relative; + overflow: hidden; + user-select: none; + white-space: nowrap; +} + +.btn::after { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, transparent 50%); + opacity: 0; + transition: opacity var(--transition-fast); +} + +.btn:hover::after { opacity: 1; } + +.btn:active { + transform: scale(0.96); + transition: transform 0.08s ease; +} + +.btn-primary { + background: var(--accent); + color: #ffffff; + box-shadow: var(--shadow-sm), 0 0 0 1px rgba(74,144,255,0.2); +} + +.btn-primary:hover { + background: var(--accent-hover); + box-shadow: var(--shadow-md), 0 0 20px rgba(74,144,255,0.3); +} + +.btn-secondary { + background: var(--bg-surface); + color: var(--text-primary); + border: 1px solid var(--border); +} + +.btn-secondary:hover { + background: var(--bg-hover); + border-color: var(--accent-border); +} + +.btn-ghost { + background: transparent; + color: var(--text-secondary); + padding: 8px 16px; +} + +.btn-ghost:hover { + color: var(--text-primary); + background: var(--bg-surface); +} + +.btn-danger { + background: var(--danger-muted); + color: var(--danger); + border: 1px solid rgba(232, 72, 72, 0.25); +} + +.btn-danger:hover { + background: rgba(232, 72, 72, 0.25); +} + +.btn-lg { + padding: 14px 32px; + font-size: 1rem; + font-weight: 600; + border-radius: var(--radius-lg); +} + +.btn-sm { + padding: 6px 14px; + font-size: 0.8125rem; + font-weight: 500; + letter-spacing: 0.015em; + border-radius: var(--radius-sm); +} + +.btn-icon { + width: 40px; + height: 40px; + padding: 0; + border-radius: var(--radius-md); +} + +.btn-icon.btn-sm { + width: 32px; + height: 32px; +} + +/* ── Cards ────────────────────────────────────────────── */ + +.card { + background: var(--bg-elevated); + border: 1px solid var(--border-subtle); + border-radius: var(--radius-lg); + padding: 24px; + transition: all var(--transition-base); +} + +.card:hover { + border-color: var(--border); + box-shadow: var(--shadow-md); +} + +.card-interactive:hover { + border-color: var(--accent-border); + box-shadow: var(--shadow-md), 0 0 0 1px var(--accent-border); + transform: translateY(-2px); +} + +/* ── Form Elements ────────────────────────────────────── */ + +.input { + width: 100%; + padding: 10px 16px; + font-family: var(--font-body); + font-size: 0.9375rem; + color: var(--text-primary); + background: var(--bg-surface); + border: 1px solid var(--border); + border-radius: var(--radius-md); + outline: none; + transition: all var(--transition-fast); +} + +.input:focus { + border-color: var(--accent); + box-shadow: 0 0 0 3px var(--accent-muted); +} + +.input::placeholder { + color: var(--text-muted); +} + +/* ── Scrollbar ────────────────────────────────────────── */ + +::-webkit-scrollbar { + width: 6px; +} + +::-webkit-scrollbar-track { + background: transparent; +} + +::-webkit-scrollbar-thumb { + background: var(--border); + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-muted); +} + +/* ── Toast ─────────────────────────────────────────────── */ + +.toast-container { + position: fixed; + bottom: 24px; + right: 24px; + z-index: 1000; + display: flex; + flex-direction: column; + gap: 8px; +} + +.toast { + padding: 12px 20px; + border-radius: var(--radius-md); + font-family: var(--font-body); + font-size: 0.875rem; + font-weight: 500; + animation: slideDown var(--transition-base) forwards; + box-shadow: var(--shadow-lg); + display: flex; + align-items: center; + gap: 8px; +} + +.toast-success { + background: var(--success-muted); + color: var(--success); + border: 1px solid rgba(56, 200, 122, 0.3); +} + +.toast-info { + background: var(--accent-muted); + color: var(--accent); + border: 1px solid var(--accent-border); +} + +.toast-error { + background: var(--danger-muted); + color: var(--danger); + border: 1px solid rgba(232, 72, 72, 0.3); +} + +/* ── Navbar ────────────────────────────────────────────── */ + +.navbar { + position: sticky; + top: 0; + z-index: 100; + background: rgba(13, 13, 15, 0.85); + backdrop-filter: blur(20px); + border-bottom: 1px solid var(--border-subtle); + padding: 0 32px; + height: 64px; + display: flex; + align-items: center; + justify-content: space-between; +} + +.navbar-logo { + font-family: var(--font-heading); + font-weight: 700; + font-size: 1.375rem; + letter-spacing: -0.04em; + color: var(--text-primary); + text-decoration: none; + display: flex; + align-items: center; + gap: 10px; + cursor: pointer; +} + +.navbar-logo .logo-mark { + width: 32px; + height: 32px; + background: var(--accent); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + font-weight: 800; + color: #ffffff; + font-size: 1rem; +} + +.navbar-links { + display: flex; + align-items: center; + gap: 4px; +} + +.mobile-menu-btn { + display: none; + flex-shrink: 0; + position: relative; + z-index: 1002; +} + +.mobile-menu-btn svg { + display: block; + width: 20px; + height: 20px; + flex: 0 0 20px; +} + +.navbar-link { + padding: 8px 14px; + font-family: var(--font-body); + font-size: 0.875rem; + font-weight: 500; + letter-spacing: 0.01em; + color: var(--text-secondary); + text-decoration: none; + border-radius: var(--radius-sm); + transition: all var(--transition-fast); + cursor: pointer; + background: none; + border: none; +} + +.navbar-link:hover { + color: var(--text-primary); + background: var(--bg-surface); +} + +.navbar-link.active { + color: var(--accent); + background: var(--accent-muted); +} + +.mobile-menu-panel { + position: fixed; + inset: 64px 0 0; + z-index: 1000; + background: rgba(13, 13, 15, 0.98); + backdrop-filter: blur(20px); + border-top: 1px solid var(--border-subtle); + padding: 20px; + overflow-y: auto; + animation: slideDown 0.22s cubic-bezier(0.4, 0, 0.2, 1); +} + +.mobile-menu-list { + width: min(100%, 560px); + margin: 0 auto; + display: flex; + flex-direction: column; + gap: 6px; +} + +.mobile-menu-link { + width: 100%; + min-height: 52px; + padding: 14px 16px; + border: 1px solid transparent; + border-radius: var(--radius-md); + background: transparent; + color: var(--text-secondary); + font-family: var(--font-body); + font-size: 1.0625rem; + font-weight: 600; + text-align: left; + cursor: pointer; + transition: all var(--transition-fast); +} + +.mobile-menu-link:hover, +.mobile-menu-link.active { + color: var(--text-primary); + background: var(--bg-surface); + border-color: var(--border-subtle); +} + +.mobile-menu-link.active { + color: var(--accent); + background: var(--accent-muted); + border-color: var(--accent-border); +} + +.mobile-menu-cta { + width: 100%; + margin-top: 12px; +} + +/* ── Page Transitions ─────────────────────────────────── */ + +.page-enter { + animation: fadeInUp 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards; +} + +/* ── Scroll Reveal ──────────────────────────────────── */ + +.scroll-reveal { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1), transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); +} + +.scroll-reveal.revealed { + opacity: 1; + transform: translateY(0); +} + +/* ── Top Accent Bar ─────────────────────────────────── */ + +.noise-overlay::after { + content: ''; + position: fixed; + top: 0; + left: 0; + right: 0; + height: 2px; + background: linear-gradient(90deg, transparent 0%, var(--accent) 25%, var(--accent-hover) 75%, transparent 100%); + z-index: 10001; + pointer-events: none; + opacity: 0.8; +} + +/* ── Noise Texture Overlay ──────────────────────────── */ + +.noise-overlay::before { + content: ''; + position: fixed; + inset: 0; + z-index: 9999; + pointer-events: none; + opacity: 0.025; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + background-repeat: repeat; + background-size: 200px 200px; +} + +/* ── Ambient Orbs ───────────────────────────────────── */ + +.orb { + position: absolute; + border-radius: 50%; + filter: blur(80px); + pointer-events: none; + will-change: transform; +} + +.orb-1 { + width: 400px; + height: 400px; + background: radial-gradient(circle, rgba(74, 144, 255, 0.1) 0%, transparent 70%); + animation: orbFloat1 20s ease-in-out infinite; +} + +.orb-2 { + width: 300px; + height: 300px; + background: radial-gradient(circle, rgba(74, 144, 255, 0.07) 0%, transparent 70%); + animation: orbFloat2 25s ease-in-out infinite; +} + +.orb-3 { + width: 250px; + height: 250px; + background: radial-gradient(circle, rgba(74, 144, 255, 0.05) 0%, transparent 70%); + animation: orbFloat3 18s ease-in-out infinite; +} + +/* ── Animated Drop Zone ─────────────────────────────── */ + +.drop-zone-animated { + background-image: url("data:image/svg+xml,%3Csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='24' ry='24' stroke='%232A2A32' stroke-width='2' stroke-dasharray='12%2C 8' stroke-dashoffset='0'/%3E%3C/svg%3E"); + background-size: 100% 100%; + transition: all var(--transition-base); +} + +.drop-zone-animated.dragging { + background-image: url("data:image/svg+xml,%3Csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='100%25' height='100%25' fill='none' rx='24' ry='24' stroke='%234A90FF' stroke-width='2' stroke-dasharray='12%2C 8' stroke-dashoffset='0'/%3E%3C/svg%3E"); + animation: borderGlow 1.5s ease infinite; +} + +/* ── Shimmer Progress Bar ───────────────────────────── */ + +.shimmer-progress { + position: relative; + overflow: hidden; +} + +.shimmer-progress::after { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent); + animation: shimmerBar 1.5s ease-in-out infinite; +} + +/* ── Glow Card ──────────────────────────────────────── */ + +.glow-card { + position: relative; +} + +.glow-card::before { + content: ''; + position: absolute; + inset: -1px; + border-radius: inherit; + background: linear-gradient(135deg, rgba(74, 144, 255, 0.12), transparent 40%, transparent 60%, rgba(74, 144, 255, 0.08)); + z-index: -1; + opacity: 0; + transition: opacity var(--transition-slow); +} + +.glow-card:hover::before { + opacity: 1; +} + +/* ── Footer ───────────────────────────────────────────── */ + +.site-footer { + border-top: 1px solid var(--border-subtle); + background: var(--bg-elevated); + padding: 64px 32px 32px; +} + +.site-footer-inner { + max-width: 1120px; + margin: 0 auto; + display: grid; + grid-template-columns: 2fr 1fr 1fr 1fr; + gap: 48px; +} + +.site-footer-brand p { + color: var(--text-muted); + font-size: 0.875rem; + line-height: 1.7; + margin-top: 12px; + max-width: 280px; +} + +.site-footer-col h4 { + font-family: var(--font-heading); + font-weight: 700; + font-size: 0.8125rem; + letter-spacing: 0.06em; + text-transform: uppercase; + color: var(--text-secondary); + margin-bottom: 16px; +} + +.site-footer-col a { + display: block; + color: var(--text-muted); + font-size: 0.875rem; + text-decoration: none; + padding: 4px 0; + transition: color var(--transition-fast); + cursor: pointer; +} + +.site-footer-col a:hover { + color: var(--accent); +} + +.site-footer-bottom { + max-width: 1120px; + margin: 48px auto 0; + padding-top: 24px; + border-top: 1px solid var(--border-subtle); + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 12px; +} + +.site-footer-bottom p { + color: var(--text-muted); + font-size: 0.8125rem; +} + +.site-footer-designer { + font-family: var(--font-display); + font-style: italic; + font-weight: 700; + color: var(--text-muted); + font-size: 0.875rem; + text-decoration: none; + transition: color var(--transition-fast); +} + +.site-footer-designer:hover { + color: var(--accent); +} + +@media (max-width: 768px) { + .site-footer-inner { + grid-template-columns: 1fr 1fr; + gap: 32px; + } + .site-footer-brand { + grid-column: 1 / -1; + } +} + +@media (max-width: 480px) { + .site-footer-inner { + grid-template-columns: 1fr; + gap: 24px; + } +} + +/* ── Hero Split Layout ────────────────────────────────── */ + +.hero-split { + display: grid; + grid-template-columns: 55fr 45fr; + gap: 72px; + align-items: center; + max-width: 1200px; + margin: 0 auto; + position: relative; + z-index: 1; +} + +@media (max-width: 1100px) { + .hero-split { + grid-template-columns: 1fr; + gap: 36px; + max-width: 760px; + } + .hero-preview-col { + width: 100%; + max-width: 560px; + margin: 0 auto; + } +} + +@media (max-width: 700px) { + .hero-preview-col { + display: none; + } +} + +/* ── Responsive ───────────────────────────────────────── */ + +@media (max-width: 1080px) { + .navbar { + padding: 0 24px; + } + .navbar-links { + display: none !important; + } + .mobile-menu-btn { + display: flex !important; + } + .file-table-desktop { + display: none !important; + } + .file-table-mobile { + display: flex !important; + } +} + +@media (max-width: 1024px) { + .docs-layout, + .contact-layout { + grid-template-columns: 1fr !important; + gap: 28px !important; + } + + .docs-sidebar { + position: static !important; + } + + .docs-sidebar .card { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 6px; + } + + .docs-sidebar .card > div:first-child { + grid-column: 1 / -1; + } + + .steps-connector { + display: none; + } +} + +@media (max-width: 768px) { + .navbar { + padding: 0 16px; + } + .file-table-desktop { + display: none !important; + } + .file-table-mobile { + display: flex !important; + } + /* Storage + activity stack on mobile */ + .dashboard-sidebar-grid { + grid-template-columns: 1fr !important; + } + /* Slide-over takes full width on mobile */ + .file-detail-panel { + max-width: 100% !important; + } + /* Filter chips wrap nicely */ + .filter-chips { + overflow-x: auto; + flex-wrap: nowrap !important; + padding-bottom: 4px; + } +} + +@media (max-width: 640px) { + .docs-sidebar .card, + .contact-name-row { + grid-template-columns: 1fr !important; + } + + .heading-lg { + font-size: clamp(2.1rem, 12vw, 3rem); + } +}