JSFiddle - React, Tailwind, and code Playground

HTML

<html>

<head>
    <style>
    </style>
</head>

<body>
    <div class="box">
        <div class="row header">
            <p>
                <b>header</b>
                <br />
                <br />(sized to content)</p>
        </div>
        <div class="row content">
            <p>
                <b>Top box is not visible</b> (fills remaining space)
            </p>
            <div class="data">
                <p>
                    <b>content</b> (fills remaining space)
                </p>
                <p>
                    <b>content</b> (fills remaining space)
                </p>
                <p>
                    <b>content</b> (fills remaining space)
                </p>
            </div>
            <p>
                    <b>Bottom Box is visible.</b> (fills remaining space)
            </p>
        </div>
        <div class="row footer">
            <p>
                <b>footer</b> (fixed height)</p>
        </div>
    </div>
</body>

</html>

CSS

html,
        body {
            height: 100%;
            margin: 0
        }

        .box {
            display: flex;
            flex-flow: column;
            height: 100%;
        }

        .box .row {
            border: 1px dotted grey;
        }

        .box .row.header {
            flex: 0 1 auto;
        }

        .box .row.content {
            display: flex;
            flex-flow: column;
            flex: 1 1 auto;
            overflow-y: auto;
            /*justify-content: center;              removed  */
            align-items: center;
        }

        .data {
            width: 80%;
            height: 8000px;
        }

        .box .row.footer {
            flex: 0 1 40px;
        }