-
Notifications
You must be signed in to change notification settings - Fork 0
refact: extracting components #249
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
22ffc7d
753aa58
cfbddb3
b89884d
999cfbf
9a814e5
42fa232
7820596
e4834d3
7e1eae4
036ef92
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,308 @@ | ||
| # CSS Migration Strategic Analysis & Risk Assessment | ||
|
|
||
| *CSS Analyst & Strategist Report - September 22, 2025* | ||
|
|
||
| ## 🚨 Executive Summary: CRITICAL INSIGHTS | ||
|
|
||
| **Previous Migration Status**: Migration was REVERTED - need strategic analysis to prevent repeat failure | ||
| **Current State**: 2.3MB CSS directory with 1.6MB FL-Builder legacy CSS requiring systematic migration | ||
| **Working Infrastructure**: Test system functional (seeds 15286, 55860 passing) | ||
| **Strategic Need**: Conservative, incremental approach with checkpoint validation every 10-20 atomic tasks | ||
|
|
||
| ## 🔍 Root Cause Analysis: Why Previous Migration Failed | ||
|
|
||
| ### DISCOVERED FAILURE PATTERNS | ||
|
|
||
| Based on current state analysis and plan review: | ||
|
|
||
| 1. **Scale Underestimation**: Original scope estimated ~800 references, actual scope 9,005+ (11x larger) | ||
| 2. **Insufficient Incremental Validation**: Large changes without micro-validation checkpoints | ||
| 3. **Missing Component Dependency Mapping**: FL-Builder components have complex interdependencies | ||
| 4. **Inadequate Rollback Granularity**: All-or-nothing approach vs. component-level rollback | ||
| 5. **Test Infrastructure Gaps**: Missing CSS migration baseline testing framework | ||
|
|
||
| ### CURRENT ARCHITECTURE ANALYSIS | ||
|
|
||
| ```yaml | ||
| css_architecture_current_state: | ||
| total_css_size: "2.3MB" | ||
| fl_builder_files: 14 | ||
| fl_builder_size: "1.6MB (70% of total)" | ||
| bem_components: 8 | ||
| bem_size: "~0.7MB (30% of total)" | ||
|
|
||
| risk_factors: | ||
| highest_risk: "fl-homepage-layout.css (316KB) - critical path" | ||
| medium_risk: "fl-clients-alt-bundle.css (164KB) - business impact" | ||
| complex_dependencies: "fl-component-layout.css (120KB) - reused patterns" | ||
| ``` | ||
|
|
||
| ## 📊 FL-Builder Component Risk Assessment Matrix | ||
|
|
||
| ### 🔴 HIGH RISK (Immediate Impact on Core Business) | ||
|
|
||
| | Component | Size | Risk Level | Business Impact | Technical Complexity | Recommended Approach | | ||
| |-----------|------|------------|-----------------|---------------------|---------------------| | ||
| | **fl-homepage-layout.css** | 316KB | CRITICAL | Homepage = primary conversion | Very High | Phase 1: Micro-migration with daily validation | | ||
| | **fl-clients-alt-bundle.css** | 164KB | HIGH | Client showcase = credibility | High | Phase 2: Component-by-component analysis | | ||
| | **fl-services-layout.css** | 156KB | HIGH | Service pages = revenue | High | Phase 2: Service section isolation | | ||
| | **fl-use-cases-layout.css** | 156KB | HIGH | Use cases = conversion | High | Phase 2: Use case pattern analysis | | ||
|
|
||
| ### 🟡 MEDIUM RISK (Supporting Pages & Sections) | ||
|
|
||
| | Component | Size | Risk Level | Business Impact | Technical Complexity | Recommended Approach | | ||
| |-----------|------|------------|-----------------|---------------------|---------------------| | ||
| | **fl-service-detail-layout.css** | 128KB | MEDIUM | Individual service pages | Medium | Phase 3: Template-by-template | | ||
| | **fl-clients-layout.css** | 128KB | MEDIUM | Client listing pages | Medium | Phase 3: Client section modernization | | ||
| | **fl-careers-layout.css** | 128KB | MEDIUM | HR/recruiting impact | Medium | Phase 3: HR page optimization | | ||
| | **fl-component-layout.css** | 120KB | MEDIUM | Reusable components | HIGH DEPS | Phase 1: Dependency mapping FIRST | | ||
| | **fl-about-layout.css** | 108KB | MEDIUM | About page | Low | Phase 4: Lower priority pages | | ||
|
|
||
| ### 🟢 LOW RISK (Safe Starting Points) | ||
|
|
||
| | Component | Size | Risk Level | Business Impact | Technical Complexity | Recommended Approach | | ||
| |-----------|------|------------|-----------------|---------------------|---------------------| | ||
| | **fl-contact-layout.css** | 56KB | LOW | Contact forms | Low | Phase 0: Practice migration | | ||
| | **fl-clients-bundle.css** | 56KB | LOW | Client widgets | Low | Phase 0: Widget modernization | | ||
| | **fl-component-layout-alt.css** | 24KB | LOW | Alternative layouts | Low | Phase 0: Safe experimentation | | ||
| | **fl-node-patterns.css** | 8KB | LOW | Basic patterns | Low | Phase 0: Foundation migration | | ||
|
|
||
| ## 🛣️ Incremental Migration Strategy: CONSERVATIVE APPROACH | ||
|
|
||
| ### PHASE 0: FOUNDATION & RISK MITIGATION (Week 1) | ||
| **Status**: PRACTICE ROUND - Low Risk Components | ||
| **Goal**: Establish migration patterns and validate infrastructure | ||
|
|
||
| #### Week 1 Tasks: | ||
| 1. **Day 1-2**: Create CSS migration baseline test infrastructure | ||
| 2. **Day 3-4**: Migrate `fl-node-patterns.css` (8KB) - lowest risk | ||
| 3. **Day 5**: Migrate `fl-component-layout-alt.css` (24KB) - alternative patterns | ||
| 4. **Day 6-7**: Establish checkpoint validation protocol | ||
|
|
||
| #### Success Criteria: | ||
| - ✅ Zero visual regression in low-risk components | ||
| - ✅ Test infrastructure proven reliable | ||
| - ✅ Rollback procedures validated | ||
| - ✅ Component dependency mapping methodology established | ||
|
|
||
| ### PHASE 1: DEPENDENCY MAPPING & CRITICAL PATH (Week 2) | ||
| **Status**: HIGH PRIORITY - Component Interdependency Analysis | ||
| **Goal**: Map all FL-Builder component dependencies before homepage migration | ||
|
|
||
| #### Week 2 Tasks: | ||
| 1. **Day 8-9**: Deep analysis of `fl-component-layout.css` (120KB) dependencies | ||
| 2. **Day 10-11**: Create component dependency graph | ||
| 3. **Day 12-13**: Design homepage migration strategy based on dependencies | ||
| 4. **Day 14**: Prepare Phase 2 execution plan | ||
|
|
||
| #### Success Criteria: | ||
| - ✅ Complete dependency map for all FL-Builder components | ||
| - ✅ Critical path identified for homepage migration | ||
| - ✅ Component isolation strategy validated | ||
| - ✅ Micro-migration checkpoints established | ||
|
|
||
| ### PHASE 2: CRITICAL BUSINESS PAGES (Weeks 3-4) | ||
| **Status**: HIGHEST BUSINESS IMPACT - Homepage & Client Pages | ||
| **Goal**: Migrate homepage and client showcase with daily validation | ||
|
|
||
| #### Week 3-4 Tasks: | ||
| 1. **Homepage Migration** (`fl-homepage-layout.css` - 316KB): | ||
| - Day 15-16: Hero section micro-migration | ||
| - Day 17-18: Service showcase section | ||
| - Day 19-20: Client testimonials section | ||
| - Day 21: Integration testing and validation | ||
|
|
||
| 2. **Client Showcase** (`fl-clients-alt-bundle.css` - 164KB): | ||
| - Day 22-23: Client grid components | ||
| - Day 24-25: Client detail layouts | ||
| - Day 26-27: Client showcase integration | ||
| - Day 28: Cross-page validation | ||
|
|
||
| #### Success Criteria: | ||
| - ✅ Homepage maintains 100% visual consistency | ||
| - ✅ Client showcase functionality preserved | ||
| - ✅ Core Web Vitals maintained or improved | ||
| - ✅ Zero conversion impact measured | ||
|
|
||
| ### PHASE 3: SUPPORTING BUSINESS PAGES (Weeks 5-6) | ||
| **Status**: MEDIUM PRIORITY - Services & Internal Pages | ||
| **Goal**: Complete service pages and internal page modernization | ||
|
|
||
| #### Week 5-6 Tasks: | ||
| 1. **Service Pages** (`fl-services-layout.css` + `fl-service-detail-layout.css` - 284KB total) | ||
| 2. **Internal Pages** (`fl-careers-layout.css` + `fl-about-layout.css` - 236KB total) | ||
| 3. **Client Management** (`fl-clients-layout.css` - 128KB) | ||
|
|
||
| ### PHASE 4: CLEANUP & OPTIMIZATION (Week 7) | ||
| **Status**: FINAL OPTIMIZATION - Legacy Removal | ||
| **Goal**: Remove all FL-Builder CSS and optimize final bundle | ||
|
|
||
| ## 🛡️ Risk Mitigation Strategies | ||
|
|
||
| ### CHECKPOINT VALIDATION PROTOCOL | ||
|
|
||
| #### Every 10 Atomic Tasks: | ||
| 1. **Screenshot Regression Test**: Full site visual validation | ||
| 2. **Performance Benchmark**: Core Web Vitals measurement | ||
| 3. **Cross-Browser Validation**: Chrome, Firefox, Safari testing | ||
| 4. **Mobile Responsiveness**: Mobile layout verification | ||
| 5. **Accessibility Audit**: WCAG 2.1 compliance check | ||
|
|
||
| #### Every 20 Atomic Tasks: | ||
| 1. **Complete System Test**: Full test suite execution | ||
| 2. **Business Function Validation**: Critical user journey testing | ||
| 3. **Performance Impact Assessment**: Before/after comparison | ||
| 4. **Rollback Procedure Test**: Validate rollback capability | ||
| 5. **Stakeholder Review**: Business impact assessment | ||
|
|
||
| ### ROLLBACK PROCEDURES | ||
|
|
||
| #### Component-Level Rollback: | ||
| ```bash | ||
| # Individual component rollback | ||
| git checkout HEAD~1 themes/beaver/assets/css/[component-name].css | ||
| hugo && bin/rake test:critical | ||
| ``` | ||
|
|
||
| #### Phase-Level Rollback: | ||
| ```bash | ||
| # Complete phase rollback | ||
| git revert [phase-start-commit]..[phase-end-commit] | ||
| hugo && bin/test | ||
| ``` | ||
|
|
||
| #### Emergency Rollback: | ||
| ```bash | ||
| # Immediate full rollback | ||
| git reset --hard [last-known-good-commit] | ||
| hugo && bin/test | ||
| ``` | ||
|
|
||
| ## 📏 Success Metrics & Validation Criteria | ||
|
|
||
| ### MICRO-ITERATION SUCCESS METRICS | ||
|
|
||
| #### Per Component Migration: | ||
| - **Visual Consistency**: 100% screenshot match (tolerance: 0.05) | ||
| - **Performance Impact**: <5% Core Web Vitals degradation | ||
| - **Build Time**: No increase in Hugo build time | ||
| - **CSS Size**: Measurable reduction in component size | ||
| - **Cross-Browser**: Consistent rendering across target browsers | ||
|
|
||
| #### Per Phase Completion: | ||
| - **Business Function**: All user journeys functional | ||
| - **Accessibility**: WCAG 2.1 AA compliance maintained | ||
| - **SEO Impact**: No ranking degradation | ||
| - **Conversion Metrics**: No negative business impact | ||
| - **Technical Debt**: Measurable reduction in complexity | ||
|
|
||
| ### CONTINUOUS VALIDATION FRAMEWORK | ||
|
|
||
| #### Daily Validation (During Active Migration): | ||
| ```yaml | ||
| daily_checks: | ||
| visual_regression: "Full site screenshot comparison" | ||
| performance_monitoring: "Core Web Vitals tracking" | ||
| cross_browser_testing: "Chrome, Firefox, Safari validation" | ||
| mobile_responsiveness: "Mobile layout verification" | ||
| accessibility_scanning: "Automated WCAG compliance" | ||
| ``` | ||
|
|
||
| #### Weekly Validation (Phase Boundaries): | ||
| ```yaml | ||
| weekly_assessments: | ||
| business_impact: "Conversion rate monitoring" | ||
| seo_rankings: "Search engine ranking tracking" | ||
| user_feedback: "Support ticket analysis" | ||
| performance_trends: "Week-over-week performance comparison" | ||
| technical_debt: "Code complexity metrics" | ||
| ``` | ||
|
|
||
| ## 🔄 Reflection Protocol: Learning & Adaptation | ||
|
|
||
| ### REFLECTION CHECKPOINTS | ||
|
|
||
| #### After Every 10 Tasks: | ||
| 1. **What Worked**: Document successful migration patterns | ||
| 2. **What Failed**: Identify and document failure modes | ||
| 3. **Risk Assessment Update**: Adjust risk levels based on learnings | ||
| 4. **Process Improvement**: Refine migration methodology | ||
| 5. **Timeline Adjustment**: Update phase timelines if needed | ||
|
|
||
| #### After Every 20 Tasks: | ||
| 1. **Strategic Review**: Validate overall approach effectiveness | ||
| 2. **Dependency Discovery**: Update component dependency map | ||
| 3. **Performance Impact**: Assess cumulative performance impact | ||
| 4. **Business Impact**: Review business metrics and user feedback | ||
| 5. **Team Learning**: Knowledge transfer and skill development | ||
|
|
||
| ### ADAPTIVE STRATEGY FRAMEWORK | ||
|
|
||
| #### Migration Approach Adjustments: | ||
| - **If visual regressions increase**: Reduce task size, increase validation frequency | ||
| - **If performance degrades**: Implement performance-first migration approach | ||
| - **If business impact detected**: Immediate rollback and strategy reassessment | ||
| - **If dependencies discovered**: Update dependency map and migration sequence | ||
| - **If timeline pressure**: Prioritize high-impact, low-risk components | ||
|
|
||
| ## 🎯 IMMEDIATE NEXT STEPS: WEEK 1 EXECUTION | ||
|
|
||
| ### Phase 0 Implementation Plan: | ||
|
|
||
| #### Day 1: Infrastructure Setup | ||
| 1. Create CSS migration test infrastructure | ||
| 2. Establish baseline screenshots for all pages | ||
| 3. Set up performance monitoring baseline | ||
| 4. Configure automated rollback procedures | ||
|
|
||
| #### Day 2-3: Low-Risk Migration Practice | ||
| 1. Migrate `fl-node-patterns.css` (8KB) with full validation | ||
| 2. Test rollback procedures on practice component | ||
| 3. Validate micro-iteration methodology | ||
| 4. Document lessons learned | ||
|
|
||
| #### Day 4-5: Alternative Layout Migration | ||
| 1. Migrate `fl-component-layout-alt.css` (24KB) | ||
| 2. Test component isolation techniques | ||
| 3. Validate cross-page impact assessment | ||
| 4. Refine validation protocols | ||
|
|
||
| #### Day 6-7: Phase 1 Preparation | ||
| 1. Complete dependency analysis of `fl-component-layout.css` | ||
| 2. Create homepage migration strategy | ||
| 3. Prepare Phase 1 execution plan | ||
| 4. Conduct Phase 0 retrospective | ||
|
|
||
| ### RISK MITIGATION PRIORITIES: | ||
|
|
||
| 1. **Establish Reliable Test Infrastructure**: Prevent testing gaps that led to previous failure | ||
| 2. **Component Dependency Mapping**: Avoid cascade failures from missed dependencies | ||
| 3. **Micro-Validation Checkpoints**: Catch issues immediately vs. after large changes | ||
| 4. **Business Impact Monitoring**: Ensure zero business disruption during migration | ||
| 5. **Conservative Timeline**: Allow time for thorough validation and learning | ||
|
|
||
| ## 📋 STRATEGIC RECOMMENDATIONS | ||
|
|
||
| ### CRITICAL SUCCESS FACTORS: | ||
|
|
||
| 1. **Start Small**: Begin with 8KB files, not 316KB files | ||
| 2. **Validate Everything**: Every change requires visual regression testing | ||
| 3. **Map Dependencies First**: Understand component relationships before migration | ||
| 4. **Monitor Business Impact**: Track conversion metrics throughout migration | ||
| 5. **Plan for Learning**: Expect to discover new dependencies and complexities | ||
| 6. **Maintain Rollback Capability**: Always have a safe rollback path | ||
| 7. **Conservative Timeline**: Better to succeed slowly than fail quickly | ||
|
|
||
| ### STRATEGIC INSIGHTS: | ||
|
|
||
| - **Previous failure likely due to scope underestimation and insufficient validation** | ||
| - **FL-Builder components have complex interdependencies requiring careful analysis** | ||
| - **Homepage migration is highest risk/highest reward - requires special attention** | ||
| - **Test infrastructure is proven - leverage existing screenshot testing capability** | ||
| - **Micro-refactoring discipline must be maintained throughout migration** | ||
|
|
||
| --- | ||
|
|
||
| **Strategic Conclusion**: The previous migration failure provides valuable lessons for a more conservative, systematic approach. By starting with low-risk components, establishing robust validation checkpoints, and mapping dependencies before attempting high-risk migrations, we can achieve the planned 97% CSS reduction while maintaining 100% visual consistency and zero business impact. | ||
|
|
||
| **Next Action**: Implement Phase 0 with maximum safety protocols to validate our strategic approach before attempting the critical homepage migration. | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -4,6 +4,21 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * These classes provide semantic naming without altering existing FL-builder styles | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /* CSS Custom Properties for Future Use */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| :root { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --color-primary: #1a8cff; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --infobox-spacing: 15px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --infobox-margin: 25px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --form-background: #F5F6F8; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --form-field-spacing: 20px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --cta-button-bg: #121212; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --cta-button-hover-bg: #24292D; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --cta-button-margin: 40px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --cta-section-spacing: 15px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --cta-text-color: #ffffff; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --cta-button-border: #060606; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+7
to
+20
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Custom properties defined but not used. You define tokens on :root but rules still use hard-coded values. Either use var() with hex fallbacks (preferred per guidelines) or drop the tokens. Apply on a representative set (extend similarly elsewhere): -.fl-builder-content .c-cta-section__button a.fl-button,
-.fl-builder-content .c-cta-section__button a.fl-button:visited {
- background: #121212;
- text-transform: none;
- border: 1px solid #060606;
-}
+.fl-builder-content .c-cta-section__button a.fl-button,
+.fl-builder-content .c-cta-section__button a.fl-button:visited {
+ background: var(--cta-button-bg, #121212);
+ text-transform: none;
+ border: 1px solid var(--cta-button-border, #060606);
+}
-.fl-builder-content .c-cta-section__button a.fl-button:hover {
- background-color: #24292D;
- border: 1px solid #181d21;
-}
+.fl-builder-content .c-cta-section__button a.fl-button:hover {
+ background-color: var(--cta-button-hover-bg, #24292D);
+ border: 1px solid var(--cta-button-hover-border, #181d21);
+}📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /* ================================================ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SEMANTIC CLASS HOOKS ONLY | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| No layout, margin, padding, or visual changes | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -59,6 +74,16 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| padding-bottom: 0px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| padding-left: 20px; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /* Mobile CSS variable fallbacks with direct hex values */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| :root { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --infobox-spacing: 12px; /* Reduced for mobile */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --infobox-margin: 20px; /* Reduced for mobile */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --form-background: #F5F6F8; /* Same value for mobile consistency */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --form-field-spacing: 15px; /* Reduced for mobile */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --cta-button-margin: 25px; /* Reduced for mobile */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| --cta-section-spacing: 12px; /* Reduced for mobile */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /* Feature Cards - Semantic hooks only */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -113,7 +138,8 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /* Feature card content styling */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .c-feature-card .pp-infobox .pp-infobox-title-prefix { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .c-feature-card .pp-infobox .pp-infobox-title-prefix, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .c-feature-card__title-prefix { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| display: none; | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -714,9 +740,13 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Currently inactive to prevent conflicts | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ================================================ */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /* Micro-change 1: Safe utility class addition */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .u-text-center { text-align: center; } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .u-margin-auto { margin-left: auto; margin-right: auto; } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .u-form-center { text-align: center; } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /* These can be activated once FL-builder classes are removed */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| /* | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .u-text-center { text-align: center; } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .u-margin-top { margin-top: 2rem; } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .u-padding { padding: 2rem; } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| */ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -732,6 +762,11 @@ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 3. Future: Gradually move styles from FL-builder to BEM | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * 4. Final: Remove FL-builder classes once BEM is complete | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * ROLLBACK PROCEDURES: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * - Micro-change 1 (.u-text-center): git revert d6da6140 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * - Micro-change 2 (.u-margin-auto): git revert 61c5bb73 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * - Micro-change 3 (--color-primary): git revert b10b1a8d | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * The semantic BEM classes are now in place for: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * - .c-why-us (why us section) + internal elements | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| * - .c-feature-card (info boxes) + grid structure | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix markdownlint MD036 warning
Convert the emphasized line to a proper heading to satisfy markdownlint.
Apply this diff:
📝 Committable suggestion
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
3-3: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
🤖 Prompt for AI Agents