
    * {
        box-sizing: border-box;
    }

    body {
        margin: 0;
        color: #202020;
        background: #265567;
        font: 16px/1.6 "Courier New", monospace;
    }

    .page {
        width: min(1000px, calc(100% - 24px));
        margin: 28px auto;
        padding: 18px;
        border: 7px ridge #f4f2eb;
        background: #c4c0b8;
    }

    header {
        padding: 5px 12px;
        padding-top: 25px;
        text-align: center;
        background: #CFCDCB;
    }

    h1 {
        margin: 0;
        color: #175E72;
        font-size: clamp(28px, 6vw, 48px);
        line-height: 1.2;
    }

    .subtitle {
        color: #42596a;
    }

    @keyframes scroll {
        from { transform: translateX(100%); }
        to { transform: translateX(-100%); }
    }

    nav {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 8px;
        margin: 16px 0;
    }

    nav a {
        padding: 6px 12px;
        color: #203d5a;
        text-decoration: none;
        background: #d4d0c8;
        border: 3px outset #f5f3ec;
    }

    nav a:hover {
        background: #e7e4dc;
    }

    nav a:active {
        border-style: inset;
    }

    .columns {
        display: grid;
        grid-template-columns: 230px 1fr;
        gap: 16px;
    }

    section {
        margin-bottom: 16px;
        border: 2px solid #77776f;
        background: #f1f0e9;
    }

    h2 {
        margin: 0;
        padding: 7px 10px;
        color: #fff;
        background: #316e91;
        font-size: 18px;
    }

    .content {
        padding: 12px;
    }

    .avatar {
        display: grid;
        width: 100px;
        height: 100px;
        margin: 4px auto 12px;
        place-items: center;
        border: 4px ridge #ffe66d;
        background: linear-gradient(#b9d1cc 0 58%, #728d62 58% 77%, #796047 77%);
        font-size: 42px;
    }

    footer {
        padding: 10px;
        color: #799999;
        text-align: center;
        background: #254555;
        font-size: 13px;
    }

    @media (max-width: 620px) {
        .columns {
            grid-template-columns: 1fr;
        }
    }

    #companion {
    position: fixed;
    right: 24px;
    bottom: 24px;
    width: 64px;
    height: 64px;
    z-index: 1000;
    }

    #pet {
    width: 64px;
    height: 64px;
    border: 0;
    background: transparent;
    font-size: 64px;
    cursor: grab;
    touch-action: none;
    user-select: none;
    }

    #speech {
    position: absolute;
    left: 50%;
    bottom: calc(100% + 10px);
    transform: translateX(-50%);
    max-width: 250px;
    padding: 8px 10px;
    border: 3px solid #222;
    background: #fff;
    color: #222;
    font: 14px monospace;
    overflow-wrap: break-word;
    pointer-events: none;
    }
