/* Shared Living Room L3 editorial system. */
const LR3_PAGES = {
  "repair": {
    "active": "Repair",
    "count": 28,
    "accent": "#B8644A",
    "second": "#B8A77E",
    "hero": "https://images.unsplash.com/photo-1615874694520-474822394e73?w=1600&q=84",
    "title": "Living Room Repair Guides - Drywall, Floors, Furniture and Fireplace Fixes",
    "desc": "28 living room repair guides for drywall dents, squeaky floors, baseboards, loose outlets, fireplace cracks, sofa frames, lamps, and the slow little failures everyone sees.",
    "headline": "The living room shows every repair you delayed.",
    "deck": "The public room is not forgiving. A dented wall, a squeaky floorboard, a loose outlet, a fireplace crack, a sofa leg that wobbles - all of it lives in the room where guests sit down and notice the house.",
    "issue": "Visible damage",
    "topLabel": "Top 5 Living Room Repair Searches",
    "photoLabel": "Photo Spread / Living Room Repair Field Notes",
    "essayTitle": "Repair is where the room stops apologizing.",
    "essay": [
      "Living room repairs are rarely dramatic, but they are always visible. This is the room where the drywall catches afternoon light, where trim runs at eye level, where furniture sits in the open instead of hiding behind a door. Small failures feel bigger here because the room is built for looking.",
      "The right repair order starts with surfaces, then structure, then hardware. Patch the wall before you paint it. Silence the floor before you add a rug. Tighten the outlet before you style the console. The payoff is not just cosmetic. The whole room feels calmer when nothing in it is quietly asking for attention.",
      "Most living room repair is careful, low-cost work: compound, anchors, trim adhesive, felt pads, screw tightening, stain blending, and patience. The expensive mistake is rushing the finish."
    ],
    "top": [
      [
        "01",
        "how to repair drywall dents in a living room",
        "74,000",
        "Beginner",
        "2-4 hrs",
        "$15-$45",
        "https://images.unsplash.com/photo-1522708323590-d24dbb6b0267?w=1600&q=84",
        "The most visible living-room repair because low-angle light makes every dent look worse than it is. Feathering the compound is the whole craft.",
        "Read the drywall repair guide",
        "/en/living-room/repair/how-to-repair-drywall-dents/"
      ],
      [
        "02",
        "how to fix squeaky living room floors",
        "60,500",
        "Intermediate",
        "1-3 hrs",
        "$10-$60",
        "https://images.unsplash.com/photo-1567016432779-094069958ea5?w=1600&q=84",
        "A squeak under the main path changes how the room feels every day. Find the joist, secure the movement, and stop treating the rug as a bandage.",
        "Read the floor squeak guide",
        "/en/living-room/repair/how-to-fix-squeaky-floors/"
      ],
      [
        "03",
        "how to fix loose baseboard trim",
        "49,500",
        "Beginner",
        "1 hr",
        "$10-$35",
        "https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?w=1600&q=84",
        "Loose trim is a small thing that makes a finished room look unfinished. Adhesive, nails, caulk, and paint make it disappear.",
        "Read the baseboard guide",
        "/en/living-room/repair/how-to-fix-loose-baseboard-trim/"
      ],
      [
        "04",
        "how to fix a loose electrical outlet",
        "40,500",
        "Beginner",
        "30 min",
        "$5-$20",
        "https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=1600&q=84",
        "The outlet behind the sofa or console gets used constantly. Spacer shims and a fresh plate make it safe, tight, and normal again.",
        "Read the outlet guide",
        "/en/living-room/repair/how-to-fix-a-loose-electrical-outlet/"
      ],
      [
        "05",
        "how to repair fireplace cracks",
        "33,100",
        "Intermediate",
        "1 day",
        "$25-$90",
        "https://images.unsplash.com/photo-1615874694520-474822394e73?w=1600&q=84",
        "Hairline cracks, mortar gaps, and smoke staining need different fixes. The first step is knowing what is cosmetic and what needs a pro.",
        "Read the fireplace crack guide",
        "/en/living-room/repair/how-to-repair-fireplace-cracks/"
      ]
    ],
    "tools": [
      "Putty knife set",
      "Sanding sponge",
      "Stud finder",
      "Trim nail set",
      "Wood glue",
      "Outlet spacers",
      "Fireplace mortar",
      "Paint match kit"
    ],
    "matrix": [
      "Drywall dent repair",
      "Squeaky floor fix",
      "Baseboard reset",
      "Outlet tightening",
      "Furniture frame brace",
      "Lamp socket replacement",
      "Fireplace mortar patch",
      "Window trim caulk"
    ],
    "mistakes": [
      "Painting before sanding the patch flat",
      "Fixing the squeak from the wrong side of the floor",
      "Caulking loose trim without fastening it first",
      "Ignoring electrical movement because the outlet still works",
      "Treating fireplace cracks as decoration instead of diagnosis",
      "Using glossy touch-up paint on a matte wall"
    ]
  },
  "install": {
    "active": "Install",
    "count": 47,
    "accent": "#C46D4F",
    "second": "#B58B52",
    "hero": "https://images.unsplash.com/photo-1522708323590-d24dbb6b0267?w=1600&q=84",
    "title": "Living Room Install Guides - TV Mounts, Shelves, Curtain Rods and Cable Management",
    "desc": "47 living room install guides for TV mounts, floating shelves, curtain rods, cable management, soundbars, lighting, outlets, and the hardware that makes the room work.",
    "headline": "Mounts, shelves, and the cable run nobody can see.",
    "deck": "Install is the living room lane with the most visible payoff: the TV looks built in, the shelves read level, the curtain rods make the windows taller, and the cables finally stop shouting.",
    "issue": "Hardware and routing",
    "topLabel": "Top 5 Living Room Install Searches",
    "photoLabel": "Photo Spread / Living Room Install Field Notes",
    "essayTitle": "Install is the art of making hardware disappear.",
    "essay": [
      "The living room has one unforgiving rule: if an install is crooked, exposed, or under-supported, everyone sees it. TV mounts, shelves, rods, and soundbars are simple objects, but they sit against the biggest visual surfaces in the house. They need layout, not luck.",
      "The Kitchen install format works here because the same discipline applies: measure twice, find structure, dry fit, hide the ugly part, then finish the surface. A good install changes the room without announcing how much effort went into it.",
      "This lane is about clean lines and invisible infrastructure. The best living room install is the one people assume was always there."
    ],
    "top": [
      [
        "01",
        "how to mount a TV on the wall",
        "201,000",
        "Intermediate",
        "2-3 hrs",
        "$40-$150",
        "https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=1600&q=84",
        "The most-searched living-room install. A real stud finder and a laser level matter more than the mount box claims.",
        "Read the TV mount guide",
        "/en/living-room/install/how-to-mount-a-tv-on-the-wall/"
      ],
      [
        "02",
        "how to install floating shelves",
        "110,000",
        "Intermediate",
        "1-2 hrs",
        "$40-$180",
        "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1600&q=84",
        "Floating shelves only look simple when the bracket work is exact. Level, anchor, load limit, then style.",
        "Read the floating shelf guide",
        "/en/living-room/install/how-to-install-floating-shelves/"
      ],
      [
        "03",
        "how to install curtain rods",
        "90,500",
        "Beginner",
        "45-90 min",
        "$30-$160",
        "https://images.unsplash.com/photo-1600210492486-724fe5c67fb0?w=1600&q=84",
        "High and wide curtain rods are the cheapest architecture a living room can buy. The placement matters more than the rod.",
        "Read the curtain rod guide",
        "/en/living-room/install/how-to-install-curtain-rods/"
      ],
      [
        "04",
        "how to run cable inside the wall",
        "74,000",
        "Intermediate",
        "3-4 hrs",
        "$40-$100",
        "https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?w=1600&q=84",
        "The difference between a mounted TV and a finished wall is what happens to the cable. In-wall routing is worth the patience.",
        "Read the cable guide",
        "/en/living-room/install/how-to-run-cable-inside-the-wall/"
      ],
      [
        "05",
        "how to install a soundbar under a TV",
        "60,500",
        "Beginner",
        "45 min",
        "$20-$80",
        "https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=1600&q=84",
        "A soundbar has to align with the screen and the seating, not just the wall. Mounting height and cable route do the work.",
        "Read the soundbar guide",
        "/en/living-room/install/how-to-install-a-soundbar-under-a-tv/"
      ]
    ],
    "tools": [
      "Stud finder",
      "Laser level",
      "Masonry bit set",
      "Cable fish tape",
      "Drywall anchors",
      "Socket set",
      "Painter tape",
      "Voltage tester"
    ],
    "matrix": [
      "TV wall mount",
      "Floating shelves",
      "Curtain rods",
      "Cable pass-through",
      "Soundbar mount",
      "Picture rail",
      "Dimmer switch",
      "Wall sconces"
    ],
    "mistakes": [
      "Trusting the mount template without checking level",
      "Using drywall anchors where studs are available",
      "Hanging curtains at the window frame instead of above it",
      "Running power cords inside walls without a rated kit",
      "Mounting a soundbar too far below the screen",
      "Skipping the final cable plan until the hardware is already up"
    ]
  },
  "build": {
    "active": "Build",
    "count": 30,
    "accent": "#A86B45",
    "second": "#8FA2A8",
    "hero": "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1600&q=84",
    "title": "Living Room Build Guides - Built Ins, Media Consoles, Window Seats and Storage",
    "desc": "30 living room build guides for built-ins, media consoles, window seats, toy storage, radiator covers, ledges, and custom storage that fits the room.",
    "headline": "The best living room storage looks like architecture.",
    "deck": "Build is where the room gets custom. Not because everything needs to be expensive, but because a living room is full of weird wall lengths, odd alcoves, radiators, outlets, windows, and storage problems no store solved for you.",
    "issue": "Custom fit",
    "topLabel": "Top 5 Living Room Build Searches",
    "photoLabel": "Photo Spread / Living Room Build Field Notes",
    "essayTitle": "Build the piece the room has been missing.",
    "essay": [
      "The living room is where DIY building can look most expensive. A built-in bookcase, a floating media console, a window bench, or a radiator cover changes the architecture of the room. The project may be plywood and paint, but the room reads it as permanent.",
      "The mistake is building furniture when the room wants structure. The best living room builds touch the wall, solve storage, and make awkward dimensions look intentional.",
      "Start with the constraint: an alcove, a radiator, a long blank wall, a media mess, a window with wasted space below it. Then build only what the room is asking for."
    ],
    "top": [
      [
        "01",
        "how to build living room built ins",
        "90,500",
        "Advanced",
        "2-4 days",
        "$450-$1,800",
        "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1600&q=84",
        "Built-ins are the living room project that changes resale photos. The box is simple; the trim and paint make it feel original.",
        "Read the built-ins guide",
        "/en/living-room/build/how-to-build-living-room-built-ins/"
      ],
      [
        "02",
        "how to build a floating media console",
        "74,000",
        "Intermediate",
        "1 weekend",
        "$180-$650",
        "https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=1600&q=84",
        "A floating console cleans the whole TV wall. Structure, cable space, and door alignment are the three things that matter.",
        "Read the media console guide",
        "/en/living-room/build/how-to-build-a-floating-media-console/"
      ],
      [
        "03",
        "how to build a window seat with storage",
        "60,500",
        "Intermediate",
        "1 weekend",
        "$220-$800",
        "https://images.unsplash.com/photo-1522708323590-d24dbb6b0267?w=1600&q=84",
        "The window seat is storage pretending to be a place to read. Height, cushion depth, and lid access decide whether it works.",
        "Read the window seat guide",
        "/en/living-room/build/how-to-build-a-window-seat-with-storage/"
      ],
      [
        "04",
        "how to build a radiator cover",
        "49,500",
        "Intermediate",
        "1 day",
        "$90-$300",
        "https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?w=1600&q=84",
        "A radiator cover has to respect heat, airflow, and access. Done right, it turns the most awkward object in the room into a shelf.",
        "Read the radiator cover guide",
        "/en/living-room/build/how-to-build-a-radiator-cover/"
      ],
      [
        "05",
        "how to build acoustic wall panels",
        "33,100",
        "Beginner",
        "1 day",
        "$80-$240",
        "https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=1600&q=84",
        "Acoustic panels can look like art if the fabric and spacing are intentional. The room gets quieter and better looking.",
        "Read the acoustic panel guide",
        "/en/living-room/build/how-to-build-acoustic-wall-panels/"
      ]
    ],
    "tools": [
      "Circular saw",
      "Brad nailer",
      "Pocket hole jig",
      "Level",
      "Stud finder",
      "Caulk gun",
      "Paint sprayer",
      "Clamps"
    ],
    "matrix": [
      "Built-in bookcase",
      "Floating media console",
      "Window storage bench",
      "Radiator cover",
      "Toy storage wall",
      "Gallery ledge",
      "Acoustic panels",
      "Side table"
    ],
    "mistakes": [
      "Building before measuring baseboards and outlet locations",
      "Skipping scribe lines on old walls",
      "Making storage doors too large for the room",
      "Forgetting airflow around radiators",
      "Painting raw edges without sealing them",
      "Letting the media console ignore cable service access"
    ]
  },
  "clean": {
    "active": "Clean",
    "count": 22,
    "accent": "#7E8F78",
    "second": "#B8A77E",
    "hero": "https://images.unsplash.com/photo-1567016432779-094069958ea5?w=1600&q=84",
    "title": "Living Room Cleaning Guides - Sofas, Rugs, Curtains, Floors and Fireplace Soot",
    "desc": "22 living room cleaning guides for upholstery, rugs, curtains, leather sofas, hardwood floors, electronics, fireplace soot, coffee tables, and dust-heavy surfaces.",
    "headline": "The soft room holds onto everything.",
    "deck": "Living rooms collect dust, skin, pet hair, crumbs, smoke, wax, and the invisible residue of being used every night. Cleaning here is not about sparkle. It is about bringing the fabric, floor, air, and surfaces back.",
    "issue": "Soft surfaces",
    "topLabel": "Top 5 Living Room Cleaning Searches",
    "photoLabel": "Photo Spread / Living Room Cleaning Field Notes",
    "essayTitle": "Clean the room by texture, not by object.",
    "essay": [
      "The living room is a fabric-heavy room. Sofas, rugs, curtains, pillows, throws, lampshades, and upholstered chairs hold onto dust and odor in a way hard rooms do not. A wipe-down is not enough. The room needs extraction, brushing, airing, vacuuming, and drying time.",
      "The cleaning order matters: dry remove first, spot treat second, wet clean third, dry thoroughly last. Most damage happens when people reverse that order and push soil deeper into the textile.",
      "A clean living room should not smell like cleaner. It should smell like nothing."
    ],
    "top": [
      [
        "01",
        "how to deep clean a fabric sofa",
        "110,000",
        "Beginner",
        "2-4 hrs",
        "$20-$90",
        "https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=1600&q=84",
        "Fabric codes decide the method. Vacuuming, spot testing, extraction, and drying are what keep the sofa from becoming a watermark map.",
        "Read the sofa guide",
        "/en/living-room/clean/how-to-deep-clean-a-fabric-sofa/"
      ],
      [
        "02",
        "how to clean an area rug",
        "90,500",
        "Beginner",
        "1 day",
        "$15-$80",
        "https://images.unsplash.com/photo-1567016432779-094069958ea5?w=1600&q=84",
        "Rugs collect everything and punish over-wetting. The right method depends on fiber, backing, and whether the rug can leave the room.",
        "Read the rug guide",
        "/en/living-room/clean/how-to-clean-an-area-rug/"
      ],
      [
        "03",
        "how to clean curtains without taking them down",
        "60,500",
        "Beginner",
        "45 min",
        "$0-$25",
        "https://images.unsplash.com/photo-1600210492486-724fe5c67fb0?w=1600&q=84",
        "Curtains hold dust like a filter. Steam, vacuuming, and fabric-safe deodorizing bring them back without turning laundry into a project.",
        "Read the curtain guide",
        "/en/living-room/clean/how-to-clean-curtains/"
      ],
      [
        "04",
        "how to clean fireplace soot",
        "49,500",
        "Intermediate",
        "2 hrs",
        "$20-$60",
        "https://images.unsplash.com/photo-1615874694520-474822394e73?w=1600&q=84",
        "Soot is fine, oily, and eager to smear. Dry removal before wet cleaning is the difference between clean brick and gray streaks.",
        "Read the soot guide",
        "/en/living-room/clean/how-to-clean-fireplace-soot/"
      ],
      [
        "05",
        "how to dust electronics and shelves",
        "33,100",
        "Beginner",
        "30 min",
        "$10-$35",
        "https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=1600&q=84",
        "Electronics attract dust and punish moisture. A soft brush, microfiber, and compressed air handle most of the job.",
        "Read the electronics guide",
        "/en/living-room/clean/how-to-dust-electronics-and-shelves/"
      ]
    ],
    "tools": [
      "HEPA vacuum",
      "Upholstery brush",
      "Microfiber cloths",
      "Fabric code chart",
      "Steam cleaner",
      "Soft paint brush",
      "Soot sponge",
      "Fan"
    ],
    "matrix": [
      "Fabric sofa",
      "Area rug",
      "Curtains",
      "Leather chair",
      "Fireplace soot",
      "Wood floor",
      "Electronics",
      "Coffee table"
    ],
    "mistakes": [
      "Wet cleaning before vacuuming thoroughly",
      "Ignoring fabric cleaning codes",
      "Over-wetting rugs until the backing smells",
      "Using all-purpose spray on electronics",
      "Smearing soot with water first",
      "Putting cushions back before they are fully dry"
    ]
  },
  "organize": {
    "active": "Organize",
    "count": 14,
    "accent": "#8D7862",
    "second": "#7E8F78",
    "hero": "https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=1600&q=84",
    "title": "Living Room Organization Guides - Media Consoles, Cords, Toys, Books and Blankets",
    "desc": "14 living room organization guides for media consoles, cords, remotes, toys, bookshelves, blankets, games, coffee tables, and shared family storage.",
    "headline": "The public room needs storage that can behave in public.",
    "deck": "Living room organization is smaller than kitchen organization, but the stakes are different. The storage has to be useful and presentable at the same time.",
    "issue": "Visible clutter",
    "topLabel": "Top 5 Living Room Organization Searches",
    "photoLabel": "Photo Spread / Living Room Organization Field Notes",
    "essayTitle": "Organization here has to look like furniture.",
    "essay": [
      "The living room does not need a hundred bins. It needs fewer, better homes for the things that keep landing in public: remotes, cords, controllers, toys, books, blankets, chargers, mail, and the objects people drop when they sit down.",
      "The strategy is concealment plus access. If storage is too hidden, nobody uses it. If storage is too visible, the room looks like a closet. The best systems sit in the middle: trays, drawers, lidded baskets, shelves with negative space, and consoles with a real cable plan.",
      "This lane is shorter because the room asks for restraint. Less content does not mean thinner work. It means the right few systems have to be excellent."
    ],
    "top": [
      [
        "01",
        "how to organize a media console",
        "49,500",
        "Beginner",
        "1 hr",
        "$20-$80",
        "https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?w=1600&q=84",
        "The console is the control center. Cables, remotes, batteries, controllers, and manuals need zones or they become a drawer of knots.",
        "Read the media console guide",
        "/en/living-room/organize/how-to-organize-a-media-console/"
      ],
      [
        "02",
        "how to hide living room cords",
        "40,500",
        "Beginner",
        "45 min",
        "$15-$60",
        "https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?w=1600&q=84",
        "Cord hiding is organization with a visual payoff. Bundle, route, label, and cover instead of stuffing everything behind furniture.",
        "Read the cord guide",
        "/en/living-room/organize/how-to-hide-living-room-cords/"
      ],
      [
        "03",
        "how to organize living room toys",
        "33,100",
        "Beginner",
        "1 hr",
        "$30-$120",
        "https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=1600&q=84",
        "Toy storage in a public room has to be fast enough for kids and attractive enough for adults. Baskets only work when categories are simple.",
        "Read the toy guide",
        "/en/living-room/organize/how-to-organize-living-room-toys/"
      ],
      [
        "04",
        "how to organize bookshelves",
        "27,100",
        "Beginner",
        "2 hrs",
        "$0-$40",
        "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1600&q=84",
        "Bookshelves need rhythm: books, air, objects, height, and color restraint. Organization becomes decoration when spacing is handled well.",
        "Read the bookshelf guide",
        "/en/living-room/organize/how-to-organize-bookshelves/"
      ],
      [
        "05",
        "how to store blankets and pillows",
        "22,200",
        "Beginner",
        "30 min",
        "$20-$90",
        "https://images.unsplash.com/photo-1567016432779-094069958ea5?w=1600&q=84",
        "Soft storage needs limits. One basket, one bench, or one drawer keeps comfort close without turning the room into laundry.",
        "Read the blanket guide",
        "/en/living-room/organize/how-to-store-blankets-and-pillows/"
      ]
    ],
    "tools": [
      "Cable labels",
      "Velcro ties",
      "Lidded baskets",
      "Drawer dividers",
      "Remote tray",
      "Bookshelf clips",
      "Blanket ladder",
      "Console bins"
    ],
    "matrix": [
      "Media console",
      "Cord bundle",
      "Toy basket",
      "Bookshelf zones",
      "Remote tray",
      "Game storage",
      "Blanket basket",
      "Coffee table reset"
    ],
    "mistakes": [
      "Buying open baskets for visual clutter",
      "Hiding remotes so well nobody can find them",
      "Bundling cords without labeling them",
      "Filling every bookshelf inch",
      "Making toy categories too specific",
      "Letting the coffee table become an inbox"
    ]
  },
  "decorate": {
    "active": "Decorate",
    "count": 31,
    "accent": "#B66A4B",
    "second": "#C8A164",
    "hero": "https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=1600&q=84",
    "title": "Living Room Decorating Guides - Accent Walls, Gallery Walls, Curtains, Rugs and Art",
    "desc": "31 living room decorating guides for accent walls, gallery walls, curtains, rug sizing, art placement, shelf styling, lighting, pillows, and coffee table styling.",
    "headline": "The room everyone sees, done well.",
    "deck": "Decorate is where small choices land hard: the accent wall, the rug size, the curtain height, the art scale, the light temperature, the shelf styling, the one object that makes the room feel edited.",
    "issue": "Visual direction",
    "topLabel": "Top 5 Living Room Decorating Searches",
    "photoLabel": "Photo Spread / Living Room Decorating Field Notes",
    "essayTitle": "Decorating is editing, not adding.",
    "essay": [
      "The living room is the room most people over-decorate because it is the room everyone sees. The better move is to pick a visual direction and let the strongest few choices carry it. One wall, one rug, one lighting plan, one art story, one shelf rhythm.",
      "The biggest decorating wins are architectural: curtains hung high and wide, art scaled to the wall, a rug large enough to connect the seating, paint that gives the room a center of gravity.",
      "When the room feels almost right, remove before buying. Negative space is part of the composition."
    ],
    "top": [
      [
        "01",
        "how to paint a living room accent wall",
        "90,500",
        "Beginner",
        "1 day",
        "$35-$90",
        "https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?w=1600&q=84",
        "The one-wall transformation still works when the color is chosen in the room, under the light you actually use at night.",
        "Read the accent wall guide",
        "/en/living-room/decorate/how-to-paint-an-accent-wall/"
      ],
      [
        "02",
        "how to hang a gallery wall",
        "74,000",
        "Beginner",
        "2 hrs",
        "$25-$150",
        "https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?w=1600&q=84",
        "A gallery wall succeeds on spacing before style. Paper templates and a centerline save the wall from nail chaos.",
        "Read the gallery wall guide",
        "/en/living-room/decorate/how-to-hang-a-gallery-wall/"
      ],
      [
        "03",
        "how to hang curtains high and wide",
        "60,500",
        "Beginner",
        "1 hr",
        "$40-$200",
        "https://images.unsplash.com/photo-1600210492486-724fe5c67fb0?w=1600&q=84",
        "Curtains can make a window look taller and the ceiling feel higher. The rod belongs above and beyond the frame.",
        "Read the curtain styling guide",
        "/en/living-room/decorate/how-to-hang-curtains-high-and-wide/"
      ],
      [
        "04",
        "how to choose the right living room rug size",
        "49,500",
        "Beginner",
        "30 min",
        "$150-$900",
        "https://images.unsplash.com/photo-1567016432779-094069958ea5?w=1600&q=84",
        "A too-small rug makes every sofa look stranded. Front legs on is the minimum; full seating on is the luxury version.",
        "Read the rug size guide",
        "/en/living-room/decorate/how-to-choose-living-room-rug-size/"
      ],
      [
        "05",
        "how to style floating shelves",
        "40,500",
        "Beginner",
        "1 hr",
        "$0-$120",
        "https://images.unsplash.com/photo-1586023492125-27b2c045efd7?w=1600&q=84",
        "Shelf styling is rhythm: books, height, art, air, and one weird object that keeps it from looking like a store display.",
        "Read the shelf styling guide",
        "/en/living-room/decorate/how-to-style-floating-shelves/"
      ]
    ],
    "tools": [
      "Paint samples",
      "Painter tape",
      "Picture hooks",
      "Laser level",
      "Curtain clips",
      "Rug tape",
      "Warm bulbs",
      "Frame templates"
    ],
    "matrix": [
      "Accent wall",
      "Gallery wall",
      "Curtain height",
      "Rug sizing",
      "Shelf styling",
      "Coffee table",
      "Throw pillows",
      "Lighting temperature"
    ],
    "mistakes": [
      "Choosing paint from a chip instead of a room sample",
      "Hanging art too high",
      "Buying a rug too small for the seating",
      "Letting shelves become tiny object storage",
      "Mixing every wood tone without a plan",
      "Using cold bulbs in a room meant for evening"
    ]
  }
};
const LR3_ORDER = ["repair","install","build","clean","organize","decorate"];

