:root {
    --dn-font-family-base: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", Arial, sans-serif;
    --dn-page-max-width: 1240px;
    --dn-page-gutter: 22px;
    --dn-page-gutter-mobile: 14px;

    --dn-color-text-strong: #1f2329;
    --dn-color-text-primary: #2f3338;
    --dn-color-text-secondary: #72767d;
    --dn-color-text-muted: #9aa0a6;

    --dn-size-title-xl: clamp(30px, 2.2vw, 40px);
    --dn-size-title-lg: clamp(24px, 1.8vw, 32px);
    --dn-size-title-md: clamp(20px, 1.35vw, 24px);

    --dn-size-text-lg: clamp(16px, 1.15vw, 20px);
    --dn-size-text-md: clamp(14px, 1vw, 16px);
    --dn-size-text-sm: clamp(12px, 0.9vw, 14px);

    --dn-line-height-title: 1.2;
    --dn-line-height-text: 1.65;
}

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

body {
    font-family: var(--dn-font-family-base);
    color: var(--dn-color-text-primary);
}

.dn-page-shell {
    max-width: var(--dn-page-max-width);
    margin: 0 auto;
    padding-left: var(--dn-page-gutter);
    padding-right: var(--dn-page-gutter);
}

@media (max-width: 768px) {
    .dn-page-shell {
        padding-left: var(--dn-page-gutter-mobile);
        padding-right: var(--dn-page-gutter-mobile);
    }
}

.dn-title-xl {
    font-size: var(--dn-size-title-xl);
    line-height: var(--dn-line-height-title);
    font-weight: 700;
    color: var(--dn-color-text-primary);
}

.dn-title-lg {
    font-size: var(--dn-size-title-lg);
    line-height: var(--dn-line-height-title);
    font-weight: 700;
    color: var(--dn-color-text-primary);
}

.dn-title-md {
    font-size: var(--dn-size-title-md);
    line-height: var(--dn-line-height-title);
    font-weight: 700;
    color: var(--dn-color-text-primary);
}

.dn-text-lg {
    font-size: var(--dn-size-text-lg);
    line-height: var(--dn-line-height-text);
    color: var(--dn-color-text-secondary);
}

.dn-text-md {
    font-size: var(--dn-size-text-md);
    line-height: var(--dn-line-height-text);
    color: var(--dn-color-text-secondary);
}

.dn-text-sm {
    font-size: var(--dn-size-text-sm);
    line-height: 1.55;
    color: var(--dn-color-text-muted);
}
