/* 繁花 主题 —— 由 tools/gen_theme_css.py 生成
   调色与字体只改下面 :root 里的变量即可。 */

:root {
    --font-serif: 'Noto Serif SC', Georgia, 'Songti SC', serif;
    --font-sans: system-ui, 'PingFang SC', 'Microsoft YaHei', sans-serif;
    --font-mono: ui-monospace, Menlo, Consolas, monospace;
    --n0: #fffaf9;
    --n100: #fdf5f3;
    --n200: #f9ebe7;
    --n300: #f3ddd6;
    --n400: #e7c8bd;
    --n500: #cba295;
    --n600: #a87c6e;
    --n700: #7f5a4e;
    --n800: #543f37;
    --n900: #312521;
    --a0: #fff1f2;
    --a100: #ffe4e6;
    --a200: #fecdd3;
    --a300: #fda4af;
    --a400: #fb7185;
    --a500: #e11d48;
    --a600: #be123c;
    --a700: #9f1239;
    --a800: #881337;
    --a900: #4c0519;
    --l0: #fdf4f8;
    --l100: #fce7f3;
    --l200: #fbcfe8;
    --l300: #f9a8d4;
    --l400: #f472b6;
    --l500: #db2777;
    --l600: #be185d;
    --l700: #9d174d;
    --l800: #831843;
    --l900: #500724;
    --n0: #fff;
    --n950: #312521;
    --bg: var(--n0);
    --line: var(--n300);
}

body {
    font-family: var(--font-sans);
    background: var(--bg);
    color: var(--n800);
    margin: 0;
}

[class*='space-y-'] > * + * { margin-top: var(--sy, 0); }
[class*='space-x-'] > * + * { margin-left: var(--sx, 0); }
[class*='divide-y'] > * + * { border-top-width: 1px;
    border-top-style: solid; border-color: var(--dv, var(--line)); }
[class*='divide-x'] > * + * { border-left-width: 1px;
    border-left-style: solid; border-color: var(--dv, var(--line)); }


/* 繁花：大圆角 + 淡粉分隔线，标题走衬线，正文链接用玫红 */
:root { --radius-lg: 0.9rem; --radius-xl: 1.1rem; --radius-2xl: 1.3rem;
        --line: var(--a200); }
h1, h2, h3 { font-family: var(--font-serif); letter-spacing: 0.01em; }
a { text-decoration: none; }
main a { color: var(--l600); }
main a:hover { text-decoration: underline; text-underline-offset: 3px; }
::selection { background: var(--a100); color: var(--a800); }

/* ---- 工具类：templates/default 下 17 个页面模板共用 ----
   由 tools/gen_theme_css.py 生成，改模板类名后重跑本脚本。 */