const lrBg = (url) => ({ backgroundImage: 'url("' + url + '")' });

const LivingRoomL3Hero = ({ page }) => (
  <section className="lr3-hero">
    <div className="img" style={lrBg(page.hero)} />
    <div className="lr3-mast">
      <span className="crumb"><a href="/">Home</a> / <a href="/en/living-room/">Living Room</a> / {page.active}</span>
      <span className="ctr">The Living Room {page.active} Edition</span>
      <span className="right">No. 06 / Spring 2026</span>
    </div>
    <div className="lr3-cover">
      <div>
        <div className="eyebrow">{page.active} / Living Room / Field Guide</div>
        <h1>{page.headline}</h1>
      </div>
      <div>
        <p className="deck">{page.deck}</p>
        <div className="meta">
          <div><span className="k">Section</span><span className="v">Living Room / {page.active}</span></div>
          <div><span className="k">Guides</span><span className="v">{page.count} total</span></div>
          <div><span className="k">Known issue</span><span className="v">{page.issue}</span></div>
          <div><span className="k">Updated</span><span className="v">May 2026</span></div>
        </div>
      </div>
    </div>
  </section>
);

const LivingRoomL3Top5 = ({ page }) => (
  <section className="lr3-top5">
    <div className="lr3-wrap">
      <div className="section-folio"><span>The Charts / {page.topLabel}</span><span className="pg">PG. 02</span></div>
      <div className="lr3-head">
        <div>
          <h2>The five searches this page has to win.</h2>
          <p className="deck">The living room pages are built for real search intent first, then edited into a page someone would actually want to look at.</p>
        </div>
        <div className="legend">
          <span><i style={{ background: 'var(--lraccent)' }} /> Difficulty</span>
          <span><i style={{ background: 'var(--lrsecond)' }} /> Time</span>
          <span><i style={{ background: '#a98c5c' }} /> Materials</span>
        </div>
      </div>
      <div className="lr3-top-list">
        {page.top.map((t) => (
          <article className="lr3-top-row" key={t[0]}>
            <div className="rank">No. {t[0]}</div>
            <a className="lr3-top-photo" href={t[9]} style={lrBg(t[6])} aria-label={t[1]}></a>
            <div className="query">
              <h3>{t[1]}</h3>
              <p>{t[7]}</p>
              <a href={t[9]} className="read">{t[8]}</a>
            </div>
            <div className="stats">
              <div className="stat"><span className="k">Monthly searches</span><span className="v">{t[2]}</span></div>
              <div className="stat"><span className="k">Difficulty</span><span className="v">{t[3]}</span></div>
              <div className="stat"><span className="k">Time</span><span className="v">{t[4]}</span></div>
              <div className="stat"><span className="k">Materials</span><span className="v">{t[5]}</span></div>
            </div>
          </article>
        ))}
      </div>
    </div>
  </section>
);

