🌸 M365 Licensing Reading Rooms¶
Status: Planning — not yet implemented
Pattern: 3-column Stripe Docs layout (same as blog + study guides)
Scope: 50 individual licensing pages + new/licensing-docs/landing page
Vision¶
Microsoft 365 licensing is one of the most-searched topics on the site. We have 50 detailed licensing pages covering every plan from Business Basic to E7, Dynamics 365, Power Platform, Copilot, Security add-ons, and more. They're grouped into 13 categories.
Currently these pages are:
- Single-column, dark-only (glassmorphism, old tool-hero.html)
- Isolated — to browse other plans you must go "← All Plans" back to the index
- No cross-pollination with blogs, study guides, or tools
The goal: transform these into Licensing Reading Rooms using the same 3-column Stripe Docs pattern as blogs and study guides.
Architecture¶
3-Column Grid¶
┌──────────────┬────────────────────────────┬──────────────┐
│ LEFT (250px)│ CENTER (1fr) │ RIGHT (280px)│
│ │ │ │
│ Licence Nav │ Plan Page Content │ Related │
│ by Category │ (price, features, FAQ) │ Tools & │
│ │ │ Blogs │
│ 13 categories│ │ │
│ 50 plans │ │ Purchase │
│ │ │ CTAs │
│ Current plan│ │ │
│ highlighted │ │ │
└──────────────┴────────────────────────────┴──────────────┘
Left Sidebar — "Licence Navigator"¶
- All 50 plans grouped by 13 categories
- Collapsible category sections (like cert-nav.html pattern)
- Current plan highlighted with indigo accent
- Category badges with count
- Sticky, scrollable
Categories (from content front matter plan_category):
| Category | Count |
|---|---|
| Enterprise | 6 |
| Business (≤300 users) | 4 |
| Security Add-ons | 6 |
| Power Platform | 6 |
| Dynamics 365 CRM | 5 |
| Dynamics 365 ERP | 5 |
| Copilot & AI | 4 |
| Teams Add-ons | 3 |
| Microsoft Viva | 3 |
| Project & Visio | 3 |
| Windows & Dev | 3 |
| Frontline | 1 |
| Education | 1 |
Center — Plan Page Content¶
The existing content stays (price block, badges, quick links, markdown guide, related blogs, disclaimer). But needs:
- Replace tool-hero.html → tool-header.html (Zen header)
- Add zen-migrated class to body
- Migrate licensing.css from glassmorphism → Zen tokens (same 5-trap process as tools)
- Breadcrumb updated to fit reading room pattern
Right Sidebar — "Companion"¶
- Related tools: Licence Picker, Licensing Simplifier, ROI Calculator
- Related blog posts (auto-matched by plan name — template already does this)
- Compare with: Links to other plans in same category
- Study guides: If plan relates to a cert (e.g., Security add-ons → SC-300)
- Official links: Microsoft pricing page, M365 Maps
- Keep minimal — "everything earns its place"
New Landing Page: /licensing-docs/¶
Similar to /study-guides/ — a standalone entry point with:
- Hero with search
- Category pills for filtering
- Card grid showing all 50 plans with price + tagline
- Grouped by category
- Independent from the Licensing Simplifier tool (which stays at /licensing/)
URL structure:
- /licensing-docs/ — Landing page (new)
- /licensing/{plan-id}/ — Individual plan pages (existing, enhanced)
Current State (What Needs Changing)¶
Template: layouts/licensing/single.html¶
- ✅ Rebuilt with 3-column
zt-reading zt-reading--licgrid - Breadcrumb → h1 → price/badges → meta (verified + read time) → inline TOC → quick links → content → related blogs → disclaimer
- No tool-hero.html — direct header in template (like cert-tracker pattern)
- Product JSON-LD + FAQPage JSON-LD preserved
CSS: static/css/licensing.css¶
- ✅ Was already 80% Zen-migrated from Z4/Z5 (0 rgba, 0 backdrop-filter, 0 :root)
- 28 remaining hardcodes replaced:
#334155→var(--border-emphasis),#475569→var(--text-muted),#1e293b→var(--border),color-mix→var(--accent-subtle) - 5,742 chars of dead
.lic-single-*CSS removed (22% reduction)
Body class in baseof.html¶
- ✅ Already had
zen-migratedfrom Z4. Addedlicensing-docssection too.
New files created:¶
licence-nav.html— Left sidebar (50 plans, 13 hardcoded categories, collapsible, prices)licence-companion.html— Right sidebar (tools, compare links, official links, blogs, CTAs)layouts/licensing-docs/list.html— Landing page (hero, search, category pills, card grid)content/licensing-docs/_index.md— Landing page content
Implementation Progress¶
Completed 27 Apr 2026 — Deployed commit
7b67d8e
| Step | Status | Notes |
|---|---|---|
| Read all Zen Design System docs | ✅ | All 10 docs read (philosophy → licensing-reading-rooms) |
| Study blog + study guide 3-column pattern | ✅ | blog/single.html, cert-tracker/single.html, zt-reading.css, sg-companion.html |
| Migrate licensing.css to Zen tokens | ✅ | 28 replacements + 5.7KB dead CSS removed |
| Replace tool-hero.html → direct header | ✅ | Breadcrumb + h1 + price block + badges (no hero partial needed) |
| Add zen-migrated to baseof.html | ✅ | Already present from Z4. Added licensing-docs section too. |
| Create licence-nav.html partial | ✅ | 13 categories, hardcoded order, collapsible details, current highlighted, price shown |
| Create licence-companion.html partial | ✅ | Related tools, compare links (same category), official links, blog posts, CTAs |
| Rebuild single.html with 3-column grid | ✅ | zt-reading grid + mobile details fallback + inline TOC + reading time |
| Add zt-reading.css to licensing singles | ✅ | baseof.html condition: (and (eq .Section "licensing") .IsPage) |
| Create /licensing-docs/ landing page | ✅ | Card grid, search, category pills, CollectionPage JSON-LD |
| QA: Playwright light+dark, desktop+mobile | ✅ | 18 screenshots, all verified |
| Fix QA issues | ✅ | FAQ dedup, nav link fix, prose width verified, badge overflow |
| Polish round | ✅ | Reading time, inline TOC, category pills, dead CSS cleanup, verified date |
| Hugo build: 0 errors | ✅ | 1878 pages |
| Deploy | ✅ | Commit 7b67d8e pushed |
Lessons Learned (for future 3-column migrations)¶
1. The Reusable Pattern¶
Every 3-column reading room follows the same recipe:
1. Add section to baseof.html CSS condition (line 59) for zt-reading.css
2. Add section to baseof.html body class (line 78) for zen-migrated
3. Create left nav partial (model on cert-nav.html or licence-nav.html)
4. Create companion partial (model on sg-companion.html or licence-companion.html)
5. Build single.html with <div class="zt-reading zt-reading--{modifier}">
6. Add CSS to zt-reading.css for section-specific styles (nav, badges, etc.)
7. Mobile fallback: <details class="zt-toc-mobile"> inside the article
2. FAQ Duplication Trap¶
If plan/content pages have FAQ in BOTH markdown body AND front matter faq:, the template will render two FAQ sections. Check for this pattern: grep "## Frequently" content/{section}/*.md. If all pages have inline FAQ, skip the template-rendered FAQ and use front matter only for JSON-LD SEO.
3. CSS Was Already 80% Migrated¶
The Z4/Z5 batch migration passes had already fixed the heavy glassmorphism patterns (rgba white text, backdrop-filter, :root blocks). The remaining work was mostly Tailwind slate hexcodes (#334155, #475569, #1e293b) and color-mix() — about 30 replacements total. Check with trap detection commands before assuming a full migration is needed.
4. Dead CSS Cleanup Saves Significant Space¶
After rebuilding templates with new class names (zt-lic-*), the old class definitions (.lic-single-*) became dead weight. 5.7KB removed (22% of file). Always grep for orphaned classes after template rewrites.
5. Nav Link Architecture Matters¶
The left sidebar nav header should link to the DOCS HUB (e.g., /licensing-docs/), not the complementary TOOL (e.g., /licensing/). The tool gets a secondary link: "Open Licensing Simplifier →". This keeps the information architecture clean — docs hub is the home, tool is a utility.
6. Prose Width Is Already Handled¶
zt-reading.css constrains prose elements (p, ul, ol, h2, h3, h4, h5) to max-width: 720px via .zt-reading-body. Tables, code blocks, images, and diagrams stay full-width. No extra work needed — just wrap .Content in <div class="zt-reading-body">.
7. Landing Page Quick-Jump Pills¶
Category-heavy landing pages (13 categories, 50+ items) benefit from quick-jump anchor pills below the search box. On mobile, make them horizontally scrollable with overflow-x: auto; flex-wrap: nowrap.
Key Reference Files¶
| File | Purpose |
|---|---|
layouts/blog/single.html |
Blog 3-column template (gold standard) |
layouts/cert-tracker/single.html |
Study guide 3-column template |
layouts/licensing/single.html |
✅ Licensing 3-column template (new) |
layouts/licensing-docs/list.html |
✅ Licensing landing page (new) |
layouts/partials/licence-nav.html |
✅ Left sidebar nav (new) |
layouts/partials/licence-companion.html |
✅ Right companion (new) |
layouts/partials/cert-nav.html |
Left sidebar nav (reference pattern) |
static/css/zt-reading.css |
All 3-column CSS (sidebar, companion, responsive) |
static/css/licensing.css |
Licensing CSS (cleaned) |
content/licensing/*.md |
50 plan pages with front matter |
content/licensing-docs/_index.md |
Landing page content |