[{"data":1,"prerenderedAt":69},["Reactive",2],{"blog-post-markdown-table-responsive-design-mobile-optimization-complete-guide":3},{"slug":4,"title":5,"description":6,"excerpt":7,"date":8,"category":9,"author":10,"keywords":11,"readingMinutes":12,"html":13,"headings":14,"tools":43,"related":44},"markdown-table-responsive-design-mobile-optimization-complete-guide","Markdown Table Responsive Design and Mobile Optimization: Complete Guide for Cross-Device Table Display and Accessibility","Master responsive Markdown table design, mobile optimization techniques, and cross-device accessibility strategies. Learn adaptive layouts, breakpoint management, and user experience optimization for tables on all screen sizes.","Advanced Markdown table responsive design and mobile optimization techniques enable sophisticated data presentation that maintains readability, usability, and accessibility across diverse screen…","2025-12-14","Tutorial","Matthew Rathbone","markdown table responsive design, mobile markdown tables, responsive table optimization, markdown table accessibility, adaptive table layouts, mobile-first table design, table breakpoints, responsive markdown",22,"\u003Cp>Advanced Markdown table responsive design and mobile optimization techniques enable sophisticated data presentation that maintains readability, usability, and accessibility across diverse screen sizes and device types. By implementing adaptive layouts, intelligent breakpoint management, and mobile-first design principles, technical writers can create comprehensive tables that serve users effectively whether they&#39;re viewing content on desktop computers, tablets, or smartphones while preserving data integrity and user experience quality.\u003C/p>\n\u003Ch2 id=\"why-master-responsive-table-design\">Why Master Responsive Table Design?\u003C/h2>\n\u003Cp>Professional responsive table implementation provides essential benefits for modern web content:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Universal Accessibility\u003C/strong>: Ensure table content remains readable and usable across all device types and screen sizes\u003C/li>\n\u003Cli>\u003Cstrong>Enhanced User Experience\u003C/strong>: Provide optimal viewing experiences that adapt intelligently to user contexts and preferences\u003C/li>\n\u003Cli>\u003Cstrong>Data Integrity\u003C/strong>: Maintain complete data visibility while adapting presentation formats to device constraints\u003C/li>\n\u003Cli>\u003Cstrong>Performance Optimization\u003C/strong>: Implement efficient rendering strategies that reduce load times and improve mobile performance\u003C/li>\n\u003Cli>\u003Cstrong>SEO Benefits\u003C/strong>: Responsive tables improve search engine rankings and user engagement metrics\u003C/li>\n\u003Cli>\u003Cstrong>Future-Proofing\u003C/strong>: Adaptive designs work across current and emerging device form factors\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"foundation-responsive-design-principles\">Foundation Responsive Design Principles\u003C/h2>\n\u003Ch3 id=\"mobile-first-table-design-strategy\">Mobile-First Table Design Strategy\u003C/h3>\n\u003Cp>Understanding core responsive design principles for effective table adaptation:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># Mobile-First Table Design Principles\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Basic Responsive Table Structure\u003C/span>\n| Feature | Desktop View | Tablet View | Mobile View |\n|---------|--------------|-------------|-------------|\n| \u003Cspan class=\"hljs-strong\">**Layout**\u003C/span> | Full width table | Compressed columns | Stacked cards |\n| \u003Cspan class=\"hljs-strong\">**Data Density**\u003C/span> | All columns visible | Priority columns | Essential data only |\n| \u003Cspan class=\"hljs-strong\">**Navigation**\u003C/span> | Horizontal scroll | Touch-friendly scroll | Vertical browsing |\n| \u003Cspan class=\"hljs-strong\">**Interaction**\u003C/span> | Mouse hover | Touch interaction | Thumb navigation |\n| \u003Cspan class=\"hljs-strong\">**Typography**\u003C/span> | Standard sizing | Medium sizing | Large, touch-friendly |\n\n\u003Cspan class=\"hljs-section\">## Responsive Breakpoint Strategy\u003C/span>\n\u003Cspan class=\"hljs-code\">```css\n/* Mobile-first responsive table CSS */\n.responsive-table {\n  width: 100%;\n  border-collapse: collapse;\n  font-size: 14px;\n}\n\n/* Mobile (default) - stacked layout */\n.responsive-table thead {\n  display: none;\n}\n\n.responsive-table tbody,\n.responsive-table tr,\n.responsive-table td {\n  display: block;\n  border: none;\n}\n\n.responsive-table tr {\n  border: 1px solid #ddd;\n  margin-bottom: 10px;\n  padding: 10px;\n  border-radius: 4px;\n  background: #f9f9f9;\n}\n\n.responsive-table td {\n  padding: 5px 0;\n  border-bottom: 1px solid #eee;\n  text-align: left;\n  position: relative;\n  padding-left: 40%;\n}\n\n.responsive-table td:before {\n  content: attr(data-label);\n  position: absolute;\n  left: 6px;\n  width: 35%;\n  text-align: left;\n  font-weight: bold;\n  color: #555;\n}\n\n/* Tablet breakpoint - compressed table */\n@media (min-width: 768px) {\n  .responsive-table thead {\n    display: table-header-group;\n  }\n  \n  .responsive-table tbody,\n  .responsive-table tr,\n  .responsive-table td {\n    display: table-cell;\n    border: 1px solid #ddd;\n  }\n  \n  .responsive-table td {\n    padding: 8px;\n    text-align: center;\n    position: static;\n    padding-left: 8px;\n  }\n  \n  .responsive-table td:before {\n    display: none;\n  }\n  \n  .responsive-table tr {\n    border: none;\n    margin: 0;\n    padding: 0;\n    background: transparent;\n  }\n}\n\n/* Desktop breakpoint - full table */\n@media (min-width: 1024px) {\n  .responsive-table {\n    font-size: 16px;\n  }\n  \n  .responsive-table td {\n    padding: 12px;\n  }\n}\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"advanced-product-comparison-table\">Advanced Product Comparison Table\u003C/h2>\n\u003Cdiv class=\"table-responsive\">\u003Ctable class=\"table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Product\u003C/th>\n\u003Cth align=\"right\">Price\u003C/th>\n\u003Cth>\u003Cstrong>Mobile Features\u003C/strong>\u003C/th>\n\u003Cth>\u003Cstrong>Tablet Features\u003C/strong>\u003C/th>\n\u003Cth>\u003Cstrong>Desktop Features\u003C/strong>\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Cstrong>Basic Plan\u003C/strong>\u003C/td>\n\u003Ctd align=\"right\">$9.99/mo\u003C/td>\n\u003Ctd>• Core functionality\u003Cbr>• Mobile-optimized interface\u003Cbr>• Basic analytics\u003C/td>\n\u003Ctd>• Enhanced dashboard\u003Cbr>• Gesture navigation\u003Cbr>• Extended analytics\u003C/td>\n\u003Ctd>• Full feature set\u003Cbr>• Advanced reporting\u003Cbr>• Multi-window support\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Professional\u003C/strong>\u003C/td>\n\u003Ctd align=\"right\">$19.99/mo\u003C/td>\n\u003Ctd>• All basic features\u003Cbr>• Mobile API access\u003Cbr>• Offline synchronization\u003C/td>\n\u003Ctd>• Advanced widgets\u003Cbr>• Multi-touch gestures\u003Cbr>• Real-time collaboration\u003C/td>\n\u003Ctd>• Power user tools\u003Cbr>• Custom integrations\u003Cbr>• Administrative controls\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Enterprise\u003C/strong>\u003C/td>\n\u003Ctd align=\"right\">$49.99/mo\u003C/td>\n\u003Ctd>• White-label mobile app\u003Cbr>• Custom mobile branding\u003Cbr>• Enterprise SSO\u003C/td>\n\u003Ctd>• Tablet-specific workflows\u003Cbr>• Advanced data visualization\u003Cbr>• Team collaboration tools\u003C/td>\n\u003Ctd>• Full enterprise suite\u003Cbr>• Advanced security\u003Cbr>• Dedicated support\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\u003C/div>\n\u003Cpre>\u003Ccode>\n### Adaptive Table Content Strategy\n\nImplementing intelligent content adaptation based on screen context:\n\n````markdown\n# Adaptive Content Strategies\n\n## Priority-Based Column Display\n```html\n&lt;!-- Responsive table with priority columns --&gt;\n&lt;table class=&quot;adaptive-table&quot;&gt;\n  &lt;thead&gt;\n    &lt;tr&gt;\n      &lt;th class=&quot;priority-1&quot;&gt;Name&lt;/th&gt;\n      &lt;th class=&quot;priority-1&quot;&gt;Status&lt;/th&gt;\n      &lt;th class=&quot;priority-2&quot;&gt;Department&lt;/th&gt;\n      &lt;th class=&quot;priority-3&quot;&gt;Phone&lt;/th&gt;\n      &lt;th class=&quot;priority-3&quot;&gt;Email&lt;/th&gt;\n      &lt;th class=&quot;priority-4&quot;&gt;Location&lt;/th&gt;\n      &lt;th class=&quot;priority-4&quot;&gt;Start Date&lt;/th&gt;\n    &lt;/tr&gt;\n  &lt;/thead&gt;\n  &lt;tbody&gt;\n    &lt;tr&gt;\n      &lt;td class=&quot;priority-1&quot; data-label=&quot;Name&quot;&gt;Alice Johnson&lt;/td&gt;\n      &lt;td class=&quot;priority-1&quot; data-label=&quot;Status&quot;&gt;Active&lt;/td&gt;\n      &lt;td class=&quot;priority-2&quot; data-label=&quot;Department&quot;&gt;Engineering&lt;/td&gt;\n      &lt;td class=&quot;priority-3&quot; data-label=&quot;Phone&quot;&gt;555-0123&lt;/td&gt;\n      &lt;td class=&quot;priority-3&quot; data-label=&quot;Email&quot;&gt;alice@company.com&lt;/td&gt;\n      &lt;td class=&quot;priority-4&quot; data-label=&quot;Location&quot;&gt;New York&lt;/td&gt;\n      &lt;td class=&quot;priority-4&quot; data-label=&quot;Start Date&quot;&gt;2023-01-15&lt;/td&gt;\n    &lt;/tr&gt;\n  &lt;/tbody&gt;\n&lt;/table&gt;\n\u003C/code>\u003C/pre>\u003Cpre>\u003Ccode class=\"hljs language-css\">\u003Cspan class=\"hljs-comment\">/* Progressive column hiding based on screen size */\u003C/span>\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">1200px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.priority-4\u003C/span> { \u003Cspan class=\"hljs-attribute\">display\u003C/span>: none; }\n}\n\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">900px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.priority-3\u003C/span> { \u003Cspan class=\"hljs-attribute\">display\u003C/span>: none; }\n}\n\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">600px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.priority-2\u003C/span> { \u003Cspan class=\"hljs-attribute\">display\u003C/span>: none; }\n}\n\n\u003Cspan class=\"hljs-comment\">/* Mobile card layout for remaining columns */\u003C/span>\n\u003Cspan class=\"hljs-keyword\">@media\u003C/span> (\u003Cspan class=\"hljs-attribute\">max-width\u003C/span>: \u003Cspan class=\"hljs-number\">480px\u003C/span>) {\n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span>,\n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">thead\u003C/span>,\n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">tbody\u003C/span>,\n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">th\u003C/span>,\n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">td\u003C/span>,\n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">tr\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">display\u003C/span>: block;\n  }\n  \n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">thead\u003C/span> \u003Cspan class=\"hljs-selector-tag\">tr\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">position\u003C/span>: absolute;\n    \u003Cspan class=\"hljs-attribute\">top\u003C/span>: -\u003Cspan class=\"hljs-number\">9999px\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">left\u003C/span>: -\u003Cspan class=\"hljs-number\">9999px\u003C/span>;\n  }\n  \n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">tr\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">border\u003C/span>: \u003Cspan class=\"hljs-number\">1px\u003C/span> solid \u003Cspan class=\"hljs-number\">#ccc\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">margin-bottom\u003C/span>: \u003Cspan class=\"hljs-number\">15px\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">padding\u003C/span>: \u003Cspan class=\"hljs-number\">15px\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">border-radius\u003C/span>: \u003Cspan class=\"hljs-number\">8px\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">box-shadow\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span> \u003Cspan class=\"hljs-number\">2px\u003C/span> \u003Cspan class=\"hljs-number\">5px\u003C/span> \u003Cspan class=\"hljs-built_in\">rgba\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0\u003C/span>,\u003Cspan class=\"hljs-number\">0.1\u003C/span>);\n  }\n  \n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">td\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">border\u003C/span>: none;\n    \u003Cspan class=\"hljs-attribute\">position\u003C/span>: relative;\n    \u003Cspan class=\"hljs-attribute\">padding-left\u003C/span>: \u003Cspan class=\"hljs-number\">50%\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">padding-top\u003C/span>: \u003Cspan class=\"hljs-number\">10px\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">padding-bottom\u003C/span>: \u003Cspan class=\"hljs-number\">10px\u003C/span>;\n  }\n  \n  \u003Cspan class=\"hljs-selector-class\">.adaptive-table\u003C/span> \u003Cspan class=\"hljs-selector-tag\">td\u003C/span>\u003Cspan class=\"hljs-selector-pseudo\">:before\u003C/span> {\n    \u003Cspan class=\"hljs-attribute\">content\u003C/span>: \u003Cspan class=\"hljs-built_in\">attr\u003C/span>(data-label) \u003Cspan class=\"hljs-string\">&quot;: &quot;\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">position\u003C/span>: absolute;\n    \u003Cspan class=\"hljs-attribute\">left\u003C/span>: \u003Cspan class=\"hljs-number\">6px\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">width\u003C/span>: \u003Cspan class=\"hljs-number\">45%\u003C/span>;\n    \u003Cspan class=\"hljs-attribute\">text-align\u003C/span>: left;\n    \u003Cspan class=\"hljs-attribute\">font-weight\u003C/span>: bold;\n    \u003Cspan class=\"hljs-attribute\">color\u003C/span>: \u003Cspan class=\"hljs-number\">#333\u003C/span>;\n  }\n}\n\u003C/code>\u003C/pre>\u003Ch2 id=\"scrollable-data-tables-with-touch-support\">Scrollable Data Tables with Touch Support\u003C/h2>\n\u003Cdiv class=\"table-responsive\">\u003Ctable class=\"table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>ID\u003C/th>\n\u003Cth>Product Name\u003C/th>\n\u003Cth>Category\u003C/th>\n\u003Cth>Price\u003C/th>\n\u003Cth>Stock\u003C/th>\n\u003Cth>Supplier\u003C/th>\n\u003Cth>Last Updated\u003C/th>\n\u003Cth>Actions\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>001\u003C/td>\n\u003Ctd>Wireless Headphones\u003C/td>\n\u003Ctd>Electronics\u003C/td>\n\u003Ctd>$79.99\u003C/td>\n\u003Ctd>156\u003C/td>\n\u003Ctd>TechCorp\u003C/td>\n\u003Ctd>2025-12-14 09:30\u003C/td>\n\u003Ctd>Edit • Delete • View\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>002\u003C/td>\n\u003Ctd>Ergonomic Office Chair\u003C/td>\n\u003Ctd>Furniture\u003C/td>\n\u003Ctd>$299.99\u003C/td>\n\u003Ctd>23\u003C/td>\n\u003Ctd>ComfortCo\u003C/td>\n\u003Ctd>2025-12-14 08:45\u003C/td>\n\u003Ctd>Edit • Delete • View\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>003\u003C/td>\n\u003Ctd>Stainless Steel Water Bottle\u003C/td>\n\u003Ctd>Home &amp; Garden\u003C/td>\n\u003Ctd>$24.99\u003C/td>\n\u003Ctd>89\u003C/td>\n\u003Ctd>EcoProducts\u003C/td>\n\u003Ctd>2025-12-14 07:22\u003C/td>\n\u003Ctd>Edit • Delete • View\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>004\u003C/td>\n\u003Ctd>Bluetooth Speaker\u003C/td>\n\u003Ctd>Electronics\u003C/td>\n\u003Ctd>$149.99\u003C/td>\n\u003Ctd>67\u003C/td>\n\u003Ctd>AudioMax\u003C/td>\n\u003Ctd>2025-12-14 11:15\u003C/td>\n\u003Ctd>Edit • Delete • View\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>005\u003C/td>\n\u003Ctd>Standing Desk Converter\u003C/td>\n\u003Ctd>Furniture\u003C/td>\n\u003Ctd>$199.99\u003C/td>\n\u003Ctd>34\u003C/td>\n\u003Ctd>WorkSpace Pro\u003C/td>\n\u003Ctd>2025-12-14 10:08\u003C/td>\n\u003Ctd>Edit • Delete • View\u003C/td>\n\u003C/tr>\n\u003C/tbody>\u003C/table>\u003C/div>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Mobile Optimization\u003C/strong>: This table implements horizontal scrolling with touch-friendly controls and sticky column headers for improved mobile navigation.\u003C/p>\n\u003C/blockquote>\n\u003Cpre>\u003Ccode>\n## Advanced Mobile Table Patterns\n\n### Card-Based Table Layouts\n\nImplementing card-style layouts for optimal mobile experience:\n\n````markdown\n# Mobile Card Layout Implementations\n\n## Product Catalog Mobile Layout\n```html\n&lt;!-- Mobile-optimized product table as cards --&gt;\n&lt;div class=&quot;product-grid&quot;&gt;\n  &lt;div class=&quot;product-card&quot;&gt;\n    &lt;div class=&quot;card-header&quot;&gt;\n      &lt;h3&gt;Premium Laptop&lt;/h3&gt;\n      &lt;span class=&quot;price&quot;&gt;$1,299.99&lt;/span&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;card-body&quot;&gt;\n      &lt;div class=&quot;spec-row&quot;&gt;\n        &lt;span class=&quot;spec-label&quot;&gt;Category:&lt;/span&gt;\n        &lt;span class=&quot;spec-value&quot;&gt;Electronics&lt;/span&gt;\n      &lt;/div&gt;\n      &lt;div class=&quot;spec-row&quot;&gt;\n        &lt;span class=&quot;spec-label&quot;&gt;Brand:&lt;/span&gt;\n        &lt;span class=&quot;spec-value&quot;&gt;TechBrand&lt;/span&gt;\n      &lt;/div&gt;\n      &lt;div class=&quot;spec-row&quot;&gt;\n        &lt;span class=&quot;spec-label&quot;&gt;Stock:&lt;/span&gt;\n        &lt;span class=&quot;spec-value stock-available&quot;&gt;24 Available&lt;/span&gt;\n      &lt;/div&gt;\n      &lt;div class=&quot;spec-row&quot;&gt;\n        &lt;span class=&quot;spec-label&quot;&gt;Rating:&lt;/span&gt;\n        &lt;span class=&quot;spec-value&quot;&gt;⭐⭐⭐⭐⭐ (4.8/5)&lt;/span&gt;\n      &lt;/div&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;card-actions&quot;&gt;\n      &lt;button class=&quot;btn-primary&quot;&gt;Add to Cart&lt;/button&gt;\n      &lt;button class=&quot;btn-secondary&quot;&gt;View Details&lt;/button&gt;\n    &lt;/div&gt;\n  &lt;/div&gt;\n&lt;/div&gt;\n```\n\n```css\n/* Mobile card layout styling */\n.product-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 20px;\n  padding: 15px;\n}\n\n.product-card {\n  background: #fff;\n  border-radius: 12px;\n  box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n  overflow: hidden;\n  transition: transform 0.2s ease, box-shadow 0.2s ease;\n}\n\n.product-card:hover {\n  transform: translateY(-2px);\n  box-shadow: 0 8px 24px rgba(0,0,0,0.15);\n}\n\n.card-header {\n  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n  color: white;\n  padding: 20px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n\n.card-header h3 {\n  margin: 0;\n  font-size: 1.2em;\n  font-weight: 600;\n}\n\n.price {\n  font-size: 1.4em;\n  font-weight: 700;\n}\n\n.card-body {\n  padding: 20px;\n}\n\n.spec-row {\n  display: flex;\n  justify-content: space-between;\n  padding: 8px 0;\n  border-bottom: 1px solid #f0f0f0;\n}\n\n.spec-row:last-child {\n  border-bottom: none;\n}\n\n.spec-label {\n  font-weight: 600;\n  color: #555;\n}\n\n.spec-value {\n  color: #333;\n}\n\n.stock-available {\n  color: #27ae60;\n  font-weight: 600;\n}\n\n.card-actions {\n  padding: 20px;\n  background: #f8f9fa;\n  display: flex;\n  gap: 10px;\n}\n\n.btn-primary, .btn-secondary {\n  flex: 1;\n  padding: 12px;\n  border: none;\n  border-radius: 6px;\n  font-weight: 600;\n  cursor: pointer;\n  transition: all 0.2s ease;\n}\n\n.btn-primary {\n  background: #007bff;\n  color: white;\n}\n\n.btn-secondary {\n  background: #6c757d;\n  color: white;\n}\n\n/* Tablet layout - 2 columns */\n@media (min-width: 768px) {\n  .product-grid {\n    grid-template-columns: repeat(2, 1fr);\n    gap: 25px;\n    padding: 20px;\n  }\n}\n\n/* Desktop layout - 3 columns */\n@media (min-width: 1024px) {\n  .product-grid {\n    grid-template-columns: repeat(3, 1fr);\n    gap: 30px;\n    padding: 25px;\n  }\n}\n```\n\n## Interactive Data Dashboard\n```html\n&lt;!-- Responsive dashboard table with interactive elements --&gt;\n&lt;div class=&quot;dashboard-container&quot;&gt;\n  &lt;div class=&quot;dashboard-card&quot;&gt;\n    &lt;div class=&quot;metric-header&quot;&gt;\n      &lt;h4&gt;Website Analytics&lt;/h4&gt;\n      &lt;span class=&quot;time-period&quot;&gt;Last 30 Days&lt;/span&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;metrics-grid&quot;&gt;\n      &lt;div class=&quot;metric-item&quot;&gt;\n        &lt;div class=&quot;metric-value&quot;&gt;1.24M&lt;/div&gt;\n        &lt;div class=&quot;metric-label&quot;&gt;Page Views&lt;/div&gt;\n        &lt;div class=&quot;metric-change positive&quot;&gt;+12.3%&lt;/div&gt;\n      &lt;/div&gt;\n      &lt;div class=&quot;metric-item&quot;&gt;\n        &lt;div class=&quot;metric-value&quot;&gt;89.2K&lt;/div&gt;\n        &lt;div class=&quot;metric-label&quot;&gt;Unique Visitors&lt;/div&gt;\n        &lt;div class=&quot;metric-change positive&quot;&gt;+8.7%&lt;/div&gt;\n      &lt;/div&gt;\n      &lt;div class=&quot;metric-item&quot;&gt;\n        &lt;div class=&quot;metric-value&quot;&gt;3:42&lt;/div&gt;\n        &lt;div class=&quot;metric-label&quot;&gt;Avg. Session&lt;/div&gt;\n        &lt;div class=&quot;metric-change negative&quot;&gt;-2.1%&lt;/div&gt;\n      &lt;/div&gt;\n      &lt;div class=&quot;metric-item&quot;&gt;\n        &lt;div class=&quot;metric-value&quot;&gt;2.3%&lt;/div&gt;\n        &lt;div class=&quot;metric-label&quot;&gt;Bounce Rate&lt;/div&gt;\n        &lt;div class=&quot;metric-change positive&quot;&gt;-0.8%&lt;/div&gt;\n      &lt;/div&gt;\n    &lt;/div&gt;\n  &lt;/div&gt;\n&lt;/div&gt;\n```\n\u003C/code>\u003C/pre>\u003Ch3 id=\"touch-optimized-table-navigation\">Touch-Optimized Table Navigation\u003C/h3>\n\u003Cp>Implementing gesture-friendly table interaction patterns:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># Touch-Optimized Navigation Patterns\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Swipeable Table Rows\u003C/span>\n\u003Cspan class=\"hljs-code\">```html\n&lt;!-- Touch-enabled table with swipe actions --&gt;\n&lt;div class=&quot;touch-table-container&quot;&gt;\n  &lt;div class=&quot;touch-table-row&quot; data-id=&quot;1&quot;&gt;\n    &lt;div class=&quot;row-content&quot;&gt;\n      &lt;div class=&quot;primary-info&quot;&gt;\n        &lt;h4&gt;John Smith&lt;/h4&gt;\n        &lt;p&gt;Senior Developer&lt;/p&gt;\n      &lt;/div&gt;\n      &lt;div class=&quot;secondary-info&quot;&gt;\n        &lt;span class=&quot;status active&quot;&gt;Active&lt;/span&gt;\n        &lt;span class=&quot;department&quot;&gt;Engineering&lt;/span&gt;\n      &lt;/div&gt;\n    &lt;/div&gt;\n    &lt;div class=&quot;row-actions&quot;&gt;\n      &lt;button class=&quot;action-btn edit&quot;&gt;✏️ Edit&lt;/button&gt;\n      &lt;button class=&quot;action-btn delete&quot;&gt;🗑️ Delete&lt;/button&gt;\n      &lt;button class=&quot;action-btn view&quot;&gt;👁️ View&lt;/button&gt;\n    &lt;/div&gt;\n  &lt;/div&gt;\n&lt;/div&gt;\n```\u003C/span>\n\n\u003Cspan class=\"hljs-code\">```javascript\n// Touch gesture handling for table rows\nclass TouchTableManager {\n  constructor() {\n    this.startX = 0;\n    this.startY = 0;\n    this.currentX = 0;\n    this.currentY = 0;\n    this.activeRow = null;\n    this.isSwipeActive = false;\n    \n    this.initializeEventListeners();\n  }\n  \n  initializeEventListeners() {\n    const tableRows = document.querySelectorAll(&#x27;.touch-table-row&#x27;);\n    \n    tableRows.forEach(row =&gt; {\n      // Touch events\n      row.addEventListener(&#x27;touchstart&#x27;, this.handleTouchStart.bind(this), { passive: false });\n      row.addEventListener(&#x27;touchmove&#x27;, this.handleTouchMove.bind(this), { passive: false });\n      row.addEventListener(&#x27;touchend&#x27;, this.handleTouchEnd.bind(this), { passive: false });\n      \n      // Mouse events for desktop compatibility\n      row.addEventListener(&#x27;mousedown&#x27;, this.handleMouseDown.bind(this));\n      row.addEventListener(&#x27;mousemove&#x27;, this.handleMouseMove.bind(this));\n      row.addEventListener(&#x27;mouseup&#x27;, this.handleMouseUp.bind(this));\n    });\n  }\n  \n  handleTouchStart(event) {\n    this.startX = event.touches[0].clientX;\n    this.startY = event.touches[0].clientY;\n    this.activeRow = event.currentTarget;\n    this.isSwipeActive = true;\n  }\n  \n  handleTouchMove(event) {\n    if (!this.isSwipeActive || !this.activeRow) return;\n    \n    event.preventDefault();\n    this.currentX = event.touches[0].clientX;\n    this.currentY = event.touches[0].clientY;\n    \n    const deltaX = this.currentX - this.startX;\n    const deltaY = Math.abs(this.currentY - this.startY);\n    \n    // Only handle horizontal swipes\n    if (deltaY &lt; 50 &amp;&amp; Math.abs(deltaX) &gt; 20) {\n      this.activeRow.style.transform = `translateX(${Math.min(Math.max(deltaX, -150), 150)}px)`;\n      \n      // Show action hints based on swipe direction\n      if (deltaX &gt; 50) {\n        this.activeRow.classList.add(&#x27;swipe-right&#x27;);\n        this.activeRow.classList.remove(&#x27;swipe-left&#x27;);\n      } else if (deltaX &lt; -50) {\n        this.activeRow.classList.add(&#x27;swipe-left&#x27;);\n        this.activeRow.classList.remove(&#x27;swipe-right&#x27;);\n      }\n    }\n  }\n  \n  handleTouchEnd(event) {\n    if (!this.isSwipeActive || !this.activeRow) return;\n    \n    const deltaX = this.currentX - this.startX;\n    \n    if (Math.abs(deltaX) &gt; 100) {\n      // Execute swipe action\n      if (deltaX &gt; 0) {\n        this.executeSwipeAction(&#x27;edit&#x27;, this.activeRow);\n      } else {\n        this.executeSwipeAction(&#x27;delete&#x27;, this.activeRow);\n      }\n    }\n    \n    // Reset row position\n    this.activeRow.style.transform = &#x27;&#x27;;\n    this.activeRow.classList.remove(&#x27;swipe-left&#x27;, &#x27;swipe-right&#x27;);\n    \n    this.isSwipeActive = false;\n    this.activeRow = null;\n  }\n  \n  executeSwipeAction(action, row) {\n    const rowId = row.dataset.id;\n    \n    switch (action) {\n      case &#x27;edit&#x27;:\n        console.log(`Edit row ${rowId}`);\n        this.showEditModal(rowId);\n        break;\n      case &#x27;delete&#x27;:\n        console.log(`Delete row ${rowId}`);\n        this.showDeleteConfirmation(rowId);\n        break;\n      default:\n        console.log(`Unknown action: ${action}`);\n    }\n  }\n  \n  showEditModal(rowId) {\n    // Implementation for edit modal\n    alert(`Edit item ${rowId}`);\n  }\n  \n  showDeleteConfirmation(rowId) {\n    // Implementation for delete confirmation\n    if (confirm(`Delete item ${rowId}?`)) {\n      document.querySelector(`[data-id=&quot;${rowId}&quot;]`).remove();\n    }\n  }\n  \n  // Desktop mouse events\n  handleMouseDown(event) {\n    this.startX = event.clientX;\n    this.startY = event.clientY;\n    this.activeRow = event.currentTarget;\n    this.isSwipeActive = true;\n    \n    document.addEventListener(&#x27;mousemove&#x27;, this.handleMouseMove.bind(this));\n    document.addEventListener(&#x27;mouseup&#x27;, this.handleMouseUp.bind(this));\n  }\n  \n  handleMouseMove(event) {\n    if (!this.isSwipeActive || !this.activeRow) return;\n    \n    this.currentX = event.clientX;\n    this.currentY = event.clientY;\n    \n    const deltaX = this.currentX - this.startX;\n    const deltaY = Math.abs(this.currentY - this.startY);\n    \n    if (deltaY &lt; 50 &amp;&amp; Math.abs(deltaX) &gt; 10) {\n      this.activeRow.style.transform = `translateX(${Math.min(Math.max(deltaX, -150), 150)}px)`;\n    }\n  }\n  \n  handleMouseUp(event) {\n    document.removeEventListener(&#x27;mousemove&#x27;, this.handleMouseMove.bind(this));\n    document.removeEventListener(&#x27;mouseup&#x27;, this.handleMouseUp.bind(this));\n    \n    if (this.activeRow) {\n      this.activeRow.style.transform = &#x27;&#x27;;\n      this.isSwipeActive = false;\n      this.activeRow = null;\n    }\n  }\n}\n\n// Initialize touch table functionality\ndocument.addEventListener(&#x27;DOMContentLoaded&#x27;, () =&gt; {\n  new TouchTableManager();\n});\n```\u003C/span>\n\n\u003Cspan class=\"hljs-code\">```css\n/* Touch-optimized table styling */\n.touch-table-container {\n  overflow: hidden;\n  border-radius: 8px;\n  box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n}\n\n.touch-table-row {\n  position: relative;\n  background: white;\n  border-bottom: 1px solid #eee;\n  transition: transform 0.2s ease;\n  cursor: grab;\n  user-select: none;\n}\n\n.touch-table-row:active {\n  cursor: grabbing;\n}\n\n.touch-table-row.swipe-right {\n  background: linear-gradient(90deg, #e8f5e8 0%, white 100%);\n}\n\n.touch-table-row.swipe-left {\n  background: linear-gradient(90deg, #ffe8e8 0%, white 100%);\n}\n\n.row-content {\n  padding: 20px;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  min-height: 80px;\n}\n\n.primary-info h4 {\n  margin: 0 0 5px 0;\n  font-size: 1.1em;\n  font-weight: 600;\n}\n\n.primary-info p {\n  margin: 0;\n  color: #666;\n  font-size: 0.9em;\n}\n\n.secondary-info {\n  display: flex;\n  flex-direction: column;\n  align-items: flex-end;\n  gap: 5px;\n}\n\n.status {\n  padding: 4px 8px;\n  border-radius: 4px;\n  font-size: 0.8em;\n  font-weight: 600;\n  text-transform: uppercase;\n}\n\n.status.active {\n  background: #d4edda;\n  color: #155724;\n}\n\n.department {\n  color: #666;\n  font-size: 0.85em;\n}\n\n.row-actions {\n  position: absolute;\n  top: 0;\n  right: -150px;\n  height: 100%;\n  width: 150px;\n  display: flex;\n  background: #f8f9fa;\n  transition: right 0.2s ease;\n}\n\n.action-btn {\n  flex: 1;\n  border: none;\n  background: transparent;\n  padding: 10px;\n  font-size: 0.8em;\n  cursor: pointer;\n  transition: background 0.2s ease;\n}\n\n.action-btn:hover {\n  background: #007bff;\n  color: white;\n}\n\n.action-btn.delete:hover {\n  background: #dc3545;\n}\n```\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"cross-device-testing-and-optimization\">Cross-Device Testing and Optimization\u003C/h2>\n\u003Ch3 id=\"comprehensive-device-testing-strategy\">Comprehensive Device Testing Strategy\u003C/h3>\n\u003Cp>Implementing systematic testing across device categories:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># Device Testing and Optimization Framework\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Device Testing Matrix\u003C/span>\n| Device Category | Screen Size | Orientation | Table Strategy | Key Considerations |\n|-----------------|-------------|-------------|----------------|--------------------|\n| \u003Cspan class=\"hljs-strong\">**Smartphones**\u003C/span> | 320-480px | Portrait primary | Card layout, stacked data | Thumb navigation, minimal data |\n| \u003Cspan class=\"hljs-strong\">**Phablets**\u003C/span> | 480-600px | Both orientations | Hybrid card/table | Adaptive based on orientation |\n| \u003Cspan class=\"hljs-strong\">**Tablets**\u003C/span> | 600-1024px | Both orientations | Compressed table | Touch targets, readable text |\n| \u003Cspan class=\"hljs-strong\">**Laptops**\u003C/span> | 1024-1440px | Landscape | Full table features | Hover states, keyboard navigation |\n| \u003Cspan class=\"hljs-strong\">**Desktops**\u003C/span> | 1440px+ | Landscape | Enhanced table features | Advanced interactions, full data |\n\n\u003Cspan class=\"hljs-section\">## Responsive Testing Checklist\u003C/span>\n\u003Cspan class=\"hljs-code\">```markdown\n### Mobile Device Tests (320-600px)\n- [ ] All table content accessible without horizontal scroll\n- [ ] Touch targets minimum 44px height\n- [ ] Text remains readable at 16px minimum\n- [ ] Card layout provides clear data hierarchy\n- [ ] Swipe gestures work smoothly\n- [ ] No overlapping interface elements\n\n### Tablet Device Tests (600-1024px)  \n- [ ] Table utilizes available screen width effectively\n- [ ] Column priorities display appropriately\n- [ ] Touch interactions work for all table elements\n- [ ] Text scaling maintains readability\n- [ ] Landscape/portrait modes both functional\n\n### Desktop Tests (1024px+)\n- [ ] Full table functionality available\n- [ ] Hover states provide useful feedback\n- [ ] Keyboard navigation works completely\n- [ ] Advanced features accessible\n- [ ] Print styles maintain table integrity\n```\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Performance Optimization Techniques\u003C/span>\n\u003Cspan class=\"hljs-code\">```css\n/* Performance-optimized responsive table CSS */\n.performance-table {\n  /* Use hardware acceleration for smooth animations */\n  will-change: transform;\n  transform: translateZ(0);\n  \n  /* Optimize rendering */\n  backface-visibility: hidden;\n  perspective: 1000px;\n  \n  /* Efficient layout calculations */\n  table-layout: fixed;\n  width: 100%;\n  border-collapse: collapse;\n}\n\n/* Use efficient selectors */\n.performance-table &gt; thead &gt; tr &gt; th,\n.performance-table &gt; tbody &gt; tr &gt; td {\n  padding: 12px 8px;\n  border: 1px solid #ddd;\n  text-align: left;\n  vertical-align: top;\n}\n\n/* Minimize repaints on mobile */\n@media (max-width: 768px) {\n  .performance-table {\n    /* Reduce complexity for mobile */\n    box-shadow: none;\n    border-radius: 0;\n  }\n  \n  /* Use transform instead of changing layout properties */\n  .performance-table tbody tr {\n    transform: translateY(0);\n    transition: transform 0.2s ease;\n  }\n  \n  .performance-table tbody tr:hover {\n    transform: translateY(-1px);\n  }\n}\n\n/* Optimize for retina displays */\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n  .performance-table {\n    /* Ensure crisp borders on high-DPI screens */\n    border-width: 0.5px;\n  }\n}\n\n/* Reduce motion for accessibility */\n@media (prefers-reduced-motion: reduce) {\n  .performance-table * {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n  }\n}\n```\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Loading State Management\u003C/span>\n\u003Cspan class=\"hljs-code\">```html\n&lt;!-- Skeleton loading for responsive tables --&gt;\n&lt;div class=&quot;table-skeleton&quot;&gt;\n  &lt;div class=&quot;skeleton-header&quot;&gt;\n    &lt;div class=&quot;skeleton-cell&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;skeleton-cell&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;skeleton-cell mobile-hide&quot;&gt;&lt;/div&gt;\n    &lt;div class=&quot;skeleton-cell mobile-hide&quot;&gt;&lt;/div&gt;\n  &lt;/div&gt;\n  &lt;div class=&quot;skeleton-rows&quot;&gt;\n    &lt;div class=&quot;skeleton-row&quot;&gt;\n      &lt;div class=&quot;skeleton-cell&quot;&gt;&lt;/div&gt;\n      &lt;div class=&quot;skeleton-cell&quot;&gt;&lt;/div&gt;\n      &lt;div class=&quot;skeleton-cell mobile-hide&quot;&gt;&lt;/div&gt;\n      &lt;div class=&quot;skeleton-cell mobile-hide&quot;&gt;&lt;/div&gt;\n    &lt;/div&gt;\n    &lt;!-- Repeat for multiple skeleton rows --&gt;\n  &lt;/div&gt;\n&lt;/div&gt;\n```\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"accessibility-and-universal-design\">Accessibility and Universal Design\u003C/h2>\n\u003Ch3 id=\"screen-reader-optimization\">Screen Reader Optimization\u003C/h3>\n\u003Cp>Implementing comprehensive accessibility features for responsive tables:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-markdown\">\u003Cspan class=\"hljs-section\"># Accessibility-First Responsive Design\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## ARIA-Enhanced Responsive Table\u003C/span>\n\u003Cspan class=\"hljs-code\">```html\n&lt;!-- Fully accessible responsive table --&gt;\n&lt;div class=&quot;accessible-table-container&quot; role=&quot;region&quot; aria-labelledby=&quot;table-title&quot; tabindex=&quot;0&quot;&gt;\n  &lt;h2 id=&quot;table-title&quot;&gt;Employee Directory&lt;/h2&gt;\n  &lt;p class=&quot;table-description&quot;&gt;\n    Complete list of company employees with contact information. \n    Use arrow keys to navigate, or swipe on mobile devices.\n  &lt;/p&gt;\n  \n  &lt;table class=&quot;accessible-responsive-table&quot; \n         role=&quot;table&quot; \n         aria-describedby=&quot;table-description&quot;&gt;\n    &lt;caption class=&quot;sr-only&quot;&gt;\n      Employee directory with 5 columns: Name, Department, Phone, Email, and Location\n    &lt;/caption&gt;\n    \n    &lt;thead&gt;\n      &lt;tr role=&quot;row&quot;&gt;\n        &lt;th role=&quot;columnheader&quot; \n            scope=&quot;col&quot; \n            aria-sort=&quot;none&quot; \n            tabindex=&quot;0&quot;\n            id=&quot;name-header&quot;&gt;\n          Name\n          &lt;span class=&quot;sort-indicator&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;\n        &lt;/th&gt;\n        &lt;th role=&quot;columnheader&quot; \n            scope=&quot;col&quot; \n            aria-sort=&quot;none&quot; \n            tabindex=&quot;0&quot;\n            id=&quot;dept-header&quot;&gt;\n          Department\n        &lt;/th&gt;\n        &lt;th role=&quot;columnheader&quot; \n            scope=&quot;col&quot; \n            class=&quot;mobile-hide&quot; \n            id=&quot;phone-header&quot;&gt;\n          Phone\n        &lt;/th&gt;\n        &lt;th role=&quot;columnheader&quot; \n            scope=&quot;col&quot; \n            class=&quot;mobile-hide&quot; \n            id=&quot;email-header&quot;&gt;\n          Email\n        &lt;/th&gt;\n        &lt;th role=&quot;columnheader&quot; \n            scope=&quot;col&quot; \n            class=&quot;tablet-hide&quot; \n            id=&quot;location-header&quot;&gt;\n          Location\n        &lt;/th&gt;\n      &lt;/tr&gt;\n    &lt;/thead&gt;\n    \n    &lt;tbody&gt;\n      &lt;tr role=&quot;row&quot; class=&quot;data-row&quot; tabindex=&quot;0&quot; aria-rowindex=&quot;1&quot;&gt;\n        &lt;td role=&quot;gridcell&quot; \n            headers=&quot;name-header&quot; \n            data-label=&quot;Name&quot;\n            class=&quot;name-cell&quot;&gt;\n          &lt;strong&gt;Sarah Chen&lt;/strong&gt;\n          &lt;span class=&quot;mobile-only secondary-info&quot;&gt;Engineering • San Francisco&lt;/span&gt;\n        &lt;/td&gt;\n        &lt;td role=&quot;gridcell&quot; \n            headers=&quot;dept-header&quot; \n            data-label=&quot;Department&quot;\n            class=&quot;tablet-show&quot;&gt;\n          Engineering\n        &lt;/td&gt;\n        &lt;td role=&quot;gridcell&quot; \n            headers=&quot;phone-header&quot; \n            data-label=&quot;Phone&quot;\n            class=&quot;mobile-hide&quot;&gt;\n          &lt;a href=&quot;tel:+1555123456&quot; aria-label=&quot;Call Sarah Chen&quot;&gt;555-123-456&lt;/a&gt;\n        &lt;/td&gt;\n        &lt;td role=&quot;gridcell&quot; \n            headers=&quot;email-header&quot; \n            data-label=&quot;Email&quot;\n            class=&quot;mobile-hide&quot;&gt;\n          &lt;a href=&quot;mailto:sarah@company.com&quot; aria-label=&quot;Email Sarah Chen&quot;&gt;sarah@company.com&lt;/a&gt;\n        &lt;/td&gt;\n        &lt;td role=&quot;gridcell&quot; \n            headers=&quot;location-header&quot; \n            data-label=&quot;Location&quot;\n            class=&quot;tablet-hide&quot;&gt;\n          San Francisco, CA\n        &lt;/td&gt;\n      &lt;/tr&gt;\n    &lt;/tbody&gt;\n  &lt;/table&gt;\n  \n  &lt;!-- Mobile-specific action bar --&gt;\n  &lt;div class=&quot;mobile-actions&quot; role=&quot;toolbar&quot; aria-label=&quot;Table actions&quot;&gt;\n    &lt;button type=&quot;button&quot; aria-label=&quot;Filter employees&quot; class=&quot;action-btn&quot;&gt;\n      🔍 Filter\n    &lt;/button&gt;\n    &lt;button type=&quot;button&quot; aria-label=&quot;Sort employees&quot; class=&quot;action-btn&quot;&gt;\n      📊 Sort\n    &lt;/button&gt;\n    &lt;button type=&quot;button&quot; aria-label=&quot;Export employee data&quot; class=&quot;action-btn&quot;&gt;\n      📤 Export\n    &lt;/button&gt;\n  &lt;/div&gt;\n&lt;/div&gt;\n```\u003C/span>\n\n\u003Cspan class=\"hljs-code\">```css\n/* Accessibility-focused responsive table styles */\n.accessible-table-container {\n  max-width: 100%;\n  overflow: auto;\n  border-radius: 8px;\n  box-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\n.accessible-responsive-table {\n  width: 100%;\n  border-collapse: collapse;\n  background: white;\n  font-family: -apple-system, BlinkMacSystemFont, &#x27;Segoe UI&#x27;, Roboto, sans-serif;\n}\n\n/* Focus management */\n.accessible-responsive-table th:focus,\n.accessible-responsive-table td:focus,\n.data-row:focus {\n  outline: 3px solid #007bff;\n  outline-offset: 2px;\n  box-shadow: 0 0 0 2px white;\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n  .accessible-responsive-table {\n    border: 2px solid;\n  }\n  \n  .accessible-responsive-table th,\n  .accessible-responsive-table td {\n    border: 1px solid;\n  }\n}\n\n/* Screen reader only content */\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0;\n}\n\n/* Mobile accessibility adaptations */\n@media (max-width: 768px) {\n  .mobile-hide {\n    display: none;\n  }\n  \n  .mobile-only {\n    display: block;\n    font-size: 0.85em;\n    color: #666;\n    margin-top: 4px;\n  }\n  \n  .data-row {\n    display: block;\n    border: 1px solid #ddd;\n    margin-bottom: 12px;\n    padding: 16px;\n    border-radius: 6px;\n    background: #fafafa;\n  }\n  \n  .data-row:focus {\n    background: #e7f3ff;\n  }\n  \n  .accessible-responsive-table thead {\n    display: none;\n  }\n  \n  .accessible-responsive-table td {\n    display: block;\n    text-align: left;\n    border: none;\n    padding: 8px 0;\n    position: relative;\n    padding-left: 40%;\n  }\n  \n  .accessible-responsive-table td:before {\n    content: attr(data-label) &quot;: &quot;;\n    position: absolute;\n    left: 0;\n    width: 35%;\n    font-weight: 600;\n    color: #333;\n  }\n  \n  .name-cell {\n    font-size: 1.1em;\n    padding-left: 0;\n    border-bottom: 1px solid #ddd;\n    margin-bottom: 8px;\n    padding-bottom: 8px;\n  }\n  \n  .name-cell:before {\n    display: none;\n  }\n}\n\n/* Tablet adaptations */\n@media (min-width: 769px) and (max-width: 1024px) {\n  .tablet-hide {\n    display: none;\n  }\n  \n  .tablet-show {\n    display: table-cell;\n  }\n  \n  .mobile-only {\n    display: none;\n  }\n}\n\n/* Touch target optimization */\n@media (pointer: coarse) {\n  .accessible-responsive-table th,\n  .accessible-responsive-table td,\n  .action-btn {\n    min-height: 44px;\n    padding: 12px 8px;\n  }\n  \n  .accessible-responsive-table a {\n    display: inline-block;\n    padding: 8px;\n    margin: -8px;\n    min-height: 44px;\n    display: flex;\n    align-items: center;\n  }\n}\n```\u003C/span>\n\n\u003Cspan class=\"hljs-section\">## Voice Control and Alternative Input Support\u003C/span>\n\u003Cspan class=\"hljs-code\">```javascript\n// Voice command and alternative input support\nclass AccessibleTableController {\n  constructor(tableElement) {\n    this.table = tableElement;\n    this.currentCell = null;\n    this.speechSynthesis = window.speechSynthesis;\n    this.recognition = null;\n    \n    this.initializeKeyboardNavigation();\n    this.initializeVoiceCommands();\n    this.initializeScreenReaderAnnouncements();\n  }\n  \n  initializeKeyboardNavigation() {\n    this.table.addEventListener(&#x27;keydown&#x27;, (event) =&gt; {\n      const focusedElement = document.activeElement;\n      \n      switch (event.key) {\n        case &#x27;ArrowRight&#x27;:\n          event.preventDefault();\n          this.navigateToNextCell(focusedElement, &#x27;right&#x27;);\n          break;\n          \n        case &#x27;ArrowLeft&#x27;:\n          event.preventDefault();\n          this.navigateToNextCell(focusedElement, &#x27;left&#x27;);\n          break;\n          \n        case &#x27;ArrowDown&#x27;:\n          event.preventDefault();\n          this.navigateToNextCell(focusedElement, &#x27;down&#x27;);\n          break;\n          \n        case &#x27;ArrowUp&#x27;:\n          event.preventDefault();\n          this.navigateToNextCell(focusedElement, &#x27;up&#x27;);\n          break;\n          \n        case &#x27;Home&#x27;:\n          event.preventDefault();\n          this.navigateToFirstCell();\n          break;\n          \n        case &#x27;End&#x27;:\n          event.preventDefault();\n          this.navigateToLastCell();\n          break;\n          \n        case &#x27;Enter&#x27;:\n        case &#x27; &#x27;:\n          event.preventDefault();\n          this.activateCell(focusedElement);\n          break;\n      }\n    });\n  }\n  \n  navigateToNextCell(currentElement, direction) {\n    const cells = Array.from(this.table.querySelectorAll(&#x27;td, th&#x27;));\n    const currentIndex = cells.indexOf(currentElement);\n    \n    if (currentIndex === -1) return;\n    \n    let nextIndex;\n    const columnsCount = this.table.rows[0].cells.length;\n    \n    switch (direction) {\n      case &#x27;right&#x27;:\n        nextIndex = currentIndex + 1;\n        break;\n      case &#x27;left&#x27;:\n        nextIndex = currentIndex - 1;\n        break;\n      case &#x27;down&#x27;:\n        nextIndex = currentIndex + columnsCount;\n        break;\n      case &#x27;up&#x27;:\n        nextIndex = currentIndex - columnsCount;\n        break;\n    }\n    \n    if (nextIndex &gt;= 0 &amp;&amp; nextIndex &lt; cells.length) {\n      cells[nextIndex].focus();\n      this.announceCell(cells[nextIndex]);\n    }\n  }\n  \n  announceCell(cell) {\n    const columnHeader = this.getColumnHeader(cell);\n    const cellContent = cell.textContent.trim();\n    const announcement = `${columnHeader}: ${cellContent}`;\n    \n    this.speak(announcement);\n  }\n  \n  getColumnHeader(cell) {\n    const cellIndex = Array.from(cell.parentNode.cells).indexOf(cell);\n    const headerRow = this.table.querySelector(&#x27;thead tr&#x27;);\n    \n    if (headerRow &amp;&amp; headerRow.cells[cellIndex]) {\n      return headerRow.cells[cellIndex].textContent.trim();\n    }\n    \n    return &#x27;Column &#x27; + (cellIndex + 1);\n  }\n  \n  speak(text) {\n    if (this.speechSynthesis) {\n      this.speechSynthesis.cancel();\n      const utterance = new SpeechSynthesisUtterance(text);\n      utterance.rate = 1.2;\n      utterance.pitch = 1.0;\n      utterance.volume = 0.8;\n      this.speechSynthesis.speak(utterance);\n    }\n  }\n  \n  initializeVoiceCommands() {\n    if (&#x27;webkitSpeechRecognition&#x27; in window || &#x27;SpeechRecognition&#x27; in window) {\n      const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;\n      this.recognition = new SpeechRecognition();\n      \n      this.recognition.continuous = false;\n      this.recognition.interimResults = false;\n      this.recognition.lang = &#x27;en-US&#x27;;\n      \n      this.recognition.onresult = (event) =&gt; {\n        const command = event.results[0][0].transcript.toLowerCase();\n        this.processVoiceCommand(command);\n      };\n      \n      // Add voice activation button\n      const voiceButton = document.createElement(&#x27;button&#x27;);\n      voiceButton.textContent = &#x27;🎤 Voice Commands&#x27;;\n      voiceButton.setAttribute(&#x27;aria-label&#x27;, &#x27;Activate voice commands&#x27;);\n      voiceButton.addEventListener(&#x27;click&#x27;, () =&gt; {\n        this.recognition.start();\n      });\n      \n      this.table.parentNode.insertBefore(voiceButton, this.table);\n    }\n  }\n  \n  processVoiceCommand(command) {\n    if (command.includes(&#x27;first cell&#x27;)) {\n      this.navigateToFirstCell();\n    } else if (command.includes(&#x27;last cell&#x27;)) {\n      this.navigateToLastCell();\n    } else if (command.includes(&#x27;next row&#x27;)) {\n      this.navigateToNextRow();\n    } else if (command.includes(&#x27;previous row&#x27;)) {\n      this.navigateToPreviousRow();\n    } else if (command.includes(&#x27;read table&#x27;)) {\n      this.readEntireTable();\n    } else {\n      this.speak(&#x27;Command not recognized. Available commands include: first cell, last cell, next row, previous row, read table.&#x27;);\n    }\n  }\n  \n  readEntireTable() {\n    const headers = Array.from(this.table.querySelectorAll(&#x27;th&#x27;)).map(th =&gt; th.textContent);\n    const rows = Array.from(this.table.querySelectorAll(&#x27;tbody tr&#x27;));\n    \n    let tableText = `Table with ${headers.length} columns and ${rows.length} rows. `;\n    tableText += `Columns are: ${headers.join(&#x27;, &#x27;)}. `;\n    \n    rows.slice(0, 3).forEach((row, index) =&gt; {\n      const cells = Array.from(row.cells);\n      const rowText = cells.map((cell, cellIndex) =&gt; {\n        return `${headers[cellIndex]}: ${cell.textContent}`;\n      }).join(&#x27;, &#x27;);\n      \n      tableText += `Row ${index + 1}: ${rowText}. `;\n    });\n    \n    if (rows.length &gt; 3) {\n      tableText += `And ${rows.length - 3} more rows.`;\n    }\n    \n    this.speak(tableText);\n  }\n}\n\n// Initialize accessible table controller\ndocument.addEventListener(&#x27;DOMContentLoaded&#x27;, () =&gt; {\n  const tables = document.querySelectorAll(&#x27;.accessible-responsive-table&#x27;);\n  tables.forEach(table =&gt; {\n    new AccessibleTableController(table);\n  });\n});\n```\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"integration-with-documentation-systems\">Integration with Documentation Systems\u003C/h2>\n\u003Cp>Responsive table design integrates seamlessly with comprehensive documentation workflows. When combined with \u003Ca href=\"/blog/markdown-progressive-web-app-documentation-complete-guide\">Progressive Web App documentation systems\u003C/a>, responsive tables enable fast, offline-capable data access that maintains usability across different network conditions and device capabilities.\u003C/p>\n\u003Cp>For comprehensive content management, responsive design works effectively with \u003Ca href=\"/blog/markdown-automated-testing-validation-complete-guide\">automated testing and validation workflows\u003C/a> to ensure table functionality remains consistent across device updates, browser changes, and accessibility requirements through systematic testing procedures.\u003C/p>\n\u003Cp>When building sophisticated documentation platforms, responsive tables complement \u003Ca href=\"/blog/markdown-version-control-git-integration-complete-guide\">version control and collaborative editing systems\u003C/a> by enabling distributed teams to create, review, and maintain complex data presentations that serve diverse user contexts and accessibility needs.\u003C/p>\n\u003Ch2 id=\"performance-and-optimization-strategies\">Performance and Optimization Strategies\u003C/h2>\n\u003Ch3 id=\"advanced-optimization-techniques\">Advanced Optimization Techniques\u003C/h3>\n\u003Cp>Implementing comprehensive performance optimization for responsive tables:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-python\">\u003Cspan class=\"hljs-comment\">#!/usr/bin/env python3\u003C/span>\n\u003Cspan class=\"hljs-comment\"># responsive-table-optimizer.py - Advanced table performance optimization\u003C/span>\n\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> json\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> gzip\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> base64\n\u003Cspan class=\"hljs-keyword\">from\u003C/span> typing \u003Cspan class=\"hljs-keyword\">import\u003C/span> \u003Cspan class=\"hljs-type\">Dict\u003C/span>, \u003Cspan class=\"hljs-type\">List\u003C/span>, \u003Cspan class=\"hljs-type\">Optional\u003C/span>, \u003Cspan class=\"hljs-type\">Tuple\u003C/span>\n\u003Cspan class=\"hljs-keyword\">from\u003C/span> dataclasses \u003Cspan class=\"hljs-keyword\">import\u003C/span> dataclass\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> re\n\n\u003Cspan class=\"hljs-meta\">@dataclass\u003C/span>\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">TableOptimizationConfig\u003C/span>:\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Configuration for table optimization strategies&quot;&quot;&quot;\u003C/span>\n    enable_lazy_loading: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    enable_virtual_scrolling: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">False\u003C/span>\n    enable_compression: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    enable_caching: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n    max_visible_rows: \u003Cspan class=\"hljs-built_in\">int\u003C/span> = \u003Cspan class=\"hljs-number\">50\u003C/span>\n    mobile_column_limit: \u003Cspan class=\"hljs-built_in\">int\u003C/span> = \u003Cspan class=\"hljs-number\">3\u003C/span>\n    tablet_column_limit: \u003Cspan class=\"hljs-built_in\">int\u003C/span> = \u003Cspan class=\"hljs-number\">5\u003C/span>\n    enable_progressive_enhancement: \u003Cspan class=\"hljs-built_in\">bool\u003C/span> = \u003Cspan class=\"hljs-literal\">True\u003C/span>\n\n\u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">ResponsiveTableOptimizer\u003C/span>:\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Advanced optimization for responsive tables&quot;&quot;&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">__init__\u003C/span>(\u003Cspan class=\"hljs-params\">self, config: TableOptimizationConfig = \u003Cspan class=\"hljs-literal\">None\u003C/span>\u003C/span>):\n        self.config = config \u003Cspan class=\"hljs-keyword\">or\u003C/span> TableOptimizationConfig()\n        self.performance_metrics = {}\n        \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">optimize_table_data\u003C/span>(\u003Cspan class=\"hljs-params\">self, table_data: \u003Cspan class=\"hljs-type\">Dict\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">Dict\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Optimize table data for responsive delivery&quot;&quot;&quot;\u003C/span>\n        optimized_data = {\n            \u003Cspan class=\"hljs-string\">&#x27;headers&#x27;\u003C/span>: self._optimize_headers(table_data.get(\u003Cspan class=\"hljs-string\">&#x27;headers&#x27;\u003C/span>, [])),\n            \u003Cspan class=\"hljs-string\">&#x27;rows&#x27;\u003C/span>: self._optimize_rows(table_data.get(\u003Cspan class=\"hljs-string\">&#x27;rows&#x27;\u003C/span>, [])),\n            \u003Cspan class=\"hljs-string\">&#x27;metadata&#x27;\u003C/span>: self._generate_metadata(table_data),\n            \u003Cspan class=\"hljs-string\">&#x27;responsive_config&#x27;\u003C/span>: self._generate_responsive_config(table_data)\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> self.config.enable_compression:\n            optimized_data = self._compress_data(optimized_data)\n            \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> optimized_data\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_optimize_headers\u003C/span>(\u003Cspan class=\"hljs-params\">self, headers: \u003Cspan class=\"hljs-type\">List\u003C/span>[\u003Cspan class=\"hljs-type\">Dict\u003C/span>]\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">List\u003C/span>[\u003Cspan class=\"hljs-type\">Dict\u003C/span>]:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Optimize table headers for responsive display&quot;&quot;&quot;\u003C/span>\n        optimized_headers = []\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> index, header \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-built_in\">enumerate\u003C/span>(headers):\n            optimized_header = {\n                \u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: header.get(\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">f&#x27;col_\u003Cspan class=\"hljs-subst\">{index}\u003C/span>&#x27;\u003C/span>),\n                \u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>: header.get(\u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">f&#x27;Column \u003Cspan class=\"hljs-subst\">{index + \u003Cspan class=\"hljs-number\">1\u003C/span>}\u003C/span>&#x27;\u003C/span>),\n                \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: header.get(\u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;text&#x27;\u003C/span>),\n                \u003Cspan class=\"hljs-string\">&#x27;sortable&#x27;\u003C/span>: header.get(\u003Cspan class=\"hljs-string\">&#x27;sortable&#x27;\u003C/span>, \u003Cspan class=\"hljs-literal\">True\u003C/span>),\n                \u003Cspan class=\"hljs-string\">&#x27;priority&#x27;\u003C/span>: header.get(\u003Cspan class=\"hljs-string\">&#x27;priority&#x27;\u003C/span>, self._calculate_column_priority(header, index)),\n                \u003Cspan class=\"hljs-string\">&#x27;mobile_visible&#x27;\u003C/span>: index &lt; self.config.mobile_column_limit,\n                \u003Cspan class=\"hljs-string\">&#x27;tablet_visible&#x27;\u003C/span>: index &lt; self.config.tablet_column_limit,\n                \u003Cspan class=\"hljs-string\">&#x27;responsive_behavior&#x27;\u003C/span>: self._determine_responsive_behavior(header)\n            }\n            \n            optimized_headers.append(optimized_header)\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> optimized_headers\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_optimize_rows\u003C/span>(\u003Cspan class=\"hljs-params\">self, rows: \u003Cspan class=\"hljs-type\">List\u003C/span>[\u003Cspan class=\"hljs-type\">List\u003C/span>]\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">Dict\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Optimize table rows with pagination and lazy loading&quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> rows:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\u003Cspan class=\"hljs-string\">&#x27;data&#x27;\u003C/span>: [], \u003Cspan class=\"hljs-string\">&#x27;total_count&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">0\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;pages&#x27;\u003C/span>: []}\n        \n        total_count = \u003Cspan class=\"hljs-built_in\">len\u003C/span>(rows)\n        pages = []\n        \n        \u003Cspan class=\"hljs-comment\"># Chunk data for lazy loading\u003C/span>\n        chunk_size = self.config.max_visible_rows\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> i \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-built_in\">range\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>, total_count, chunk_size):\n            chunk = rows[i:i + chunk_size]\n            page_data = {\n                \u003Cspan class=\"hljs-string\">&#x27;page&#x27;\u003C/span>: i // chunk_size + \u003Cspan class=\"hljs-number\">1\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;data&#x27;\u003C/span>: self._process_row_chunk(chunk),\n                \u003Cspan class=\"hljs-string\">&#x27;start_index&#x27;\u003C/span>: i,\n                \u003Cspan class=\"hljs-string\">&#x27;end_index&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">min\u003C/span>(i + chunk_size, total_count)\n            }\n            pages.append(page_data)\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-string\">&#x27;data&#x27;\u003C/span>: pages[\u003Cspan class=\"hljs-number\">0\u003C/span>][\u003Cspan class=\"hljs-string\">&#x27;data&#x27;\u003C/span>] \u003Cspan class=\"hljs-keyword\">if\u003C/span> pages \u003Cspan class=\"hljs-keyword\">else\u003C/span> [],  \u003Cspan class=\"hljs-comment\"># First page for initial load\u003C/span>\n            \u003Cspan class=\"hljs-string\">&#x27;total_count&#x27;\u003C/span>: total_count,\n            \u003Cspan class=\"hljs-string\">&#x27;pages&#x27;\u003C/span>: pages[:\u003Cspan class=\"hljs-number\">3\u003C/span>],  \u003Cspan class=\"hljs-comment\"># Send first 3 pages initially\u003C/span>\n            \u003Cspan class=\"hljs-string\">&#x27;chunk_size&#x27;\u003C/span>: chunk_size\n        }\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_process_row_chunk\u003C/span>(\u003Cspan class=\"hljs-params\">self, rows: \u003Cspan class=\"hljs-type\">List\u003C/span>[\u003Cspan class=\"hljs-type\">List\u003C/span>]\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">List\u003C/span>[\u003Cspan class=\"hljs-type\">Dict\u003C/span>]:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Process individual row chunk for optimization&quot;&quot;&quot;\u003C/span>\n        processed_rows = []\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> row_index, row \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-built_in\">enumerate\u003C/span>(rows):\n            processed_row = {\n                \u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">f&#x27;row_\u003Cspan class=\"hljs-subst\">{row_index}\u003C/span>&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;cells&#x27;\u003C/span>: [],\n                \u003Cspan class=\"hljs-string\">&#x27;metadata&#x27;\u003C/span>: {\n                    \u003Cspan class=\"hljs-string\">&#x27;searchable_text&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>,\n                    \u003Cspan class=\"hljs-string\">&#x27;sort_keys&#x27;\u003C/span>: {}\n                }\n            }\n            \n            searchable_parts = []\n            \n            \u003Cspan class=\"hljs-keyword\">for\u003C/span> cell_index, cell_value \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-built_in\">enumerate\u003C/span>(row):\n                processed_cell = {\n                    \u003Cspan class=\"hljs-string\">&#x27;value&#x27;\u003C/span>: cell_value,\n                    \u003Cspan class=\"hljs-string\">&#x27;display_value&#x27;\u003C/span>: self._format_cell_value(cell_value),\n                    \u003Cspan class=\"hljs-string\">&#x27;sort_value&#x27;\u003C/span>: self._generate_sort_value(cell_value),\n                    \u003Cspan class=\"hljs-string\">&#x27;column_index&#x27;\u003C/span>: cell_index,\n                    \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: self._detect_cell_type(cell_value)\n                }\n                \n                processed_row[\u003Cspan class=\"hljs-string\">&#x27;cells&#x27;\u003C/span>].append(processed_cell)\n                searchable_parts.append(\u003Cspan class=\"hljs-built_in\">str\u003C/span>(cell_value))\n                processed_row[\u003Cspan class=\"hljs-string\">&#x27;metadata&#x27;\u003C/span>][\u003Cspan class=\"hljs-string\">&#x27;sort_keys&#x27;\u003C/span>][\u003Cspan class=\"hljs-string\">f&#x27;col_\u003Cspan class=\"hljs-subst\">{cell_index}\u003C/span>&#x27;\u003C/span>] = processed_cell[\u003Cspan class=\"hljs-string\">&#x27;sort_value&#x27;\u003C/span>]\n            \n            processed_row[\u003Cspan class=\"hljs-string\">&#x27;metadata&#x27;\u003C/span>][\u003Cspan class=\"hljs-string\">&#x27;searchable_text&#x27;\u003C/span>] = \u003Cspan class=\"hljs-string\">&#x27; &#x27;\u003C/span>.join(searchable_parts).lower()\n            processed_rows.append(processed_row)\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> processed_rows\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_calculate_column_priority\u003C/span>(\u003Cspan class=\"hljs-params\">self, header: \u003Cspan class=\"hljs-type\">Dict\u003C/span>, index: \u003Cspan class=\"hljs-built_in\">int\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">int\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Calculate column display priority for responsive behavior&quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-comment\"># Higher priority = more likely to be shown on smaller screens\u003C/span>\n        priority_factors = {\n            \u003Cspan class=\"hljs-string\">&#x27;name&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">10\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;title&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">10\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">9\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;status&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">8\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;state&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">8\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">7\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;date&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">6\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;time&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">6\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;created&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">6\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;price&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">5\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;cost&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">5\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;amount&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">5\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;email&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">4\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;phone&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">4\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;contact&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">4\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;description&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">3\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;notes&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">2\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;comments&#x27;\u003C/span>: \u003Cspan class=\"hljs-number\">1\u003C/span>\n        }\n        \n        header_label = header.get(\u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>).lower()\n        base_priority = \u003Cspan class=\"hljs-number\">5\u003C/span>  \u003Cspan class=\"hljs-comment\"># Default priority\u003C/span>\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> keyword, priority \u003Cspan class=\"hljs-keyword\">in\u003C/span> priority_factors.items():\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> keyword \u003Cspan class=\"hljs-keyword\">in\u003C/span> header_label:\n                base_priority = priority\n                \u003Cspan class=\"hljs-keyword\">break\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># First few columns get bonus priority\u003C/span>\n        position_bonus = \u003Cspan class=\"hljs-built_in\">max\u003C/span>(\u003Cspan class=\"hljs-number\">0\u003C/span>, \u003Cspan class=\"hljs-number\">3\u003C/span> - index)\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> base_priority + position_bonus\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_determine_responsive_behavior\u003C/span>(\u003Cspan class=\"hljs-params\">self, header: \u003Cspan class=\"hljs-type\">Dict\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">str\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Determine how column should behave responsively&quot;&quot;&quot;\u003C/span>\n        header_type = header.get(\u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;text&#x27;\u003C/span>)\n        priority = header.get(\u003Cspan class=\"hljs-string\">&#x27;priority&#x27;\u003C/span>, \u003Cspan class=\"hljs-number\">5\u003C/span>)\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> priority &gt;= \u003Cspan class=\"hljs-number\">8\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;always_visible&#x27;\u003C/span>  \u003Cspan class=\"hljs-comment\"># Always show these columns\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> priority &gt;= \u003Cspan class=\"hljs-number\">6\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;tablet_and_up&#x27;\u003C/span>   \u003Cspan class=\"hljs-comment\"># Hide on mobile only\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> priority &gt;= \u003Cspan class=\"hljs-number\">4\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;desktop_only&#x27;\u003C/span>    \u003Cspan class=\"hljs-comment\"># Desktop and large tablet only\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;collapsible&#x27;\u003C/span>     \u003Cspan class=\"hljs-comment\"># Can be hidden/collapsed\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_format_cell_value\u003C/span>(\u003Cspan class=\"hljs-params\">self, value\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">str\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Format cell value for display optimization&quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> value \u003Cspan class=\"hljs-keyword\">is\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, \u003Cspan class=\"hljs-built_in\">bool\u003C/span>):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;✅&#x27;\u003C/span> \u003Cspan class=\"hljs-keyword\">if\u003C/span> value \u003Cspan class=\"hljs-keyword\">else\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;❌&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, \u003Cspan class=\"hljs-built_in\">float\u003C/span>):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">f&quot;\u003Cspan class=\"hljs-subst\">{value:\u003Cspan class=\"hljs-number\">.2\u003C/span>f}\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, \u003Cspan class=\"hljs-built_in\">int\u003C/span>):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">f&quot;\u003Cspan class=\"hljs-subst\">{value:,}\u003C/span>&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-built_in\">str\u003C/span>(value)\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_generate_sort_value\u003C/span>(\u003Cspan class=\"hljs-params\">self, value\u003C/span>):\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Generate optimized sort value&quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> value \u003Cspan class=\"hljs-keyword\">is\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, (\u003Cspan class=\"hljs-built_in\">int\u003C/span>, \u003Cspan class=\"hljs-built_in\">float\u003C/span>)):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> value\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, \u003Cspan class=\"hljs-built_in\">str\u003C/span>):\n            \u003Cspan class=\"hljs-comment\"># Extract numbers for mixed content\u003C/span>\n            numbers = re.findall(\u003Cspan class=\"hljs-string\">r&#x27;\\d+\\.?\\d*&#x27;\u003C/span>, value)\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> numbers:\n                \u003Cspan class=\"hljs-keyword\">try\u003C/span>:\n                    \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-built_in\">float\u003C/span>(numbers[\u003Cspan class=\"hljs-number\">0\u003C/span>])\n                \u003Cspan class=\"hljs-keyword\">except\u003C/span> ValueError:\n                    \u003Cspan class=\"hljs-keyword\">pass\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> value.lower()\n        \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-built_in\">str\u003C/span>(value).lower()\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_detect_cell_type\u003C/span>(\u003Cspan class=\"hljs-params\">self, value\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">str\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Detect cell data type for optimization&quot;&quot;&quot;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> value \u003Cspan class=\"hljs-keyword\">is\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;null&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, \u003Cspan class=\"hljs-built_in\">bool\u003C/span>):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;boolean&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, \u003Cspan class=\"hljs-built_in\">int\u003C/span>):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;integer&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, \u003Cspan class=\"hljs-built_in\">float\u003C/span>):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;float&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(value, \u003Cspan class=\"hljs-built_in\">str\u003C/span>):\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> re.\u003Cspan class=\"hljs-keyword\">match\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^\\d{4}-\\d{2}-\\d{2}&#x27;\u003C/span>, value):\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;date&#x27;\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">elif\u003C/span> re.\u003Cspan class=\"hljs-keyword\">match\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^\\$?\\d+\\.?\\d*$&#x27;\u003C/span>, value):\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;currency&#x27;\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">elif\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;@&#x27;\u003C/span> \u003Cspan class=\"hljs-keyword\">in\u003C/span> value:\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;email&#x27;\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">elif\u003C/span> re.\u003Cspan class=\"hljs-keyword\">match\u003C/span>(\u003Cspan class=\"hljs-string\">r&#x27;^\\+?\\d[\\d\\s\\-\\(\\)]+$&#x27;\u003C/span>, value):\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;phone&#x27;\u003C/span>\n            \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n                \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;text&#x27;\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">else\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;object&#x27;\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_generate_metadata\u003C/span>(\u003Cspan class=\"hljs-params\">self, table_data: \u003Cspan class=\"hljs-type\">Dict\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">Dict\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Generate table metadata for optimization&quot;&quot;&quot;\u003C/span>\n        rows = table_data.get(\u003Cspan class=\"hljs-string\">&#x27;rows&#x27;\u003C/span>, [])\n        headers = table_data.get(\u003Cspan class=\"hljs-string\">&#x27;headers&#x27;\u003C/span>, [])\n        \n        metadata = {\n            \u003Cspan class=\"hljs-string\">&#x27;row_count&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(rows),\n            \u003Cspan class=\"hljs-string\">&#x27;column_count&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(headers),\n            \u003Cspan class=\"hljs-string\">&#x27;data_types&#x27;\u003C/span>: {},\n            \u003Cspan class=\"hljs-string\">&#x27;sort_columns&#x27;\u003C/span>: [],\n            \u003Cspan class=\"hljs-string\">&#x27;searchable_columns&#x27;\u003C/span>: [],\n            \u003Cspan class=\"hljs-string\">&#x27;estimated_size&#x27;\u003C/span>: self._estimate_table_size(table_data),\n            \u003Cspan class=\"hljs-string\">&#x27;optimization_applied&#x27;\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;compression&#x27;\u003C/span>: self.config.enable_compression,\n                \u003Cspan class=\"hljs-string\">&#x27;lazy_loading&#x27;\u003C/span>: self.config.enable_lazy_loading,\n                \u003Cspan class=\"hljs-string\">&#x27;responsive_columns&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>\n            }\n        }\n        \n        \u003Cspan class=\"hljs-comment\"># Analyze data types and characteristics\u003C/span>\n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> col_index, header \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-built_in\">enumerate\u003C/span>(headers):\n            column_data = [row[col_index] \u003Cspan class=\"hljs-keyword\">if\u003C/span> col_index &lt; \u003Cspan class=\"hljs-built_in\">len\u003C/span>(row) \u003Cspan class=\"hljs-keyword\">else\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span> \u003Cspan class=\"hljs-keyword\">for\u003C/span> row \u003Cspan class=\"hljs-keyword\">in\u003C/span> rows]\n            metadata[\u003Cspan class=\"hljs-string\">&#x27;data_types&#x27;\u003C/span>][header.get(\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">f&#x27;col_\u003Cspan class=\"hljs-subst\">{col_index}\u003C/span>&#x27;\u003C/span>)] = {\n                \u003Cspan class=\"hljs-string\">&#x27;primary_type&#x27;\u003C/span>: self._analyze_column_type(column_data),\n                \u003Cspan class=\"hljs-string\">&#x27;nullable&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">any\u003C/span>(val \u003Cspan class=\"hljs-keyword\">is\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span> \u003Cspan class=\"hljs-keyword\">for\u003C/span> val \u003Cspan class=\"hljs-keyword\">in\u003C/span> column_data),\n                \u003Cspan class=\"hljs-string\">&#x27;unique_values&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(\u003Cspan class=\"hljs-built_in\">set\u003C/span>(\u003Cspan class=\"hljs-built_in\">str\u003C/span>(val) \u003Cspan class=\"hljs-keyword\">for\u003C/span> val \u003Cspan class=\"hljs-keyword\">in\u003C/span> column_data \u003Cspan class=\"hljs-keyword\">if\u003C/span> val \u003Cspan class=\"hljs-keyword\">is\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span>)),\n                \u003Cspan class=\"hljs-string\">&#x27;sortable&#x27;\u003C/span>: self._is_column_sortable(column_data),\n                \u003Cspan class=\"hljs-string\">&#x27;searchable&#x27;\u003C/span>: self._is_column_searchable(column_data)\n            }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> metadata\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_generate_responsive_config\u003C/span>(\u003Cspan class=\"hljs-params\">self, table_data: \u003Cspan class=\"hljs-type\">Dict\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">Dict\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Generate responsive configuration&quot;&quot;&quot;\u003C/span>\n        headers = table_data.get(\u003Cspan class=\"hljs-string\">&#x27;headers&#x27;\u003C/span>, [])\n        \n        breakpoints = {\n            \u003Cspan class=\"hljs-string\">&#x27;mobile&#x27;\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;max_width&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;767px&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;visible_columns&#x27;\u003C/span>: [i \u003Cspan class=\"hljs-keyword\">for\u003C/span> i, h \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-built_in\">enumerate\u003C/span>(headers) \u003Cspan class=\"hljs-keyword\">if\u003C/span> i &lt; self.config.mobile_column_limit],\n                \u003Cspan class=\"hljs-string\">&#x27;layout&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;card&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;font_size&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;14px&#x27;\u003C/span>\n            },\n            \u003Cspan class=\"hljs-string\">&#x27;tablet&#x27;\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;min_width&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;768px&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;max_width&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;1023px&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;visible_columns&#x27;\u003C/span>: [i \u003Cspan class=\"hljs-keyword\">for\u003C/span> i, h \u003Cspan class=\"hljs-keyword\">in\u003C/span> \u003Cspan class=\"hljs-built_in\">enumerate\u003C/span>(headers) \u003Cspan class=\"hljs-keyword\">if\u003C/span> i &lt; self.config.tablet_column_limit],\n                \u003Cspan class=\"hljs-string\">&#x27;layout&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;compressed_table&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;font_size&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;15px&#x27;\u003C/span>\n            },\n            \u003Cspan class=\"hljs-string\">&#x27;desktop&#x27;\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;min_width&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;1024px&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;visible_columns&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">list\u003C/span>(\u003Cspan class=\"hljs-built_in\">range\u003C/span>(\u003Cspan class=\"hljs-built_in\">len\u003C/span>(headers))),\n                \u003Cspan class=\"hljs-string\">&#x27;layout&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;full_table&#x27;\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;font_size&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;16px&#x27;\u003C/span>\n            }\n        }\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-string\">&#x27;breakpoints&#x27;\u003C/span>: breakpoints,\n            \u003Cspan class=\"hljs-string\">&#x27;adaptive_features&#x27;\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;touch_targets&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;swipe_gestures&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;keyboard_navigation&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;voice_commands&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>\n            },\n            \u003Cspan class=\"hljs-string\">&#x27;performance_features&#x27;\u003C/span>: {\n                \u003Cspan class=\"hljs-string\">&#x27;virtual_scrolling&#x27;\u003C/span>: self.config.enable_virtual_scrolling,\n                \u003Cspan class=\"hljs-string\">&#x27;lazy_image_loading&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;debounced_search&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>,\n                \u003Cspan class=\"hljs-string\">&#x27;cached_sorting&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>\n            }\n        }\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_compress_data\u003C/span>(\u003Cspan class=\"hljs-params\">self, data: \u003Cspan class=\"hljs-type\">Dict\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">Dict\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Compress table data for efficient transfer&quot;&quot;&quot;\u003C/span>\n        json_data = json.dumps(data, separators=(\u003Cspan class=\"hljs-string\">&#x27;,&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;:&#x27;\u003C/span>))\n        compressed_data = gzip.compress(json_data.encode(\u003Cspan class=\"hljs-string\">&#x27;utf-8&#x27;\u003C/span>))\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-string\">&#x27;compressed&#x27;\u003C/span>: \u003Cspan class=\"hljs-literal\">True\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;encoding&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;gzip&#x27;\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;original_size&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(json_data),\n            \u003Cspan class=\"hljs-string\">&#x27;compressed_size&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(compressed_data),\n            \u003Cspan class=\"hljs-string\">&#x27;compression_ratio&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(compressed_data) / \u003Cspan class=\"hljs-built_in\">len\u003C/span>(json_data),\n            \u003Cspan class=\"hljs-string\">&#x27;data&#x27;\u003C/span>: base64.b64encode(compressed_data).decode(\u003Cspan class=\"hljs-string\">&#x27;ascii&#x27;\u003C/span>)\n        }\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_estimate_table_size\u003C/span>(\u003Cspan class=\"hljs-params\">self, table_data: \u003Cspan class=\"hljs-type\">Dict\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-type\">Dict\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Estimate table size for performance planning&quot;&quot;&quot;\u003C/span>\n        json_size = \u003Cspan class=\"hljs-built_in\">len\u003C/span>(json.dumps(table_data))\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> {\n            \u003Cspan class=\"hljs-string\">&#x27;json_bytes&#x27;\u003C/span>: json_size,\n            \u003Cspan class=\"hljs-string\">&#x27;json_kb&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">round\u003C/span>(json_size / \u003Cspan class=\"hljs-number\">1024\u003C/span>, \u003Cspan class=\"hljs-number\">2\u003C/span>),\n            \u003Cspan class=\"hljs-string\">&#x27;estimated_dom_nodes&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">len\u003C/span>(table_data.get(\u003Cspan class=\"hljs-string\">&#x27;headers&#x27;\u003C/span>, [])) * \u003Cspan class=\"hljs-built_in\">len\u003C/span>(table_data.get(\u003Cspan class=\"hljs-string\">&#x27;rows&#x27;\u003C/span>, [])) * \u003Cspan class=\"hljs-number\">2\u003C/span>,\n            \u003Cspan class=\"hljs-string\">&#x27;estimated_render_time_ms&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">min\u003C/span>(\u003Cspan class=\"hljs-number\">1000\u003C/span>, json_size / \u003Cspan class=\"hljs-number\">1000\u003C/span>),  \u003Cspan class=\"hljs-comment\"># Rough estimate\u003C/span>\n            \u003Cspan class=\"hljs-string\">&#x27;memory_estimate_mb&#x27;\u003C/span>: \u003Cspan class=\"hljs-built_in\">round\u003C/span>((json_size * \u003Cspan class=\"hljs-number\">3\u003C/span>) / (\u003Cspan class=\"hljs-number\">1024\u003C/span> * \u003Cspan class=\"hljs-number\">1024\u003C/span>), \u003Cspan class=\"hljs-number\">2\u003C/span>)  \u003Cspan class=\"hljs-comment\"># DOM overhead\u003C/span>\n        }\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_analyze_column_type\u003C/span>(\u003Cspan class=\"hljs-params\">self, column_data: \u003Cspan class=\"hljs-type\">List\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">str\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Analyze predominant data type in column&quot;&quot;&quot;\u003C/span>\n        type_counts = {}\n        \n        \u003Cspan class=\"hljs-keyword\">for\u003C/span> value \u003Cspan class=\"hljs-keyword\">in\u003C/span> column_data:\n            \u003Cspan class=\"hljs-keyword\">if\u003C/span> value \u003Cspan class=\"hljs-keyword\">is\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span>:\n                data_type = self._detect_cell_type(value)\n                type_counts[data_type] = type_counts.get(data_type, \u003Cspan class=\"hljs-number\">0\u003C/span>) + \u003Cspan class=\"hljs-number\">1\u003C/span>\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> type_counts:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-string\">&#x27;null&#x27;\u003C/span>\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-built_in\">max\u003C/span>(type_counts.keys(), key=\u003Cspan class=\"hljs-keyword\">lambda\u003C/span> k: type_counts[k])\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_is_column_sortable\u003C/span>(\u003Cspan class=\"hljs-params\">self, column_data: \u003Cspan class=\"hljs-type\">List\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">bool\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Determine if column can be meaningfully sorted&quot;&quot;&quot;\u003C/span>\n        non_null_data = [val \u003Cspan class=\"hljs-keyword\">for\u003C/span> val \u003Cspan class=\"hljs-keyword\">in\u003C/span> column_data \u003Cspan class=\"hljs-keyword\">if\u003C/span> val \u003Cspan class=\"hljs-keyword\">is\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span>]\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">len\u003C/span>(non_null_data) &lt; \u003Cspan class=\"hljs-number\">2\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># Check if data types are consistent enough for sorting\u003C/span>\n        types = \u003Cspan class=\"hljs-built_in\">set\u003C/span>(\u003Cspan class=\"hljs-built_in\">type\u003C/span>(val) \u003Cspan class=\"hljs-keyword\">for\u003C/span> val \u003Cspan class=\"hljs-keyword\">in\u003C/span> non_null_data)\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">len\u003C/span>(types) == \u003Cspan class=\"hljs-number\">1\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">True\u003C/span>  \u003Cspan class=\"hljs-comment\"># All same type\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># Mixed types might still be sortable if they&#x27;re numeric\u003C/span>\n        numeric_types = {\u003Cspan class=\"hljs-built_in\">int\u003C/span>, \u003Cspan class=\"hljs-built_in\">float\u003C/span>}\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> types.issubset(numeric_types):\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">True\u003C/span>\n        \n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n    \n    \u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">_is_column_searchable\u003C/span>(\u003Cspan class=\"hljs-params\">self, column_data: \u003Cspan class=\"hljs-type\">List\u003C/span>\u003C/span>) -&gt; \u003Cspan class=\"hljs-built_in\">bool\u003C/span>:\n        \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Determine if column should be included in search&quot;&quot;&quot;\u003C/span>\n        non_null_data = [val \u003Cspan class=\"hljs-keyword\">for\u003C/span> val \u003Cspan class=\"hljs-keyword\">in\u003C/span> column_data \u003Cspan class=\"hljs-keyword\">if\u003C/span> val \u003Cspan class=\"hljs-keyword\">is\u003C/span> \u003Cspan class=\"hljs-keyword\">not\u003C/span> \u003Cspan class=\"hljs-literal\">None\u003C/span>]\n        \n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">len\u003C/span>(non_null_data) == \u003Cspan class=\"hljs-number\">0\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">False\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># Text columns are searchable\u003C/span>\n        text_values = [val \u003Cspan class=\"hljs-keyword\">for\u003C/span> val \u003Cspan class=\"hljs-keyword\">in\u003C/span> non_null_data \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">isinstance\u003C/span>(val, \u003Cspan class=\"hljs-built_in\">str\u003C/span>)]\n        \u003Cspan class=\"hljs-keyword\">if\u003C/span> \u003Cspan class=\"hljs-built_in\">len\u003C/span>(text_values) &gt; \u003Cspan class=\"hljs-built_in\">len\u003C/span>(non_null_data) * \u003Cspan class=\"hljs-number\">0.5\u003C/span>:\n            \u003Cspan class=\"hljs-keyword\">return\u003C/span> \u003Cspan class=\"hljs-literal\">True\u003C/span>\n        \n        \u003Cspan class=\"hljs-comment\"># Categorical data is searchable\u003C/span>\n        unique_ratio = \u003Cspan class=\"hljs-built_in\">len\u003C/span>(\u003Cspan class=\"hljs-built_in\">set\u003C/span>(\u003Cspan class=\"hljs-built_in\">str\u003C/span>(val) \u003Cspan class=\"hljs-keyword\">for\u003C/span> val \u003Cspan class=\"hljs-keyword\">in\u003C/span> non_null_data)) / \u003Cspan class=\"hljs-built_in\">len\u003C/span>(non_null_data)\n        \u003Cspan class=\"hljs-keyword\">return\u003C/span> unique_ratio &lt; \u003Cspan class=\"hljs-number\">0.8\u003C/span>  \u003Cspan class=\"hljs-comment\"># If less than 80% unique, probably categorical\u003C/span>\n\n\u003Cspan class=\"hljs-comment\"># Usage example\u003C/span>\n\u003Cspan class=\"hljs-keyword\">def\u003C/span> \u003Cspan class=\"hljs-title function_\">demonstrate_table_optimization\u003C/span>():\n    \u003Cspan class=\"hljs-string\">&quot;&quot;&quot;Demonstrate responsive table optimization&quot;&quot;&quot;\u003C/span>\n    \n    \u003Cspan class=\"hljs-comment\"># Sample table data\u003C/span>\n    sample_data = {\n        \u003Cspan class=\"hljs-string\">&#x27;headers&#x27;\u003C/span>: [\n            {\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;name&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Employee Name&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;text&#x27;\u003C/span>},\n            {\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;status&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Status&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;text&#x27;\u003C/span>},\n            {\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;department&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Department&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;text&#x27;\u003C/span>},\n            {\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;salary&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Salary&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;currency&#x27;\u003C/span>},\n            {\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;phone&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Phone&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;phone&#x27;\u003C/span>},\n            {\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;email&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Email&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;email&#x27;\u003C/span>},\n            {\u003Cspan class=\"hljs-string\">&#x27;id&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;start_date&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;label&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;Start Date&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;type&#x27;\u003C/span>: \u003Cspan class=\"hljs-string\">&#x27;date&#x27;\u003C/span>}\n        ],\n        \u003Cspan class=\"hljs-string\">&#x27;rows&#x27;\u003C/span>: [\n            [\u003Cspan class=\"hljs-string\">&#x27;Alice Johnson&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;Active&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;Engineering&#x27;\u003C/span>, \u003Cspan class=\"hljs-number\">95000\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;555-0123&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;alice@company.com&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;2023-01-15&#x27;\u003C/span>],\n            [\u003Cspan class=\"hljs-string\">&#x27;Bob Smith&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;Active&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;Marketing&#x27;\u003C/span>, \u003Cspan class=\"hljs-number\">75000\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;555-0456&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;bob@company.com&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;2023-02-01&#x27;\u003C/span>],\n            [\u003Cspan class=\"hljs-string\">&#x27;Carol Davis&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;Inactive&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;Sales&#x27;\u003C/span>, \u003Cspan class=\"hljs-number\">68000\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;555-0789&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;carol@company.com&#x27;\u003C/span>, \u003Cspan class=\"hljs-string\">&#x27;2023-03-10&#x27;\u003C/span>],\n            \u003Cspan class=\"hljs-comment\"># Add more rows to test pagination...\u003C/span>\n        ] * \u003Cspan class=\"hljs-number\">20\u003C/span>  \u003Cspan class=\"hljs-comment\"># Simulate larger dataset\u003C/span>\n    }\n    \n    optimizer = ResponsiveTableOptimizer()\n    optimized_data = optimizer.optimize_table_data(sample_data)\n    \n    \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">&quot;=== Responsive Table Optimization Results ===&quot;\u003C/span>)\n    \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Original rows: \u003Cspan class=\"hljs-subst\">{\u003Cspan class=\"hljs-built_in\">len\u003C/span>(sample_data[\u003Cspan class=\"hljs-string\">&#x27;rows&#x27;\u003C/span>])}\u003C/span>&quot;\u003C/span>)\n    \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Optimized metadata: \u003Cspan class=\"hljs-subst\">{json.dumps(optimized_data[\u003Cspan class=\"hljs-string\">&#x27;metadata&#x27;\u003C/span>], indent=\u003Cspan class=\"hljs-number\">2\u003C/span>)}\u003C/span>&quot;\u003C/span>)\n    \u003Cspan class=\"hljs-built_in\">print\u003C/span>(\u003Cspan class=\"hljs-string\">f&quot;Responsive config: \u003Cspan class=\"hljs-subst\">{json.dumps(optimized_data[\u003Cspan class=\"hljs-string\">&#x27;responsive_config&#x27;\u003C/span>][\u003Cspan class=\"hljs-string\">&#x27;breakpoints&#x27;\u003C/span>], indent=\u003Cspan class=\"hljs-number\">2\u003C/span>)}\u003C/span>&quot;\u003C/span>)\n\n\u003Cspan class=\"hljs-keyword\">if\u003C/span> __name__ == \u003Cspan class=\"hljs-string\">&quot;__main__&quot;\u003C/span>:\n    demonstrate_table_optimization()\n\u003C/code>\u003C/pre>\u003Ch2 id=\"conclusion\">Conclusion\u003C/h2>\n\u003Cp>Advanced Markdown table responsive design and mobile optimization represent essential strategies for creating inclusive, accessible data presentations that serve users effectively across all device types and usage contexts. By implementing mobile-first design principles, intelligent breakpoint management, and comprehensive accessibility features, technical writers can build table experiences that maintain data integrity while adapting seamlessly to diverse user needs and technical constraints.\u003C/p>\n\u003Cp>The key to successful responsive table implementation lies in understanding user behavior patterns across different devices, prioritizing content based on context and screen real estate, and implementing progressive enhancement strategies that ensure core functionality remains accessible regardless of technical capabilities. Whether you&#39;re building documentation sites, data dashboards, or educational content, the responsive design techniques and optimization strategies covered in this guide provide the foundation for creating professional, inclusive table experiences.\u003C/p>\n\u003Cp>Remember to test extensively across real devices and usage scenarios, prioritize accessibility and universal design principles, and implement performance optimization strategies that ensure fast loading times and smooth interactions across all platforms. With proper implementation of responsive design principles, your Markdown tables can provide optimal user experiences that serve both current needs and future device innovations while maintaining the simplicity and maintainability that makes Markdown an ideal choice for modern content creation workflows.\u003C/p>\n",[15,19,22,25,28,31,34,37,40],{"id":16,"text":17,"level":18},"why-master-responsive-table-design","Why Master Responsive Table Design?",2,{"id":20,"text":21,"level":18},"foundation-responsive-design-principles","Foundation Responsive Design Principles",{"id":23,"text":24,"level":18},"advanced-product-comparison-table","Advanced Product Comparison Table",{"id":26,"text":27,"level":18},"scrollable-data-tables-with-touch-support","Scrollable Data Tables with Touch Support",{"id":29,"text":30,"level":18},"cross-device-testing-and-optimization","Cross-Device Testing and Optimization",{"id":32,"text":33,"level":18},"accessibility-and-universal-design","Accessibility and Universal Design",{"id":35,"text":36,"level":18},"integration-with-documentation-systems","Integration with Documentation Systems",{"id":38,"text":39,"level":18},"performance-and-optimization-strategies","Performance and Optimization Strategies",{"id":41,"text":42,"level":18},"conclusion","Conclusion",[],[45,53,61],{"slug":46,"title":47,"description":48,"excerpt":49,"date":50,"category":9,"author":10,"keywords":51,"readingMinutes":52},"markdown-responsive-design-patterns-mobile-optimization-complete-guide","Markdown Responsive Design Patterns and Mobile Optimization: Complete Guide to Adaptive Content Layouts and Cross-Device Compatibility","Master responsive design patterns in Markdown documents. Learn to create mobile-optimized content, implement adaptive layouts, handle viewport considerations, and build cross-device compatible documentation that works seamlessly across all screen sizes.","Markdown responsive design patterns and mobile optimization enable sophisticated content adaptation through device-aware layout systems, adaptive typography strategies, and cross-platform…","2026-01-02","markdown responsive design, mobile optimization, adaptive layouts, cross-device compatibility, responsive tables, mobile markdown, viewport optimization, device-specific content, responsive typography",20,{"slug":54,"title":55,"description":56,"excerpt":57,"date":58,"category":9,"author":10,"keywords":59,"readingMinutes":60},"markdown-table-performance-optimization-complete-guide","Markdown Table Performance Optimization and Responsive Design: Complete Guide for High-Performance Documentation and Data Display","Master advanced Markdown table performance optimization techniques for large datasets, responsive design patterns, and mobile-friendly data presentation. Learn table virtualization, lazy loading, and adaptive design strategies for documentation systems.","Advanced Markdown table performance optimization and responsive design techniques enable sophisticated data presentation systems that maintain performance across large datasets while providing…","2026-01-03","markdown table performance, responsive markdown tables, table optimization, large dataset tables, mobile markdown tables, table virtualization, adaptive table design, data presentation",18,{"slug":62,"title":63,"description":64,"excerpt":65,"date":66,"category":9,"author":10,"keywords":67,"readingMinutes":68},"markdown-table-responsive-design-complete-guide","Markdown Table Responsive Design: Complete Guide for Mobile-Friendly Documentation and Adaptive Table Layouts","Master responsive Markdown table design techniques for creating mobile-friendly documentation with adaptive layouts, CSS Grid integration, and cross-device compatibility. Learn advanced table styling, breakpoint management, and accessibility optimization.","Advanced responsive Markdown table design enables sophisticated documentation systems that adapt seamlessly across all device types, screen sizes, and user contexts while maintaining data…","2025-11-01","markdown table responsive design, mobile-friendly markdown tables, adaptive table layouts, responsive documentation tables, markdown table css grid, mobile table optimization, responsive web design markdown",29,1792184945747]