const LivingRoomL3PhotoSpread = ({ page }) => (
  <section className="lr3-photo-spread">
    <div className="lr3-wrap">
      <div className="section-folio"><span>{page.photoLabel}</span><span className="pg">PG. 07</span></div>
      <div className="lr3-photo-grid">
        {page.top.slice(0, 4).map((item, i) => (
          <article className={'lr3-photo-card c' + (i + 1)} key={item[0]}>
            <a className="photo" href={item[9]} style={lrBg(item[6].replace('w=1600', 'w=1900'))} aria-label={item[1]}></a>
            <div className="copy">
              <span>{item[1]}</span>
              <h3>{item[8]}</h3>
              <p>{item[7]}</p>
            </div>
          </article>
        ))}
      </div>
    </div>
  </section>
);

const LivingRoomL3Essay = ({ page }) => (
  <section className="lr3-essay">
    <div className="lr3-essay-wrap">
      <div className="section-folio"><span>Editor's Note / Living Room, {page.active}</span><span className="pg">PG. 08</span></div>
      <div className="lr3-essay-grid">
        <aside className="lr3-essay-side">
          <h2>{page.essayTitle}</h2>
          <div className="by">By the Editors / 5 min read</div>
          <div className="stat-list">
            <div className="row"><span>Guides</span><strong>{page.count}</strong></div>
            <div className="row"><span>Highest intent</span><strong>{page.top[0][1].replace('how to ', '')}</strong></div>
            <div className="row"><span>Best first move</span><strong>{page.top[1][1].replace('how to ', '')}</strong></div>
            <div className="row"><span>Room pressure</span><strong>{page.issue}</strong></div>
          </div>
        </aside>
        <div className="lr3-essay-body">
          <p className="dropcap">{page.essay[0]}</p>
          <p>{page.essay[1]}</p>
          <div className="pull">A living room page has to work like the room itself: visual first, useful second, and calm enough to stay with.</div>
          <p>{page.essay[2]}</p>
        </div>
      </div>
    </div>
  </section>
);

