:root {
    --paper: #f5efe4;
    --paper-soft: #fbf7f0;
    --ink: #14353a;
    --ink-soft: #3e5b5f;
    --accent: #b56b2f;
    --accent-soft: #d6a071;
    --line: rgba(20, 53, 58, 0.16);
    --card: rgba(255, 250, 243, 0.82);
    --shadow: 0 24px 60px rgba(26, 42, 45, 0.14);
    --heading-font: "STSong", "Songti SC", "Noto Serif SC", serif;
    --body-font: "Microsoft YaHei", "PingFang SC", "Segoe UI", sans-serif;
}

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    color: var(--ink);
    font-family: var(--body-font);
    background:
        radial-gradient(circle at top left, rgba(181, 107, 47, 0.12), transparent 28%),
        radial-gradient(circle at top right, rgba(20, 53, 58, 0.10), transparent 26%),
        linear-gradient(180deg, #f8f3ea 0%, #f2ece0 48%, #efe8db 100%);
}

body::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(20, 53, 58, 0.04) 1px, transparent 1px),
        linear-gradient(90deg, rgba(20, 53, 58, 0.04) 1px, transparent 1px);
    background-size: 48px 48px;
    mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.55), transparent 78%);
}

a {
    color: inherit;
    text-decoration: none;
}

img {
    max-width: 100%;
    display: block;
}
