scraps 1.0.1

Scraps is a portable CLI knowledge hub for managing interconnected Markdown documentation with Wiki-link notation.
:root {
    color-scheme: {{ color_scheme }};

    --nord0: #2e3440;
    --nord1: #3b4252;
    --nord2: #434c5e;
    --nord3: #4c566a;
    --nord4: #d8dee9;
    --nord5: #e5e9f0;
    --nord6: #eceff4;
    --nord7: #8fbcbb;
    --nord8: #88c0d0;
    --nord9: #81a1c1;
    --nord10: #5e81ac;
    --nord11: #bf616a;
    --nord12: #d08770;
    --nord13: #ebcb8b;
    --nord14: #a3be8c;
    --nord15: #b48ead;

    --primary-background-color: light-dark(var(--nord6), var(--nord0));
    --secondary-background-color: light-dark(white, var(--nord1));
    --text-color: light-dark(var(--nord3), var(--nord6));
    --horizontal-rule-color: var(--nord5);
    --shadow-color: light-dark(rgba(184, 194, 215, 0.3), rgba(15, 17, 21, 0.3));
    --gray-color: light-dark(rgb(123, 136, 161) ,rgb(171, 185, 207));

    --link-highlight-color: var(--nord8);
}

/* html tag */
body {
  background-color: var(--primary-background-color);
  color: var(--text-color);
  font-family: 'Rubik', 'Noto Sans JP', sans-serif;
}

pre code {
    border-radius: 4px;
}

p code {
    background-color: var(--primary-background-color);
    padding: 1px 2px;
    border-radius: 2px;
}

hr {
    border: none;
    border-bottom: 1px solid var(--horizontal-rule-color);
}

a {
    color: var(--text-color);
    text-decoration: none;

    &:visited {
        color: var(--text-color);
    }
}

/* header */
header {
    padding-top: 32px;
    text-align: center;

    h1 {
        display: inline-block;
        font-size: 40px;
    }
}

/* main */
main {
    width: 90%;
    margin: 32px auto;
}

/* footer */
footer {
    text-align: center;
    font-size: 12.8px;
    color: var(--gray-color);
    margin-bottom: 32px;

    a {
        color: var(--link-highlight-color);
    }
}

/* scrap */
div.scrap {
    background-color: var(--secondary-background-color);
    border-radius: 4px;
    padding: 32px;
    box-shadow: var(--shadow-color) 0px 6px 9px 0px;

    .context {
        color: var(--gray-color);

        &::before {
            content: "\1F5C2";
            margin-right: 8px;
        }
    }

    h1.title {
        font-size: 36px;
    }

    .commited-date {
        font-size: 12.8px;
        color: var(--gray-color);
    }

    .content {
        margin: 32px 0;
        line-height: 1.5;
        word-break: break-all;

        .ogp-card {
            background-color: var(--primary-background-color);
            border-radius: 8px;
            box-shadow: var(--shadow-color) 0px 6px 9px 0px;
            margin: 16px 0;
            height: 120px;
            overflow: hidden;

            .ogp-card-link {
                display: flex;
                flex-direction: row;
            }

            .ogp-image {
                max-width: 240px;
                height: 100%;
                object-fit: contain;
                flex-grow: 1;
                margin: auto 0;
            }

            .ogp-content {
                height: 96px;
                margin: 12px 16px;
                overflow: hidden;

                .ogp-title {
                    max-height: 48px;
                    overflow: hidden;
                    font-weight: bold;
                }

                .ogp-description {
                    color: var(--gray-color);
                    font-size: 12px;
                }
            }
        }
    }

    a {
        text-decoration: none;
        color: var(--link-highlight-color);

        &:hover {
            background-color: none;
        }
    }

    img {
        max-width: 60%;
    }
}

/* tag */
div.tag {
    h1.title::before {
        content: "\1F3F7";
        margin-right: 8px;
    }
}

/* index */
div.index {
    /* readme block */
    div.readme-block {
        padding: 0 40px;

        a {
            color: var(--link-highlight-color);
        }

        hr {
            margin: 64px 0;
        }
    }

    /* search block */
    div.search-block {
        margin-bottom: 32px;
        text-align: center;

        input {
            color: var(--text-color);
            border: 1px solid transparent;
            background-color: var(--secondary-background-color);
            border-color: var(--secondary-background-color);
            border-radius: 4px;
            width: 240px;
            height: 20px;
            padding: 4px 8px;
            display: inline-block;

            &:focus {
                outline: none;
            }
        }

        .icon::before {
            content: "\1F50D";
            margin-right: 8px;
        }

        ul {
            list-style-position: inside;
            width: 240px;
            position: relative;
            left: 50%;
            transform: translateX(-50%);
        }

        li {
            position: absolute;
            left: 25px;
            list-style: none;
            display: block;
            border: 1px solid transparent;
            border-radius: 4px;
            height: 28px;
            width: 256px;
            background-color: var(--secondary-background-color);
            padding: 0;
            margin: 0;
            overflow: hidden;
            text-wrap: nowrap;
            text-overflow: ellipsis;

            &:hover {
                background-color: var(--link-highlight-color);
            }

            a {
                display: block;
                width: 100%;
                height: 100%;
                padding: 4px 8px;
                margin: 0;
                color: var(--text-color);
                text-decoration: none;
                cursor: pointer;
                box-sizing: border-box;
                line-height: 20px;
            }
        }
    }

    /* tags block */
    div.tags-block {
        margin-bottom: 64px;
    }

    /* links block */
    div.links-block {
        p.sort-key {
            color: var(--gray-color);
            font-size: 16px;
        }
    }

    /* paging arrows */
    div.paging-arrows {
        margin-top: 32px;
        text-align: center;

        a {
            margin-right: 16px;
            color: var(--gray-color);
            font-size: 20px;

            &.prev::before {
                content: "\2B05";
                font-size: 16px;
                line-height: 16px;
                margin-right: 8px;
            }

            &.next::after {
                content: "\27A1";
                font-size: 16px;
                line-height: 16px;
                margin-left: 8px;
            }
        }
    }
}

/* scrap links */
ul.scrap-links {
    display: grid;
    grid-template-columns: repeat(auto-fit, 200px);
    gap: 32px;
    width: 100%;
    padding-top: 16px;
    padding-left: 0;
    list-style: none;
    justify-content: center;

    li.item {
        a {
            display: flex;
            flex-direction: column;
            background-color: var(--secondary-background-color);
            padding: 16px;
            height: 168px;
            border-radius: 4px;
            box-shadow: var(--shadow-color) 0px 6px 9px 0px;
        }

        div.header {
            padding: 8px 0;
        }

        div.context {
            font-size: 12px;
            color: var(--gray-color);

            &::before {
                content: "\1F5C2";
                margin-right: 4px;
            }
        }

        div.title {
            font-size: 18px;
            color: var(--link-highlight-color);
        }

        div.thumbnail {
            overflow: hidden;
        }

        img.thumbnail-image {
            max-height: 128px;
            width: 168px;
            object-fit: contain;
        }

        div.summary {
            overflow: hidden;
            display: -webkit-box;
            line-clamp: 4;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 4;
        }
    }
}

/* tag links */
ul.tag-links {
    list-style: none;

    li.item {
        display: inline-block;
        margin-right: 8px;
        margin-bottom: 8px;

        a {
            color: var(--link-highlight-color);
        }

        span.title {
            margin-right: 2px;

            &::before {
                content: "\1F3F7";
                margin-right: 8px;
            }
        }

        span.more-link {
            color: var(--link-highlight-color);
            margin-right: 8px;
        }
    }
}