const LivingRoomL3Tools = ({ page }) => (
  <section className="lr3-tools">
    <div className="lr3-wrap">
      <div className="section-folio"><span>The Kit / What earns drawer space</span><span className="pg">PG. 10</span></div>
      <div className="lr3-tools-head">
        <h2>Eight tools that handle most living-room {page.active.toLowerCase()} work.</h2>
        <p>These are not fantasy workshop objects. They are the tools most likely to save the finish when the room is already furnished.</p>
      </div>
      <div className="lr3-tools-grid">
        {page.tools.map((tool, i) => (
          <div className="lr3-tool" key={tool}>
            <span>{String(i + 1).padStart(2, '0')}</span>
            <h3>{tool}</h3>
            <p>Useful because living room work happens on visible surfaces, around finished furniture, and under evening light.</p>
          </div>
        ))}
      </div>
    </div>
  </section>
);

const LivingRoomL3Matrix = ({ page }) => (
  <section className="lr3-matrix">
    <div className="lr3-wrap">
      <div className="section-folio"><span>The Menu / Ranked by payoff</span><span className="pg">PG. 12</span></div>
      <div className="lr3-matrix-head">
        <h2>Ten living-room {page.active.toLowerCase()} projects, ranked.</h2>
        <p>The list starts with the work that changes the room fastest and ends with the deeper projects that reward patience.</p>
      </div>
      <div className="lr3-matrix-table">
        <div className="lr3-matrix-row head"><span>Project</span><span>Difficulty</span><span>Time</span><span>Payoff</span><span></span></div>
        {page.matrix.concat(page.top.map(t => t[1].replace('how to ', ''))).slice(0, 10).map((project, i) => (
          <div className="lr3-matrix-row" key={project}>
            <span className="proj"><b>{String(i + 1).padStart(2, '0')}</b>{project}</span>
            <span>{i < 4 ? 'Beginner' : i < 8 ? 'Intermediate' : 'Advanced'}</span>
            <span>{i < 3 ? '1 hour' : i < 7 ? '1 day' : 'Weekend'}</span>
            <span className="dots"><i></i><i></i><i></i><i className={i > 5 ? '' : 'off'}></i><i className={i > 7 ? '' : 'off'}></i></span>
            <span><a href={'/en/living-room/' + page.active.toLowerCase() + '/'}>Open</a></span>
          </div>
        ))}
      </div>
    </div>
  </section>
);