.about-body {
    line-height: 1.8;
    font-size: 1.02rem;
    word-break: break-word;
}
.antialiased {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.bg-\[\#fcfaf2\] {
    background-color: #fcfaf2;
}
.bg-blue-50 {
    background-color: var(--l50);
}
.bg-emerald-50 {
    background-color: var(--a50);
}
.bg-rose-50 {
    background-color: var(--a50);
}
.bg-slate-50 {
    background-color: var(--n50);
}
.bg-slate-900 {
    background-color: var(--n900);
}
.bg-stone-100 {
    background-color: var(--n100);
}
.bg-stone-200\/60 {
    background-color: color-mix(in srgb, var(--n200) 60%, transparent);
}
.bg-stone-50 {
    background-color: var(--n50);
}
.bg-stone-800 {
    background-color: var(--n800);
}
.bg-white {
    background-color: var(--n0);
}
.block {
    display: block;
}
.border {
    border-width: 1px;
    border-style: solid;
    border-color: var(--line);
}
.border-b {
    border-bottom-width: 1px;
    border-bottom-style: solid;
    border-bottom-color: var(--line);
}
.border-dotted {
    border-style: dotted;
}
.border-emerald-100 {
    border-color: var(--a100);
}
.border-purple-200 {
    border-color: var(--a200);
}
.border-rose-100 {
    border-color: var(--a100);
}
.border-slate-100 {
    border-color: var(--n100);
}
.border-slate-200 {
    border-color: var(--n200);
}
.border-stone-200 {
    border-color: var(--n200);
}
.border-stone-300 {
    border-color: var(--n300);
}
.border-stone-400 {
    border-color: var(--n400);
}
.border-t {
    border-top-width: 1px;
    border-top-style: solid;
    border-top-color: var(--line);
}
.border-transparent {
    border-color: transparent;
}
.divide-slate-100 {
    --dv: var(--n100);
}
.divide-y {
    /* 由 [class*=divide-] 规则处理 */;
}
.flex {
    display: flex;
}
.flex-1 {
    flex: 1 1 0%;
}
.flex-col {
    flex-direction: column;
}
.flex-grow {
    flex-grow: 1;
}
.flex-wrap {
    flex-wrap: wrap;
}
.focus\:border-red-800:focus {
    border-color: var(--a800);
}
.focus\:outline-none:focus {
    outline: 2px solid transparent;
    outline-offset: 2px;
}
.font-black {
    font-weight: 900;
}
.font-bold {
    font-weight: 700;
}
.font-extrabold {
    font-weight: 800;
}
.font-medium {
    font-weight: 500;
}
.font-mono {
    font-family: var(--font-mono);
}
.font-normal {
    font-weight: 400;
}
.font-semibold {
    font-weight: 600;
}
.font-serif {
    font-family: var(--font-serif);
}
.gap-2 {
    gap: 0.5rem;
}
.gap-3 {
    gap: 0.75rem;
}
.gap-4 {
    gap: 1rem;
}
.gap-x-5 {
    column-gap: 1.25rem;
}
.gap-x-6 {
    column-gap: 1.5rem;
}
.gap-x-7 {
    column-gap: 1.75rem;
}
.gap-y-2 {
    row-gap: 0.5rem;
}
.grid {
    display: grid;
}
.grid-cols-1 {
    grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.group {
    /* 仅作 group-hover 的锚点，本身无样式 */;
}
.group:hover .group-hover\:bg-red-100 {
    background-color: var(--a100);
}
.group:hover .group-hover\:text-red-700 {
    color: var(--a700);
}
.group:hover .group-hover\:text-red-800 {
    color: var(--a800);
}
.group:hover .group-hover\:text-red-900 {
    color: var(--a900);
}
.h-auto {
    height: auto;
}
.hover\:bg-red-50:hover {
    background-color: var(--a50);
}
.hover\:bg-red-800:hover {
    background-color: var(--a800);
}
.hover\:bg-rose-500:hover {
    background-color: var(--a500);
}
.hover\:bg-slate-50:hover {
    background-color: var(--n50);
}
.hover\:bg-slate-50\/50:hover {
    background-color: color-mix(in srgb, var(--n50) 50%, transparent);
}
.hover\:border-red-200:hover {
    border-color: var(--a200);
}
.hover\:border-red-800:hover {
    border-color: var(--a800);
}
.hover\:border-slate-300:hover {
    border-color: var(--n300);
}
.hover\:text-blue-600:hover {
    color: var(--l600);
}
.hover\:text-emerald-300:hover {
    color: var(--a300);
}
.hover\:text-emerald-600:hover {
    color: var(--a600);
}
.hover\:text-emerald-900:hover {
    color: var(--a900);
}
.hover\:text-pink-400:hover {
    color: var(--a400);
}
.hover\:text-purple-600:hover {
    color: var(--a600);
}
.hover\:text-purple-800:hover {
    color: var(--a800);
}
.hover\:text-purple-900:hover {
    color: var(--a900);
}
.hover\:text-red-800:hover {
    color: var(--a800);
}
.hover\:text-red-900:hover {
    color: var(--a900);
}
.hover\:text-rose-600:hover {
    color: var(--a600);
}
.hover\:text-rose-700:hover {
    color: var(--a700);
}
.hover\:text-stone-900:hover {
    color: var(--n900);
}
.hover\:text-white:hover {
    color: var(--n0);
}
.hover\:underline:hover {
    text-decoration: underline;
}
.inline-flex {
    display: inline-flex;
}
.italic {
    font-style: italic;
}
.items-baseline {
    align-items: baseline;
}
.items-center {
    align-items: center;
}
.justify-between {
    justify-content: between;
}
.justify-center {
    justify-content: center;
}
.leading-relaxed {
    line-height: 1.625;
}
.max-h-96 {
    max-height: 24rem;
}
.max-w-2xl {
    max-width: 42rem;
}
.max-w-3xl {
    max-width: 48rem;
}
.max-w-4xl {
    max-width: 56rem;
}
.max-w-6xl {
    max-width: 72rem;
}
.max-w-lg {
    max-width: 32rem;
}
.max-w-none {
    max-width: none;
}
.mb-1 {
    margin-bottom: 0.25rem;
}
.mb-3 {
    margin-bottom: 0.75rem;
}
.mb-4 {
    margin-bottom: 1rem;
}
.mb-6 {
    margin-bottom: 1.5rem;
}
.mb-8 {
    margin-bottom: 2rem;
}
.min-h-screen {
    min-height: 100vh;
}
.min-w-0 {
    min-width: 0;
}
.ml-2 {
    margin-left: 0.5rem;
}
.ml-4 {
    margin-left: 1rem;
}
.mt-1 {
    margin-top: 0.25rem;
}
.mt-10 {
    margin-top: 2.5rem;
}
.mt-2 {
    margin-top: 0.5rem;
}
.mt-3 {
    margin-top: 0.75rem;
}
.mt-4 {
    margin-top: 1rem;
}
.mt-6 {
    margin-top: 1.5rem;
}
.mt-8 {
    margin-top: 2rem;
}
.mt-auto {
    margin-top: auto;
}
.mx-auto {
    margin-left: auto;
    margin-right: auto;
}
.my-1 {
    margin-top: 0.25rem;
    margin-bottom: 0.25rem;
}
.object-cover {
    object-fit: cover;
}
.overflow-hidden {
    overflow: hidden;
}
.overflow-x-auto {
    overflow-x: auto;
}
.p-3 {
    padding: 0.75rem;
}
.p-4 {
    padding: 1rem;
}
.p-5 {
    padding: 1.25rem;
}
.p-6 {
    padding: 1.5rem;
}
.p-8 {
    padding: 2rem;
}
.page-body {
    line-height: 1.8;
    font-size: 1.02rem;
    word-break: break-word;
}
.pb-12 {
    padding-bottom: 3rem;
}
.pb-2 {
    padding-bottom: 0.5rem;
}
.pb-20 {
    padding-bottom: 5rem;
}
.pb-24 {
    padding-bottom: 6rem;
}
.pb-4 {
    padding-bottom: 1rem;
}
.pr-4 {
    padding-right: 1rem;
}
.prose {
    max-width: 68ch;
    line-height: 1.75;
}
.prose-slate {
    max-width: 68ch;
    line-height: 1.75;
}
.pt-3 {
    padding-top: 0.75rem;
}
.pt-4 {
    padding-top: 1rem;
}
.pt-6 {
    padding-top: 1.5rem;
}
.px-1\.5 {
    padding-left: 0.375rem;
    padding-right: 0.375rem;
}
.px-2 {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}
.px-3 {
    padding-left: 0.75rem;
    padding-right: 0.75rem;
}
.px-3\.5 {
    padding-left: 0.875rem;
    padding-right: 0.875rem;
}
.px-4 {
    padding-left: 1rem;
    padding-right: 1rem;
}
.px-5 {
    padding-left: 1.25rem;
    padding-right: 1.25rem;
}
.px-6 {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
}
.py-0\.5 {
    padding-top: 0.125rem;
    padding-bottom: 0.125rem;
}
.py-1 {
    padding-top: 0.25rem;
    padding-bottom: 0.25rem;
}
.py-1\.5 {
    padding-top: 0.375rem;
    padding-bottom: 0.375rem;
}
.py-10 {
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
}
.py-12 {
    padding-top: 3rem;
    padding-bottom: 3rem;
}
.py-14 {
    padding-top: 3.5rem;
    padding-bottom: 3.5rem;
}
.py-16 {
    padding-top: 4rem;
    padding-bottom: 4rem;
}
.py-2 {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}
.py-3 {
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
}
.py-6 {
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
}
.py-8 {
    padding-top: 2rem;
    padding-bottom: 2rem;
}
.rounded {
    border-radius: var(--radius-DEFAULT, 0.25rem);
}
.rounded-2xl {
    border-radius: var(--radius-2xl, 1rem);
}
.rounded-full {
    border-radius: var(--radius-full, 9999px);
}
.rounded-l-lg {
    border-top-left-radius: 0.5rem;
    border-bottom-left-radius: 0.5rem;
}
.rounded-lg {
    border-radius: var(--radius-lg, 0.5rem);
}
.rounded-r-lg {
    border-top-right-radius: 0.5rem;
    border-bottom-right-radius: 0.5rem;
}
.rounded-xl {
    border-radius: var(--radius-xl, 0.75rem);
}
selection\:bg-amber-100::selection {
    background-color: var(--a100);
}
selection\:text-amber-900::selection {
    color: var(--a900);
}
.shadow-sm {
    box-shadow: var(--shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));
}
.shrink-0 {
    flex-shrink: 0;
}
.space-x-1\.5 {
    --sx: 0.375rem;
}
.space-x-2 {
    --sx: 0.5rem;
}
.space-x-3 {
    --sx: 0.75rem;
}
.space-x-4 {
    --sx: 1rem;
}
.space-x-5 {
    --sx: 1.25rem;
}
.space-x-6 {
    --sx: 1.5rem;
}
.space-y-12 {
    --sy: 3rem;
}
.space-y-16 {
    --sy: 4rem;
}
.space-y-3 {
    --sy: 0.75rem;
}
.space-y-4 {
    --sy: 1rem;
}
.space-y-6 {
    --sy: 1.5rem;
}
.space-y-8 {
    --sy: 2rem;
}
.sticky {
    position: sticky;
}
.text-2xl {
    font-size: 1.5rem;
    line-height: 2rem;
}
.text-3xl {
    font-size: 1.875rem;
    line-height: 2.25rem;
}
.text-4xl {
    font-size: 2.25rem;
    line-height: 2.5rem;
}
.text-amber-600 {
    color: var(--a600);
}
.text-base {
    font-size: 1rem;
    line-height: 1.5rem;
}
.text-blue-600 {
    color: var(--l600);
}
.text-center {
    text-align: center;
}
.text-emerald-400 {
    color: var(--a400);
}
.text-emerald-600 {
    color: var(--a600);
}
.text-emerald-700 {
    color: var(--a700);
}
.text-emerald-900 {
    color: var(--a900);
}
.text-indigo-600 {
    color: var(--a600);
}
.text-left {
    text-align: left;
}
.text-lg {
    font-size: 1.125rem;
    line-height: 1.75rem;
}
.text-purple-300 {
    color: var(--a300);
}
.text-purple-400 {
    color: var(--a400);
}
.text-purple-600 {
    color: var(--a600);
}
.text-purple-800 {
    color: var(--a800);
}
.text-purple-900 {
    color: var(--a900);
}
.text-rose-500 {
    color: var(--a500);
}
.text-rose-700 {
    color: var(--a700);
}
.text-rose-800 {
    color: var(--a800);
}
.text-rose-900 {
    color: var(--a900);
}
.text-slate-100 {
    color: var(--n100);
}
.text-slate-300 {
    color: var(--n300);
}
.text-slate-400 {
    color: var(--n400);
}
.text-slate-500 {
    color: var(--n500);
}
.text-slate-600 {
    color: var(--n600);
}
.text-slate-700 {
    color: var(--n700);
}
.text-slate-900 {
    color: var(--n900);
}
.text-sm {
    font-size: 0.875rem;
    line-height: 1.25rem;
}
.text-stone-300 {
    color: var(--n300);
}
.text-stone-400 {
    color: var(--n400);
}
.text-stone-500 {
    color: var(--n500);
}
.text-stone-600 {
    color: var(--n600);
}
.text-stone-700 {
    color: var(--n700);
}
.text-stone-800 {
    color: var(--n800);
}
.text-stone-900 {
    color: var(--n900);
}
.text-white {
    color: var(--n0);
}
.text-xl {
    font-size: 1.25rem;
    line-height: 1.75rem;
}
.text-xs {
    font-size: 0.75rem;
    line-height: 1rem;
}
.top-0 {
    top: 0;
}
.tracking-tight {
    letter-spacing: -0.025em;
}
.tracking-wide {
    letter-spacing: 0.025em;
}
.tracking-wider {
    letter-spacing: 0.05em;
}
.tracking-widest {
    letter-spacing: 0.1em;
}
.transition-all {
    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
}
.transition-colors {
    transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
}
.truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.uppercase {
    text-transform: uppercase;
}
.w-full {
    width: 100%;
}
.whitespace-nowrap {
    white-space: nowrap;
}
.z-50 {
    z-index: 50;
}

@media (min-width: 768px) {
.md\:grid-cols-5 {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }
}

@media (min-width: 640px) {
.sm\:grid-cols-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
