<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Unpaid Wages & Commission Fraud Allegations — Long v. CDW Government LLC — Case No. 2025L007458</title>

  <meta name="description" content="CDW Government LLC faces unpaid-wage and commission-fraud allegations in Cook County — the complete public-record archive of Long v. CDW Government LLC, No. 2025L007458. Every filing, order, and exhibit, free under CC0.">
  <meta name="author" content="Marcellus Long, MBA">
  <meta name="keywords" content="Unpaid Wages and Commission Fraud Allegations, Long v CDW Government, 2025L007458, Cook County, IWPCA, Illinois Wage Payment and Collection Act, wage theft, public record, court filings, pro se">
  <meta name="robots" content="noindex, nofollow">
  <meta name="referrer" content="origin-when-cross-origin">
  <meta name="rating" content="general">
  <meta name="geo.placename" content="Chicago, Illinois">
  <meta name="geo.region" content="US-IL">
  <meta name="geo.position" content="41.8940;-87.6230">
  <meta name="ICBM" content="41.8940, -87.6230">
  <meta name="color-scheme" content="light">
  <meta name="theme-color" content="#0f1c2e">

  <meta property="og:type" content="website">
  <meta property="og:title" content="Long v. CDW Government LLC — Public Record Archive — Case No. 2025L007458">
  <meta property="og:description" content="CDW Government LLC faces unpaid-wage and commission-fraud allegations in Cook County — the complete public-record archive of Long v. CDW Government LLC, No. 2025L007458. Every filing, order, and exhibit, free under CC0.">
  <meta property="og:url" content="https://case-2025l007458.info/">
  <meta property="og:site_name" content="Long v. CDW Government LLC — Public Record Archive">
  <meta property="og:locale" content="en_US">
  <meta property="og:image" content="https://case-2025l007458.info/og-image.png">
  <meta property="og:image:secure_url" content="https://case-2025l007458.info/og-image.png">
  <meta property="og:image:type" content="image/png">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="630">
  <meta property="og:image:alt" content="Long v. CDW Government LLC — Case No. 2025L007458 — Public Record Archive">

  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@marcellusmusic">
  <meta name="twitter:creator" content="@marcellusmusic">
  <meta name="twitter:title" content="Long v. CDW Government LLC — Public Record Archive">
  <meta name="twitter:description" content="CDW Government LLC faces unpaid-wage and commission-fraud allegations in Cook County — the full public record of Long v. CDW Government LLC, No. 2025L007458. Free under CC0.">
  <meta name="twitter:image" content="https://case-2025l007458.info/og-image.png">
  <meta name="twitter:image:alt" content="Long v. CDW Government LLC — Case No. 2025L007458 — Public Record Archive">


  <link rel="license" href="https://creativecommons.org/publicdomain/zero/1.0/">
  <link rel="canonical" href="https://case-2025l007458.info/">
  <link rel="alternate" type="application/rss+xml" title="Long v. CDW Government LLC — Docket Updates" href="https://case-2025l007458.info/feed.xml">
  <link rel="manifest" href="/manifest.json">
  <link rel="icon" href="/favicon.ico" sizes="16x16 32x32 48x48">
  <link rel="icon" href="/favicon-48.png" type="image/png" sizes="48x48">
  <link rel="icon" href="/favicon-192.png" type="image/png" sizes="192x192">
  <link rel="icon" href="/favicon-512.png" type="image/png" sizes="512x512">
  <link rel="icon" href="/icon.svg" type="image/svg+xml">
  <link rel="apple-touch-icon" href="/favicon-192.png">

  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;0,700;1,400;1,500&family=IBM+Plex+Mono:wght@400;500&family=Source+Serif+4:ital,opsz,wght@0,8..60,300;0,8..60,400;0,8..60,600;1,8..60,300;1,8..60,400&display=swap" rel="stylesheet">

  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js" defer></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf_viewer.min.css">

  <script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": [
        "WebSite",
        "ArchiveOrganization"
      ],
      "@id": "https://case-2025l007458.info/#docs",
      "name": "Long v. CDW Government LLC — Public Record Archive",
      "description": "A self-hosted, permanently accessible public record archive of court filings in Long v. CDW Government LLC, Case No. 2025L007458, Cook County Circuit Court, Law Division, Calendar W, State of Illinois.",
      "url": "https://case-2025l007458.info/",
      "email": "legal@marcelluslong.com",
      "sdPublisher": {
        "@id": "https://marcelluslong.com/#person"
      },
      "about": {
        "@id": "https://case-2025l007458.info/#filing"
      },
      "license": "https://creativecommons.org/publicdomain/zero/1.0/",
      "isAccessibleForFree": true,
      "archiveHeld": {
        "@type": "ArchiveComponent",
        "name": "Filings — Long v. CDW Government LLC"
      },
      "hasPart": [
        {
          "@id": "https://case-2025l007458.info/#docket-watch"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-opp-dismiss"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-nunc-pro-tunc"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-opp-jury-demand"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-nunc-pro-tunc"
        },
        {
          "@id": "https://case-2025l007458.info/documents/mtc-compel-rta-1"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-rta-responses"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-supp-interrogatories"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-supp-rfp"
        },
        {
          "@id": "https://case-2025l007458.info/documents/fordharrison-llp"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-compel-201k"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-order"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-dismiss-denied"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-cert-service-dismiss"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-notice-dismiss"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-strike-complaint-denied"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-opp-strike"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-g-leave-amend"
        },
        {
          "@id": "https://case-2025l007458.info/documents/sarah-evans-barker"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-chicago"
        },
        {
          "@id": "https://case-2025l007458.info/documents/cdw-goal-modifier"
        }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://marcelluslong.com/#person",
      "name": "Marcellus Long, MBA",
      "givenName": "Marcellus",
      "familyName": "Long",
      "honorificSuffix": "MBA",
      "jobTitle": [
        "Pro Se Plaintiff",
        "Singer-songwriter",
        "Recording Artist",
        "Music Producer",
        "Multimedia Writer",
        "Multimedia Editor",
        "Business Administrator",
        "Entrepreneur"
      ],
      "alumniOf": [
        {
          "@type": "CollegeOrUniversity",
          "name": "Berklee College of Music",
          "sameAs": "https://www.berklee.edu/"
        },
        {
          "@type": "CollegeOrUniversity",
          "name": "Southern New Hampshire University",
          "sameAs": "https://www.snhu.edu/"
        }
      ],
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "1 E. Erie St., Suite 525-2420",
        "addressLocality": "Chicago",
        "addressRegion": "IL",
        "postalCode": "60611",
        "addressCountry": "US"
      },
      "email": "legal@marcelluslong.com",
      "telephone": "+13124690683",
      "url": "https://marcelluslong.com",
      "sameAs": [
        "https://marcelluslong.com/",
        "https://www.wikidata.org/wiki/Q38050768",
        "https://g.co/kgs/bJ4Ufg",
        "https://www.google.com/search?kgmid=/m/0nht1by",
        "https://www.linkedin.com/in/marcellus-long-mba-2486246",
        "https://open.spotify.com/artist/1btrcU00g5sEHLAkVkR0cd",
        "https://music.apple.com/us/artist/marcellus-long/355472310",
        "https://www.instagram.com/marcellusmusic",
        "https://soundcloud.com/marcelluslong",
        "https://genius.com/artists/Marcellus-long",
        "https://tidal.com/browse/artist/16070727",
        "https://www.deezer.com/us/artist/76064432",
        "https://www.pandora.com/artist/marcellus-long/ARZ5q5ppt9v6Kjc",
        "https://www.iheart.com/artist/marcellus-long-33084797/",
        "https://musicbrainz.org/artist/9fea8143-bc74-471d-b199-cf8098a52fe0",
        "https://www.allmusic.com/artist/marcellus-long-mn0003754721",
        "https://www.discogs.com/artist/6467468",
        "https://www.youtube.com/c/marcelluslong",
        "https://www.tiktok.com/@marcellus_long",
        "https://www.facebook.com/pg/Marcellus.Long.singer/",
        "https://www.pinterest.com/marcelluslong/",
        "https://www.crunchbase.com/person/marcellus-long",
        "https://wellfound.com/marcellus-long-mba",
        "https://archive.org/search?query=Long+v+CDW+Government+LLC"
      ],
      "description": "Pro se plaintiff in Long v. CDW Government LLC, Case No. 2025L007458, Cook County Circuit Court, Law Division. Singer-songwriter, recording artist, music producer, multimedia writer and editor, and business administrator. Graduate of Berklee College of Music as a voice principal with a focus in recording arts and sciences. Holder of an MBA from Southern New Hampshire University (3.961 GPA, Presidential Member of National Society of Leadership and Success). Associated with ASCAP.",
      "disambiguatingDescription": "This entity refers to Marcellus Long, MBA, the pro se plaintiff in Long v. CDW Government LLC, Case No. 2025L007458, Cook County Circuit Court, Law Division, Calendar W, State of Illinois. Marcellus Long, MBA is distinct from Marcellus Long Jr., an attorney based in Oakland County, Michigan, who has appeared in federal and state court proceedings in a representative capacity — Marcellus Long, MBA has no bar admission and appears in this matter solely as a self-represented litigant advancing his own claims. Marcellus Long, MBA is also distinct from Marcellus TheSinger, the stage name of Terence Daniels Jr., a country and R&B singer from Amite, Louisiana, and from the Marcellus Shale geological formation. In professional life outside this litigation, Marcellus Long, MBA is a recording artist and business administrator associated with Berklee College of Music, Southern New Hampshire University, ASCAP, and the National Society of Leadership and Success — identities that exist entirely apart from his role as plaintiff in this matter.",
      "hasCredential": [
        {
          "@type": "EducationalOccupationalCredential",
          "credentialCategory": "degree",
          "name": "Master of Business Administration (MBA)",
          "recognizedBy": {
            "@type": "CollegeOrUniversity",
            "name": "Southern New Hampshire University"
          }
        },
        {
          "@type": "EducationalOccupationalCredential",
          "credentialCategory": "degree",
          "name": "Voice Principal, Recording Arts and Sciences",
          "recognizedBy": {
            "@type": "EducationalOrganization",
            "name": "Berklee College of Music"
          }
        }
      ],
      "memberOf": [
        {
          "@type": "Organization",
          "name": "Sigma Alpha Pi, the National Society of Leadership and Success (NSLS)",
          "sameAs": "https://www.nsls.org/"
        },
        {
          "@type": "Organization",
          "name": "American Society of Composers, Authors and Publishers (ASCAP)",
          "sameAs": "https://www.ascap.com/"
        }
      ],
      "identifier": [
        {
          "@type": "PropertyValue",
          "propertyID": "Google Knowledge Graph MID",
          "value": "/m/0nht1by"
        },
        {
          "@type": "PropertyValue",
          "propertyID": "Google Knowledge Graph GID",
          "value": "/g/11fy8zzc5v"
        }
      ],
      "worksFor": {
        "@type": "Role",
        "roleName": "Account Representative",
        "startDate": "2023-05-08",
        "description": "Presently employed by CDW Government LLC. Employment is ongoing during the pendency of this litigation.",
        "worksFor": {
          "@id": "https://case-2025l007458.info/#cdw-gov"
        }
      }
    },
    {
      "@type": "Action",
      "@id": "https://case-2025l007458.info/#filing",
      "name": "Filing of Long v. CDW Government LLC",
      "alternateName": "Case No. 2025L007458",
      "description": "Civil action filed June 10, 2025 in the Circuit Court of Cook County, Law Division, Calendar W. Plaintiff Marcellus Long (Pro Se) v. Defendant CDW Government LLC.",
      "startTime": "2025-06-10",
      "identifier": {
        "@type": "PropertyValue",
        "name": "Cook County Circuit Court Case Number",
        "value": "2025L007458"
      },
      "location": {
        "@type": "Courthouse",
        "name": "Circuit Court of Cook County, Law Division",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "50 W Washington St #801",
          "addressLocality": "Chicago",
          "addressRegion": "IL",
          "postalCode": "60602",
          "addressCountry": "US"
        },
        "telephone": "(312) 603-5426",
        "url": "https://www.cookcountycourtil.gov/division/law-division",
        "sameAs": [
          "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
          "https://www.cookcountyclerkofcourt.org/divisions/law-division"
        ],
        "openingHoursSpecification": [
          {
            "@type": "OpeningHoursSpecification",
            "dayOfWeek": [
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday"
            ],
            "opens": "08:30",
            "closes": "16:30"
          },
          {
            "@type": "OpeningHoursSpecification",
            "dayOfWeek": [
              "Saturday",
              "Sunday"
            ],
            "opens": "00:00",
            "closes": "00:00"
          }
        ],
        "geo": {
          "@type": "GeoCoordinates",
          "latitude": 41.8827,
          "longitude": -87.6233
        },
        "containedIn": {
          "@type": "Place",
          "name": "Richard J. Daley Center"
        }
      },
      "agent": {
        "@type": "Role",
        "roleName": "Plaintiff (Pro Se)",
        "agent": {
          "@id": "https://marcelluslong.com/#person"
        }
      },
      "subjectOf": [
        {
          "@id": "https://case-2025l007458.info/#iwpca"
        },
        {
          "@id": "https://case-2025l007458.info/#il-common-law"
        },
        {
          "@id": "https://case-2025l007458.info/#il-sc-rules"
        },
        {
          "@id": "https://bible.com"
        }
      ],
      "mainEntityOfPage": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "participant": [
        {
          "@type": "Role",
          "roleName": "Defendant",
          "participant": {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          }
        },
        {
          "@type": "Role",
          "roleName": "Counsel for Defendant",
          "participant": {
            "@id": "https://case-2025l007458.info/#fordharrison"
          }
        },
        {
          "@type": "Role",
          "roleName": "Presiding Judge",
          "participant": {
            "@id": "https://case-2025l007458.info/#donnelly"
          }
        },
        {
          "@type": "Role",
          "roleName": "Judicial Law Clerk",
          "participant": {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        },
        {
          "@type": "Role",
          "roleName": "Judicial Law Clerk (predecessor)",
          "participant": {
            "@id": "https://case-2025l007458.info/#oshana"
          }
        },
        {
          "@type": "Role",
          "roleName": "Case Coordinator",
          "participant": {
            "@id": "https://case-2025l007458.info/#marinakis"
          }
        }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://case-2025l007458.info/#barrett",
      "name": "Bernadette Barrett",
      "honorificPrefix": "Hon.",
      "identifier": {
        "@type": "PropertyValue",
        "name": "Cook County Judicial ID",
        "value": "2319"
      },
      "worksFor": {
        "@type": "GovernmentOrganization",
        "name": "Circuit Court of Cook County",
        "url": "https://www.cookcountycourtil.gov/",
        "employee": [
          {
            "@type": "Person",
            "name": "Thomas V. Lyons, II",
            "jobTitle": "Acting Presiding Judge of the Law Division",
            "url": "https://www.cookcountycourtil.gov/judge/lyons-ii-thomas-v"
          },
          {
            "@type": "Person",
            "name": "Charles S. Beach",
            "jobTitle": "Chief Judge",
            "url": "https://www.cookcountycourtil.gov/judge/beach-ii-charles-s",
            "email": "ocj.info@cookcountyil.gov"
          }
        ]
      },
      "workLocation": {
        "@type": "Place",
        "name": "Room 1912, Richard J. Daley Center",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "50 W Washington St",
          "addressLocality": "Chicago",
          "addressRegion": "IL",
          "postalCode": "60602",
          "addressCountry": "US"
        }
      },
      "hasOccupation": {
        "@type": "Role",
        "roleName": "Presiding Judge, Law Division Commercial Calendar W",
        "description": "Presides over Case No. 2025L007458, succeeding Hon. Thomas More Donnelly. Transferred from the Domestic Relations Division to the Law Division by Special Order No. 2026-42, entered July 2, 2026.",
        "startDate": "2026-07-20"
      }
    },
    {
      "@type": "Person",
      "@id": "https://case-2025l007458.info/#donnelly",
      "name": "Thomas More Donnelly",
      "identifier": {
        "@type": "PropertyValue",
        "name": "Cook County Judicial ID",
        "value": "1803"
      },
      "worksFor": {
        "@type": "GovernmentOrganization",
        "name": "Circuit Court of Cook County",
        "url": "https://www.cookcountycourtil.gov/",
        "employee": [
          {
            "@type": "Person",
            "name": "Thomas V. Lyons, II",
            "jobTitle": "Acting Presiding Judge of the Law Division",
            "url": "https://www.cookcountycourtil.gov/judge/lyons-ii-thomas-v"
          },
          {
            "@type": "Person",
            "name": "Charles S. Beach",
            "jobTitle": "Chief Judge",
            "url": "https://www.cookcountycourtil.gov/judge/beach-ii-charles-s",
            "email": "ocj.info@cookcountyil.gov"
          }
        ]
      },
      "hasOccupation": {
        "@type": "Role",
        "roleName": "Presiding Judge, Law Division Calendar W",
        "description": "Presided over Case No. 2025L007458 until reassignment to the Chancery Division.",
        "startDate": "2025-06-10",
        "endDate": "2026-04-26"
      }
    },
    {
      "@type": "Person",
      "@id": "https://case-2025l007458.info/#brueggemann",
      "name": "Kirsten Brueggemann",
      "honorificSuffix": "J.D.",
      "url": "https://www.iardc.org/Lawyer/PrintableDetails/a849c806-ffbe-f011-b8ac-000d3a92ce24",
      "sameAs": "https://www.iardc.org/Lawyer/PrintableDetails/a849c806-ffbe-f011-b8ac-000d3a92ce24",
      "worksFor": {
        "@type": "GovernmentOrganization",
        "name": "Circuit Court of Cook County",
        "url": "https://www.cookcountycourtil.gov/",
        "employee": {
          "@id": "https://case-2025l007458.info/#donnelly"
        }
      },
      "hasCredential": {
        "@type": "EducationalOccupationalCredential",
        "name": "License to Practice Law",
        "credentialCategory": "Professional License",
        "identifier": {
          "@type": "PropertyValue",
          "name": "ARDC Number",
          "value": "6336582"
        },
        "recognizedBy": {
          "@type": "Organization",
          "name": "Illinois State Bar Association",
          "sameAs": "https://www.isba.org/"
        },
        "validIn": {
          "@type": "AdministrativeArea",
          "name": "Illinois"
        }
      },
      "hasOccupation": {
        "@type": "Role",
        "roleName": "Judicial Law Clerk",
        "description": "Served on Case No. 2025L007458",
        "startDate": "2025-10-01",
        "endDate": "2026-04-26"
      }
    },
    {
      "@type": "Person",
      "@id": "https://case-2025l007458.info/#oshana",
      "name": "Mariana Oshana",
      "honorificSuffix": "J.D.",
      "url": "https://www.iardc.org/Lawyer/PrintableDetails/98078dc9-bfa1-ef11-b87d-000d3a92ce24",
      "sameAs": "https://www.iardc.org/Lawyer/PrintableDetails/98078dc9-bfa1-ef11-b87d-000d3a92ce24",
      "worksFor": {
        "@type": "GovernmentOrganization",
        "name": "Circuit Court of Cook County",
        "url": "https://www.cookcountycourtil.gov/",
        "employee": {
          "@id": "https://case-2025l007458.info/#donnelly"
        }
      },
      "hasCredential": {
        "@type": "EducationalOccupationalCredential",
        "name": "License to Practice Law",
        "credentialCategory": "Professional License",
        "recognizedBy": {
          "@type": "Organization",
          "name": "Illinois State Bar Association",
          "sameAs": "https://www.isba.org/"
        },
        "validIn": {
          "@type": "AdministrativeArea",
          "name": "Illinois"
        }
      },
      "identifier": [
        {
          "@type": "PropertyValue",
          "name": "ARDC Number",
          "value": "None (not published on IARDC public record)"
        },
        {
          "@type": "PropertyValue",
          "name": "IARDC Record URL",
          "value": "https://www.iardc.org/Lawyer/PrintableDetails/98078dc9-bfa1-ef11-b87d-000d3a92ce24"
        },
        {
          "@type": "PropertyValue",
          "name": "IARDC Record Domain",
          "value": "www.iardc.org"
        },
        {
          "@type": "PropertyValue",
          "name": "IARDC Record Path",
          "value": "/Lawyer/PrintableDetails/98078dc9-bfa1-ef11-b87d-000d3a92ce24"
        },
        {
          "@type": "PropertyValue",
          "name": "IARDC Record ID",
          "value": "98078dc9-bfa1-ef11-b87d-000d3a92ce24"
        },
        {
          "@type": "PropertyValue",
          "name": "Date Admitted",
          "value": "2024-11-06"
        }
      ],
      "hasOccupation": {
        "@type": "Role",
        "roleName": "Judicial Law Clerk",
        "description": "Served on Case No. 2025L007458 (predecessor law clerk to Kirsten Brueggemann)",
        "startDate": "2025-06-10",
        "endDate": "2025-10-01"
      }
    },
    {
      "@type": "Person",
      "@id": "https://case-2025l007458.info/#marinakis",
      "name": "Christine Marinakis",
      "worksFor": {
        "@type": "GovernmentOrganization",
        "name": "Office of the Clerk of the Circuit Court of Cook County",
        "url": "https://www.cookcountyclerkofcourt.org/",
        "employee": {
          "@type": "Person",
          "name": "Mariyana T. Spyropoulos",
          "jobTitle": "Clerk of the Circuit Court of Cook County",
          "url": "https://www.cookcountyclerkofcourt.org/people/MariyanaT.Spyropoulos"
        }
      },
      "hasOccupation": {
        "@type": "Role",
        "roleName": "Case Coordinator",
        "description": "Serves on Case No. 2025L007458",
        "startDate": "2025-06-10"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://case-2025l007458.info/#cdw-gov",
      "name": "CDW Government LLC",
      "additionalType": "https://schema.org/Corporation",
      "identifier": [
        {
          "@type": "PropertyValue",
          "name": "DUNS",
          "value": "026157235"
        },
        {
          "@type": "PropertyValue",
          "name": "LEI",
          "value": "549300RU2J599RPFD076"
        }
      ],
      "url": "https://www.cdwg.com/content/cdwg/en/industries/federal-it-solutions.html",
      "sameAs": "https://www.justice.gov/archives/opa/pr/cdw-government-pay-us-5663902-resolve-false-claims-act-allegations"
    },
    {
      "@type": "LegalService",
      "@id": "https://case-2025l007458.info/#fordharrison",
      "name": "FordHarrison LLP",
      "identifier": {
        "@type": "PropertyValue",
        "name": "Cook County Firm ID",
        "value": "43346"
      },
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "180 N. Stetson Avenue, Suite 1660",
        "addressLocality": "Chicago",
        "addressRegion": "IL",
        "postalCode": "60601",
        "addressCountry": "US"
      },
      "member": [
        {
          "@type": "Attorney",
          "@id": "https://case-2025l007458.info/#thorstenson",
          "name": "Craig R. Thorstenson",
          "hasCredential": {
            "@type": "EducationalOccupationalCredential",
            "name": "License to Practice Law",
            "credentialCategory": "Professional License",
            "identifier": {
              "@type": "PropertyValue",
              "name": "ARDC Number",
              "value": "6224364"
            },
            "recognizedBy": {
              "@type": "Organization",
              "name": "Illinois State Bar Association",
              "sameAs": "https://www.isba.org/"
            },
            "validIn": {
              "@type": "AdministrativeArea",
              "name": "Illinois"
            }
          },
          "memberOf": {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          "sameAs": "https://www.fordharrison.com/CraigThorstenson"
        },
        {
          "@type": "Attorney",
          "@id": "https://case-2025l007458.info/#oconnor",
          "name": "John C. O'Connor",
          "hasCredential": {
            "@type": "EducationalOccupationalCredential",
            "name": "License to Practice Law",
            "credentialCategory": "Professional License",
            "identifier": {
              "@type": "PropertyValue",
              "name": "ARDC Number",
              "value": "6242637"
            },
            "recognizedBy": {
              "@type": "Organization",
              "name": "Illinois State Bar Association",
              "sameAs": "https://www.isba.org/"
            },
            "validIn": {
              "@type": "AdministrativeArea",
              "name": "Illinois"
            }
          },
          "memberOf": {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          "sameAs": "https://www.fordharrison.com/johnoconnor"
        },
        {
          "@type": "Attorney",
          "@id": "https://case-2025l007458.info/#zeid",
          "name": "Joel M. Zeid",
          "hasCredential": {
            "@type": "EducationalOccupationalCredential",
            "name": "License to Practice Law",
            "credentialCategory": "Professional License",
            "identifier": {
              "@type": "PropertyValue",
              "name": "ARDC Number",
              "value": "6340061"
            },
            "recognizedBy": {
              "@type": "Organization",
              "name": "Illinois State Bar Association",
              "sameAs": "https://www.isba.org/"
            },
            "validIn": {
              "@type": "AdministrativeArea",
              "name": "Illinois"
            }
          },
          "memberOf": {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          "sameAs": "https://www.fordharrison.com/joelzeid"
        }
      ],
      "url": "https://www.fordharrison.com/"
    },
    {
      "@type": "Legislation",
      "@id": "https://case-2025l007458.info/#iwpca",
      "name": "Illinois Wage Payment and Collection Act (IWPCA)",
      "legislationType": "Statute",
      "alternateName": "820 ILCS 115",
      "legislationJurisdiction": "Illinois",
      "legislationPassedBy": "Illinois General Assembly",
      "sameAs": "https://www.ilga.gov/Legislation/ILCS/Articles?ActID=2402&ChapterID=68"
    },
    {
      "@type": "Legislation",
      "@id": "https://case-2025l007458.info/#il-common-law",
      "name": "Illinois Common Law",
      "legislationType": "Legal Precedent",
      "legislationJurisdiction": "Illinois",
      "sameAs": "https://www.illinoiscourts.gov/top-level-opinions?type=supreme"
    },
    {
      "@type": "Legislation",
      "@id": "https://case-2025l007458.info/#il-sc-rules",
      "name": "Illinois Supreme Court Rules",
      "legislationType": "Court Rule",
      "legislationJurisdiction": "Illinois",
      "legislationPassedBy": "Supreme Court of Illinois",
      "sameAs": [
        "https://ilcourtsaudio.blob.core.windows.net/antilles-resources/resources/7ae8a196-2a43-4484-9666-43098da60282/S_Ct_Rules_full.pdf",
        "https://www.illinoiscourts.gov/rules-law/supreme-court-rules/"
      ]
    },
    {
      "@type": "Book",
      "@id": "https://bible.com",
      "name": "Holy Bible: New American Standard Bible 2020",
      "url": "https://bible.com",
      "inLanguage": "en",
      "hasPart": {
        "@type": "TextDigitalDocument",
        "name": "Deuteronomy",
        "position": "Book 5",
        "hasPart": {
          "@type": "TextDigitalDocument",
          "name": "Deuteronomy 24:15",
          "position": "Chapter 24, Verse 15",
          "url": "https://www.bible.com/bible/2692/DEU.24.15.NASB2020",
          "text": "You shall give him his wages on his day before the sun sets, for he is poor and sets his heart on it; so that he will not cry out against you to the Lord, and it becomes a sin in you."
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g",
      "url": "https://case-2025l007458.info/documents/cdw-g",
      "name": "CDW-G Faces Serious Allegations From Employee",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "CDW-G Faces Serious Allegations From Employee",
        "description": "Operative complaint filed February 17, 2026 against CDW Government LLC in Cook County No. 2025L007458. On August 21, 2026, five of the six counts survived Defendant's second motion to dismiss and are proceeding: Count II, fraudulent concealment; Count III, failure to pay wages and unauthorized deduction under the Illinois Wage Payment and Collection Act, 820 ILCS 115; Count IV, conversion; Count V, unjust enrichment, pleaded in the alternative to Count IV; and Count VI, retaliation under 820 ILCS 115/14(c). Count I, constructive fraud, was dismissed with prejudice and is redacted from this published copy.",
        "creativeWorkStatus": "Active. On August 21, 2026, five of six counts survived Defendant's second motion to dismiss and are proceeding: Count II, fraudulent concealment; Count III, unpaid wages and unauthorized deduction (IWPCA, 820 ILCS 115); Count IV, conversion; Count V, unjust enrichment, in the alternative; Count VI, retaliation (820 ILCS 115/14(c)). Count I, constructive fraud, dismissed with prejudice and redacted from this published copy.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-02-17",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g",
        "sameAs": "https://archive.org/details/cdw-625",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "keywords": [
          "IWPCA",
          "constructive fraud",
          "fraudulent concealment",
          "conversion",
          "unjust enrichment",
          "retaliation",
          "820 ILCS 115"
        ],
        "citation": [
          "820 ILCS 115/1",
          "820 ILCS 115/14(c)",
          "820 ILCS 115/2"
        ],
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#iwpca"
          },
          {
            "@id": "https://case-2025l007458.info/#il-common-law"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "36686505"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 87 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 87 pages, LZW)"
            }
          ],
          "description": "First page of: Amended Complaint"
        },
        "name": "CDW-G Faces Serious Allegations From Employee"
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-opp-dismiss",
      "url": "https://case-2025l007458.info/documents/cdw-g-opp-dismiss",
      "name": "Opposition to Motion to Dismiss",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Opposition to Motion to Dismiss",
        "description": "Plaintiff's full opposition to Defendant's motion to dismiss, addressing all contested counts.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-05-14",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-opp-dismiss.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-opp-dismiss",
        "sameAs": "https://archive.org/details/unpaid-wages-commission-fraud-allegations-opposition-motion-dismiss-2025l007458/",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#iwpca"
          },
          {
            "@id": "https://case-2025l007458.info/#il-common-law"
          },
          {
            "@id": "https://case-2025l007458.info/#il-sc-rules"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "38094245"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-opp-dismiss-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-opp-dismiss-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 50 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-opp-dismiss-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-opp-dismiss.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 50 pages, JPEG (recompressed))"
            }
          ],
          "description": "First page of: Opposition to Motion to Dismiss"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-opp-jury-demand",
      "url": "https://case-2025l007458.info/documents/cdw-g-opp-jury-demand",
      "name": "Response to Motion to Strike Jury Demand",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Response to Motion to Strike Jury Demand",
        "description": "Plaintiff's response opposing Defendant's motion to strike the jury demand.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-01-02",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-opp-jury-demand.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-opp-jury-demand",
        "sameAs": "https://archive.org/details/unpaid-wages-commission-fraud-jury-demand-motions-2025l007458/2026-01-02-plaintiff-response-to-motion-to-strike-jury-demand/",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "36400333"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-opp-jury-demand-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-opp-jury-demand-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 5 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-opp-jury-demand-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-opp-jury-demand.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 5 pages, LZW)"
            }
          ],
          "description": "First page of: Response to Motion to Strike Jury Demand"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-nunc-pro-tunc",
      "url": "https://case-2025l007458.info/documents/cdw-g-nunc-pro-tunc",
      "name": "Second Amended Motion to Correct Orders Nunc Pro Tunc — Defendant Misidentification",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Motion to Correct Agreed Orders Nunc Pro Tunc — Defendant Misidentification",
        "description": "Filed August 13, 2026, this Second Amended nunc pro tunc motion asks the Cook County Circuit Court to correct five orders in Case No. 2025L007458 that misidentify the defendant. It adds the July 31, 2025 order, which commands defendants in the plural in an action that has only ever had one defendant, to the four agreed orders that name no legal entity beyond counsel for Defendant CDW. A nunc pro tunc correction conforms the written record to what occurred without disturbing the substance of any ruling, so the record names CDW Government LLC as the single defendant throughout. This motion supersedes the First Amended motion of the same name.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-08-13",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-nunc-pro-tunc.pdf",
        "isBasedOn": {
          "@id": "https://case-2025l007458.info/documents/cdw-g"
        },
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-nunc-pro-tunc",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-08-28",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          }
        ],
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-nunc-pro-tunc-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-nunc-pro-tunc-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 47 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-nunc-pro-tunc-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-nunc-pro-tunc.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 47 pages, LZW)"
            }
          ],
          "description": "First page of: Motion to Correct Agreed Orders Nunc Pro Tunc"
        },
        "dateModified": "2026-08-13"
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/mtc-compel-rta-1",
      "url": "https://case-2025l007458.info/documents/mtc-compel-rta-1",
      "name": "Third Amended Motion to Compel RTA Responses",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Third Amended Motion to Compel RTA Responses",
        "description": "Third Amended motion to compel compliant responses to Plaintiff's First Request for Admission and to deem Requests Nos. 12, 18, 19, 20 and 26 admitted under Illinois Supreme Court Rule 216(c).",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-08-18",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/mtc-compel-rta-1.pdf",
        "isBasedOn": {
          "@id": "https://case-2025l007458.info/documents/cdw-g"
        },
        "archivedAt": "https://case-2025l007458.info/documents/mtc-compel-rta-1",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-08-28",
        "citation": [
          {
            "@type": "CreativeWork",
            "name": "IL S. Ct. R. 216",
            "url": "https://ilcourtsaudio.blob.core.windows.net/antilles-resources/resources/e690373a-a210-44b5-84bb-e1f6e28fedfb/Rule%20216.pdf"
          }
        ],
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#barrett"
          },
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#il-sc-rules"
          }
        ],
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/mtc-compel-rta-1-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/mtc-compel-rta-1-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 13 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/mtc-compel-rta-1-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/mtc-compel-rta-1.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 13 pages, LZW)"
            }
          ],
          "description": "First page of: Third Amended Motion to Compel RTA Responses"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-rta-responses",
      "url": "https://case-2025l007458.info/documents/cdw-g-rta-responses",
      "name": "Defendant's Response to Requests to Admit",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Defendant's Response to Requests to Admit",
        "description": "Defendant's responses to Plaintiff's Requests to Admit, including Rule 216(a) admissions forming part of the evidentiary record.",
        "author": {
          "@type": "Organization",
          "@id": "https://case-2025l007458.info/#cdw-gov",
          "name": "CDW Government LLC"
        },
        "datePublished": "2025-10-02",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-rta-responses.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-rta-responses",
        "sameAs": "https://archive.org/details/unpaid-wages-commission-fraud-discovery-motions-2025l007458/exhibit-1-2025-10-02-defendant-response-to-rta/",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "citation": [
          {
            "@type": "CreativeWork",
            "name": "IL S. Ct. R. 216(a)",
            "url": "https://ilcourtsaudio.blob.core.windows.net/antilles-resources/resources/e690373a-a210-44b5-84bb-e1f6e28fedfb/Rule%20216.pdf"
          }
        ],
        "mentions": [
          {
            "@id": "https://marcelluslong.com/#person"
          },
          {
            "@id": "https://case-2025l007458.info/#il-sc-rules"
          },
          {
            "@id": "https://case-2025l007458.info/#thorstenson"
          },
          {
            "@id": "https://case-2025l007458.info/#oconnor"
          },
          {
            "@id": "https://case-2025l007458.info/#zeid"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "38019854"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-rta-responses-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-rta-responses-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 14 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-rta-responses-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-rta-responses.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 14 pages, LZW)"
            }
          ],
          "description": "First page of: Defendant's Response to Requests to Admit"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-supp-interrogatories",
      "url": "https://case-2025l007458.info/documents/cdw-g-supp-interrogatories",
      "name": "Supplemental Answers to Interrogatories",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Supplemental Answers to Interrogatories",
        "description": "Plaintiff's supplemental answers to interrogatories providing additional documentation and factual detail.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-05-11",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-supp-interrogatories.pdf",
        "isBasedOn": {
          "@id": "https://case-2025l007458.info/documents/cdw-g"
        },
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-supp-interrogatories",
        "sameAs": "https://archive.org/details/unpaid-wages-commission-fraud-allegations-supplemental-discovery-2025l007458/2026-05-11-plaintiff-supplemental-answers-interrogatories/",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "38019854"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-supp-interrogatories-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-supp-interrogatories-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 9 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-supp-interrogatories-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-supp-interrogatories.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 9 pages, LZW)"
            }
          ],
          "description": "First page of: Supplemental Answers to Interrogatories"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-supp-rfp",
      "url": "https://case-2025l007458.info/documents/cdw-g-supp-rfp",
      "name": "Supplemental Responses to RFP",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Supplemental Responses to RFP",
        "description": "Plaintiff's supplemental responses to Defendant's Requests for Production of Documents.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-05-11",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-supp-rfp.pdf",
        "isBasedOn": {
          "@id": "https://case-2025l007458.info/documents/cdw-g"
        },
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-supp-rfp",
        "sameAs": "https://archive.org/details/unpaid-wages-commission-fraud-allegations-supplemental-discovery-2025l007458/2026-05-11-plaintiff-supplemental-responses-to-rfp/",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "38003113"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-supp-rfp-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-supp-rfp-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 7 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-supp-rfp-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-supp-rfp.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 7 pages, LZW)"
            }
          ],
          "description": "First page of: Supplemental Responses to RFP"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/fordharrison-llp",
      "url": "https://case-2025l007458.info/documents/fordharrison-llp",
      "name": "FordHarrison LLP Attorney Appearances",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "Message",
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "John C. O'Connor Shows Up 58 Days After Service",
        "description": "FordHarrison LLP filed three appearances for CDW Government LLC in Long v. CDW Government LLC, Cook County No. 2025L007458: Craig R. Thorstenson on July 18, 2025, Joel M. Zeid on July 23, 2025, and John C. O'Connor on August 21, 2025. Summons and complaint were served on the defendant on June 23, 2025, placing O'Connor's appearance fifty-eight days after service. Plaintiff's motion to strike the appearance certifications as void ab initio contends that O'Connor's was the only valid appearance for the named defendant. This document collects all three filings with their certificates of service.",
        "author": {
          "@type": "Organization",
          "@id": "https://case-2025l007458.info/#cdw-gov",
          "name": "CDW Government LLC"
        },
        "datePublished": "2025-08-21",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/fordharrison-llp.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/fordharrison-llp",
        "sameAs": "https://archive.org/details/john-c-o-connor",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#thorstenson"
          },
          {
            "@id": "https://case-2025l007458.info/#zeid"
          },
          {
            "@id": "https://case-2025l007458.info/#oconnor"
          },
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#oshana"
          }
        ],
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/fordharrison-llp-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/fordharrison-llp-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 3 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/fordharrison-llp-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/fordharrison-llp.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 3 pages, LZW)"
            }
          ],
          "description": "First page of: Attorney Appearances — FordHarrison LLP"
        },
        "name": "FordHarrison LLP Attorney Appearances",
        "dateModified": "2025-08-21"
      }
    },
    {
      "@type": "WebPageElement",
      "@id": "https://case-2025l007458.info/#docket-watch",
      "description": "Live docket monitoring section of the Long v. CDW Government LLC public record archive. Tracks filings, procedural events, and case activity for Case No. 2025L007458, Cook County Circuit Court, Law Division.",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "about": {
        "@id": "https://case-2025l007458.info/#filing"
      },
      "sameAs": [
        "https://www.docketalarm.com/cases/Illinois_State_Cook_County_Circuit_Court/2025L007458/Long_Marcellus_v._CDW_Government_LLC/"
      ],
      "mainEntity": {
        "@id": "https://case-2025l007458.info/#docket-entries"
      }
    },
    {
      "@type": [
        "ItemList",
        "CreativeWork"
      ],
      "@id": "https://case-2025l007458.info/#docket-entries",
      "name": "Docket Watch — Long v. CDW Government LLC, No. 2025L007458",
      "description": "Docket entries for Case No. 2025L007458, Circuit Court of Cook County, Law Division, Commercial Calendar W, listed newest first.",
      "url": "https://case-2025l007458.info/docket-watch",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docket-watch"
      },
      "about": {
        "@id": "https://case-2025l007458.info/#filing"
      },
      "creator": {
        "@id": "https://marcelluslong.com/#person"
      },
      "sdPublisher": {
        "@id": "https://marcelluslong.com/#person"
      },
      "sdDatePublished": "2026-08-28",
      "temporalCoverage": "2025-06-10/..",
      "license": "https://creativecommons.org/publicdomain/zero/1.0/",
      "isAccessibleForFree": true,
      "inLanguage": "en",
      "itemListOrder": "https://schema.org/ItemListOrderDescending",
      "numberOfItems": 21,
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "October 6, 2026 — Court: Continued case management set before the Honorable Bernadette Barrett, Commercial Calendar W, Room 1912, Richard J. Daley Center, 9:00 a.m."
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "August 21, 2026 — Court: Ruling on Defendant's second Motion to Dismiss. Count I disposed. Counts II–VI sustained and proceeding."
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "August 20, 2026 — Court: Court’s Motion: “This Case Is Taken Under Advisement.”"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "August 18, 2026 — Plaintiff: Third Amended Motion to Compel Compliant Responses to Plaintiff's First Request for Admission filed, with exhibits."
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "July 23, 2026 — Plaintiff: Notice of motion on all pending matters, set for hearing August 20, 2026."
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "July 20, 2026 — Court: Case reassigned to the Honorable Bernadette Barrett, Commercial Calendar W. Judge Barrett transferred from the Domestic Relations Division to the Law Division effective this date, by Special Order No. 2026–42 entered July 2, 2026."
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "May 1, 2026 — Plaintiff: Opposition to Defendant's Rule 2-619.1 Motion to Dismiss filed, with memorandum of law."
        },
        {
          "@type": "ListItem",
          "position": 8,
          "name": "April 27, 2026 — Court: Judicial Officer Position Vacant"
        },
        {
          "@type": "ListItem",
          "position": 9,
          "name": "April 26, 2026 — Court: The Honorable Thomas More Donnelly Concludes Presiding Service on Case No. 2025L007458 Ahead of Chancery Division Appointment"
        },
        {
          "@type": "ListItem",
          "position": 10,
          "name": "March 17, 2026 — Defendant: Defendant's second Motion to Dismiss filed by FordHarrison LLP, with exhibits."
        },
        {
          "@type": "ListItem",
          "position": 11,
          "name": "February 17, 2026 — Plaintiff: Amended Operative Complaint filed. Leave to file granted."
        },
        {
          "@type": "ListItem",
          "position": 12,
          "name": "January 21, 2026 — Plaintiff: First Amended Complaint filed."
        },
        {
          "@type": "ListItem",
          "position": 13,
          "name": "December 2, 2025 — Court: Defendant's first Motion to Dismiss denied."
        },
        {
          "@type": "ListItem",
          "position": 14,
          "name": "December 1, 2025 — Defendant: Defendant's first Motion to Dismiss the amended complaint filed untimely by FordHarrison LLP."
        },
        {
          "@type": "ListItem",
          "position": 15,
          "name": "November 5, 2025 — Plaintiff: Plaintiff’s jury demand filed."
        },
        {
          "@type": "ListItem",
          "position": 16,
          "name": "August 28, 2025 — Plaintiff: Notice of service of Plaintiff's First and Second Requests to Admit."
        },
        {
          "@type": "ListItem",
          "position": 17,
          "name": "July 23, 2025 — Defendant: Attorney appearance of Joel M. Zeid of FordHarrison LLP for CDW Government LLC. Answer and affirmative defenses filed the same day."
        },
        {
          "@type": "ListItem",
          "position": 18,
          "name": "July 18, 2025 — Defendant: Attorney appearance of Craig R. Thorstenson of FordHarrison LLP for CDW Government LLC."
        },
        {
          "@type": "ListItem",
          "position": 19,
          "name": "July 8, 2025 — Plaintiff: Motion to Compel Production under Rule 201(k) noticed for hearing July 15, 2025 before the Honorable Thomas More Donnelly."
        },
        {
          "@type": "ListItem",
          "position": 20,
          "name": "June 24, 2025 — Plaintiff: Affidavit and certificate of service filed. Summons and complaint served on Defendant June 23, 2025."
        },
        {
          "@type": "ListItem",
          "position": 21,
          "name": "June 10, 2025 — Plaintiff: Case filed. Complaint alleges wage and retaliation violations under the Illinois Wage Payment and Collection Act."
        }
      ]
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-compel-201k",
      "url": "https://case-2025l007458.info/documents/cdw-g-compel-201k",
      "name": "Motion to Compel Production Under Rule 201(k)",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Motion to Compel Production Under Rule 201(k)",
        "description": "Plaintiff's motion to compel CDW Government LLC to produce a document authorizing wage deductions, filed pursuant to Illinois Supreme Court Rule 201(k). Granted by court order July 31, 2025.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2025-07-08",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-compel-201k.pdf",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-16",
        "citation": [
          {
            "@type": "CreativeWork",
            "name": "IL S. Ct. R. 201(k)",
            "url": "https://ilcourtsaudio.blob.core.windows.net/antilles-resources/resources/04def41f-b72c-4fdc-bdd8-eda350a95151/Rule%20201.pdf"
          },
          "820 ILCS 115/1"
        ],
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#oshana"
          }
        ],
        "disambiguatingDescription": "Ruling: GRANTED",
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "33468978"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-compel-201k-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-compel-201k-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 3 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-compel-201k-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-compel-201k.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 3 pages, LZW)"
            }
          ],
          "description": "First page of: Motion to Compel Production Under Rule 201(k)"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-order",
      "url": "https://case-2025l007458.info/documents/cdw-g-order",
      "name": "Chicago Judge Orders CDW-G to Produce Missing Compensation Records",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Chicago Judge Orders CDW-G to Produce Missing Compensation Records",
        "description": "On July 31, 2025, a Cook County judge granted Plaintiff's motion to compel and ordered CDW Government LLC (CDW-G) to produce the missing compensation records within 30 days.",
        "author": {
          "@type": "GovernmentOrganization",
          "name": "Circuit Court of Cook County, Law Division"
        },
        "datePublished": "2025-07-31",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-order.pdf",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-16",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#oshana"
          }
        ],
        "disambiguatingDescription": "Ruling: GRANTED",
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-order-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-order-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1549,
          "caption": "First page thumbnail — 1 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-order-page1.png",
              "encodingFormat": "image/png",
              "width": 1278,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-order.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 1 page, LZW)"
            }
          ],
          "description": "First page of: Court Order — Motion to Compel Granted (July 31, 2025)"
        },
        "name": "Chicago Judge Orders CDW-G to Produce Missing Compensation Records",
        "sameAs": "https://archive.org/details/cdw-order"
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-dismiss-denied",
      "url": "https://case-2025l007458.info/documents/cdw-g-dismiss-denied",
      "name": "Defendant's Rule 2-619.1 Motion to Dismiss Amended Complaint — Denied",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Defendant's Rule 2-619.1 Motion to Dismiss Amended Complaint — Denied",
        "description": "CDW Government LLC's Rule 2-619.1 motion to dismiss Plaintiff's amended complaint, filed December 1, 2025. Motion was denied.",
        "author": {
          "@type": "Organization",
          "@id": "https://case-2025l007458.info/#cdw-gov",
          "name": "CDW Government LLC"
        },
        "datePublished": "2025-12-01",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-dismiss-denied.pdf",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-16",
        "citation": [
          "735 ILCS 5/2-615",
          "735 ILCS 5/2-619"
        ],
        "mentions": [
          {
            "@id": "https://marcelluslong.com/#person"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "disambiguatingDescription": "Ruling: DENIED",
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "35570388"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-dismiss-denied-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-dismiss-denied-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 15 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-dismiss-denied-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-dismiss-denied.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 15 pages, LZW)"
            }
          ],
          "description": "First page of: Defendant's Rule 2-619.1 Motion to Dismiss Amended Complaint — Denied"
        },
        "sameAs": "https://archive.org/details/unpaid-wages-commission-fraud-motion-to-dismiss-2025l007458/"
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-cert-service-dismiss",
      "url": "https://case-2025l007458.info/documents/cdw-g-cert-service-dismiss",
      "name": "Defendant's Certificate of Service — Motion to Dismiss",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "Message",
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Defendant's Certificate of Service — Motion to Dismiss",
        "description": "Certificate of filing and service for CDW Government LLC's Rule 2-619.1 motion to dismiss and supporting memorandum, filed untimely December 1, 2025.",
        "author": {
          "@type": "Organization",
          "@id": "https://case-2025l007458.info/#cdw-gov",
          "name": "CDW Government LLC"
        },
        "datePublished": "2025-12-01",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-cert-service-dismiss.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-cert-service-dismiss",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-16",
        "mentions": [
          {
            "@id": "https://marcelluslong.com/#person"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "35570388"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-cert-service-dismiss-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-cert-service-dismiss-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 2 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-cert-service-dismiss-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-cert-service-dismiss.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 2 pages, LZW)"
            }
          ],
          "description": "First page of: Defendant's Certificate of Service — Motion to Dismiss"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-notice-dismiss",
      "url": "https://case-2025l007458.info/documents/cdw-g-notice-dismiss",
      "name": "Defendant's Notice of Motion to Dismiss",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "Message",
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Defendant's Notice of Motion to Dismiss",
        "description": "Notice of CDW Government LLC's motion to dismiss, associated with the December 1, 2025 Rule 2-619.1 motion. Filed untimely per Plaintiff's review.",
        "author": {
          "@type": "Organization",
          "@id": "https://case-2025l007458.info/#cdw-gov",
          "name": "CDW Government LLC"
        },
        "datePublished": "2025-12-01",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-notice-dismiss.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-notice-dismiss",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-16",
        "mentions": [
          {
            "@id": "https://marcelluslong.com/#person"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "35570775"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-notice-dismiss-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-notice-dismiss-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 2 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-notice-dismiss-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-notice-dismiss.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 2 pages, LZW)"
            }
          ],
          "description": "First page of: Defendant's Notice of Motion to Dismiss"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-strike-complaint-denied",
      "url": "https://case-2025l007458.info/documents/cdw-g-strike-complaint-denied",
      "name": "Defendant's Motion to Strike Operative Complaint — Denied",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Defendant's Motion to Strike Operative Complaint — Denied",
        "description": "CDW Government LLC's motion to strike Plaintiff's operative complaint and for extension of time to answer, filed January 29, 2026. Motion was denied.",
        "author": {
          "@type": "Organization",
          "@id": "https://case-2025l007458.info/#cdw-gov",
          "name": "CDW Government LLC"
        },
        "datePublished": "2026-01-29",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-strike-complaint-denied.pdf",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-16",
        "mentions": [
          {
            "@id": "https://marcelluslong.com/#person"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "disambiguatingDescription": "Ruling: DENIED",
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "36418548"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-strike-complaint-denied-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-strike-complaint-denied-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 8 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-strike-complaint-denied-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-strike-complaint-denied.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 8 pages, LZW)"
            }
          ],
          "description": "First page of: Defendant's Motion to Strike Operative Complaint — Denied"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-opp-strike",
      "url": "https://case-2025l007458.info/documents/cdw-g-opp-strike",
      "name": "Plaintiff's Opposition to Motion to Strike",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Plaintiff's Opposition to Motion to Strike",
        "description": "Plaintiff's opposition to Defendant's motion to strike the operative complaint, filed February 10, 2026.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-02-10",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-opp-strike.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/cdw-g-opp-strike",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-16",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "36596101"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-opp-strike-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-opp-strike-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 50 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-opp-strike-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-opp-strike.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 50 pages, JPEG (recompressed))"
            }
          ],
          "description": "First page of: Plaintiff's Opposition to Motion to Strike"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-g-leave-amend",
      "url": "https://case-2025l007458.info/documents/cdw-g-leave-amend",
      "name": "Motion for Leave to File Amended Complaint",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Motion for Leave to File Amended Complaint",
        "description": "Plaintiff's motion for leave to file the Amended Complaint. Granted by the court.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2025-08-19",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-g-leave-amend.pdf",
        "isBasedOn": {
          "@id": "https://case-2025l007458.info/documents/cdw-g"
        },
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-16",
        "disambiguatingDescription": "Ruling: GRANTED",
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "34089348"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-leave-amend-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-g-leave-amend-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 3 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-leave-amend-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-g-leave-amend.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 3 pages, LZW)"
            }
          ],
          "description": "First page of: Motion for Leave to File Amended Complaint"
        },
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#oshana"
          }
        ]
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/sarah-evans-barker",
      "url": "https://case-2025l007458.info/documents/sarah-evans-barker",
      "name": "Federal Judge Sarah Evans Barker Cited as Instructive Authority",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "Message",
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "Federal Judge Sarah Evans Barker Cited as Instructive Authority",
        "description": "Plaintiff's Notice of Supplemental Authority citing CDW, LLC v. NeTech Corp. (S.D. Ind.), authored by Federal Judge Sarah Evans Barker, on the corporate separateness of CDW subsidiaries — with the full federal decision attached as Exhibit A.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2026-05-01",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/sarah-evans-barker.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/sarah-evans-barker",
        "sameAs": "https://archive.org/details/sarah-evans-barker",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "37882740"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/sarah-evans-barker-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/sarah-evans-barker-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 26 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/sarah-evans-barker-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/sarah-evans-barker.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 26 pages, LZW)"
            }
          ],
          "description": "First page of: Notice of Supplemental Authority"
        }
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-chicago",
      "url": "https://case-2025l007458.info/documents/cdw-chicago",
      "name": "CDW Government LLC Sued in Chicago",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "mainEntity": {
        "@type": [
          "TextDigitalDocument",
          "ArchiveComponent"
        ],
        "headline": "CDW Government LLC Sued in Chicago",
        "description": "CDW Government LLC (CDW-G) — Fortune 500 technology reseller — faces an employment lawsuit in Cook County, Chicago. Affidavit of John Pennell (filed June 24, 2025), Long v. CDW Government LLC, No. 2025L007458.",
        "author": {
          "@type": "Person",
          "@id": "https://marcelluslong.com/#person",
          "name": "Marcellus Long, MBA (Pro Se)"
        },
        "datePublished": "2025-06-24",
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "encodingFormat": "application/pdf",
        "url": "https://cdn.case-2025l007458.info/documents/cdw-chicago.pdf",
        "archivedAt": "https://case-2025l007458.info/documents/cdw-chicago",
        "sameAs": "https://archive.org/details/cdw-sued",
        "conditionsOfAccess": "Freely accessible to the public. No registration required. Released under CC0 1.0 Universal Public Domain Dedication.",
        "isAccessibleForFree": true,
        "inLanguage": "en",
        "locationCreated": {
          "@type": "Courthouse",
          "name": "Circuit Court of Cook County, Law Division",
          "address": {
            "@type": "PostalAddress",
            "streetAddress": "50 W Washington St #801",
            "addressLocality": "Chicago",
            "addressRegion": "IL",
            "postalCode": "60602",
            "addressCountry": "US"
          },
          "telephone": "(312) 603-5426",
          "url": "https://www.cookcountycourtil.gov/division/law-division",
          "sameAs": [
            "https://www.cookcountycourtil.gov/location/richard-j-daley-center",
            "https://www.cookcountyclerkofcourt.org/divisions/law-division"
          ],
          "openingHoursSpecification": [
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Monday",
                "Tuesday",
                "Wednesday",
                "Thursday",
                "Friday"
              ],
              "opens": "08:30",
              "closes": "16:30"
            },
            {
              "@type": "OpeningHoursSpecification",
              "dayOfWeek": [
                "Saturday",
                "Sunday"
              ],
              "opens": "00:00",
              "closes": "00:00"
            }
          ],
          "geo": {
            "@type": "GeoCoordinates",
            "latitude": 41.8827,
            "longitude": -87.6233
          },
          "containedIn": {
            "@type": "Place",
            "name": "Richard J. Daley Center"
          }
        },
        "hasDigitalDocumentPermission": {
          "@type": "DigitalDocumentPermission",
          "permissionType": "https://schema.org/ReadPermission",
          "grantee": {
            "@type": "Audience",
            "audienceType": "public"
          }
        },
        "sdPublisher": {
          "@id": "https://marcelluslong.com/#person"
        },
        "sdDatePublished": "2026-06-15",
        "keywords": [
          "IWPCA",
          "constructive fraud",
          "fraudulent concealment",
          "conversion",
          "unjust enrichment",
          "retaliation",
          "820 ILCS 115"
        ],
        "citation": [
          "820 ILCS 115/1",
          "820 ILCS 115/14(c)",
          "820 ILCS 115/2"
        ],
        "mentions": [
          {
            "@id": "https://case-2025l007458.info/#cdw-gov"
          },
          {
            "@id": "https://case-2025l007458.info/#fordharrison"
          },
          {
            "@id": "https://case-2025l007458.info/#iwpca"
          },
          {
            "@id": "https://case-2025l007458.info/#il-common-law"
          },
          {
            "@id": "https://case-2025l007458.info/#donnelly"
          },
          {
            "@id": "https://case-2025l007458.info/#brueggemann"
          }
        ],
        "identifier": {
          "@type": "PropertyValue",
          "name": "Cook County eFileIL Envelope Number",
          "value": "36686505"
        },
        "image": {
          "@type": "ImageObject",
          "contentUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-chicago-thumb.webp",
          "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-chicago-thumb.webp",
          "encodingFormat": "image/webp",
          "width": 1200,
          "height": 1553,
          "caption": "First page thumbnail — 1 page document",
          "associatedMedia": [
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-chicago-page1.png",
              "encodingFormat": "image/png",
              "width": 1275,
              "height": 1650,
              "description": "First page access copy (150 DPI, PNG)"
            },
            {
              "@type": "ImageObject",
              "contentUrl": "https://cdn.case-2025l007458.info/archive/cdw-chicago.tiff",
              "encodingFormat": "image/tiff",
              "description": "Full-document archival master (300 DPI, 1 page, JPEG (recompressed))"
            }
          ],
          "description": "First page of: Amended Complaint"
        },
        "name": "CDW Government LLC Sued in Chicago"
      }
    },
    {
      "@type": "ItemPage",
      "@id": "https://case-2025l007458.info/documents/cdw-goal-modifier",
      "url": "https://case-2025l007458.info/documents/cdw-goal-modifier",
      "name": "CDW-G's Goal-Modifier Commission Diagram",
      "isPartOf": {
        "@id": "https://case-2025l007458.info/#docs"
      },
      "primaryImageOfPage": {
        "@id": "https://case-2025l007458.info/documents/cdw-goal-modifier#diagram"
      },
      "mainEntity": {
        "@type": [
          "ImageObject",
          "CreativeWork"
        ],
        "@id": "https://case-2025l007458.info/documents/cdw-goal-modifier#diagram",
        "name": "CDW-G's Goal-Modifier Commission Diagram",
        "alternateName": "Exhibit 10, Goal-Modifier Commission Diagram",
        "caption": "CDW-G's Goal-Modifier Commission Diagram",
        "description": "Exhibit 10 — the 'wage theft diagram' at the center of Long v. CDW Government LLC (No. 2025L007458): a visual mapping of how CDW's goal-modifier mechanism allegedly reduced earned sales commissions.",
        "contentUrl": "https://cdn.case-2025l007458.info/images/cdw-goal-modifier-diagram.png",
        "url": "https://case-2025l007458.info/documents/cdw-goal-modifier",
        "thumbnailUrl": "https://cdn.case-2025l007458.info/images/thumbnails/cdw-goal-modifier-thumb.webp",
        "width": 2550,
        "height": 1434,
        "encodingFormat": "image/png",
        "datePublished": "2026-02-17",
        "sameAs": "https://archive.org/details/cdw-goal-modifier",
        "isPartOf": {
          "@id": "https://case-2025l007458.info/documents/cdw-g"
        },
        "position": 10,
        "creator": {
          "@id": "https://marcelluslong.com/#person"
        },
        "license": "https://creativecommons.org/publicdomain/zero/1.0/",
        "acquireLicensePage": "https://case-2025l007458.info/license",
        "copyrightNotice": "No rights reserved. Released under CC0 1.0 Universal Public Domain Dedication.",
        "creditText": "Long v. CDW Government LLC — Public Record Archive",
        "additionalProperty": [
          {
            "@type": "PropertyValue",
            "name": "Exhibit Number",
            "value": "10"
          },
          {
            "@type": "PropertyValue",
            "name": "Exhibit Title",
            "value": "Wage Theft Diagram"
          },
          {
            "@type": "PropertyValue",
            "name": "Exhibit Of",
            "value": "Amended Complaint"
          }
        ]
      }
    }
  ]
}
  </script>

  <style>
    :root {
      --navy:    #0f1c2e;
      --parch:   #f5f3ee;
      --white:   #ffffff;
      --federal: #1e3a6e;
      --gilt:    #b5973c;
      --smoke:   #d9d4c9;
      --crimson: #6b0000;
      --mist:    #eae8e2;
      --success: #1a4731;

      --font-display: 'EB Garamond', Georgia, 'Times New Roman', serif;
      --font-body:    'Source Serif 4', Georgia, 'Times New Roman', serif;
      --font-mono:    'IBM Plex Mono', 'Courier New', Courier, monospace;

      --max-w:     1240px;
      --radius:    1px;
      --transition: 140ms ease;

      /* Fluid gutter */
      --gutter: clamp(1rem, 2.5vw, 4rem);

      /* Fluid type scale — a TRUE modular scale.
         Every size is a fixed rem multiple of the root font-size below,
         so all levels scale TOGETHER and their ratios are preserved at
         EVERY viewport width. Levels never cross or converge. */
      --t-xs:      0.72rem;
      --t-sm:      0.84rem;
      --t-base:    1rem;
      --t-md:      1.4rem;   /* card titles, sub-labels */
      --t-lg:      2rem;     /* section headings (Document Archive) */
      --t-caption: 2.55rem;
      --t-title:   3.5rem;   /* hero case title */

      /* Fluid spacing */
      --sp-xs:  clamp(0.25rem, 0.4vw,  0.65rem);
      --sp-sm:  clamp(0.5rem,  0.7vw,  1.1rem);
      --sp-md:  clamp(0.75rem, 1.1vw,  1.75rem);
      --sp-lg:  clamp(1.25rem, 2vw,    3.5rem);
      --sp-xl:  clamp(2rem,    3.5vw,  6rem);
    }

    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    html {
      scroll-behavior: smooth;
      /* Single fluid root drives the entire modular type scale above.
         Gentle range so layout barely shifts, but everything scales as one. */
      font-size: clamp(15px, 0.32vw + 13.4px, 19px);
      scroll-padding-top: clamp(120px, 15vw, 200px);
    }

    body {
      font-family: var(--font-body);
      font-size: var(--t-base);
      line-height: 1.72;
      color: var(--navy);
      background: var(--parch);
      -webkit-font-smoothing: antialiased;
    }

    .skip-nav {
      position: absolute; top: -120%; left: 1rem;
      background: var(--federal); color: #fff;
      padding: 0.5rem 1rem; font-family: var(--font-mono);
      font-size: var(--t-xs); text-decoration: none; z-index: 9999;
    }
    .skip-nav:focus { top: 0; }

    /* ── SCROLL PROGRESS ── */
    #scroll-progress {
      position: fixed; top: 0; left: 0; width: 0%; height: 6px; border-top-left-radius: 12px; border-top-right-radius: 12px;
      background: linear-gradient(90deg, var(--federal) 0%, var(--gilt) 60%, #d4a84b 100%);
      z-index: 9999; pointer-events: none; transition: width 60ms linear;
    }

    /* ── STICKY HEAD ── */
    .sticky-head {
      position: sticky; top: 0; z-index: 500;
      background: var(--navy);
      box-shadow: 0 16px 48px -8px rgba(0,0,0,0.32), 0 4px 12px -4px rgba(0,0,0,0.18);
    }

    /* ── SITE HEADER ── */
    .site-header {
      background: var(--navy); color: var(--parch);
      padding: clamp(2rem, 3.5vw, 6rem) var(--gutter);
      display: flex; flex-direction: column;
      align-items: center; text-align: center;
      border-bottom: 3px solid var(--gilt);
      gap: 1.5rem;
    }
    .site-header__eyebrow {
      font-family: var(--font-mono); font-size: var(--t-xs);
      letter-spacing: 0.16em; text-transform: uppercase;
      color: var(--gilt); opacity: 0.8;
    }
    .site-header__title {
      font-family: var(--font-display);
      /* Hero is a DISPLAY element — it scales on its own vw curve (28px phone → 92px wide),
         independent of the body modular scale, so it shrinks properly on mobile. */
      font-size: clamp(1.75rem, 5.5vw, 3.5rem);
      font-weight: 700; font-style: italic; line-height: 1.1; color: var(--parch);
      max-width: 900px;
    }
    .site-header__title em { font-style: normal; color: var(--gilt); }
    .site-header__sub {
      font-family: var(--font-mono); font-size: var(--t-sm);
      color: rgba(245,243,238,0.45); letter-spacing: 0.05em;
      line-height: 1.7;
      max-width: 600px;
    }

    /* ── SITE NAV ── */
    .site-nav {
      background: var(--parch); border-bottom: 1px solid var(--smoke);
      display: flex; align-items: center; justify-content: center;
      padding: clamp(0.35rem, 0.6vw, 1rem) var(--gutter);
      gap: clamp(0.1rem, 0.3vw, 0.5rem); flex-wrap: wrap;
    }
    .site-nav__link {
      font-family: var(--font-mono); font-size: var(--t-sm);
      letter-spacing: 0.08em; text-transform: uppercase;
      padding: var(--sp-xs) clamp(0.7rem, 1.1vw, 1.75rem);
      color: rgba(15,28,46,0.48); text-decoration: none;
      border-radius: 999px; display: flex; align-items: center;
      gap: var(--sp-xs); transition: color var(--transition), background var(--transition);
      white-space: nowrap;
    }
    .site-nav__link:hover { color: var(--navy); background: var(--mist); }
    .site-nav__link.active { color: var(--navy); background: var(--mist); }
    .site-nav__link svg {
      opacity: 0.55; transition: opacity var(--transition);
      width: clamp(10px, 0.8vw, 16px); height: clamp(10px, 0.8vw, 16px);
    }
    .site-nav__link:hover svg, .site-nav__link.active svg { opacity: 1; }

    /* ── MOBILE BOTTOM TAB BAR ── */
    .mobile-bottom-nav {
      display: none; position: fixed; bottom: 1.25rem; left: 1rem; right: 1rem;
      height: clamp(54px, 7vw, 64px);
      background: rgba(15, 28, 46, 0.5);
      backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
      border: 1px solid rgba(255, 255, 255, 0.14);
      border-radius: 999px;
      box-shadow: 0 6px 26px rgba(0,0,0,0.25);
      z-index: 600; justify-content: space-around; align-items: center; padding: 0 0.5rem;
    }
    .mobile-tab {
      display: flex; flex-direction: column; align-items: center; justify-content: center;
      gap: 2px; text-decoration: none; color: rgba(245,243,238,0.6);
      font-family: var(--font-mono); font-size: clamp(0.42rem, 1.5vw, 0.6rem);
      letter-spacing: 0.08em; text-transform: uppercase;
      padding: 0.35rem 0.5rem; border-radius: 999px;
      transition: background var(--transition), color var(--transition); flex: 1;
    }
    .mobile-tab:hover, .mobile-tab.active { color: #ffffff; background: rgba(181, 151, 60, 0.25); }
    .mobile-tab svg { width: clamp(14px, 4vw, 20px); height: clamp(14px, 4vw, 20px); flex-shrink: 0; }



    /* ── MAIN ── */
    .main-wrapper { max-width: var(--max-w); margin: 0 auto; padding: 0 var(--gutter) var(--sp-xl); }

    .section-rule {
      display: flex; align-items: center; gap: 1rem;
      padding-top: clamp(1.25rem, 2.5vw, 2rem); padding-bottom: var(--sp-xs);
    }
    .section-rule h2 {
      font-family: var(--font-display); font-size: clamp(1.2rem, 3.5vw, 2rem);
      font-weight: 700; white-space: nowrap;
    }
    .section-rule::after { content: ''; flex: 1; height: 1px; background: var(--smoke); }

    /* ── Route-focused rendering ─────────────────────────────────────────────
       On a single document page or the guestbook, the shared homepage archive
       is not the content of that URL — hide it so each page's unique content
       (the document / the ledger) dominates what crawlers and readers see.
       Toggled server-side (middleware body class) and client-side (modal JS). */
    .doc-primary { display: none; }
    body.route-modal .doc-primary { display: block !important; }
    body.route-modal .main-wrapper { display: none !important; }
    body.route-guestbook #gbModalOverlay { display: flex !important; }

    /* /license is its own indexable page: show only the license section so its content is
       unique (not a duplicate of the full one-page site). Nav still works normally. */
    body.route-license .main-wrapper > *:not(#license) { display: none; }

    .doc-primary {
      max-width: 860px;
      margin: 0 auto;
      padding: 2.4rem 1.5rem 1.2rem;
    }
    .doc-primary__crumb {
      font-family: var(--mono, monospace);
      font-size: 0.7rem;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      color: rgba(15,28,46,0.55);
      margin-bottom: 1rem;
    }
    .doc-primary__crumb a { color: inherit; text-decoration: none; border-bottom: 1px solid rgba(15,28,46,0.2); }
    .doc-primary__crumb a:hover { color: var(--ink, #0f1c2e); }
    .doc-primary h1.doc-primary__title {
      font-size: clamp(1.6rem, 3.4vw, 2.35rem);
      line-height: 1.18;
      margin: 0 0 0.6rem;
      text-wrap: balance;
    }
    .doc-primary__meta {
      font-family: var(--mono, monospace);
      font-size: 0.72rem;
      letter-spacing: 0.03em;
      color: rgba(15,28,46,0.6);
      margin-bottom: 1.1rem;
    }
    .doc-primary__meta .sep { opacity: 0.4; margin: 0 0.4rem; }
    .doc-primary__desc {
      font-size: 1.02rem;
      line-height: 1.65;
      color: rgba(15,28,46,0.85);
      margin-bottom: 1.4rem;
    }
    .doc-primary__cta {
      display: inline-flex; align-items: center; gap: 0.4rem;
      font-family: var(--mono, monospace); font-size: 0.72rem; letter-spacing: 0.05em;
      text-transform: uppercase; text-decoration: none;
      padding: 0.6rem 1rem; border: 1px solid var(--ink, #0f1c2e); color: var(--ink, #0f1c2e);
    }
    .doc-primary__cta:hover { background: var(--ink, #0f1c2e); color: #fff; }
    .doc-primary__foot { font-size: 0.78rem; color: rgba(15,28,46,0.55); margin-top: 1rem; }

    /* ── CONTROLS ── */
    .controls {
      display: flex; gap: 0.75rem; align-items: center;
      flex-wrap: wrap; padding: var(--sp-md) 0 var(--sp-sm);
      border-bottom: 1px solid var(--smoke);
    }
    .search-wrap { flex: 1; min-width: 180px; position: relative; }
    .search-input {
      width: 100%; padding: var(--sp-xs) var(--sp-sm) var(--sp-xs) clamp(1.8rem, 2vw, 2.5rem);
      font-family: var(--font-body); font-size: var(--t-base);
      color: var(--navy); background: var(--white);
      border: 1px solid #c2bdae; outline: none;
      transition: border-color var(--transition); border-radius: 0;
    }
    .search-input:focus { border-color: var(--federal); }
    .search-input::placeholder { color: rgba(15,28,46,0.3); font-style: italic; }
    .search-icon {
      position: absolute; left: 0.65rem; top: 50%; transform: translateY(-50%);
      width: clamp(12px, 1vw, 16px); height: clamp(12px, 1vw, 16px);
      color: rgba(15,28,46,0.3); pointer-events: none;
    }
    .filter-group { display: flex; border: 1px solid #c2bdae; overflow: hidden; }
    .filter-btn {
      font-family: var(--font-mono); font-size: var(--t-xs);
      letter-spacing: 0.07em; text-transform: uppercase;
      padding: var(--sp-xs) var(--sp-sm);
      background: var(--white); color: rgba(15,28,46,0.5);
      border: none; border-right: 1px solid var(--smoke);
      cursor: pointer; transition: background var(--transition), color var(--transition);
      display: inline-block; text-decoration: none; text-align: center;
    }
    .filter-btn:last-child { border-right: none; }
    .filter-btn:hover { background: var(--mist); color: var(--navy); }
    .filter-btn.active { background: var(--navy); color: var(--parch); }
    .count-label {
      font-family: var(--font-mono); font-size: var(--t-xs);
      color: rgba(15,28,46,0.35); white-space: nowrap; align-self: center;
    }

    /* ── DOC GRID ── */
    .doc-grid {
      display: grid; grid-template-columns: repeat(auto-fill, minmax(clamp(220px, 18vw, 280px), 1fr));
      gap: 1px; background: var(--smoke); border: 1px solid #c2bdae; margin-top: var(--sp-md);
    }
    .doc-card--full { grid-column: 1 / -1; }
    .doc-card {
      background: var(--white); padding: 1.1rem 1.2rem;
      display: flex; flex-direction: column; gap: 0.35rem;
      border-left: clamp(3px, 0.3vw, 5px) solid transparent;
      cursor: pointer; transition: background var(--transition), border-color var(--transition);
    }
    .doc-card:hover { background: var(--mist); }
    .doc-card[data-party="plaintiff"] { border-left-color: var(--federal); }
    .doc-card[data-party="defendant"] { border-left-color: var(--crimson); }
    .doc-card[data-party="court"]     { border-left-color: var(--gilt); }
    .doc-card.hidden { display: none; }

    .doc-card__header { display: flex; justify-content: space-between; align-items: center; gap: 0.4rem; margin-bottom: 0.5rem; flex-wrap: nowrap; }
    .doc-card__category {
      font-family: var(--font-mono); font-size: 0.56rem;
      letter-spacing: 0.05em; text-transform: uppercase;
      padding: 0.12rem 0.34rem; border: 1px solid #c2bdae;
      color: rgba(15,28,46,0.6); flex-shrink: 1; min-width: 0;
      white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    }
    .doc-card__date { font-family: var(--font-mono); font-size: 0.6rem; color: rgba(15,28,46,0.6); white-space: nowrap; flex-shrink: 0; }
    .doc-card__header .badge-ruling { font-size: 8px; padding: 2px 6px; flex-shrink: 0; }
    .doc-card__title {
      font-family: var(--font-display); font-size: clamp(1rem, 1.5vw, 1.12rem);
      font-weight: 700; line-height: 1.2; color: var(--navy);
      margin-bottom: 0.25rem;
    }
    .doc-card__titlelink { color: inherit; text-decoration: none; }
    .doc-card__titlelink:hover { text-decoration: underline; text-underline-offset: 2px; }
    .doc-card__abbr { font-family: var(--font-mono); font-size: var(--t-xs); color: rgba(15,28,46,0.5); margin-left: 0.35rem; }
    .doc-card:not(.doc-card--full) .doc-card__abbr { display: none; }
    .doc-card:not(.doc-card--full) .doc-card__title { line-height: 1.25; min-height: 2.5em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
    .doc-card__desc { font-size: 0.8rem; line-height: 1.5; color: rgba(15,28,46,0.75); flex: none; }
    .doc-card:not(.doc-card--full) .doc-card__desc { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; min-height: 4.5em; }
    .doc-card__actions {
      display: flex; gap: 0.3rem; align-items: center;
      margin-top: auto; padding-top: 0.6rem;
      border-top: 1px solid var(--mist); flex-wrap: nowrap;
    }
    .doc-card__actions .btn { font-size: 0.55rem; padding: 0.28rem 0.42rem; letter-spacing: 0.02em; gap: 0.2rem; white-space: nowrap; }
    .doc-card__actions .btn svg { display: none; }
    .doc-card__actions .cc0-tag { font-size: 0.5rem; padding: 0.1rem 0.28rem; }

    /* ── DOC COUNTS ── */
    .doc-counts {
      list-style: none; margin-top: var(--sp-xs);
      padding: var(--sp-xs) var(--sp-sm);
      background: var(--parch); border-left: 2px solid var(--federal);
      display: flex; flex-direction: column; gap: 0.2rem;
    }
    .doc-counts li {
      font-family: var(--font-mono); font-size: var(--t-xs);
      color: rgba(15,28,46,0.7); line-height: 1.4;
      padding-left: var(--sp-sm); position: relative;
    }
    .doc-counts li::before {
      content: '\25B8'; position: absolute; left: 0;
      color: var(--federal); font-size: 0.55rem; top: 0.05rem;
    }
    .doc-counts li strong { color: var(--navy); font-weight: 500; }

    /* ── DISPOSED COUNT ──────────────────────────────────────────────
       A disposed count is DEACTIVATED, not cancelled. Nothing is crossed out
       and no mark is added: the row keeps its exact shape and is simply drained
       of ink. Three quiet signals do the work — the marker hollows, the label
       gives up its weight, and the tone recedes — so the state does not rest on
       colour alone while staying softer than a strike. Scoped entirely to
       .count-disposed; the shared .doc-counts renderer is untouched and any
       count without the class keeps default active styling. */
    /* one knob drains the whole row — text, marker, badge fill, badge border and
       badge label recede together, so nothing detaches from the rest. Raise
       --disposed-drain toward 1 to bring the row back. */
    .doc-counts li:has(.count-disposed) { --disposed-drain: 0.34; opacity: var(--disposed-drain); }
    .doc-counts li .count-disposed { color: #6b6b74; }
    .doc-counts li .count-disposed strong { color: #6b6b74; font-weight: 400; }

    /* the same triangle, hollowed — identical size and position to the active
       marker, so the row does not shift; only its density changes */
    .doc-counts li:has(.count-disposed)::before {
      content: '\25B9';
      color: #85858e;
    }

    /* the inert member of the GRANTED / DENIED / PENDING family: hollow dot
       where a live ruling carries a solid one */
    .badge-disposed {
      color: #5c5c66;
      background: rgba(92,92,102,0.07);
      border: 0.5px solid rgba(92,92,102,0.26);
    }
    .badge-disposed::before { content: '\25CB'; font-size: 6px; }
    .doc-counts .badge-ruling {
      font-size: 8px; padding: 1px 7px;
      margin-left: 0.45rem; vertical-align: 0.06rem;
      font-weight: 600;
    }

    /* ── BUTTONS ── */
    .btn {
      font-family: var(--font-mono); font-size: var(--t-xs);
      letter-spacing: 0.07em; text-transform: uppercase;
      padding: var(--sp-xs) var(--sp-sm);
      border: 1px solid #c2bdae; background: transparent; color: var(--navy);
      cursor: pointer; transition: all var(--transition); text-decoration: none;
      display: inline-flex; align-items: center; gap: 0.3rem; border-radius: 0;
    }
    .btn:hover { background: var(--navy); color: var(--parch); border-color: var(--navy); }
    .btn--primary { background: var(--federal); color: #fff; border-color: var(--federal); }
    .btn--primary:hover { background: var(--navy); border-color: var(--navy); }
    .btn--sm { padding: clamp(0.2rem, 0.35vw, 0.45rem) clamp(0.4rem, 0.65vw, 0.75rem); }
    .cc0-tag {
      margin-left: auto; font-family: var(--font-mono); font-size: var(--t-xs);
      letter-spacing: 0.08em; color: var(--gilt); border: 1px solid var(--gilt);
      padding: 0.15rem 0.4rem; opacity: 0.65; cursor: default; flex-shrink: 0;
    }

    /* ── EMPTY STATE ── */
    .empty-state { grid-column: 1/-1; padding: var(--sp-xl) var(--sp-lg); text-align: center; background: var(--white); }
    .empty-state p { font-family: var(--font-mono); font-size: var(--t-sm); color: rgba(15,28,46,0.35); }

    /* ── MODAL ── */
    .modal-overlay { display: none; position: fixed; inset: 0; background: rgba(6,11,19,0.86); z-index: 1000; padding: 1.5rem; }
    .modal-overlay.open { display: flex; flex-direction: column; }
    .modal {
      background: var(--parch); border: 1px solid #c2bdae;
      display: flex; flex-direction: column; flex: 1;
      max-width: 1060px; margin: 0 auto; width: 100%; overflow: hidden;
    }
    @media (max-width: 640px) {
      .modal-overlay { padding: 0; }
      .modal { max-width: 100%; border: none; }
    }
    .modal__bar {
      background: var(--navy); color: var(--parch); padding: var(--sp-sm) var(--sp-md);
      display: flex; justify-content: space-between; align-items: flex-start;
      gap: 1rem; border-bottom: 2px solid var(--gilt); flex-shrink: 0;
    }
    .modal__title { font-family: var(--font-display); font-size: clamp(1.1rem, 2.2vw, 1.4rem); font-style: italic; line-height: 1.2; }
    .modal__submeta { font-family: var(--font-mono); font-size: var(--t-xs); color: rgba(245,243,238,0.4); margin-top: 0.2rem; }
    .modal__controls { display: flex; gap: 0.4rem; flex-shrink: 0; }
    .modal__close {
      background: none; border: 1px solid rgba(245,243,238,0.18); color: rgba(245,243,238,0.6);
      font-family: var(--font-mono); font-size: var(--t-xs); padding: 0.3rem 0.6rem;
      cursor: pointer; transition: all var(--transition);
    }
    .modal__close:hover { background: var(--crimson); border-color: var(--crimson); color: #fff; }
    .modal__toolbar {
      background: var(--white); border-bottom: 1px solid var(--smoke);
      padding: var(--sp-sm) var(--sp-lg);
      display: flex; gap: 2rem; align-items: center; justify-content: space-between; flex-shrink: 0; flex-wrap: nowrap;
    }
    .toolbar-center {
      display: flex; gap: 0.6rem; align-items: center; justify-content: center; flex: 1;
    }
    .toolbar-right {
      display: flex; gap: 1rem; align-items: center; justify-content: flex-end; flex-shrink: 0;
    }
    .page-info { font-family: var(--font-mono); font-size: var(--t-xs); color: rgba(15,28,46,0.5); min-width: 80px; text-align: center; letter-spacing: 0.05em; }
    .toolbar-sep { width: 1px; height: 24px; background: var(--smoke); margin: 0; }
    .toolbar-cc0 { font-family: var(--font-mono); font-size: var(--t-xs); color: var(--gilt); letter-spacing: 0.07em; border: 1px solid var(--gilt); padding: 0.2rem 0.5rem; opacity: 0.8; }
    .modal__body { display: flex; flex: 1; overflow: hidden; gap: 0; }
    .modal__viewer { flex: 1; overflow: auto; background: #4a4e54; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; padding: var(--sp-lg) 0; gap: 2rem; min-width: 0; }
    .modal__comments-panel { width: 320px; flex-shrink: 0; background: var(--parch); border-left: 2px solid #d4cfc4; display: flex; flex-direction: column; overflow: hidden; }
    .modal__comments-panel.hidden { display: none; }
    .comments-panel__head { background: var(--white); border-bottom: 1px solid var(--smoke); padding: var(--sp-xs) var(--sp-md); display: flex; justify-content: space-between; align-items: center; flex-shrink: 0; }
    .comments-panel__title { font-family: var(--font-mono); font-size: var(--t-xs); letter-spacing: 0.1em; text-transform: uppercase; color: var(--navy); }
    .comments-panel__body { flex: 1; overflow-y: auto; padding: var(--sp-md); }
    .comments-setup-note { font-family: var(--font-mono); font-size: var(--t-xs); line-height: 1.7; color: rgba(15,28,46,0.45); padding: var(--sp-md); background: var(--mist); border: 1px solid #c2bdae; margin-bottom: var(--sp-md); }
    .comments-setup-note a { color: var(--federal); }
    .giscus, .giscus-frame { width: 100% !important; }

    #pdf-canvas { max-width: 100%; max-height: 100%; display: none; object-fit: contain; }
    .viewer-placeholder { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; padding: 4rem 2rem; text-align: center; color: rgba(255,255,255,0.35); }
    .viewer-placeholder p { font-family: var(--font-mono); font-size: var(--t-sm); line-height: 1.6; }

    /* ── DOCKET WATCH ── */
    .docket-watch { background: var(--white); border: 1px solid #c2bdae; border-top: 3px solid var(--federal); margin-top: var(--sp-md); }
    .docket-watch__head { display: flex; justify-content: space-between; align-items: center; padding: var(--sp-sm) var(--sp-md); border-bottom: 1px solid var(--smoke); gap: 1rem; flex-wrap: wrap; }
    .docket-watch__title { font-family: var(--font-mono); font-size: var(--t-sm); letter-spacing: 0.1em; text-transform: uppercase; color: var(--navy); font-weight: 500; }
    .docket-watch__meta { font-family: var(--font-mono); font-size: var(--t-xs); color: rgba(15,28,46,0.5); display: flex; gap: var(--sp-md); align-items: center; }
    .sync-dot { display: inline-block; width: clamp(5px, 0.5vw, 8px); height: clamp(5px, 0.5vw, 8px); border-radius: 50%; background: #1a5c38; margin-right: 0.35rem; vertical-align: middle; }
    .sync-dot.stale { background: #16a34a; animation: sync-dot-pulse 2.2s ease-in-out infinite; }
    @keyframes sync-dot-pulse {
      0%   { box-shadow: 0 0 0 0   rgba(22, 163, 74, 0.45); }
      60%  { box-shadow: 0 0 0 9px rgba(22, 163, 74, 0); }
      100% { box-shadow: 0 0 0 0   rgba(22, 163, 74, 0); }
    }
    @media (prefers-reduced-motion: reduce) { .sync-dot.stale { animation: none; } }
    .docket-table-wrap { overflow-x: auto; }
    .docket-entries { width: 100%; border-collapse: collapse; font-family: var(--font-body); font-size: var(--t-base); }
    .docket-entries th { font-family: var(--font-mono); font-size: var(--t-xs); letter-spacing: 0.1em; text-transform: uppercase; color: rgba(15,28,46,0.45); padding: var(--sp-xs) var(--sp-md); border-bottom: 1px solid var(--smoke); text-align: left; white-space: nowrap; background: var(--parch); }
    .docket-entries td { padding: var(--sp-xs) var(--sp-md); border-bottom: 1px solid var(--mist); vertical-align: top; line-height: 1.45; }
    .docket-entries tr:last-child td { border-bottom: none; }
    .docket-entries tr:hover td { background: var(--mist); }
    .docket-entry__date { font-family: var(--font-mono); font-size: var(--t-xs); white-space: nowrap; color: rgba(15,28,46,0.55); }
    .docket-entry__type { font-family: var(--font-mono); font-size: var(--t-xs); letter-spacing: 0.06em; text-transform: uppercase; padding: 0.15rem 0.4rem; border: 1px solid #c2bdae; color: rgba(15,28,46,0.5); white-space: nowrap; }
    .docket-entry__type.plaintiff { color: var(--federal); border-color: var(--federal); background: rgba(30,58,110,0.05); }
    .docket-entry__type.defendant { color: var(--crimson); border-color: var(--crimson); background: rgba(107,0,0,0.05); }
    .docket-entry__type.court     { color: #5a4500; border-color: var(--gilt); background: rgba(181,151,60,0.07); }
    .docket-watch__footer { padding: var(--sp-xs) var(--sp-md); border-top: 1px solid var(--smoke); font-family: var(--font-mono); font-size: var(--t-xs); color: rgba(15,28,46,0.35); display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; }
    .docket-watch__footer a { color: var(--federal); text-decoration: none; }

    /* ── SUBSCRIBE ── */
    .subscribe-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(clamp(240px, 25vw, 340px), 1fr)); gap: 1px; background: var(--smoke); border: 1px solid #c2bdae; margin-top: var(--sp-md); }
    .subscribe-card { background: var(--white); padding: var(--sp-lg) var(--sp-md) var(--sp-md); display: flex; flex-direction: column; gap: var(--sp-sm); }
    .subscribe-card__icon { color: var(--federal); }
    .subscribe-card__icon svg { width: clamp(18px, 1.5vw, 28px); height: clamp(18px, 1.5vw, 28px); }
    .subscribe-card__label { font-family: var(--font-display); font-size: clamp(1.1rem, 2.2vw, 1.4rem); font-weight: 700; color: var(--navy); }
    .subscribe-card__desc { font-size: var(--t-base); line-height: 1.6; color: rgba(15,28,46,0.65); flex: 1; }
    .subscribe-card__cost { font-family: var(--font-mono); font-size: var(--t-xs); letter-spacing: 0.06em; color: var(--gilt); text-transform: uppercase; padding: 0.2rem 0; border-top: 1px solid var(--mist); }
    .subscribe-card__btn { align-self: flex-start; }
    .subscribe-email-form { display: flex; gap: var(--sp-xs); }
    .subscribe-email-input { flex: 1; padding: var(--sp-xs) var(--sp-sm); font-family: var(--font-body); font-size: var(--t-base); color: var(--navy); background: var(--parch); border: 1px solid #c2bdae; outline: none; border-radius: 0; min-width: 0; }
    .subscribe-email-input:focus { border-color: var(--federal); }
    .subscribe-email-note { font-family: var(--font-mono); font-size: var(--t-xs); color: var(--gilt); min-height: 1rem; }

    /* ── LICENSE ── */
    .license-section { background: var(--white); border: 1px solid #c2bdae; border-left: 4px solid var(--gilt); padding: var(--sp-lg) var(--sp-xl); margin-top: var(--sp-md); }
    .license-header { display: flex; align-items: flex-start; gap: var(--sp-lg); margin-bottom: var(--sp-lg); padding-bottom: var(--sp-lg); border-bottom: 1px solid var(--smoke); }
    .cc0-badge { flex-shrink: 0; width: 88px; height: 60px; background: var(--navy); border: 2px solid var(--gilt); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 4px; overflow: hidden; }
    .cc0-badge__mark { font-family: var(--font-display); font-size: 1.68rem; font-weight: 700; color: var(--gilt); line-height: 1; flex-shrink: 0; }
    .cc0-badge__label { font-family: var(--font-mono); font-size: 0.42rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gilt); opacity: 0.8; white-space: nowrap; flex-shrink: 0; }
    .license-section h2 { font-family: var(--font-display); font-size: clamp(1.2rem, 3.5vw, 2rem); font-weight: 700; line-height: 1.3; }
    .license-section h3 { font-family: var(--font-display); font-size: clamp(1.1rem, 2.2vw, 1.4rem); font-weight: 700; margin: var(--sp-md) 0 var(--sp-xs); }
    .license-section p, .license-section li { font-size: var(--t-base); line-height: 1.7; color: rgba(15,28,46,0.72); }
    .license-deed { background: var(--parch); border: 1px solid #c2bdae; padding: var(--sp-md) var(--sp-lg); margin-top: var(--sp-sm); font-size: var(--t-sm); line-height: 1.75; color: rgba(15,28,46,0.65); max-height: clamp(280px, 30vw, 400px); overflow-y: auto; }
    .license-deed p { margin-bottom: 0.85rem; }
    .license-deed p:last-child { margin-bottom: 0; }
    .license-link { font-family: var(--font-mono); font-size: var(--t-sm); color: var(--federal); word-break: break-all; }

    /* ── TOAST ── */
    .toast { position: fixed; bottom: 2rem; left: 50%; transform: translateX(-50%) translateY(120px); background: var(--navy); color: var(--parch); font-family: var(--font-mono); font-size: var(--t-sm); letter-spacing: 0.06em; padding: var(--sp-xs) var(--sp-md); z-index: 2000; border-top: 2px solid var(--gilt); transition: transform 280ms cubic-bezier(0.16,1,0.3,1); pointer-events: none; }
    .toast.visible { transform: translateX(-50%) translateY(0); }

    /* ── FOOTER ── */
    .site-footer { background: var(--navy); color: rgba(245,243,238,0.42); padding: var(--sp-xl) var(--gutter) var(--sp-lg); border-top: 3px solid var(--gilt); font-family: var(--font-mono); font-size: var(--t-sm); line-height: 1.8; }
    .footer-grid { max-width: var(--max-w); margin: 0 auto; display: flex; flex-wrap: wrap; justify-content: center; gap: var(--sp-xl) var(--sp-lg); }
    .footer-col { text-align: center; min-width: clamp(140px, 16vw, 200px); }
    .footer-col h4 { color: var(--gilt); letter-spacing: 0.14em; text-transform: uppercase; font-size: var(--t-xs); margin-bottom: var(--sp-sm); }
    .footer-col a { color: rgba(245,243,238,0.38); text-decoration: none; display: block; transition: color var(--transition); }
    .footer-col a:hover { color: var(--gilt); }
    .footer-bottom { max-width: var(--max-w); margin: var(--sp-lg) auto 0; padding-top: var(--sp-md); border-top: 1px solid rgba(245,243,238,0.08); display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--sp-xs); font-size: var(--t-xs); color: rgba(245,243,238,0.25); }

    /* ── SECTION SCROLL OFFSET ── */
    #documents, #docket-watch, #subscribe, #license { scroll-margin-top: clamp(120px, 15vw, 200px); }

    /* ══ BREAKING BAR ══ isolated addition. Sits above .sticky-head in normal
       flow with no z-index, so the pinned header (z-index 500) scrolls over it. */
    .breaking-bar {
      background: var(--crimson);
      color: #FFFFFF;
    }
    .breaking-bar[hidden] { display: none; }
    .breaking-bar__inner {
      max-width: var(--max-w);
      margin: 0 auto;
      padding: clamp(0.85rem, 1.5vw, 1.45rem) var(--gutter);
      display: flex;
      align-items: flex-start;
      gap: clamp(0.9rem, 2vw, 2.5rem);
    }
    .breaking-bar__link {
      flex: 1 1 auto;
      min-width: 0;
      color: #FFFFFF;
      text-decoration: none;
      font-family: var(--font-display);
      font-weight: 700;
      font-size: clamp(1.02rem, 1.9vw, 1.55rem);
      line-height: 1.28;
      letter-spacing: 0.005em;
    }
    .breaking-bar__link:hover .breaking-bar__headline,
    .breaking-bar__link:focus-visible .breaking-bar__headline {
      text-decoration: underline;
      text-decoration-thickness: 2px;
      text-underline-offset: 3px;
    }
    .breaking-bar__link:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 3px; }
    .breaking-bar__kicker {
      text-transform: uppercase;
      letter-spacing: 0.04em;
    }
    .breaking-bar__link em { font-style: italic; }
    .breaking-bar__go {
      display: inline-block;
      width: 0.74em; height: 0.74em;
      margin-left: 0.34em;
      vertical-align: baseline;
      flex: none;
    }
    .breaking-bar__close {
      flex: none;
      margin: -0.15em -0.35em 0 0;
      padding: 0.35rem;
      background: none;
      border: 0;
      border-radius: var(--radius);
      color: #FFFFFF;
      cursor: pointer;
      line-height: 0;
      opacity: 0.82;
      transition: opacity var(--transition);
    }
    .breaking-bar__close:hover { opacity: 1; }
    .breaking-bar__close:focus-visible { outline: 2px solid #FFFFFF; outline-offset: 2px; opacity: 1; }
    .breaking-bar__close svg {
      width: clamp(20px, 2.4vw, 26px);
      height: clamp(20px, 2.4vw, 26px);
      stroke: currentColor;
      stroke-width: 2.2;
      stroke-linecap: round;
      fill: none;
    }
    @media (max-width: 640px) {
      .breaking-bar__inner { padding-top: 0.8rem; padding-bottom: 0.8rem; gap: 0.75rem; }
      .breaking-bar__link { font-size: 1rem; line-height: 1.32; }
    }
    @media (prefers-reduced-motion: reduce) {
      .breaking-bar__close { transition: none; }
    }

    /* ── PRINT ── */
    @media print {
      .breaking-bar, .sticky-head, .controls, .modal-overlay, .toast, .doc-card__actions, .site-footer, .mobile-bottom-nav { display: none !important; }
      body { background: #fff; color: #000; }
      .doc-card { break-inside: avoid; border: 1px solid #ccc; margin-bottom: 0.75rem; }
      .doc-grid { display: block; background: none; border: none; }
    }

    /* ── RESPONSIVE ── */
    @media (max-width: 768px) {
      .site-header { flex-direction: column; align-items: center; text-align: center; gap: var(--sp-xs); }
      .site-header__sub { text-align: center; }
      .doc-grid { grid-template-columns: 1fr; }
      .modal-overlay { padding: 0.5rem; }
      .modal__bar { flex-direction: column; gap: 0.75rem; }
      .modal__body { flex-direction: column; }
      .modal__comments-panel { width: 100%; border-left: none; border-top: 1px solid var(--smoke); max-height: 280px; }
      .license-section { padding: var(--sp-md); }
      .license-header { flex-direction: column; gap: var(--sp-sm); }
      .site-nav { display: none; }
      .mobile-bottom-nav { display: flex; }
      body { padding-bottom: clamp(54px, 7vw, 70px); }
    }

    @media (max-width: 540px) {
      .docket-table, .docket-table tr, .docket-table td { display: block; width: 100%; }
      .docket-table td { border-right: none; padding: 0.85rem 1rem; text-align: left; }
      .d-value { font-size: 1rem; }
      .docket-hero { padding: 1.25rem 1rem 1.5rem; }
      .docket-hero__header { font-size: 1rem; margin-bottom: 1.25rem; }
    }

    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
    }

    :focus-visible { outline: 2px solid var(--gilt); outline-offset: 2px; }

    .license-deed::-webkit-scrollbar { width: 6px; }
    .license-deed::-webkit-scrollbar-track { background: var(--parch); }
    .license-deed::-webkit-scrollbar-thumb { background: var(--smoke); }

    /* Ruling badges — Granted / Denied / Pending */
    .badge-ruling {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      font-size: 9.5px;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      border-radius: 999px;
      padding: 3px 10px;
      flex-shrink: 0;
    }
    .badge-granted {
      color: #15803d;
      background: rgba(21,128,61,0.10);
      border: 0.5px solid rgba(21,128,61,0.35);
    }
    .badge-denied {
      color: #b91c1c;
      background: rgba(185,28,28,0.08);
      border: 0.5px solid rgba(185,28,28,0.32);
    }
    .badge-pending {
      color: #854d0e;
      background: rgba(234,179,8,0.18);
      border: 0.5px solid rgba(234,179,8,0.7);
      box-shadow: 0 0 6px rgba(234,179,8,0.35);
    }
    .badge-granted::before,
    .badge-denied::before,
    .badge-pending::before { content: '●'; font-size: 6px; }

    /* ── TOC Panel ──────────────────────────────────────────────── */
    .modal__toc-panel {
      width: 280px;
      flex-shrink: 0;
      background: var(--parch, #f8f5ee);
      border-right: 1px solid var(--smoke, rgba(0,0,0,0.1));
      display: flex;
      flex-direction: column;
      overflow: hidden;
      transition: width 0.2s ease;
    }
    .modal__toc-panel.hidden { display: none; }
    .toc-panel__head {
      background: #0f1c2e;
      border-bottom: 1px solid rgba(181,151,60,0.4);
      padding: 10px 14px;
      display: flex;
      justify-content: space-between;
      align-items: center;
      flex-shrink: 0;
    }
    .toc-panel__title {
      font-size: 11px;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: #b5973c;
    }
    .toc-panel__close {
      background: none;
      border: none;
      color: rgba(255,255,255,0.6);
      cursor: pointer;
      font-size: 16px;
      line-height: 1;
      padding: 2px 4px;
      transition: color 0.15s;
      flex-shrink: 0;
    }
    .toc-panel__close:hover { color: #fff; background: rgba(0,0,0,0.15); }
    .toc-panel__body {
      flex: 1;
      overflow-y: auto;
      padding: 1rem 0;
    }
    .toc-entry {
      display: block;
      width: 100%;
      background: none;
      border: none;
      text-align: left;
      padding: 0.6rem 1.2rem;
      cursor: pointer;
      padding: 6px 14px;
      font-size: 12.5px;
      line-height: 1.4;
      color: #1e293b;
      border-left: 2px solid transparent;
      transition: background 0.12s, border-color 0.12s, color 0.12s;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    .toc-entry:hover {
      background: rgba(181,151,60,0.1);
      border-left-color: #b5973c;
      color: #0f1c2e;
    }
    .toc-entry:focus {
      outline: 2px solid #b5973c;
      outline-offset: -2px;
    }
    .toc-entry--l1 { padding-left: 14px; font-weight: 600; font-size: 13px; }
    .toc-entry--l2 { padding-left: 26px; font-size: 12px; }
    .toc-entry--l3 { padding-left: 38px; font-size: 11.5px; color: #475569; }
    .toc-entry--l4 { padding-left: 50px; font-size: 11px; color: #64748b; }
    .toc-entry--active {
      background: rgba(181,151,60,0.15);
      border-left-color: #b5973c;
      color: #0f1c2e;
      font-weight: 700;
    }

    /* ============ GUESTBOOK (ledger) ============ */
    .gb-volume {
      --gb-navy2:#16253a; --gb-page:#f4efe4; --gb-page2:#ece4d3;
      --gb-gilt-soft:#d8c795; --gb-gilt-deep:#8a6f22; --gb-crimson2:#8a0f0f;
      --gb-ink:#1c2430; --gb-ink-soft:rgba(28,36,48,0.62); --gb-ink-faint:rgba(28,36,48,0.42);
      --gb-rule:#ddd3ba; --gb-margin-red:#a8402f;
      margin: auto; width: 100%; max-width: 1000px; max-height: 100%;
      background: var(--navy); border: 1px solid #050a13;
      box-shadow: 0 40px 90px -30px rgba(0,0,0,0.75), 0 0 0 1px rgba(181,151,60,0.18);
      display: flex; flex-direction: column; overflow: hidden;
    }
    .gb-vbar {
      position: relative; display: flex; align-items: flex-start; justify-content: center;
      gap: 1rem; padding: 1.05rem 1.4rem 1.1rem; border-bottom: 2px solid var(--gilt);
      background: linear-gradient(180deg, var(--gb-navy2), var(--navy)); flex-shrink: 0;
    }
    .gb-vident { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 0.28rem; }
    .gb-veyebrow { font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--gb-gilt-soft); }
    .gb-vtitle { font-family: var(--font-display); font-style: italic; font-size: clamp(1.35rem, 3.4vw, 1.8rem); line-height: 1; color: var(--parch); }
    .gb-vsubmeta { font-family: var(--font-mono); font-size: 0.64rem; letter-spacing: 0.04em; color: rgba(245,243,238,0.5); }
    .gb-vclose {
      position: absolute; top: 1.05rem; right: 1.4rem; appearance: none; background: transparent;
      border: 1px solid rgba(245,243,238,0.22); color: rgba(245,243,238,0.68);
      font-family: var(--font-mono); font-size: 0.64rem; letter-spacing: 0.06em; padding: 0.45rem 0.7rem;
      cursor: pointer; flex-shrink: 0; transition: all 150ms ease;
    }
    .gb-vclose:hover { background: var(--crimson); border-color: var(--crimson); color: #fff; }
    .gb-vclose:focus-visible { outline: 2px solid var(--gb-gilt-soft); outline-offset: 2px; }

    .gb-spread { display: flex; flex: 1; min-height: 0; background: var(--navy); padding: 0.55rem; position: relative; }
    .gb-spread::before {
      content: ""; position: absolute; inset: 0.4rem; z-index: 0;
      background: linear-gradient(90deg, var(--gb-gilt-deep), var(--gb-gilt-soft) 6%, var(--gb-gilt-soft) 94%, var(--gb-gilt-deep));
    }
    .gb-leaf { position: relative; z-index: 1; flex: 1; min-width: 0; overflow-y: auto; background: var(--gb-page); }
    .gb-leaf::-webkit-scrollbar { width: 9px; }
    .gb-leaf::-webkit-scrollbar-thumb { background: rgba(28,36,48,0.2); border-radius: 6px; }
    .gb-leaf--sign { background: linear-gradient(270deg, rgba(15,28,46,0.10), transparent 14%), var(--gb-page); padding: 1.5rem 1.6rem 1.7rem; }
    .gb-leaf--register { background: linear-gradient(90deg, rgba(15,28,46,0.12), transparent 14%), linear-gradient(180deg, var(--gb-page), var(--gb-page2)), var(--gb-page); padding: 1.5rem 1.6rem 1.7rem; }
    .gb-spine { position: relative; z-index: 2; width: 2px; flex-shrink: 0; background: linear-gradient(180deg, transparent, rgba(15,28,46,0.5), transparent); box-shadow: 0 0 10px 3px rgba(15,28,46,0.28); }

    .gb-leaf-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding-bottom: 0.7rem; margin-bottom: 1rem; border-bottom: 1px solid var(--gb-rule); }
    .gb-leaf-title { font-family: var(--font-display); font-size: 1.28rem; font-weight: 600; color: var(--navy); line-height: 1; }
    .gb-leaf-meta { font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gb-ink-faint); }

    .gb-intro { font-family: var(--font-display); font-style: italic; font-size: 1.02rem; line-height: 1.45; color: var(--gb-ink-soft); margin: 0 0 1.15rem; }
    .gb-iam { display: flex; align-items: center; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.55rem; }
    .gb-iam-label { font-family: var(--font-display); font-style: italic; font-size: 1.05rem; color: var(--navy); margin-right: 0.15rem; }
    .gb-stamp {
      appearance: none; border: 1px solid var(--gb-rule); background: rgba(255,255,255,0.4); color: var(--navy);
      font-family: var(--font-mono); font-size: 0.64rem; letter-spacing: 0.1em; text-transform: uppercase;
      padding: 0.42rem 0.7rem; cursor: pointer; transition: all 130ms ease;
    }
    .gb-stamp:hover { border-color: var(--gilt); background: rgba(255,255,255,0.8); }
    .gb-stamp:focus-visible { outline: 2px solid var(--federal); outline-offset: 2px; }
    .gb-stamp[aria-pressed="true"] { background: var(--navy); border-color: var(--navy); color: var(--gb-gilt-soft); box-shadow: inset 0 1px 3px rgba(0,0,0,0.4); }

    .gb-hint { font-size: 0.76rem; line-height: 1.5; color: var(--gb-ink-faint); margin: 0 0 1.1rem; max-width: 40ch; }
    .gb-form { display: flex; flex-direction: column; gap: 0.85rem; }
    .gb-field { display: flex; flex-direction: column; gap: 0.12rem; }
    .gb-field > label { font-family: var(--font-mono); font-size: 0.58rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--gb-ink-faint); }
    .gb-field > label .gb-opt { text-transform: none; letter-spacing: 0.02em; opacity: 0.8; }
    .gb-ruled {
      border: none; border-bottom: 1px solid var(--gb-rule); background: transparent;
      font-family: var(--font-display); font-style: italic; font-size: 1.12rem; color: var(--navy);
      padding: 0.2rem 0.1rem 0.35rem; width: 100%; transition: border-color 140ms ease;
    }
    .gb-ruled::placeholder { color: rgba(28,36,48,0.32); }
    .gb-ruled:focus { outline: none; border-bottom-color: var(--federal); box-shadow: 0 1px 0 0 var(--federal); }
    textarea.gb-ruled { font-style: normal; font-size: 0.92rem; line-height: 1.55; resize: none; min-height: 2.1rem; }
    .gb-sub { display: none; flex-direction: column; gap: 0.85rem; }
    .gb-sub.gb-open { display: flex; }
    .gb-counter { align-self: flex-end; font-family: var(--font-mono); font-size: 0.58rem; color: var(--gb-ink-faint); margin-top: -0.35rem; }
    .gb-ac { position: relative; }
    .gb-ac-list { position: absolute; left: 0; right: 0; top: calc(100% + 2px); margin: 0; padding: 0.25rem 0; list-style: none; background: var(--white); border: 1px solid var(--gb-rule); box-shadow: 0 10px 24px -10px rgba(15,28,46,0.4); z-index: 40; max-height: 210px; overflow-y: auto; }
    .gb-ac-list[hidden] { display: none; }
    .gb-ac-item { padding: 0.4rem 0.75rem; font-family: var(--font-body); font-size: 0.9rem; color: var(--navy); cursor: pointer; }
    .gb-ac-item.gb-ac-active, .gb-ac-item:hover { background: var(--mist); }
    .gb-error { margin: 0; min-height: 1.05em; font-size: 0.78rem; color: var(--gb-crimson2); font-style: italic; }
    .gb-sign-row { display: flex; align-items: center; gap: 0.9rem; flex-wrap: wrap; margin-top: 0.25rem; }
    .gb-seal {
      appearance: none; border: none; cursor: pointer; position: relative;
      font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase; color: #f3e2c4;
      padding: 0.85rem 1.35rem; border-radius: 50% 48% 52% 50% / 50% 52% 48% 50%;
      background: radial-gradient(circle at 38% 32%, var(--gb-crimson2), var(--crimson) 62%, #4a0000 100%);
      box-shadow: inset 0 1px 2px rgba(255,255,255,0.25), inset 0 -3px 6px rgba(0,0,0,0.45), 0 3px 8px -2px rgba(74,0,0,0.6);
      text-shadow: 0 1px 1px rgba(0,0,0,0.4); transition: transform 120ms ease, box-shadow 120ms ease;
    }
    .gb-seal::after { content: ""; position: absolute; inset: 4px; border-radius: inherit; border: 1px dashed rgba(243,226,196,0.35); pointer-events: none; }
    .gb-seal:hover { transform: translateY(-1px); }
    .gb-seal:active { transform: translateY(1px); box-shadow: inset 0 1px 2px rgba(0,0,0,0.5); }
    .gb-seal:focus-visible { outline: 2px solid var(--gb-gilt-soft); outline-offset: 3px; }
    .gb-seal[disabled] { opacity: 0.6; cursor: default; }
    .gb-seal.gb-stamping { animation: gbSealPress 420ms cubic-bezier(.2,.8,.3,1); }
    @keyframes gbSealPress { 0% { transform: scale(1); } 32% { transform: scale(0.82) rotate(-4deg); } 58% { transform: scale(1.05) rotate(1.5deg); } 100% { transform: scale(1); } }
    .gb-seal-note { font-size: 0.72rem; color: var(--gb-ink-faint); line-height: 1.4; }
    .gb-cc0 { font-family: var(--font-mono); font-size: 0.66rem; letter-spacing: 0.02em; }

    .gb-confirm { display: flex; flex-direction: column; align-items: flex-start; gap: 0.75rem; padding: 1.4rem 0 0.6rem; animation: gbConfirmIn 420ms ease; }
    .gb-confirm[hidden] { display: none; }
    @keyframes gbConfirmIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
    .gb-confirm-badge {
      width: 52px; height: 52px; display: flex; align-items: center; justify-content: center; color: #f3e2c4; font-size: 1.5rem;
      border-radius: 50% 48% 52% 50% / 50% 52% 48% 50%;
      background: radial-gradient(circle at 38% 32%, var(--gb-crimson2), var(--crimson) 62%, #4a0000 100%);
      box-shadow: inset 0 1px 2px rgba(255,255,255,0.25), inset 0 -3px 6px rgba(0,0,0,0.45), 0 3px 8px -2px rgba(74,0,0,0.6);
    }
    .gb-confirm-title { font-family: var(--font-display); font-style: italic; font-size: 1.35rem; color: var(--navy); margin: 0; line-height: 1.15; }
    .gb-confirm-body { font-size: 0.9rem; line-height: 1.5; color: var(--gb-ink-soft); margin: 0; max-width: 34ch; }
    .gb-confirm-again {
      align-self: flex-start; margin-top: 0.35rem; appearance: none; background: transparent; border: none; padding: 0 0 1px; cursor: pointer;
      font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--federal); border-bottom: 1px solid rgba(30,58,110,0.4);
    }
    .gb-confirm-again:hover { color: var(--navy); border-bottom-color: var(--navy); }
    .gb-confirm-again:focus-visible { outline: 2px solid var(--federal); outline-offset: 3px; }

    .gb-register-body { position: relative; padding-left: 1.15rem; }
    .gb-register-body::before { content: ""; position: absolute; left: 0.35rem; top: 0; bottom: 0; width: 1px; background: var(--gb-margin-red); opacity: 0.5; }
    .gb-entries { display: flex; flex-direction: column; }
    .gb-entry {
      display: grid; grid-template-columns: 1fr auto;
      grid-template-areas: "sig date" "aff aff" "remark remark";
      gap: 0.12rem 0.8rem; padding: 0.75rem 0 0.7rem; border-bottom: 1px solid var(--gb-rule);
    }
    .gb-entry:first-child { padding-top: 0.1rem; }
    .gb-entry-sig { grid-area: sig; font-family: var(--font-display); font-style: italic; font-size: 1.22rem; line-height: 1.1; color: var(--navy); position: relative; display: inline-block; }
    .gb-entry-sig.gb-anon { color: var(--gb-ink-faint); font-size: 1.06rem; }
    .gb-flourish { position: absolute; left: 0.1rem; right: 0.6rem; bottom: -0.16em; height: 6px; pointer-events: none; }
    .gb-flourish svg { width: 100%; height: 100%; overflow: visible; }
    .gb-flourish path { fill: none; stroke: var(--gilt); stroke-width: 1.1; stroke-linecap: round; opacity: 0.75; }
    .gb-entry-date { grid-area: date; font-family: var(--font-mono); font-size: 0.6rem; letter-spacing: 0.03em; color: var(--gb-ink-faint); white-space: nowrap; padding-top: 0.35rem; font-variant-numeric: tabular-nums; }
    .gb-entry-aff { grid-area: aff; font-size: 0.82rem; color: var(--gb-ink-soft); line-height: 1.4; display: flex; align-items: baseline; gap: 0.5rem; flex-wrap: wrap; }
    .gb-chip { font-family: var(--font-mono); font-size: 0.54rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--federal); border: 1px solid rgba(30,58,110,0.3); padding: 0.1rem 0.32rem; border-radius: 2px; flex-shrink: 0; }
    .gb-chip.gb-anon { color: var(--gb-ink-faint); border-color: var(--gb-rule); }
    .gb-entry-remark { grid-area: remark; font-family: var(--font-display); font-style: italic; font-size: 0.95rem; color: var(--gb-ink-soft); line-height: 1.4; margin-top: 0.28rem; padding-left: 0.7rem; border-left: 2px solid var(--gb-gilt-soft); }
    .gb-entry.gb-fresh { animation: gbWriteOn 600ms ease; }
    @keyframes gbWriteOn { 0% { opacity: 0; transform: translateY(-6px); background: rgba(181,151,60,0.14); } 100% { opacity: 1; transform: none; background: transparent; } }
    .gb-empty { font-family: var(--font-display); font-style: italic; color: var(--gb-ink-faint); font-size: 0.95rem; }

    @media (max-width: 760px) {
      .gb-spread { flex-direction: column; padding: 0.4rem; }
      .gb-spread::before { inset: 0.28rem; }
      .gb-spine { width: auto; height: 2px; background: linear-gradient(90deg, transparent, rgba(15,28,46,0.5), transparent); }
      .gb-leaf { overflow-y: visible; }
      .gb-leaf--register { background: linear-gradient(180deg, rgba(15,28,46,0.10), transparent 8%), var(--gb-page); }
    }
    @media (prefers-reduced-motion: reduce) {
      .gb-seal.gb-stamping, .gb-entry.gb-fresh, .gb-confirm { animation: none !important; }
    }

    /* Play button styling */
    .modal__play-btn {
      background: none;
      border: 1px solid #999;
      padding: 4px 8px;
      cursor: pointer;
      font-size: 14px;
      border-radius: 3px;
      margin: 0 4px;
    }

    .modal__play-btn:hover {
      background-color: #f0f0f0;
    }

    .modal__play-btn:active {
      background-color: #e0e0e0;
    }

    /* ── HAMBURGER MENU ── */
    .toolbar-spacer {
      flex: 1;
    }

    .toolbar-menu-btn {
      background: none;
      border: 1px solid #999;
      padding: 4px 8px;
      cursor: pointer;
      font-size: 18px;
      border-radius: 3px;
      display: none;
      color: var(--navy);
      transition: background-color var(--transition), border-color var(--transition);
    }

    .toolbar-menu-btn:hover {
      background-color: #f0f0f0;
      border-color: #666;
    }

    .toolbar-dropdown {
      position: absolute;
      top: 100%;
      right: 8px;
      background: white;
      border: 1px solid #ccc;
      border-radius: 4px;
      padding: 8px;
      z-index: 1000;
      min-width: 180px;
      box-shadow: 0 2px 8px rgba(0,0,0,0.1);
      margin-top: 4px;
    }

    .dropdown-item {
      display: block;
      width: 100%;
      text-align: left;
      padding: 8px;
      border: none;
      background: none;
      cursor: pointer;
      font-size: 14px;
      border-radius: 2px;
      font-family: var(--font-body);
      color: var(--navy);
      transition: background-color var(--transition);
    }

    .dropdown-item:hover {
      background-color: #f0f0f0;
    }

    /* Mobile: adjust toolbar on smaller screens */
    @media (max-width: 768px) {
      .modal__toolbar {
        position: relative;
        flex-wrap: nowrap;
        gap: 8px;
      }

      .toolbar-menu-btn {
        display: inline-block;
      }

      /* Hide zoom controls and CC0 label in toolbar on mobile */
      .toolbar-right #zoomOut,
      .toolbar-right #zoomIn,
      .toolbar-cc0 {
        display: none;
      }

      .modal__play-btn {
        padding: 6px 10px;
      }
    }

    /* Desktop: hide hamburger menu, show controls inline */
    @media (min-width: 769px) {
      .toolbar-menu-btn {
        display: none;
      }

      .toolbar-dropdown {
        display: none !important;
      }

      /* Show zoom controls inline */
      #zoomOut, #zoomIn {
        display: inline-block !important;
      }
    }
  </style>
<script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
</head>
<body>

  <div id="scroll-progress" aria-hidden="true"></div>
  <a class="skip-nav" href="/documents">Skip to Documents</a>

  <!-- ══ BREAKING BAR ══ isolated addition: .breaking-bar CSS + the IIFE below.
       Story id drives the per-viewer dismiss key — bump it when the headline changes. -->
  <aside class="breaking-bar" id="breaking-bar" data-story="2026-08-21-mtd-ruling" aria-label="Breaking news">
    <div class="breaking-bar__inner">
      <a class="breaking-bar__link" href="/docket-watch" data-section="docket-watch">
        <span class="breaking-bar__headline"><span class="breaking-bar__kicker">Docket Update:</span> Chicago Judge Denies CDW’s Motion to Dismiss Counts II–VI in <em>Long v. CDW Government LLC</em>; CDW-G Is Officially Under a Court Order to Plead by Sept.&nbsp;21, 2026.<svg class="breaking-bar__go" viewBox="0 0 20 20" aria-hidden="true" focusable="false"><circle cx="10" cy="10" r="9" fill="#FFFFFF"></circle><path d="M8.6 6.4 L12.2 10 L8.6 13.6" fill="none" stroke="#6b0000" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"></path></svg></span>
      </a>
      <button class="breaking-bar__close" type="button" aria-label="Dismiss breaking news banner">
        <svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><line x1="5" y1="5" x2="19" y2="19"></line><line x1="19" y1="5" x2="5" y2="19"></line></svg>
      </button>
    </div>
  </aside>
  <script>
  (function () {
    var bar = document.getElementById('breaking-bar');
    if (!bar) return;
    var key = 'bn-dismissed-' + (bar.getAttribute('data-story') || 'v1');
    try { if (localStorage.getItem(key) === '1') { bar.hidden = true; return; } } catch (e) {}
    var btn = bar.querySelector('.breaking-bar__close');
    if (!btn) return;
    btn.addEventListener('click', function () {
      bar.hidden = true;
      try { localStorage.setItem(key, '1'); } catch (e) {}
    });
  })();
  </script>

  <div class="sticky-head">
    <header class="site-header" role="banner">
      <div class="site-header__eyebrow">Public Record Archive</div>
      <h1 class="site-header__title"><em>Long</em> v. <em>CDW Government LLC</em></h1>
      <div class="site-header__sub">
        Case No. 2025L007458<br>
        Calendar W &middot; Law Division &middot; Cook County Circuit Court<br>
        State of Illinois
      </div>
    </header>
    <nav class="site-nav" role="navigation" aria-label="Site sections">
      <a class="site-nav__link active" href="/documents" data-section="documents">
        <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="2" y="1" width="12" height="14" rx="1"/><line x1="5" y1="5" x2="11" y2="5"/><line x1="5" y1="8" x2="11" y2="8"/><line x1="5" y1="11" x2="9" y2="11"/></svg>
        Documents
      </a>
      <a class="site-nav__link" href="/docket-watch" data-section="docket-watch">
        <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="8" cy="8" r="6"/><line x1="8" y1="5" x2="8" y2="8"/><line x1="8" y1="8" x2="10" y2="10"/></svg>
        Docket Watch
      </a>
      <a class="site-nav__link" href="/subscribe" data-section="subscribe">
        <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M13 7A5 5 0 003 7c0 5.5-2 7-2 7h14s-2-1.5-2-7"/></svg>
        Subscribe
      </a>
      <a class="site-nav__link" href="/license" data-section="license">
        <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="1" y="3" width="14" height="10" rx="1"/><line x1="4" y1="7" x2="7" y2="7"/><circle cx="10" cy="7" r="1.5"/></svg>
        License
      </a>
      <a class="site-nav__link" href="/guestbook" data-section="guestbook">
        <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 4v9"/><path d="M8 4C5.9 2.7 3.2 2.5 1 3.1v9c2.2-.6 4.9-.4 7 .9"/><path d="M8 4c2.1-1.3 4.8-1.5 7-.9v9c-2.2-.6-4.9-.4-7 .9"/></svg>
        Guestbook
      </a>
    </nav>
  </div>

  <nav class="mobile-bottom-nav" role="navigation" aria-label="Site sections">
    <a class="mobile-tab active" href="/documents" data-section="documents">
      <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="2" y="1" width="12" height="14" rx="1"/><line x1="5" y1="5" x2="11" y2="5"/><line x1="5" y1="8" x2="11" y2="8"/><line x1="5" y1="11" x2="9" y2="11"/></svg>
      Docs
    </a>
    <a class="mobile-tab" href="/docket-watch" data-section="docket-watch">
      <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="8" cy="8" r="6"/><line x1="8" y1="5" x2="8" y2="8"/><line x1="8" y1="8" x2="10" y2="10"/></svg>
      Docket
    </a>
    <a class="mobile-tab" href="/subscribe" data-section="subscribe">
      <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><path d="M13 7A5 5 0 003 7c0 5.5-2 7-2 7h14s-2-1.5-2-7"/></svg>
      Subscribe
    </a>
    <a class="mobile-tab" href="/license" data-section="license">
      <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><rect x="1" y="3" width="14" height="10" rx="1"/><line x1="4" y1="7" x2="7" y2="7"/><circle cx="10" cy="7" r="1.5"/></svg>
      License
    </a>
    <a class="mobile-tab" href="/guestbook" data-section="guestbook">
      <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 4v9"/><path d="M8 4C5.9 2.7 3.2 2.5 1 3.1v9c2.2-.6 4.9-.4 7 .9"/><path d="M8 4c2.1-1.3 4.8-1.5 7-.9v9c-2.2-.6-4.9-.4-7 .9"/></svg>
      Guestbook
    </a>
  </nav>

  <main class="main-wrapper">

    <div class="section-rule"><h2>Document Archive</h2></div>

    <div class="controls" role="search">
      <div class="search-wrap">
        <svg class="search-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="6.5" cy="6.5" r="4.5"/><path d="M10 10l3.5 3.5"/></svg>
        <input type="search" class="search-input" id="searchInput" placeholder="Search filings, motions, discovery..." aria-label="Search documents" autocomplete="off">
      </div>
      <div class="filter-group" role="group">
        <a class="filter-btn active" href="/documents" data-filter="key">Key Documents</a>
        <a class="filter-btn" href="/documents/plaintiff" data-filter="plaintiff">Plaintiff</a>
        <a class="filter-btn" href="/documents/defendant" data-filter="defendant">Defendant</a>
        <a class="filter-btn" href="/documents/discovery" data-filter="discovery">Discovery</a>
        <a class="filter-btn" href="/documents/hearing-record" data-filter="court">Hearing Record</a>
        <a class="filter-btn" href="/documents/reply" data-filter="reply">Reply</a>
        <a class="filter-btn" href="/documents/all" data-filter="all">All</a>
      </div>
      <span class="count-label" id="countLabel" aria-live="polite"></span>
    </div>

    <section id="documents" aria-label="Case filings">
      <div class="doc-grid" id="docGrid" role="list"></div>
    </section>

    <div id="docket-watch">
      <div class="section-rule"><h2>Docket Watch</h2></div>
      <div class="docket-watch" aria-label="Live docket monitoring">
        <div class="docket-watch__head">
          <div class="docket-watch__title"><span class="sync-dot" id="syncDot"></span>Case No. 2025L007458 &nbsp;&middot;&nbsp; Cook County Law Division</div>
          <div class="docket-watch__meta"><span id="syncStatus">Loading&hellip;</span><button class="btn btn--sm" id="refreshDocket">&#8635; Refresh</button></div>
        </div>
        <div class="docket-table-wrap">
          <table class="docket-entries" id="docketTable">
            <thead><tr><th>Date</th><th>Filed By</th><th>Entry</th></tr></thead>
            <tbody id="docketBody"><tr><td colspan="3" style="padding:1.5rem;text-align:center;font-family:var(--font-mono);font-size:var(--t-xs);color:rgba(15,28,46,0.35);">Loading&hellip;</td></tr></tbody>
          </table>
        </div>
        <div class="docket-watch__footer">
          <span>Data sourced from <a href="https://www.cookcountyclerkofcourt.org/" target="_blank" rel="noopener">Cook County Clerk of Courts</a>. Auto-synced via docket-sync script.</span>
          <span id="lastChecked"></span>
        </div>
      </div>
    </div>

    <div id="subscribe">
      <div class="section-rule"><h2>Subscribe to Updates</h2></div>
      <div class="subscribe-grid">
        <div class="subscribe-card">
          <div class="subscribe-card__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1" fill="currentColor" stroke="none"/></svg></div>
          <div class="subscribe-card__label">RSS Feed</div>
          <div class="subscribe-card__desc">Subscribe in any RSS reader — Feedly, Apple News, Reeder, or any aggregator. Every docket entry becomes a feed item.</div>
          <div class="subscribe-card__cost">Free &middot; Forever &middot; No account required</div>
          <a class="btn btn--primary subscribe-card__btn" href="/feed.xml" target="_blank" rel="noopener">Copy RSS URL</a>
        </div>
        <div class="subscribe-card">
          <div class="subscribe-card__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 01-3.46 0"/></svg></div>
          <div class="subscribe-card__label">Browser Push</div>
          <div class="subscribe-card__desc">Instant notification when a new docket entry is detected. Works on desktop and Android. Powered by OneSignal.</div>
          <button class="btn btn--primary subscribe-card__btn" id="pushSubscribeBtn">Enable Notifications</button>
        </div>
        <div class="subscribe-card">
          <div class="subscribe-card__icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="M2 8l10 6 10-6"/></svg></div>
          <div class="subscribe-card__label">Email Updates</div>
          <div class="subscribe-card__desc">Instant email alerts when the docket changes. Powered by OneSignal.</div>
          <div class="subscribe-card__cost">Free &middot; No cost to receive updates</div>
          <div class="subscribe-email-form">
            <input type="email" id="emailInput" class="subscribe-email-input" placeholder="your@email.com" autocomplete="email">
            <button class="btn btn--primary" id="emailSubscribeBtn">Subscribe</button>
          </div>
          <div class="subscribe-email-note" id="emailNote"></div>
        </div>
      </div>

      <!-- Install App Card -->
      <div class="subscribe-card">
        <div class="subscribe-card__icon" aria-hidden="true">
          <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
            <rect x="5" y="2" width="14" height="20" rx="2"/>
            <line x1="12" y1="18" x2="12" y2="18" stroke-linecap="round" stroke-width="2.5"/>
          </svg>
        </div>
        <div class="subscribe-card__label">Add to Home Screen</div>
        <div class="subscribe-card__desc">Install this archive as an app on your device for offline access to all documents and instant docket notifications. Works on Android and desktop Chrome, Edge, and Brave.</div>
        <div class="subscribe-card__cost">Free &middot; No app store required &middot; Works offline</div>
        <button class="btn btn--primary subscribe-card__btn" id="installBtn" style="display:none" aria-label="Install app">
          <svg width="10" height="10" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true"><path d="M8 12l-5-5h3V2h4v5h3l-5 5zm-6 2h12v-1H2v1z"/></svg>
          Install App
        </button>
        <p class="subscribe-card__desc" id="installNote" style="font-size:var(--t-xs);opacity:0.55;margin-top:0.25rem;">
          On iOS Safari: tap the Share button, then "Add to Home Screen."
        </p>
      </div>

    </div>

    <div id="license">
      <div class="section-rule"><h2>License &amp; Usage Rights</h2></div>
      <section class="license-section" aria-labelledby="license-heading">
        <div class="license-header">
          <div class="cc0-badge" aria-label="CC0 1.0 Universal - No Rights Reserved">
            <div class="cc0-badge__mark">CC0</div>
            <div class="cc0-badge__label">Public Domain</div>
          </div>
          <div>
            <h2 id="license-heading">Creative Commons Zero v1.0 Universal<br>Public Domain Dedication</h2>
            <p style="margin-top:0.5rem;font-family:var(--font-mono);font-size:var(--t-xs);color:rgba(15,28,46,0.4);">All documents in this archive are dedicated to the public domain worldwide, with no rights reserved.</p>
          </div>
        </div>
        <h3>What This Means</h3>
        <p>The person who associated a work with this deed has dedicated the work to the public domain by waiving all of their rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law. You may copy, modify, distribute, and perform the work, even for commercial purposes, all without asking permission.</p>
        <h3>Full Legal Text</h3>
        <div class="license-deed" tabindex="0">
          <p><strong>Statement of Purpose</strong></p>
          <p>The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights upon the creator and subsequent owner(s) of an original work of authorship and/or a database. Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes.</p>
          <p><strong>2. Waiver.</strong> To the greatest extent permitted by applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights in the Work in all territories worldwide, for the maximum duration provided by applicable law or treaty, in any current or future medium, and for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes.</p>
          <p><strong>3. Public License Fallback.</strong> Should any part of the Waiver be judged legally invalid or ineffective, Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work.</p>
          <p><strong>4. Limitations and Disclaimers.</strong> No trademark or patent rights held by Affirmer are waived by this document. Affirmer offers the Work as-is and makes no representations or warranties of any kind, including without limitation warranties of title, merchantability, fitness for a particular purpose, or non infringement.</p>
        </div>
        <p style="margin-top:var(--sp-md);">Official deed: <a class="license-link" href="https://creativecommons.org/publicdomain/zero/1.0/" target="_blank" rel="noopener license">CC0 1.0 Universal Public Domain Dedication</a></p>
      </section>
    </div>

  </main>

  <div class="modal-overlay" id="modalOverlay" role="dialog" aria-modal="true" aria-labelledby="modalTitleEl">
    <div class="modal">
      <div class="modal__bar">
        <div>
          <div class="modal__title" id="modalTitleEl">Document Viewer</div>
          <div class="modal__submeta" id="modalSubmeta"></div>
        </div>
        <div class="modal__controls">
          <button class="btn btn--sm" id="modalDownload" style="color:#ddd7c9;border-color:rgba(245,243,238,0.18)">Download</button>
          <button class="btn btn--sm" id="modalShare" style="color:#ddd7c9;border-color:rgba(245,243,238,0.18)">Share</button>
          <button class="modal__close" id="modalClose">ESC / Close</button>
        </div>
      </div>
      <div class="modal__toolbar">
        <button class="btn btn--sm" id="tocToggle" style="display:none">Table of Contents</button>
        <div class="toolbar-sep" id="tocSep" style="display:none"></div>
        <div class="toolbar-center">
          <button class="btn btn--sm" id="pdfPrev">&#8592; Prev</button>
          <span class="page-info" id="pageInfo">-- / --</span>
          <button id="docPlayButton" class="modal__play-btn" title="Play/pause audio" style="display: none;">
            <span id="docPlayIcon">▶</span>
          </button>
          <button class="btn btn--sm" id="pdfNext">Next &#8594;</button>
          <div class="toolbar-sep"></div>
          <button class="btn btn--sm" id="zoomOut">&#8722; Zoom</button>
          <button class="btn btn--sm" id="zoomIn">&#43; Zoom</button>
        </div>
        <div class="toolbar-right">
          <div class="toolbar-cc0">CC0 1.0 Universal</div>
          <button class="btn btn--sm" id="commentsToggle">Comments</button>
        </div>
        <div class="toolbar-spacer"></div>
        <button id="toolbarMenu" class="toolbar-menu-btn" title="More options">⋮</button>
      </div>
      <div id="toolbarDropdown" class="toolbar-dropdown" style="display: none;">
        <button id="zoomOutMobile" class="dropdown-item">Zoom Out (−)</button>
        <button id="zoomInMobile" class="dropdown-item">Zoom In (+)</button>
        <hr style="margin: 4px 0;">
        <div class="dropdown-item" style="pointer-events: none;">
          <small>CC0 1.0 Universal</small>
        </div>
        <button id="commentsToggleMobile" class="dropdown-item">Comments</button>
      </div>
      <div class="modal__body">
        <aside class="modal__toc-panel hidden" id="tocPanel">
          <div class="toc-panel__head">
            <span class="toc-panel__title">Table of Contents</span>
            <button class="toc-panel__close" id="tocClose" aria-label="Close TOC">&#215;</button>
          </div>
          <nav class="toc-panel__body" id="tocBody" aria-label="Document table of contents"></nav>
        </aside>
        <div class="modal__viewer" id="modalViewer">
          <div class="viewer-placeholder" id="viewerPlaceholder">
            <svg width="44" height="58" viewBox="0 0 44 58" fill="none" stroke="currentColor" stroke-width="1.2"><rect x="3" y="3" width="38" height="52" rx="1"/><line x1="10" y1="18" x2="34" y2="18"/><line x1="10" y1="25" x2="34" y2="25"/><line x1="10" y1="32" x2="26" y2="32"/></svg>
            <p>Upload PDFs to <code>/documents/</code> on your server to activate the inline viewer.</p>
          </div>
          <div id="pdf-container" style="position:relative; display:block; width:max-content; margin:0 auto;">
            <canvas id="pdf-canvas" style="display:block;" aria-label="PDF document viewer"></canvas>
            <div id="pdf-text-layer" class="textLayer" style="position:absolute; left:0; top:0; overflow:hidden; line-height:1.0;"></div>
          </div>
        </div>
        <aside class="modal__comments-panel hidden" id="commentsPanel">
          <div class="comments-panel__head">
            <span class="comments-panel__title">Public Comments</span>
            <button class="btn btn--sm" id="commentsPanelClose">Close</button>
          </div>
          <div class="comments-panel__body" id="commentsPanelBody">
            <div class="comments-panel__desc" style="font-family:var(--font-mono);font-size:var(--t-xs);color:rgba(15,28,46,0.55);line-height:1.7;padding:var(--sp-md);">
              <strong style="color:var(--navy)">Hypothesis Annotations</strong><br><br>
              Highlight any text in a document to add a public annotation. Used by researchers, journalists, and legal scholars worldwide.<br><br>
              Create a free account at <a href="https://hypothes.is" target="_blank" rel="noopener" style="color:var(--federal)">hypothes.is</a> to participate.
            </div>
          </div>
        </aside>
      </div>
    </div>
  </div>

  <audio id="docAudio" crossorigin="anonymous">
    <source src="" type="audio/mpeg">
    Your browser does not support audio playback.
  </audio>

  <div class="modal-overlay" id="gbModalOverlay" role="dialog" aria-modal="true" aria-labelledby="gbVolTitle">
    <div class="gb-volume">
      <div class="gb-vbar">
        <div class="gb-vident">
          <span class="gb-veyebrow">Long v. CDW Government LLC</span>
          <span class="gb-vtitle" id="gbVolTitle">Guestbook</span>
          <span class="gb-vsubmeta">No. 2025L007458 &middot; Cook County, Illinois</span>
        </div>
        <button class="gb-vclose" id="gbCloseBtn" aria-label="Close">ESC / Close</button>
      </div>

      <div class="gb-spread">
        <section class="gb-leaf gb-leaf--sign" aria-label="Leave your mark">
          <div class="gb-leaf-head">
            <span class="gb-leaf-title">Leave Your Mark</span>
            <span class="gb-leaf-meta">No account needed</span>
          </div>

          <div id="gbSignInner">
          <p class="gb-intro">For those who have read this record &mdash; leave your mark as yourself, by affiliation, or anonymously.</p>

          <div class="gb-iam" role="group" aria-label="How would you like to sign?">
            <span class="gb-iam-label">I am&hellip;</span>
            <button type="button" class="gb-stamp" data-mode="worker" aria-pressed="false">Worker</button>
            <button type="button" class="gb-stamp" data-mode="alumnus" aria-pressed="false">Alumnus</button>
            <button type="button" class="gb-stamp" data-mode="anon" aria-pressed="false">Anonymous</button>
          </div>
          <p class="gb-hint">Only your entry line is shown &mdash; nothing else is kept.</p>

          <form class="gb-form" id="gbForm" novalidate>
            <div class="gb-field" id="gbNameField">
              <label for="gbName">Your name</label>
              <input class="gb-ruled" id="gbName" type="text" placeholder="e.g. Maya Hernandez" autocomplete="off">
            </div>

            <div class="gb-field" id="gbCountryField">
              <label for="gbCountry">Country <span class="gb-opt">(optional)</span></label>
              <div class="gb-ac">
                <input class="gb-ruled" id="gbCountry" type="text" placeholder="e.g. United States" autocomplete="off" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-controls="gbCountryAC">
                <ul class="gb-ac-list" id="gbCountryAC" role="listbox" hidden></ul>
              </div>
            </div>

            <div class="gb-sub" id="gbUniField">
              <div class="gb-field">
                <label for="gbUniversity">University</label>
                <input class="gb-ruled" id="gbUniversity" type="text" placeholder="e.g. Northwestern Pritzker School of Law" autocomplete="off">
              </div>
              <div class="gb-field">
                <label for="gbAlumProfession">Profession <span class="gb-opt">(optional)</span></label>
                <input class="gb-ruled" id="gbAlumProfession" type="text" placeholder="e.g. Attorney" autocomplete="off">
              </div>
            </div>

            <div class="gb-sub" id="gbWorkerField">
              <div class="gb-field">
                <label for="gbOccupation">Occupation <span class="gb-opt">(optional)</span></label>
                <input class="gb-ruled" id="gbOccupation" type="text" placeholder="e.g. Account Manager or Warehouse Worker" autocomplete="off">
              </div>
              <div class="gb-field">
                <label for="gbCompany">Company or organization <span class="gb-opt">(optional)</span></label>
                <input class="gb-ruled" id="gbCompany" type="text" placeholder="e.g. World Wide Technology" autocomplete="off">
              </div>
            </div>

            <div class="gb-field">
              <label for="gbRemark">A remark, if you&rsquo;d like <span class="gb-opt">(optional)</span></label>
              <textarea class="gb-ruled" id="gbRemark" rows="2" maxlength="140" placeholder="e.g. Following this case with interest."></textarea>
              <span class="gb-counter"><span id="gbRemarkCount">0</span>/140</span>
            </div>

            <p class="gb-error" id="gbErrorNote" role="alert"></p>

            <div class="gb-sign-row">
              <button type="submit" class="gb-seal" id="gbSealBtn">Leave My Mark</button>
              <span class="gb-seal-note"><span class="gb-cc0">CC0</span> &mdash; no rights reserved.</span>
            </div>
          </form>
          </div>

          <div class="gb-confirm" id="gbConfirmPanel" hidden>
            <div class="gb-confirm-badge" aria-hidden="true">&#10003;</div>
            <h3 class="gb-confirm-title">Thank you for leaving your mark.</h3>
            <p class="gb-confirm-body">If all&rsquo;s well, you&rsquo;ll see it appear on this page shortly.</p>
            <button type="button" class="gb-confirm-again" id="gbConfirmAgain">Leave another mark</button>
          </div>
        </section>

        <div class="gb-spine" aria-hidden="true"></div>

        <section class="gb-leaf gb-leaf--register" aria-label="Visitors">
          <div class="gb-leaf-head">
            <span class="gb-leaf-title">Visitors</span>
            <span class="gb-leaf-meta"><span id="gbTotalCount">0</span> so far</span>
          </div>
          <div class="gb-register-body">
            <div class="gb-entries" id="gbEntries"></div>
          </div>
        </section>
      </div>
    </div>
  </div>

  <div class="toast" id="toast" role="status" aria-live="polite" aria-atomic="true"></div>

  <footer class="site-footer">
    <div class="footer-grid">
      <div class="footer-col">
        <h4>Archive</h4>
        <span>Long v. CDW Government LLC</span>
        <span>Case No. 2025L007458</span>
        <span>Cook County Law Division</span>
        <span>Calendar W &middot; State of Illinois</span>
      </div>
      <div class="footer-col">
        <h4>Licensor</h4>
        <a href="https://marcelluslong.com" target="_blank" rel="noopener">Marcellus Long, MBA (Pro Se)</a>
        <span>1 E. Erie St., Suite 525-2420</span>
        <span>Chicago, IL 60611</span>
      </div>
      <div class="footer-col">
        <h4>License</h4>
        <a href="https://creativecommons.org/publicdomain/zero/1.0/" target="_blank" rel="noopener license">CC0 1.0 Universal</a>
        <span>All documents public domain.</span>
        <span>No rights reserved.</span>
      </div>
      </div>
    <div class="footer-bottom">
      <span>CC0 1.0 Universal Public Domain &mdash; All documents free for any use without restriction.</span>
      <a href="/sitemap" style="color:inherit; text-decoration:underline;">case-2025l007458.info/sitemap</a>
    </div>
  </footer>

  <script>
  'use strict';

  const DOCS = [    { id:'fac', title:'CDW-G Faces Serious Allegations From Employee', abbr:'FAC', party:'plaintiff', category:'Pleading', date:'2026-02-17',
      desc:'Operative complaint. Five active counts proceeding across statutory and common law theories.',
      counts:[
        '<span class="count-disposed"><strong>Count I</strong> &mdash; Constructive Fraud (Based on Breach of Statutory Duties)</span><span class="badge-ruling badge-disposed">Disposed</span>',
        '<strong>Count II</strong> &mdash; Fraudulent Concealment (Illinois Common Law)',
        '<strong>Count III</strong> &mdash; Failure to Pay Wages and Unauthorized Deduction (IWPCA, 820 ILCS 115)',
        '<strong>Count IV</strong> &mdash; Conversion (Common Law)',
        '<strong>Count V</strong> &mdash; Unjust Enrichment (in the alternative to Count IV)',
        '<strong>Count VI</strong> &mdash; Retaliation under 820 ILCS 115/14(c) (IWPCA Anti-Retaliation)'
      ],
      file:'https://cdn.case-2025l007458.info/documents/cdw-g.pdf', schemaId:'first-amended-complaint', isDiscovery:false },
    { id:'cdw-chicago', title:'CDW Government LLC Sued in Chicago', abbr:'CDW Sued', party:'plaintiff', category:'Affidavit', date:'2025-06-24',
      desc:'CDW Government LLC (CDW-G) faces an employment lawsuit in Cook County, Chicago. Affidavit of John Pennell (filed June 24, 2025) in Long v. CDW Government LLC, No. 2025L007458.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-chicago.pdf', schemaId:'cdw-chicago', isDiscovery:false },
    { id:'cdw-goal-modifier', title:"CDW-G's Goal-Modifier Commission Diagram", abbr:'Exhibit 10', party:'plaintiff', category:'Exhibit', date:'2026-02-17',
      desc:"Exhibit 10 to the operative complaint. A diagram Plaintiff alleges depicts how CDW Government LLC&rsquo;s goal-modifier mechanism reduced earned sales commissions.",
      file:'https://cdn.case-2025l007458.info/documents/cdw-goal-modifier.pdf', schemaId:'cdw-goal-modifier', isDiscovery:false, landscape:true, isExhibit:true, exhibitNumber:10, altText:'Diagram of the goal-modifier commission adjustment alleged in Long v. CDW Government LLC' },

    // ── NOTICES & STATUS ──
    { id:'order-granting-mtc', title:'Chicago Judge Orders CDW-G to Produce Missing Compensation Records',
      abbr:'CDW-G Order', party:'court', category:'Hearing Record', date:'2025-07-31',
      desc:'On July 31, 2025, the Honorable Thomas More Donnelly of the Cook County Circuit Court granted Plaintiff\'s motion to compel and ordered CDW Government LLC (CDW-G) to produce the missing compensation records within 30 days.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-order.pdf',
      schemaId:'order-granting-mtc', isDiscovery:false },
    { id:'mtc-201k', title:'Motion to Compel Production Under Rule 201(k)',
      abbr:'Motion to Compel 201k', party:'plaintiff', category:'Motion', date:'2025-07-08',
      ruling:'GRANTED',
      desc:'Plaintiff moves to compel CDW Government LLC to produce a document authorizing wage deductions under IL S. Ct. R. 201(k). Granted by court order July 31, 2025.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-compel-201k.pdf',
      schemaId:'mtc-201k', isDiscovery:false },
    { id:'supp-auth', title:'Federal Judge Sarah Evans Barker Cited as Instructive Authority', abbr:'S.E. Barker', party:'plaintiff', category:'Notice', date:'2026-05-01',
      desc:"Plaintiff's Notice of Supplemental Authority citing CDW, LLC v. NeTech Corp. (S.D. Ind.), authored by Judge Sarah Evans Barker, on the corporate separateness of CDW subsidiaries — with the full federal decision attached as Exhibit A.",
      file:'https://cdn.case-2025l007458.info/documents/sarah-evans-barker.pdf', schemaId:'supplemental-authority', isDiscovery:false },
    { id:'mot-correct-npt', title:'Second Amended Motion to Correct Orders Nunc Pro Tunc — Defendant Misidentification', abbr:'Mot. Correct Def. Name', party:'plaintiff', category:'Motion', date:'2026-08-13',
      desc:'Filed August 13, 2026, this Second Amended nunc pro tunc motion asks the Cook County Circuit Court to correct five orders in Case No. 2025L007458 that misidentify the defendant. It adds the July 31, 2025 order, which commands defendants in the plural in an action that has only ever had one defendant, to the four agreed orders that name no legal entity beyond counsel for Defendant CDW. A nunc pro tunc correction conforms the written record to what occurred without disturbing the substance of any ruling, so the record names CDW Government LLC as the single defendant throughout. This motion supersedes the First Amended motion of the same name.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-nunc-pro-tunc.pdf', schemaId:'motion-correct-orders-npt', isDiscovery:false },

    // ── MOTIONS TO DISMISS ──
    { id:'opp-mtd', title:'Opposition to Motion to Dismiss', abbr:'Opp. MTD', party:'plaintiff', category:'Opposition', date:'2026-05-14',
      desc:"Plaintiff's full opposition to Defendant's motion to dismiss, addressing all contested counts and preserving all arguments for the record.",
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-opp-dismiss.pdf', schemaId:'opposition-to-mtd', isDiscovery:false },

    // ── MOTION TO STRIKE JURY DEMAND ──
    { id:'resp-jury', title:'Response to Motion to Strike Jury Demand', abbr:'Resp. Jury', party:'plaintiff', category:'Opposition', date:'2026-01-02',
      desc:"Plaintiff's response opposing Defendant's motion to strike the jury demand.",
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-opp-jury-demand.pdf', schemaId:'response-motion-strike-jury-demand', isDiscovery:false },

    // ── MOTION FOR LEAVE / SUPPLEMENTAL DISCOVERY ──
    { id:'mtc-rta', title:'Third Amended Motion to Compel RTA Responses', abbr:'MTC-RTA', party:'plaintiff', category:'Discovery', date:'2026-08-18',
      desc:'Third Amended motion to compel compliant responses to Plaintiff\'s First Request for Admission and to deem Requests Nos. 12, 18, 19, 20 and 26 admitted under Illinois Supreme Court Rule 216(c).',
      file:'https://cdn.case-2025l007458.info/documents/mtc-compel-rta-1.pdf', schemaId:'motion-to-compel-rta', isDiscovery:true },
    { id:'def-rta', title:"Defendant's Response to Requests to Admit", abbr:'Def. RTA', party:'defendant', category:'Discovery', date:'2025-10-02',
      desc:"Defendant's responses to Plaintiff's Requests to Admit, including Rule 216(a) admissions forming part of the evidentiary record.",
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-rta-responses.pdf', schemaId:'defendant-rta-response', isDiscovery:true },
    { id:'supp-interrog', title:'Supplemental Answers to Interrogatories', abbr:'Supp. Interrog.', party:'plaintiff', category:'Discovery', date:'2026-05-11',
      desc:"Plaintiff's supplemental answers to interrogatories providing additional documentation and factual detail.",
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-supp-interrogatories.pdf', schemaId:'supplemental-interrogatories', isDiscovery:true },
    { id:'supp-rfp', title:'Supplemental Responses to RFP', abbr:'Supp. RFP', party:'plaintiff', category:'Discovery', date:'2026-05-11',
      desc:"Plaintiff's supplemental responses to Defendant's Requests for Production of Documents.",
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-supp-rfp.pdf', schemaId:'supplemental-rfp-responses', isDiscovery:true },

    // ── MOTION TO CORRECT RECORD ──
    { id:'appearances', title:'FordHarrison LLP Attorney Appearances',
      abbr:'FordHarrison', party:'defendant', category:'Appearance', date:'2025-08-21',
      desc:'FordHarrison LLP filed three appearances for CDW Government LLC in Long v. CDW Government LLC, Cook County No. 2025L007458: Craig R. Thorstenson on July 18, 2025, Joel M. Zeid on July 23, 2025, and John C. O\'Connor on August 21, 2025. Summons and complaint were served on the defendant on June 23, 2025, placing O\'Connor\'s appearance fifty-eight days after service. Plaintiff\'s motion to strike the appearance certifications as void ab initio contends that O\'Connor\'s was the only valid appearance for the named defendant. This document collects all three filings with their certificates of service.',
      file:'https://cdn.case-2025l007458.info/documents/fordharrison-llp.pdf',
      schemaId:'appearances', isDiscovery:false },
    { id:'mtd2-denied', title:'Defendant\'s Rule 2-619.1 Motion to Dismiss Amended Complaint',
      abbr:'MTD (Denied)', party:'defendant', category:'Motion', date:'2025-12-01',
      ruling:'DENIED',
      desc:'Defendant\'s Rule 2-619.1 motion to dismiss, filed untimely December 1, 2025. Plaintiff noted the procedural defects. Motion denied.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-dismiss-denied.pdf',
      schemaId:'mtd2-denied', isDiscovery:false },
    { id:'mot-leave-fac', title:'Motion for Leave to File Amended Complaint',
      abbr:'Mot. Leave FAC', party:'plaintiff', category:'Motion', date:'2025-08-19',
      ruling:'GRANTED',
      desc:"Plaintiff's motion for leave to file the Amended Complaint. Granted by the court.",
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-leave-amend.pdf',
      schemaId:'mot-leave-fac', isDiscovery:false },
    { id:'cert-service-mtd2', title:'Defendant\'s Certificate of Service — Motion to Dismiss',
      abbr:'Cert. of Service MTD', party:'defendant', category:'Notice', date:'2025-12-01',
      desc:'Certificate of filing and service for CDW\'s Rule 2-619.1 motion to dismiss, filed untimely.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-cert-service-dismiss.pdf',
      schemaId:'cert-service-mtd2', isDiscovery:false },
    { id:'notice-mtd2', title:'Defendant\'s Notice of Motion to Dismiss',
      abbr:'Notice of MTD', party:'defendant', category:'Notice', date:'2025-12-01',
      desc:'Defendant\'s notice of motion to dismiss filed December 1, 2025. Plaintiff noted the motion was untimely and declined to object, allowing the case to proceed on the merits.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-notice-dismiss.pdf',
      schemaId:'notice-mtd2', isDiscovery:false },
    { id:'mts-denied', title:'Defendant\'s Motion to Strike Operative Complaint',
      abbr:'Def. MTS Complaint', party:'defendant', category:'Motion', date:'2026-01-29',
      ruling:'DENIED',
      desc:'Defendant moves to strike Plaintiff\'s operative complaint and seeks extension of time to answer. Motion denied, allowing Defendant to proceed to answer on the merits.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-strike-complaint-denied.pdf',
      schemaId:'mts-denied', isDiscovery:false },
    { id:'opp-mts', title:'Plaintiff\'s Opposition to Motion to Strike',
      abbr:'Opp. to MTS', party:'plaintiff', category:'Reply', date:'2026-02-10',
      desc:'Plaintiff\'s opposition to Defendant\'s motion to strike the operative complaint.',
      file:'https://cdn.case-2025l007458.info/documents/cdw-g-opp-strike.pdf',
      schemaId:'opp-mts', isDiscovery:false },
];

  // ── AUDIO PLAYBACK SYSTEM ──────────────────────────────────────────────────
  let audioManifest = null;
  let currentAudioDoc = null;
  let isAudioPlaying = false;

  async function loadAudioManifest() {
    try {
      const response = await fetch('/audio-manifest.json');
      if (!response.ok) return null;
      audioManifest = await response.json();
      return audioManifest;
    } catch (e) {
      console.warn('Could not load audio manifest:', e);
      return null;
    }
  }

  function docHasAudio(slug) {
    if (!audioManifest) return false;
    return audioManifest.documentsWithAudio.some(doc => doc.slug === slug);
  }

  function initializeAudioPlayback() {
    // Load manifest asynchronously
    loadAudioManifest();

    const audioElement = document.getElementById('docAudio');
    const playButton = document.getElementById('docPlayButton');

    if (!audioElement || !playButton) return;

    // Toggle play/pause on button click
    playButton.addEventListener('click', function(e) {
      e.preventDefault();
      e.stopPropagation();

      if (isAudioPlaying) {
        audioElement.pause();
        isAudioPlaying = false;
        document.getElementById('docPlayIcon').textContent = '▶';
      } else {
        audioElement.play();
        isAudioPlaying = true;
        document.getElementById('docPlayIcon').textContent = '⏸';
      }
    });

    // Update button state when audio ends
    audioElement.addEventListener('ended', function() {
      isAudioPlaying = false;
      document.getElementById('docPlayIcon').textContent = '▶';
    });

    // Handle audio errors
    audioElement.addEventListener('error', function(e) {
      console.error('Audio playback error:', e);
      isAudioPlaying = false;
      document.getElementById('docPlayIcon').textContent = '▶';
    });
  }

  function loadAudioForDocument(doc) {
    if (!doc.file) {
      const playButton = document.getElementById('docPlayButton');
      if (playButton) playButton.style.display = 'none';
      return;
    }

    const slug = doc.file.split('/').pop().replace('.pdf', '');

    if (!docHasAudio(slug)) {
      // Hide play button if no audio
      const playButton = document.getElementById('docPlayButton');
      if (playButton) playButton.style.display = 'none';
      return;
    }

    currentAudioDoc = doc;
    const audioUrl = `https://cdn.case-2025l007458.info/audio/${slug}.mp3`;
    const audioElement = document.getElementById('docAudio');
    const playButton = document.getElementById('docPlayButton');

    if (audioElement && playButton) {
      audioElement.src = audioUrl;
      playButton.style.display = 'inline-block';
      isAudioPlaying = false;
      document.getElementById('docPlayIcon').textContent = '▶';
    }
  }

  function seekAudioToPage(pageNumber) {
    const audioElement = document.getElementById('docAudio');
    if (!audioElement || !audioElement.src) return;

    const totalPages = parseInt(document.getElementById('pageInfo').textContent.split('/')[1]);
    const totalWords = currentAudioDoc.estimatedWordCount || 5000; // fallback estimate
    const avgWordsPerPage = totalWords / totalPages;
    const wordsPerMinute = 130;

    const seekSeconds = (pageNumber * avgWordsPerPage / wordsPerMinute) * 60;
    audioElement.currentTime = Math.min(seekSeconds, audioElement.duration || 0);

    // Pause audio when navigating
    audioElement.pause();
    isAudioPlaying = false;
    document.getElementById('docPlayIcon').textContent = '▶';
  }

  function fmtDate(iso) {
    const [y,m,d] = iso.split('-');
    return `${'Jan.,Feb.,Mar.,Apr.,May,Jun.,Jul.,Aug.,Sep.,Oct.,Nov.,Dec.'.split(',')[+m-1]} ${+d}, ${y}`;
  }

  function render(list) {
    const grid = document.getElementById('docGrid');
    grid.innerHTML = '';
    if (!list.length) {
      grid.innerHTML = '<div class="empty-state"><p>No documents match the current filter.</p></div>';
      document.getElementById('countLabel').textContent = '0 documents';
      return;
    }
    list.forEach(doc => {
      const card = document.createElement('article');
      card.className = doc.id === 'fac' ? 'doc-card doc-card--full' : 'doc-card';
      card.setAttribute('role','listitem');
      card.setAttribute('tabindex','0');
      card.setAttribute('data-party', doc.party);
      card.setAttribute('data-id', doc.id);
      const rulingBadge = doc.ruling
        ? `<span class="badge-ruling badge-${doc.ruling.toLowerCase()}">${doc.ruling}</span>`
        : '';
      // Real crawlable URL to this document's own page — the anchor gives Googlebot a genuine
      // internal link (fixes GSC "Referring page: None detected"); JS still opens the viewer.
      const docPath = '/documents/' + doc.file.replace(/^https?:\/\/[^/]+\//,'').replace(/^documents\//,'').replace(/\.pdf$/,'');
      card.innerHTML = `
        <div class="doc-card__header">
          <span class="doc-card__category">${doc.category}</span>
          <span class="doc-card__date">${fmtDate(doc.date)}</span>
          ${rulingBadge}
        </div>
        <div class="doc-card__title"><a class="doc-card__titlelink" href="${docPath}" data-action="view" data-id="${doc.id}">${doc.title}</a><span class="doc-card__abbr">[${doc.abbr}]</span></div>
        <div class="doc-card__desc">${doc.desc}</div>
        ${doc.counts ? `<ul class="doc-counts">${doc.counts.map(c=>`<li>${c}</li>`).join('')}</ul>` : ''}
        <div class="doc-card__actions">
          <a class="btn btn--primary" href="${docPath}" data-action="view" data-id="${doc.id}">
            <svg width="9" height="9" viewBox="0 0 16 16" fill="currentColor"><path d="M8 3C4 3 1 8 1 8s3 5 7 5 7-5 7-5-3-5-7-5zm0 8a3 3 0 110-6 3 3 0 010 6z"/></svg>
            View
          </a>
          <a class="btn" href="${doc.file.startsWith('http') ? doc.file : 'https://cdn.case-2025l007458.info/' + doc.file.replace(/^\//,'')}" download>
            <svg width="9" height="9" viewBox="0 0 16 16" fill="currentColor"><path d="M8 12l-5-5h3V2h4v5h3l-5 5zm-6 2h12v-1H2v1z"/></svg>
            Download
          </a>
          <button class="btn" data-action="share" data-id="${doc.id}">
            <svg width="9" height="9" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="3" r="2"/><circle cx="4" cy="8" r="2"/><circle cx="12" cy="13" r="2"/><path d="M6 9l4 3M10 4L6 7"/></svg>
            Share
          </button>
          <span class="cc0-tag" title="CC0 1.0 Universal — No Rights Reserved">CC0</span>
        </div>`;
      card.addEventListener('keydown', e => { if (e.key==='Enter') openViewer(doc.id); });
      grid.appendChild(card);
    });
    document.getElementById('countLabel').textContent = `${list.length} document${list.length!==1?'s':''}`;
  }

  // Curated "Key Documents" set — the default landing view. Edit this list to change which
  // filings appear under Key Documents (and on / and /documents).
  const KEY_IDS = new Set(['fac','cdw-goal-modifier','order-granting-mtc','cdw-chicago','supp-auth','mtd2-denied','mtc-rta','mtc-201k','mot-correct-npt','opp-mtd','mot-leave-fac','mts-denied','opp-mts']);

  // Each filter is a real, indexable URL. Key = /documents (bare); the rest live under it.
  // 'court' is the internal value for the "Hearing Record" chip; its URL slug is hearing-record.
  const FILTER_SLUG = { key:'', all:'all', plaintiff:'plaintiff', defendant:'defendant', discovery:'discovery', court:'hearing-record', reply:'reply' };
  const SLUG_FILTER = { '':'key', 'documents':'key', 'all':'all', 'plaintiff':'plaintiff', 'defendant':'defendant', 'discovery':'discovery', 'hearing-record':'court', 'reply':'reply' };
  function filterUrl(f) { const s = FILTER_SLUG[f] || ''; return '/documents' + (s ? '/' + s : ''); }

  let activeFilter = 'key', searchQ = '';
  function applyFilters() {
    const q = searchQ.toLowerCase();
    render(DOCS.filter(doc => {
      const mp = activeFilter==='key' ? KEY_IDS.has(doc.id) : activeFilter==='all' ? true : activeFilter==='discovery' ? doc.isDiscovery : activeFilter==='court' ? doc.party==='court' : activeFilter==='reply' ? doc.category==='Reply' : doc.party===activeFilter;
      const ms = q.length < 2 ? true : [doc.title,doc.desc,doc.category,doc.abbr,doc.date].some(s=>s.toLowerCase().includes(q));
      return mp && ms;
    }));
  }

  // Central filter setter: syncs the active chip, re-renders, and (optionally) updates the URL.
  function setFilter(f, push) {
    if (!FILTER_SLUG.hasOwnProperty(f)) f = 'key';
    activeFilter = f;
    document.body.classList.remove('route-license'); // choosing a filter = viewing the archive
    document.querySelectorAll('.filter-btn').forEach(b => b.classList.toggle('active', b.dataset.filter === f));
    applyFilters();
    if (push) history.pushState({ filter: f }, '', filterUrl(f));
  }

  document.querySelectorAll('.filter-btn').forEach(btn => {
    btn.addEventListener('click', (e) => {
      if (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0) return; // allow open-in-new-tab
      e.preventDefault();
      setFilter(btn.dataset.filter, true);
    });
  });
  document.getElementById('searchInput').addEventListener('input', e => { searchQ = e.target.value.trim(); applyFilters(); });
  document.getElementById('docGrid').addEventListener('click', e => {
    const btn = e.target.closest('[data-action]');
    if (!btn) return;
    const {action, id} = btn.dataset;
    if (action==='view') {
      if (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0) return; // allow open-in-new-tab
      e.preventDefault();
      openViewer(id);
    }
    if (action==='share') { e.preventDefault(); shareDoc(id); }
  });

  let pdfDoc=null, currentPage=1, pdfScale=1.0, activeDocId=null, savedScrollY=0, skipAutoScroll=false, viewerHasHistoryEntry=false;
  const devicePixelRatio = window.devicePixelRatio || 1;

  window._DOCS = DOCS;
  window._openViewer = openViewer;

  async function openViewer(docId) {
    const doc = DOCS.find(d=>d.id===docId);
    if (!doc) return;
    activeDocId = docId;
    savedScrollY = window.scrollY;
    const cleanPath = doc.file.replace('https://cdn.case-2025l007458.info/', '').replace(/^documents\//, '').replace(/\.pdf$/, '');
    const targetPath = `/documents/${cleanPath}`;
    // Only push a new history entry when actually navigating here from elsewhere. On a
    // direct page load (search result, shared link), handlePathChange() -> openViewer()
    // runs while the browser is ALREADY on this exact URL — pushing again creates a
    // duplicate same-URL entry, so closeViewer()'s history.back() just bounces back to
    // it, re-firing popstate -> openViewer() and silently reopening the modal (the
    // "close button does nothing" bug).
    viewerHasHistoryEntry = location.pathname !== targetPath;
    if (viewerHasHistoryEntry) {
      history.pushState({ docId }, '', targetPath);
    }
    document.getElementById('modalTitleEl').textContent = doc.title;
    document.getElementById('modalSubmeta').textContent = `Case No. 2025L007458  |  Filed ${fmtDate(doc.date)}  |  CC0 1.0 Universal`;
    document.getElementById('modalOverlay').classList.add('open');
    document.body.classList.add('route-modal');
    // Match the server-side hydration gate: don't just CSS-hide the shared grid, clear it —
    // otherwise a soft (client-side) navigation into a doc view leaves the full 36-card grid
    // sitting in the DOM, hidden but still present for any renderer that inspects raw markup.
    const gridEl = document.getElementById('docGrid');
    if (gridEl) gridEl.innerHTML = '';
    document.body.style.overflow = 'hidden';
    document.getElementById('modalClose').focus();
    const canvas = document.getElementById('pdf-canvas');
    const textLayer = document.getElementById('pdf-text-layer');
    const ph = document.getElementById('viewerPlaceholder');
    canvas.style.display = 'none';
    textLayer.style.display = 'none';
    ph.style.display = 'flex';
    ph.querySelector('p').textContent = 'Loading document…';
    document.getElementById('pageInfo').textContent = '-- / --';
    try {
      if (typeof pdfjsLib === 'undefined') throw new Error('PDF.js not loaded');
      pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';
      const pdfUrl = (doc.file.startsWith('http') ? doc.file : 'https://cdn.case-2025l007458.info/' + doc.file.replace(/^\//, ''));
      pdfDoc = await pdfjsLib.getDocument({
        url: pdfUrl,
        withCredentials: false,
        cMapUrl: 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/cmaps/',
        cMapPacked: true,
        disableRange: false,
        disableStream: false,
      }).promise;
      currentPage = 1;
      ph.style.display = 'none';
      canvas.style.display = 'block';
      textLayer.style.display = 'block';
      await renderPage(currentPage);
      await buildToc();
      initializeAudioPlayback();
      // Wait a bit for manifest to load, then load audio for document
      setTimeout(() => loadAudioForDocument(doc), 100);
    } catch(e) {
      console.error('PDF viewer error:', e);
      ph.querySelector('p').textContent = 'Could not load inline viewer. Error: ' + (e && e.message ? e.message : String(e));
    }
  }

  async function renderPage(num) {
    if (!pdfDoc) return;
    const canvas = document.getElementById('pdf-canvas');
    const textLayer = document.getElementById('pdf-text-layer');
    const viewer = document.getElementById('modalViewer');
    const page = await pdfDoc.getPage(num);

    // 1. Fit-to-width: compute the display scale from the available container width,
    //    then apply the user's zoom multiplier (pdfScale, default 1.0).
    const baseVp = page.getViewport({scale: 1});
    const avail = Math.max(240, viewer.clientWidth - 32); // minus horizontal padding
    const fitScale = avail / baseVp.width;
    const displayScale = fitScale * pdfScale;

    // 2. Retina: render the backing store at displayScale × devicePixelRatio,
    //    but keep the CSS box at displayScale so layout (and the text layer) align.
    const dpr = window.devicePixelRatio || 1;
    const vp = page.getViewport({scale: displayScale});
    canvas.width  = Math.floor(vp.width  * dpr);
    canvas.height = Math.floor(vp.height * dpr);
    canvas.style.width  = Math.floor(vp.width)  + 'px';
    canvas.style.height = Math.floor(vp.height) + 'px';

    await page.render({
      canvasContext: canvas.getContext('2d'),
      viewport: vp,
      transform: dpr !== 1 ? [dpr, 0, 0, dpr, 0, 0] : null
    }).promise;

    // 3. Text layer — MUST set --scale-factor to the viewport scale (PDF.js v3 requirement),
    //    and size the layer to match the CSS box of the canvas.
    textLayer.innerHTML = '';
    textLayer.style.width  = Math.floor(vp.width)  + 'px';
    textLayer.style.height = Math.floor(vp.height) + 'px';
    textLayer.style.setProperty('--scale-factor', displayScale);
    const textContent = await page.getTextContent();
    pdfjsLib.renderTextLayer({
      textContentSource: textContent,
      container: textLayer,
      viewport: vp,
      textDivs: []
    });

    document.getElementById('pageInfo').textContent = `${num} / ${pdfDoc.numPages}`;
  }


  // ── TOC ────────────────────────────────────────────────────────────
  let tocOutline = [];

  async function resolveDestPage(dest) {
    try {
      let d = dest;
      if (typeof d === 'string') d = await pdfDoc.getDestination(d);
      if (!d || !d[0]) return null;
      const idx = await pdfDoc.getPageIndex(d[0]);
      return idx + 1;
    } catch(e) { return null; }
  }

  async function buildToc() {
    const tocBtn  = document.getElementById('tocToggle');
    const tocSep  = document.getElementById('tocSep');
    const tocBody = document.getElementById('tocBody');
    tocBtn.style.display  = 'none';
    tocSep.style.display  = 'none';
    tocBody.innerHTML     = '';
    tocOutline            = [];
    if (!pdfDoc) return;
    const outline = await pdfDoc.getOutline();
    if (!outline || outline.length === 0) return;
    tocOutline = outline;
    tocBtn.style.display = '';
    tocSep.style.display = '';
    await renderTocTree(outline, tocBody, 1);
  }

  async function renderTocTree(items, container, level) {
    for (const item of items) {
      const btn = document.createElement('button');
      btn.className = 'toc-entry toc-entry--l' + Math.min(level, 4);
      btn.title     = item.title || '';
      btn.textContent = item.title || '(untitled)';
      const dest = item.dest;
      btn.addEventListener('click', async () => {
        document.querySelectorAll('.toc-entry').forEach(e => e.classList.remove('toc-entry--active'));
        btn.classList.add('toc-entry--active');
        const page = await resolveDestPage(dest);
        if (page) { currentPage = page; await renderPage(page); }
      });
      container.appendChild(btn);
      if (item.items && item.items.length) {
        await renderTocTree(item.items, container, level + 1);
      }
    }
  }

  document.getElementById('tocToggle').addEventListener('click', () => {
    const panel = document.getElementById('tocPanel');
    panel.classList.toggle('hidden');
  });

  document.getElementById('tocClose').addEventListener('click', () => {
    document.getElementById('tocPanel').classList.toggle('hidden');
  });

  function closeViewer() {
    // Server-rendered document pages (data-seo-pruned, set by the middleware) had the shared
    // archive text stripped from their HTML for SEO — leave via a real navigation so the
    // visitor gets the full archive page instead of the pruned shell.
    if (document.body.hasAttribute('data-seo-pruned')) { window.location.assign('/documents'); return; }
    document.getElementById('modalOverlay').classList.remove('open');
    document.body.classList.remove('route-modal');
    document.body.style.overflow = '';
    pdfDoc = null; activeDocId = null;
    document.getElementById('pdf-canvas').style.display = 'none';
    document.getElementById('pdf-text-layer').style.display = 'none';
    document.getElementById('viewerPlaceholder').style.display = 'flex';
    document.getElementById('pageInfo').textContent = '-- / --';
    skipAutoScroll = true;
    if (viewerHasHistoryEntry) {
      // openViewer() empties #docGrid (to keep soft-navigated doc views free of the shared
      // archive markup) — repopulate it now that the archive is becoming visible again.
      // (The else-branch below already re-renders via setFilter -> applyFilters.)
      applyFilters();
      history.back();
    } else {
      // No real in-app history entry to go back to (this document was reached via a
      // direct page load, not a click from the grid) — history.back() would just
      // re-navigate to this same URL and reopen the viewer. Go to the archive instead.
      setFilter('key', true);
    }
    setTimeout(() => {
      const docEl = document.getElementById('documents');
      if (docEl) {
        const top = docEl.offsetTop;
        const offset = Math.max(0, top - (window.innerHeight / 4.2));
        window.scrollTo(0, offset);
      }
      skipAutoScroll = false;
    }, 150);
  }

  document.getElementById('modalClose').addEventListener('click', closeViewer);
  document.getElementById('modalOverlay').addEventListener('click', e => { if (e.target===document.getElementById('modalOverlay')) closeViewer(); });
  document.addEventListener('keydown', e => {
    const open = document.getElementById('modalOverlay').classList.contains('open');
    if (e.key==='Escape' && open) { closeViewer(); return; }
    if (!open || !pdfDoc) return;
    if (e.key==='ArrowRight' && currentPage < pdfDoc.numPages) { currentPage++; renderPage(currentPage); if (currentAudioDoc) seekAudioToPage(currentPage); }
    if (e.key==='ArrowLeft' && currentPage > 1) { currentPage--; renderPage(currentPage); if (currentAudioDoc) seekAudioToPage(currentPage); }
  });

  // ── DEEP LINKING ────────────────────────────────────────────────────────────
  function handlePathChange() {
    const path = window.location.pathname;
    document.body.classList.toggle('route-license', path === '/license'); // scoped license page
    // Filter views: /documents (Key) and /documents/<filter>. Reserved filter slugs never
    // collide with document slugs, so real document deep-links still resolve below.
    if (path === '/documents' || path === '/documents/') {
      setFilter('key', false); setActiveNav('documents');
      const el = document.getElementById('documents'); if (el && !skipAutoScroll) setTimeout(() => el.scrollIntoView({ behavior: 'smooth' }), 100);
      return;
    }
    if (path.startsWith('/documents/')) {
      const seg = path.slice('/documents/'.length).replace(/\/$/, '');
      if (SLUG_FILTER.hasOwnProperty(seg)) {
        setFilter(SLUG_FILTER[seg], false); setActiveNav('documents');
        const el = document.getElementById('documents'); if (el && !skipAutoScroll) setTimeout(() => el.scrollIntoView({ behavior: 'smooth' }), 100);
        return;
      }
      const docWithPdf = seg.endsWith('.pdf') ? seg : seg + '.pdf';
      const doc = DOCS.find(d => d.file === 'https://cdn.case-2025l007458.info/documents/' + docWithPdf);
      if (doc) { openViewer(doc.id); return; }
    }
    const sectionIds = ['docket-watch', 'subscribe', 'license'];
    const section = path.replace('/', '');
    if (sectionIds.includes(section)) {
      const el = document.getElementById(section);
      if (el) { setTimeout(() => el.scrollIntoView({ behavior: 'smooth' }), 100); setActiveNav(section); }
      return;
    }
  }
  window.addEventListener('popstate', handlePathChange);
  window.addEventListener('load', function() {
    const path = window.location.pathname;
    if (path !== '/' && path.length > 1) handlePathChange();
  });
  document.getElementById('pdfPrev').addEventListener('click', () => { if (pdfDoc && currentPage>1) { currentPage--; renderPage(currentPage); if (currentAudioDoc) seekAudioToPage(currentPage); } });
  document.getElementById('pdfNext').addEventListener('click', () => { if (pdfDoc && currentPage<pdfDoc.numPages) { currentPage++; renderPage(currentPage); if (currentAudioDoc) seekAudioToPage(currentPage); } });
  document.getElementById('zoomIn').addEventListener('click', () => { pdfScale = Math.min(pdfScale+0.25, 3.5); if (pdfDoc) renderPage(currentPage); });
  document.getElementById('zoomOut').addEventListener('click', () => { pdfScale = Math.max(pdfScale-0.25, 0.5); if (pdfDoc) renderPage(currentPage); });

  // Re-render on resize/rotation so fit-to-width recomputes
  let _resizeTimer = null;
  window.addEventListener('resize', () => {
    if (!pdfDoc) return;
    clearTimeout(_resizeTimer);
    _resizeTimer = setTimeout(() => renderPage(currentPage), 150);
  });
  document.getElementById('modalDownload').addEventListener('click', () => { if (!activeDocId) return; const doc=DOCS.find(d=>d.id===activeDocId); const downloadUrl = (doc.file.startsWith('http') ? doc.file : 'https://cdn.case-2025l007458.info/' + doc.file.replace(/^\//,'')); const a=document.createElement('a'); a.href=downloadUrl; a.download=''; a.click(); });
  document.getElementById('modalShare').addEventListener('click', () => { if (activeDocId) shareDoc(activeDocId); });

  async function shareDoc(docId) {
    const doc = DOCS.find(d=>d.id===docId);
    const url = `${location.origin}/${doc.file}`;
    const data = { title:`${doc.title} -- Long v. CDW Government LLC`, text:`Case No. 2025L007458 -- ${doc.title}`, url };
    if (navigator.share && navigator.canShare && navigator.canShare(data)) { try { await navigator.share(data); return; } catch(_) {} }
    try { await navigator.clipboard.writeText(url); toast('Link copied.'); } catch(_) { toast(`Copy: ${url}`); }
  }

  let toastTimer;
  function toast(msg) { const el=document.getElementById('toast'); el.textContent=msg; el.classList.add('visible'); clearTimeout(toastTimer); toastTimer=setTimeout(()=>el.classList.remove('visible'),3000); }

  // Nav section routing — History API + scroll
  const navLinks = document.querySelectorAll('.site-nav__link');
  const mobileTabs = document.querySelectorAll('.mobile-tab');
  const sectionIds = ['documents','docket-watch','subscribe','license'];
  const sections = sectionIds.map(id=>document.getElementById(id)).filter(Boolean);

  function setActiveNav(sectionId) {
    navLinks.forEach(l=>l.classList.toggle('active', l.dataset.section===sectionId));
    mobileTabs.forEach(t=>t.classList.toggle('active', t.dataset.section===sectionId));
  }

  let isNavScrolling = false;

  document.querySelectorAll('[data-section]').forEach(link => {
    link.addEventListener('click', e => {
      e.preventDefault();
      const sectionId = link.dataset.section;
      // /license is a scoped, indexable page (only the license section shows); every other
      // section is part of the normal scrolling page.
      document.body.classList.toggle('route-license', sectionId === 'license');
      const el = document.getElementById(sectionId);
      if (el) {
        isNavScrolling = true;
        // The Documents tab keeps whatever filter view is active (its URL reflects the filter).
        const targetUrl = sectionId === 'documents' ? filterUrl(activeFilter) : '/' + sectionId;
        history.pushState({ section: sectionId }, '', targetUrl);
        el.scrollIntoView({ behavior: 'smooth' });
        setActiveNav(sectionId);
        setTimeout(() => { isNavScrolling = false; }, 1000);
      }
    });
  });

  window.addEventListener('popstate', e => {
    const sectionId = e.state && e.state.section;
    if (sectionId) {
      const el = document.getElementById(sectionId);
      if (el) { el.scrollIntoView({ behavior: 'smooth' }); setActiveNav(sectionId); }
    }
  });

  // On direct URL load scroll to section
  const pathSection = window.location.pathname.replace('/', '');
  if (sectionIds.includes(pathSection)) {
    const el = document.getElementById(pathSection);
    if (el) { setTimeout(() => el.scrollIntoView({ behavior: 'smooth' }), 100); setActiveNav(pathSection); }
  }

  if ('IntersectionObserver' in window && sections.length) {
    const obs = new IntersectionObserver(entries => {
      entries.forEach(entry => {
        if (entry.isIntersecting && !isNavScrolling) {
          const id = entry.target.id;
          // Keep the active filter view in the URL when the archive is the section in view.
          const url = id === 'documents' ? filterUrl(activeFilter) : '/' + id;
          history.replaceState({ section: id }, '', url);
          setActiveNav(id);
        }
      });
    }, { rootMargin: '-10% 0px -80% 0px' });
    sections.forEach(s=>obs.observe(s));
  }
  function closeNav() {}

  // Comments — Hypothesis annotation layer
  // Hypothesis is already active via the embed script below.
  // Users highlight any text in the PDF viewer or page to annotate.
  document.getElementById('commentsToggle').addEventListener('click', () => {
    const panel = document.getElementById('commentsPanel');
    const isOpen = !panel.classList.contains('hidden');
    panel.classList.toggle('hidden', isOpen);
    document.getElementById('commentsToggle').textContent = isOpen ? 'Comments' : 'Close';
  });
  document.getElementById('commentsPanelClose').addEventListener('click', () => {
    document.getElementById('commentsPanel').classList.add('hidden');
    document.getElementById('commentsToggle').textContent = 'Comments';
  });

  // Scroll progress
  const progressBar = document.getElementById('scroll-progress');
  window.addEventListener('scroll', () => {
    const st=document.documentElement.scrollTop||document.body.scrollTop;
    const sh=document.documentElement.scrollHeight-document.documentElement.clientHeight;
    progressBar.style.width=(sh>0?(st/sh)*100:0)+'%';
  }, {passive:true});

  // Docket Watch
  const SEED_DOCKET = [
    {date:'2026-10-06',party:'court',type:'Hearing',entry:'Continued case management set before the Honorable Bernadette Barrett, Commercial Calendar W, Room 1912, Richard J. Daley Center, 9:00 a.m.'},
    {date:'2026-08-21',party:'court',type:'Ruling',entry:"Ruling on Defendant's second Motion to Dismiss. Count I disposed. Counts II\u2013VI sustained and proceeding."},
    {date:'2026-08-20',party:'court',type:'Hearing',entry:'Court\u2019s Motion: \u201CThis Case Is Taken Under Advisement.\u201D'},
    {date:'2026-08-18',party:'plaintiff',type:'Discovery',entry:"Third Amended Motion to Compel Compliant Responses to Plaintiff's First Request for Admission filed, with exhibits."},
    {date:'2026-07-23',party:'plaintiff',type:'Notice',entry:'Notice of motion on all pending matters, set for hearing August 20, 2026.'},
    {date:'2026-07-20',party:'court',type:'Assignment',entry:'Case reassigned to the Honorable Bernadette Barrett, Commercial Calendar W. Judge Barrett transferred from the Domestic Relations Division to the Law Division effective this date, by Special Order No. 2026\u201342 entered July 2, 2026.'},
    {date:'2026-05-01',party:'plaintiff',type:'Opposition',entry:"Opposition to Defendant's Rule 2-619.1 Motion to Dismiss filed, with memorandum of law."},
        {date:'2026-04-27',party:'court',type:'Assignment',entry:'Judicial Officer Position Vacant'},
    {date:'2026-04-26',party:'court',type:'Assignment',entry:'The Honorable Thomas More Donnelly Concludes Presiding Service on Case No. 2025L007458 Ahead of Chancery Division Appointment'},
    {date:'2026-03-17',party:'defendant',type:'Motion',entry:"Defendant's second Motion to Dismiss filed by FordHarrison LLP, with exhibits."},
    {date:'2026-02-17',party:'plaintiff',type:'Pleading',entry:'Amended Operative Complaint filed. Leave to file granted.'},
    {date:'2026-01-21',party:'plaintiff',type:'Pleading',entry:'First Amended Complaint filed.'},
    {date:'2025-12-02',party:'court',type:'Ruling',entry:"Defendant's first Motion to Dismiss denied."},
    {date:'2025-12-01',party:'defendant',type:'Motion',entry:"Defendant's first Motion to Dismiss the amended complaint filed untimely by FordHarrison LLP."},
    {date:'2025-11-05',party:'plaintiff',type:'Jury',entry:'Plaintiff\u2019s jury demand filed.'},
    {date:'2025-08-28',party:'plaintiff',type:'Discovery',entry:"Notice of service of Plaintiff's First and Second Requests to Admit."},
    {date:'2025-07-23',party:'defendant',type:'Appearance',entry:'Attorney appearance of Joel M. Zeid of FordHarrison LLP for CDW Government LLC. Answer and affirmative defenses filed the same day.'},
    {date:'2025-07-18',party:'defendant',type:'Appearance',entry:'Attorney appearance of Craig R. Thorstenson of FordHarrison LLP for CDW Government LLC.'},
    {date:'2025-07-08',party:'plaintiff',type:'Discovery',entry:'Motion to Compel Production under Rule 201(k) noticed for hearing July 15, 2025 before the Honorable Thomas More Donnelly.'},
    {date:'2025-06-24',party:'plaintiff',type:'Service',entry:'Affidavit and certificate of service filed. Summons and complaint served on Defendant June 23, 2025.'},
    {date:'2025-06-10',party:'plaintiff',type:'Filing',entry:'Case filed. Complaint alleges wage and retaliation violations under the Illinois Wage Payment and Collection Act.'}
  ];

  // Sync OG tag update for crawlers (runs before async scripts)
  (function() {
    const hash = window.location.hash.replace('#documents/', '');
    if (!hash) return;

    const doc = DOCS.find(d => {
      const filename = d.file.split('/').pop().replace('.pdf', '');
      return filename === hash;
    });

    if (doc) {
      // Update meta tags synchronously so crawlers see them
      document.querySelector('meta[property="og:title"]').setAttribute('content',
        `${doc.title} — Long v. CDW Government LLC — Case No. 2025L007458`);

      document.querySelector('meta[property="og:description"]').setAttribute('content',
        `${doc.title}. ${doc.desc} Filed ${new Date(doc.date).toLocaleDateString('en-US', {year: 'numeric', month: 'long', day: 'numeric'})}. CC0 1.0 Universal Public Domain.`);

      document.querySelector('meta[name="twitter:title"]').setAttribute('content',
        `${doc.title} — Case 2025L007458`);

      document.querySelector('meta[name="twitter:description"]').setAttribute('content',
        `${doc.title}. ${doc.desc}`);

      // Canonical is now injected server-side by _middleware.ts
    }
  })();

  function renderDocket(entries, source, syncTime) {
    const tbody=document.getElementById('docketBody'), dot=document.getElementById('syncDot'), status=document.getElementById('syncStatus'), lc=document.getElementById('lastChecked');
    tbody.innerHTML=entries.map(e=>{
      const pc=e.party==='plaintiff'?'plaintiff':e.party==='defendant'?'defendant':'court';
      const pl=e.party==='plaintiff'?'Plaintiff':e.party==='defendant'?'Defendant':'Court';
      return `<tr><td class="docket-entry__date">${fmtDate(e.date)}</td><td><span class="docket-entry__type ${pc}">${pl}</span></td><td>${e.entry}</td></tr>`;
    }).join('');
    dot.className='sync-dot'+(source==='live'?'':' stale');
    status.textContent=source==='live'?'Synced with court docket':'';
    if (syncTime) lc.textContent='Last synced: '+syncTime;
  }
  async function loadDocket() {
    try { const r=await fetch('docket.json',{cache:'no-cache'}); if (!r.ok) throw new Error(); const data=await r.json(); renderDocket(data.entries||SEED_DOCKET,'live',data.syncedAt||null); }
    catch(_) { renderDocket(SEED_DOCKET,'seed',null); }
  }
  document.getElementById('refreshDocket').addEventListener('click', loadDocket);
  loadDocket();

  // Subscribe
  const rssBtn = document.querySelector('.subscribe-card__btn[href="/feed.xml"]');
  if (rssBtn) { 
    rssBtn.addEventListener('click', async e => { 
      e.preventDefault(); 
      try { 
        await navigator.clipboard.writeText('https://case-2025l007458.info/feed.xml'); 
        toast('RSS URL copied to clipboard.'); 
      } catch(err) { 
        toast('Unable to copy. Opening feed instead.'); 
        window.open('/feed.xml','_blank'); 
      } 
    }); 
  }

  const ONESIGNAL_APP_ID = '1fb1ac85-4381-4af0-90e0-e75de1ea77ab';
  let oneSignalReady = false;
  window.OneSignalDeferred = window.OneSignalDeferred || [];
  OneSignalDeferred.push(function(OneSignal) {
    try {
      OneSignal.init({
        appId: ONESIGNAL_APP_ID,
        autoResubscribe: false,
        notifyButton: { enable: false },
        promptOptions: { slidedown: { autoPrompt: false } }
      });
      oneSignalReady = true;
    } catch (err) {
      console.error('OneSignal init failed:', err);
      oneSignalReady = false;
    }
  });

  // Fallback: set ready after 5 seconds if SDK hasn't loaded
  setTimeout(() => {
    if (!oneSignalReady && typeof window.OneSignal !== 'undefined') {
      oneSignalReady = true;
    }
  }, 5000);

  document.getElementById('pushSubscribeBtn').addEventListener('click', () => {
    if (!oneSignalReady) {
      toast('Notifications service loading... please try again.');
      return;
    }
    OneSignalDeferred.push(function(OneSignal) {
      OneSignal.Notifications.requestPermission();
    });
  });

  document.getElementById('emailSubscribeBtn').addEventListener('click', async () => {
    const emailEl=document.getElementById('emailInput'), noteEl=document.getElementById('emailNote');
    const email=emailEl.value.trim();
    if (!email||!email.includes('@')) { noteEl.textContent='Enter a valid email address.'; noteEl.style.color='var(--crimson)'; return; }
    if (!oneSignalReady) { noteEl.textContent='Service loading... please try again.'; noteEl.style.color='var(--crimson)'; return; }
    noteEl.textContent='Subscribing\u2026'; noteEl.style.color='rgba(15,28,46,0.4)';
    OneSignalDeferred.push(function(OneSignal) {
      OneSignal.User.addEmail(email)
        .then(() => {
          noteEl.textContent='Subscribed! Check your email.'; 
          noteEl.style.color='var(--success)'; emailEl.value='';
        })
        .catch(err => {
          noteEl.textContent='Subscription failed. Please try again.';
          noteEl.style.color='var(--crimson)';
          console.error('Email subscription error:', err);
        });
    });
  });

  // Keyboard nav
  document.getElementById('docGrid').addEventListener('keydown', e => {
    const cards=[...document.querySelectorAll('.doc-card')], idx=cards.indexOf(document.activeElement);
    if (idx<0) return;
    if (e.key==='ArrowDown'&&idx<cards.length-1) { cards[idx+1].focus(); e.preventDefault(); }
    if (e.key==='ArrowUp'&&idx>0) { cards[idx-1].focus(); e.preventDefault(); }
  });

  // Hydration gate: skip grid hydration on single document pages (route-modal class added by middleware).
  // This prevents the 36-document grid from being rendered and indexed on deep-link document pages,
  // eliminating the 90% duplicate content that was causing Google to consolidate all doc URLs onto the homepage.
  if (!document.body.classList.contains('route-modal')) {
    applyFilters();  // default landing view = Key Documents (activeFilter = 'key')
  }

  // Deep link: check hash immediately after render
  try { if (window.location.hash) handleHashChange(); } catch(e) { console.error('Deep link error:', e); }

  // PWA Install Prompt
  let deferredInstallPrompt = null;
  const installBtn = document.getElementById('installBtn');
  const installNote = document.getElementById('installNote');

  window.addEventListener('beforeinstallprompt', e => {
    e.preventDefault();
    deferredInstallPrompt = e;
    installBtn.style.display = 'inline-flex';
    installNote.style.display = 'none';
  });

  if (installBtn) {
    installBtn.addEventListener('click', async () => {
      if (!deferredInstallPrompt) return;
      deferredInstallPrompt.prompt();
      const { outcome } = await deferredInstallPrompt.userChoice;
      if (outcome === 'accepted') {
        installBtn.style.display = 'none';
        toast('App installed. Find it on your home screen.');
      }
      deferredInstallPrompt = null;
    });
  }

  window.addEventListener('appinstalled', () => {
    installBtn.style.display = 'none';
    toast('App installed successfully.');
    deferredInstallPrompt = null;
  });

  // ── GUESTBOOK (ledger) ───────────────────────────────────────────────────────
  (function () {
    'use strict';

    var API_BASE = 'https://cdn.case-2025l007458.info/api/guestbook';
    var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

    var stampButtons = Array.prototype.slice.call(document.querySelectorAll('.gb-stamp'));
    var universityField = document.getElementById('gbUniField');
    var workerField = document.getElementById('gbWorkerField');
    var nameField = document.getElementById('gbNameField');
    var countryField = document.getElementById('gbCountryField');
    var nameInput = document.getElementById('gbName');
    var countryInput = document.getElementById('gbCountry');
    var universityInput = document.getElementById('gbUniversity');
    var alumProfInput = document.getElementById('gbAlumProfession');
    var occupationInput = document.getElementById('gbOccupation');
    var companyInput = document.getElementById('gbCompany');
    var remarkInput = document.getElementById('gbRemark');
    var remarkCount = document.getElementById('gbRemarkCount');
    var form = document.getElementById('gbForm');
    var sealBtn = document.getElementById('gbSealBtn');
    var errorNote = document.getElementById('gbErrorNote');
    var entriesEl = document.getElementById('gbEntries');
    var totalCountEl = document.getElementById('gbTotalCount');
    var signInner = document.getElementById('gbSignInner');
    var confirmPanel = document.getElementById('gbConfirmPanel');
    var confirmAgain = document.getElementById('gbConfirmAgain');

    if (!form) return;

    // Guestbook opens as its own modal window (same pattern as the document viewer),
    // fully independent of the doc-viewer's own open/close/routing code.
    var gbModalOverlay = document.getElementById('gbModalOverlay');
    var gbCloseBtn = document.getElementById('gbCloseBtn');
    var gbEntriesLoaded = false;

    function openGuestbookModal(pushState) {
      gbModalOverlay.classList.add('open');
      document.body.classList.add('route-modal');
      document.body.style.overflow = 'hidden';
      gbCloseBtn.focus();
      if (pushState !== false) history.pushState({ guestbook: true }, '', '/guestbook');
      if (!gbEntriesLoaded) { gbEntriesLoaded = true; loadGuestbookEntries(); }
    }

    function closeGuestbookModal(pushState) {
      gbModalOverlay.classList.remove('open');
      document.body.classList.remove('route-modal');
      // route-guestbook is injected server-side on direct /guestbook loads and its CSS
      // forces the overlay visible with !important — must be removed or close does nothing
      document.body.classList.remove('route-guestbook');
      document.body.style.overflow = '';
      if (pushState !== false) history.pushState(null, '', '/documents');
    }

    document.querySelectorAll('[data-section="guestbook"]').forEach(function (link) {
      link.addEventListener('click', function (e) {
        e.preventDefault();
        openGuestbookModal(true);
      });
    });

    gbCloseBtn.addEventListener('click', function () { closeGuestbookModal(true); });
    gbModalOverlay.addEventListener('click', function (e) {
      if (e.target === gbModalOverlay) closeGuestbookModal(true);
    });
    document.addEventListener('keydown', function (e) {
      if (e.key === 'Escape' && gbModalOverlay.classList.contains('open')) closeGuestbookModal(true);
    });
    window.addEventListener('popstate', function () {
      var isOpen = gbModalOverlay.classList.contains('open');
      var onGuestbookPath = window.location.pathname === '/guestbook';
      if (onGuestbookPath && !isOpen) openGuestbookModal(false);
      else if (!onGuestbookPath && isOpen) closeGuestbookModal(false);
    });
    if (window.location.pathname === '/guestbook') openGuestbookModal(false);

    var mode = null;

    function setMode(next) {
      mode = next;
      stampButtons.forEach(function (btn) {
        btn.setAttribute('aria-pressed', btn.dataset.mode === next ? 'true' : 'false');
      });
      universityField.classList.toggle('gb-open', next === 'alumnus');
      workerField.classList.toggle('gb-open', next === 'worker');
      nameField.style.display = next === 'anon' ? 'none' : '';
      countryField.style.display = next === 'anon' ? 'none' : '';
      errorNote.textContent = '';
    }

    stampButtons.forEach(function (btn) {
      btn.addEventListener('click', function () {
        setMode(mode === btn.dataset.mode ? null : btn.dataset.mode);
      });
    });

    var givenNames = ['Maya', 'Tyrone', 'Julia', 'Christo', 'Krishna', 'Krish', 'Christina', 'Elisabetha', 'Chris', 'Rick', 'Richard', 'Raj', 'Rik', 'Piper', 'Ryan', 'Tara', 'Craig', 'Joel', 'John C.', 'John R.', 'Craig R.', 'Craig C.'];
    var surnames = ['Hernandez', 'Vernon', 'Chen', 'Patel', 'Khan', 'Gupta', 'Trudeau'];
    var exactNames = ['Maya Hernandez', 'Tyrone Vernon', 'Julia Chen', 'Christo Patel', 'Krishna Patel', 'Krish Patel', 'Christina Patel', 'Krish Khan', 'Elisabetha Khan', 'Chris Patel', 'Rick Patel', 'Richard Patel', 'Elisabetha Patel', 'Raj Patel', 'Krish Gupta', 'Rik Khan', 'Rik Patel', 'Piper Trudeau', 'Ryan Trudeau', 'Tara Trudeau', 'Craig Khan', 'Joel Khan', 'John C. Khan', 'John R. Khan', 'Craig R. Khan', 'Craig C. Khan', 'Kris K. Karnie', 'Johnathan Ingram', 'Cyrus Ingram', 'Joshua Bart', 'Chance Ventura', 'Pernelle Shapiro', 'Neil Patel', 'Neal Patel', 'Sanjana Gupta', 'Barney Jones', 'Absalom Crump'];

    function pick(arr) { return arr[Math.floor(Math.random() * arr.length)]; }
    function randomExampleName() {
      if (Math.random() < 0.5) return pick(exactNames);
      return pick(givenNames) + ' ' + pick(surnames);
    }
    nameInput.placeholder = 'e.g. ' + randomExampleName();

    var countryExamples = ['United States', 'Canada', 'India'];
    countryInput.placeholder = 'e.g. ' + pick(countryExamples);

    var companyExamples = ['World Wide Technology', 'SHI', 'Google', 'Cisco', 'CrowdStrike', 'Palo Alto Networks', 'Accenture', 'Microsoft'];
    companyInput.placeholder = 'e.g. ' + pick(companyExamples);

    // Country type-ahead — suggests matches as the visitor types (nothing is pre-filled).
    var GB_COUNTRIES = ['Afghanistan','Albania','Algeria','Andorra','Angola','Argentina','Armenia','Australia','Austria','Azerbaijan','Bahamas','Bahrain','Bangladesh','Barbados','Belarus','Belgium','Belize','Benin','Bhutan','Bolivia','Bosnia and Herzegovina','Botswana','Brazil','Brunei','Bulgaria','Burkina Faso','Burundi','Cambodia','Cameroon','Canada','Cape Verde','Central African Republic','Chad','Chile','China','Colombia','Comoros','Congo','Costa Rica','Croatia','Cuba','Cyprus','Czech Republic','Democratic Republic of the Congo','Denmark','Djibouti','Dominica','Dominican Republic','Ecuador','Egypt','El Salvador','Equatorial Guinea','Eritrea','Estonia','Eswatini','Ethiopia','Fiji','Finland','France','Gabon','Gambia','Georgia','Germany','Ghana','Greece','Grenada','Guatemala','Guinea','Guinea-Bissau','Guyana','Haiti','Honduras','Hungary','Iceland','India','Indonesia','Iran','Iraq','Ireland','Israel','Italy','Ivory Coast','Jamaica','Japan','Jordan','Kazakhstan','Kenya','Kiribati','Kosovo','Kuwait','Kyrgyzstan','Laos','Latvia','Lebanon','Lesotho','Liberia','Libya','Liechtenstein','Lithuania','Luxembourg','Madagascar','Malawi','Malaysia','Maldives','Mali','Malta','Mauritania','Mauritius','Mexico','Micronesia','Moldova','Monaco','Mongolia','Montenegro','Morocco','Mozambique','Myanmar','Namibia','Nauru','Nepal','Netherlands','New Zealand','Nicaragua','Niger','Nigeria','North Korea','North Macedonia','Norway','Oman','Pakistan','Palau','Palestine','Panama','Papua New Guinea','Paraguay','Peru','Philippines','Poland','Portugal','Qatar','Romania','Russia','Rwanda','Saint Kitts and Nevis','Saint Lucia','Samoa','San Marino','Saudi Arabia','Senegal','Serbia','Seychelles','Sierra Leone','Singapore','Slovakia','Slovenia','Solomon Islands','Somalia','South Africa','South Korea','South Sudan','Spain','Sri Lanka','Sudan','Suriname','Sweden','Switzerland','Syria','Taiwan','Tajikistan','Tanzania','Thailand','Timor-Leste','Togo','Tonga','Trinidad and Tobago','Tunisia','Turkey','Turkmenistan','Tuvalu','Uganda','Ukraine','United Arab Emirates','United Kingdom','United States','Uruguay','Uzbekistan','Vanuatu','Vatican City','Venezuela','Vietnam','Yemen','Zambia','Zimbabwe'];
    (function initCountryAutocomplete() {
      var acList = document.getElementById('gbCountryAC');
      if (!acList) return;
      var activeIndex = -1;
      var matches = [];
      function close() { acList.hidden = true; acList.innerHTML = ''; activeIndex = -1; matches = []; countryInput.setAttribute('aria-expanded', 'false'); }
      function choose(val) { countryInput.value = val; close(); countryInput.focus(); }
      function renderMatches() {
        acList.innerHTML = '';
        matches.forEach(function (name, i) {
          var li = document.createElement('li');
          li.className = 'gb-ac-item' + (i === activeIndex ? ' gb-ac-active' : '');
          li.setAttribute('role', 'option');
          li.textContent = name;
          li.addEventListener('mousedown', function (e) { e.preventDefault(); choose(name); });
          acList.appendChild(li);
        });
        acList.hidden = matches.length === 0;
        countryInput.setAttribute('aria-expanded', matches.length ? 'true' : 'false');
      }
      function update() {
        var q = countryInput.value.trim().toLowerCase();
        if (!q) { close(); return; }
        var starts = [], contains = [];
        for (var i = 0; i < GB_COUNTRIES.length; i++) {
          var lc = GB_COUNTRIES[i].toLowerCase();
          if (lc.indexOf(q) === 0) starts.push(GB_COUNTRIES[i]);
          else if (lc.indexOf(q) !== -1) contains.push(GB_COUNTRIES[i]);
        }
        matches = starts.concat(contains).slice(0, 6);
        activeIndex = -1;
        renderMatches();
      }
      countryInput.addEventListener('input', update);
      countryInput.addEventListener('keydown', function (e) {
        if (acList.hidden) return;
        if (e.key === 'ArrowDown') { e.preventDefault(); activeIndex = Math.min(activeIndex + 1, matches.length - 1); renderMatches(); }
        else if (e.key === 'ArrowUp') { e.preventDefault(); activeIndex = Math.max(activeIndex - 1, 0); renderMatches(); }
        else if (e.key === 'Enter') { if (activeIndex >= 0) { e.preventDefault(); choose(matches[activeIndex]); } }
        else if (e.key === 'Escape') { close(); }
      });
      countryInput.addEventListener('blur', function () { setTimeout(close, 120); });
    })();

    remarkInput.addEventListener('input', function () {
      remarkCount.textContent = remarkInput.value.length;
    });

    function gbEscapeHtml(str) {
      var div = document.createElement('div');
      div.textContent = str || '';
      return div.innerHTML;
    }
    function gbFormatDate(iso) {
      var d = new Date(iso);
      return d.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: '2-digit' });
    }
    function gbHash(str) {
      var h = 0;
      for (var i = 0; i < str.length; i++) { h = (h << 5) - h + str.charCodeAt(i); h |= 0; }
      return Math.abs(h);
    }
    function gbFlourishPath(seed) {
      var amp = 2 + (seed % 3);
      var dip = 3 + (seed % 4);
      return 'M0,4 C 20,' + (4 - amp) + ' 40,' + (4 + dip) + ' 60,' + (4 - amp) + ' S 90,' + (4 + amp) + ' 120,4';
    }

    function gbRenderEntry(entry, fresh) {
      var isAnon = entry.mode === 'anon' || !entry.name;
      var displayName = isAnon ? 'A Visitor to the Record' : entry.name;
      var seed = gbHash(displayName + entry.date);
      var tagLabel = entry.mode === 'alumnus' ? 'Alumnus' : entry.mode === 'worker' ? 'Worker' : 'Anonymous';

      var affLine = '';
      if (isAnon) {
        affLine = 'Identity withheld';
      } else if (entry.mode === 'alumnus') {
        affLine = [entry.university, entry.profession].filter(Boolean).join(' · ');
      } else if (entry.mode === 'worker') {
        affLine = [entry.occupation, entry.company].filter(Boolean).join(', ');
      }
      if (!isAnon && entry.country) affLine = affLine ? affLine + ' — ' + entry.country : entry.country;

      var sigInner = gbEscapeHtml(displayName) +
        (isAnon ? '' : '<span class="gb-flourish"><svg viewBox="0 0 120 8" preserveAspectRatio="none"><path d="' + gbFlourishPath(seed) + '"/></svg></span>');

      var el = document.createElement('div');
      el.className = 'gb-entry' + (fresh ? ' gb-fresh' : '');
      el.innerHTML =
        '<div class="gb-entry-sig' + (isAnon ? ' gb-anon' : '') + '">' + sigInner + '</div>' +
        '<div class="gb-entry-date">' + gbFormatDate(entry.date) + '</div>' +
        '<div class="gb-entry-aff"><span class="gb-chip' + (isAnon ? ' gb-anon' : '') + '">' + tagLabel + '</span>' + (affLine ? gbEscapeHtml(affLine) : '') + '</div>' +
        (entry.remark ? '<div class="gb-entry-remark">&ldquo;' + gbEscapeHtml(entry.remark) + '&rdquo;</div>' : '');
      return el;
    }

    function gbRender(entries) {
      entriesEl.innerHTML = '';
      totalCountEl.textContent = entries.length;
      if (!entries.length) {
        entriesEl.innerHTML = '<p class="gb-empty">No marks yet — be the first.</p>';
        return;
      }
      entries.forEach(function (entry) { entriesEl.appendChild(gbRenderEntry(entry, false)); });
    }

    function loadGuestbookEntries() {
      fetch(API_BASE + '/list')
        .then(function (r) { return r.json(); })
        .then(function (list) { gbRender(list); })
        .catch(function () {
          entriesEl.innerHTML = '<p class="gb-empty">Couldn’t load entries right now.</p>';
        });
    }

    function showThanks() {
      signInner.hidden = true;
      confirmPanel.hidden = false;
    }
    confirmAgain.addEventListener('click', function () {
      confirmPanel.hidden = true;
      signInner.hidden = false;
      if (nameInput.offsetParent !== null) nameInput.focus();
    });

    form.addEventListener('submit', function (e) {
      e.preventDefault();
      errorNote.textContent = '';

      if (!mode) { errorNote.textContent = 'Pick how you’d like to appear first.'; return; }

      var name = nameInput.value.trim();
      var university = '', profession = '', occupation = '', company = '';

      if (mode === 'alumnus') {
        university = universityInput.value.trim();
        profession = alumProfInput.value.trim();
        if (!name) { errorNote.textContent = 'Enter your name, or choose Anonymous.'; return; }
        if (!university) { errorNote.textContent = 'Enter your university.'; return; }
      } else if (mode === 'worker') {
        occupation = occupationInput.value.trim();
        company = companyInput.value.trim();
        if (!name) { errorNote.textContent = 'Enter your name, or choose Anonymous.'; return; }
      }

      var payload = {
        mode: mode,
        name: mode === 'anon' ? '' : name,
        university: university,
        profession: profession,
        occupation: occupation,
        company: company,
        country: mode === 'anon' ? '' : countryInput.value.trim(),
        remark: remarkInput.value.trim()
      };

      sealBtn.disabled = true;
      if (!reduceMotion) {
        sealBtn.classList.add('gb-stamping');
        setTimeout(function () { sealBtn.classList.remove('gb-stamping'); }, 420);
      }

      fetch(API_BASE + '/submit', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(payload)
      })
        .then(function (r) { return r.json().then(function (data) { return { ok: r.ok, data: data }; }); })
        .then(function (result) {
          sealBtn.disabled = false;
          if (!result.ok) {
            errorNote.textContent = (result.data && result.data.error) || 'Something went wrong — please try again.';
            return;
          }
          form.reset();
          remarkCount.textContent = '0';
          setMode(null);
          showThanks();
        })
        .catch(function () {
          sealBtn.disabled = false;
          errorNote.textContent = 'Couldn’t reach the server — please try again.';
        });
    });
  })();

  // Hamburger menu initialization
  function initializeToolbarMenu() {
    var menuBtn = document.getElementById('toolbarMenu');
    var dropdown = document.getElementById('toolbarDropdown');

    if (!menuBtn || !dropdown) return;

    // Toggle dropdown on button click
    menuBtn.addEventListener('click', function(e) {
      e.stopPropagation();
      var isVisible = dropdown.style.display === 'block';
      dropdown.style.display = isVisible ? 'none' : 'block';
    });

    // Close dropdown when clicking menu items
    var zoomOutMobile = document.getElementById('zoomOutMobile');
    var zoomInMobile = document.getElementById('zoomInMobile');
    var commentsToggleMobile = document.getElementById('commentsToggleMobile');

    if (zoomOutMobile) {
      zoomOutMobile.addEventListener('click', function() {
        // Trigger the main zoom out button
        var mainZoomOut = document.getElementById('zoomOut');
        if (mainZoomOut) mainZoomOut.click();
        dropdown.style.display = 'none';
      });
    }

    if (zoomInMobile) {
      zoomInMobile.addEventListener('click', function() {
        // Trigger the main zoom in button
        var mainZoomIn = document.getElementById('zoomIn');
        if (mainZoomIn) mainZoomIn.click();
        dropdown.style.display = 'none';
      });
    }

    if (commentsToggleMobile) {
      commentsToggleMobile.addEventListener('click', function() {
        // Trigger the main comments toggle button
        var mainCommentsToggle = document.getElementById('commentsToggle');
        if (mainCommentsToggle) mainCommentsToggle.click();
        dropdown.style.display = 'none';
      });
    }

    // Close dropdown when clicking outside
    document.addEventListener('click', function(e) {
      if (!menuBtn.contains(e.target) && !dropdown.contains(e.target)) {
        dropdown.style.display = 'none';
      }
    });
  }

  // Initialize on page load
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', initializeToolbarMenu);
  } else {
    initializeToolbarMenu();
  }

  </script>
<script src="https://hypothes.is/embed.js" async></script>
<script>
// Standalone deep-linking — runs independently of main script
(function() {
  function tryDeepLink() {
    var hash = window.location.hash.slice(1);
    console.log('[DEEPLINK] hash:', hash);
    if (!hash) { console.log('[DEEPLINK] no hash, skipping'); return false; }
    hash = decodeURIComponent(hash);
    if (!hash.startsWith('documents/')) { console.log('[DEEPLINK] hash does not start with documents/, skipping'); return false; }
    var hashWithPdf = hash.endsWith('.pdf') ? hash : hash + '.pdf';
    console.log('[DEEPLINK] looking for file:', hashWithPdf);
    var docs = window._DOCS;
    console.log('[DEEPLINK] _DOCS available:', !!docs, 'count:', docs ? docs.length : 0);
    if (!docs) { console.log('[DEEPLINK] _DOCS not available yet'); return false; }
    console.log('[DEEPLINK] _openViewer available:', !!window._openViewer);
    for (var i = 0; i < docs.length; i++) {
      if (docs[i].file === hashWithPdf) {
        console.log('[DEEPLINK] MATCH FOUND! doc id:', docs[i].id, 'title:', docs[i].title);
        window._openViewer(docs[i].id);
        return true;
      }
    }
    console.log('[DEEPLINK] NO MATCH found. First 3 doc files:', docs.slice(0,3).map(function(d){return d.file}));
    return false;
  }
  // Try immediately
  try { console.log('[DEEPLINK] attempt 1: immediate'); tryDeepLink(); } catch(e) { console.error('[DEEPLINK] error:', e); }
  // Try after a short delay
  setTimeout(function() { try { console.log('[DEEPLINK] attempt 2: 800ms'); tryDeepLink(); } catch(e) { console.error('[DEEPLINK] error:', e); } }, 800);
  // Try on load
  window.addEventListener('load', function() { try { console.log('[DEEPLINK] attempt 3: window load'); tryDeepLink(); } catch(e) { console.error('[DEEPLINK] error:', e); } });
  // Listen for hash changes
  window.addEventListener('hashchange', function() { try { console.log('[DEEPLINK] hashchange event'); tryDeepLink(); } catch(e) { console.error('[DEEPLINK] error:', e); } });
})();
</script>
<!-- DEPLOY TEST --></body>
</html>