const LivingRoomL3Mistakes = ({ page }) => (
  <section className="lr3-mistakes">
    <div className="lr3-wrap">
      <div className="section-folio"><span>Do Not Skip / Common Failures</span><span className="pg">PG. 14</span></div>
      <div className="lr3-mistakes-head">
        <h2>The mistakes that make the room feel unfinished.</h2>
        <span>{page.mistakes.length}</span>
      </div>
      <div className="lr3-mistakes-grid">
        {page.mistakes.map((m, i) => (
          <article className="lr3-mistake" key={m}>
            <div className="n">{String(i + 1).padStart(2, '0')}</div>
            <h3>{m}</h3>
            <p>It is visible from the doorway, which means it is worth fixing before the room gets another layer.</p>
          </article>
        ))}
      </div>
    </div>
  </section>
);

const LivingRoomL3Related = ({ page, lane }) => (
  <section className="lr3-related">
    <div className="lr3-related-wrap">
      <div className="lr3-related-col">
        <h3>Other things to do in the living room.</h3>
        <div className="lr3-related-list">
          {LR3_ORDER.map((key, i) => {
            const item = LR3_PAGES[key];
            return <a href={'/en/living-room/' + key + '/'} className={'row ' + (key === lane ? 'current' : '')} key={key}><span className="n">{String(i + 1).padStart(2, '0')}</span><span className="t">{item.active} the living room</span><span className="ct">{item.count} guides</span></a>;
          })}
        </div>
      </div>
      <div className="lr3-related-col">
        <h3>{page.active} in other rooms.</h3>
        <div className="lr3-related-list">
          {['kitchen', 'bathroom', 'bedroom', 'garage', 'basement'].map((room, i) => (
            <a href={'/en/' + lane + '/' + room + '/'} className="row" key={room}><span className="n">{String(i + 1).padStart(2, '0')}</span><span className="t">{room.replace('-', ' ')}</span><span className="ct">room lane</span></a>
          ))}
        </div>
      </div>
    </div>
  </section>
);

const LivingRoomL3Colophon = ({ page }) => (
  <section className="lr3-colophon">
    <span>HowTo: Home Edition / Living Room</span>
    <h2>{page.count} ways to {page.active.toLowerCase()} the room everyone sees.</h2>
    <p>Built as a static editorial L3 page with a full crawler body, visible photography, and a real menu of projects.</p>
    <a href="/en/living-room/" className="go">Back to Living Room</a>
  </section>
);

const LivingRoomL3 = ({ lane }) => {
  const page = LR3_PAGES[lane] || LR3_PAGES.install;
  return (
    <>
      <LivingRoomL3Hero page={page} />
      <LivingRoomL3Top5 page={page} />
      <LivingRoomL3PhotoSpread page={page} />
      <LivingRoomL3Essay page={page} />
      <LivingRoomL3Tools page={page} />
      <LivingRoomL3Matrix page={page} />
      <LivingRoomL3Mistakes page={page} />
      <LivingRoomL3Related page={page} lane={lane} />
      <LivingRoomL3Colophon page={page} />
    </>
  );
};

window.LivingRoomL3 = LivingRoomL3;
