/* 古诗词 /poems 模块 */

.poems-hero .hero-desc {
    max-width: 720px;
}

.poems-error {
    color: var(--color-danger);
}

.poems-daily .poem-daily-inner {
    text-align: center;
}

.poems-filter-form {
    margin-bottom: 0.75rem;
}

.btn-secondary {
    display: inline-block;
    padding: 0.5rem 1rem;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    background: var(--color-white);
    color: var(--color-text);
    font-size: 1rem;
    cursor: pointer;
    text-decoration: none;
    transition: background var(--transition);
}

.btn-secondary:hover {
    background: var(--color-border-light);
    text-decoration: none;
    color: var(--color-text);
}

.poems-filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
}

.poems-input,
.poems-select {
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    font-size: 1rem;
    min-width: 160px;
    flex: 1 1 200px;
    background: var(--color-white);
}

.poems-select {
    flex: 0 1 220px;
}

.poems-result-count {
    margin: 0;
    color: var(--color-text-secondary);
    font-size: 0.95rem;
}

.poems-list-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1.25rem;
}

.poem-list-card {
    background: var(--color-white);
    border-radius: var(--radius-md);
    padding: 1.25rem 1.5rem;
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--color-border-light);
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.poem-list-card h3 {
    font-size: 1.15rem;
    margin: 0;
}

.poem-meta {
    color: var(--color-text-secondary);
    font-size: 0.9rem;
    margin: 0;
}

.poem-preview-lines p {
    margin: 0.15rem 0;
    color: var(--color-text);
}

.poems-empty {
    grid-column: 1 / -1;
    color: var(--color-text-secondary);
}

.poems-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin-top: 2rem;
    flex-wrap: wrap;
}

.poems-page-info {
    color: var(--color-text-secondary);
}

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

/* 详情页 */
.poem-detail-header h1 {
    text-align: center;
    font-size: 1.75rem;
}

.poem-detail-meta {
    text-align: center;
}

.poem-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: center;
    margin-top: 0.75rem;
}

.poem-tags li {
    background: var(--color-primary-bg);
    color: var(--color-primary-dark);
    padding: 0.2rem 0.65rem;
    border-radius: 999px;
    font-size: 0.85rem;
}

.poem-lines {
    text-align: center;
    font-size: 1.35rem;
    line-height: 1.15;
}

.poem-lines.is-prose {
    max-width: 22em;
    margin: 0 auto;
    text-align: left;
}

.poem-lines.is-prose .poem-ruby-line {
    justify-content: flex-start;
    margin: 0.3rem 0;
}

.poem-ruby-line {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: flex-end;
    margin: 0.55rem 0;
    row-gap: 0.45rem;
}

.poem-ruby {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    min-width: 1.15em;
    margin: 0 0.12em;
}

.poem-ruby-py {
    font-size: 0.52em;
    line-height: 1.15;
    color: var(--color-text-light);
    font-family: Georgia, "Times New Roman", serif;
    font-weight: 400;
    white-space: nowrap;
    letter-spacing: 0;
    margin-bottom: 0.12em;
}

.poem-ruby-hz {
    font-family: "Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC", SimSun, serif;
    line-height: 1.2;
    letter-spacing: 0;
}

.poem-punct {
    display: inline-flex;
    align-items: flex-end;
    line-height: 1.2;
    margin: 0 0.02em;
    color: var(--color-text);
}

.poem-prose {
    line-height: 1.85;
    color: var(--color-text-secondary);
}

.poems-card-tool {
    scroll-margin-top: calc(var(--header-height) + 12px);
}

.poems-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    margin-bottom: 1rem;
}

.poems-checkbox {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    cursor: pointer;
    font-size: 0.95rem;
}

.poems-card-style-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 0.75rem;
    align-items: center;
    margin-bottom: 0.75rem;
}

.poems-card-style-label {
    font-size: 0.85rem;
    color: var(--color-text-secondary);
    min-width: 2.5em;
}

.poem-border-swatches,
.poem-pattern-swatches {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.poem-swatch {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 2px solid transparent;
    cursor: pointer;
    padding: 0;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12);
    background: var(--swatch, #9c2b27);
}

.poem-swatch[data-border="cinnabar"] { --swatch: #9c2b27; }
.poem-swatch[data-border="indigo"] { --swatch: #2b4c6f; }
.poem-swatch[data-border="pine"] { --swatch: #2d5a45; }
.poem-swatch[data-border="ochre"] { --swatch: #8a5a2b; }
.poem-swatch[data-border="ink"] { --swatch: #2c2c2c; }
.poem-swatch[data-border="sandalwood"] { --swatch: #5c2e4e; }
.poem-swatch[data-border="moon"] { --swatch: #6d7f82; }

.poem-swatch.is-active,
.poem-pattern-btn.is-active,
.poem-font-btn.is-active,
.poem-align-btn.is-active,
.poem-paper-swatch.is-active {
    outline: 2px solid var(--color-primary-dark);
    outline-offset: 2px;
    border-color: #fff;
}

.poem-pattern-btn {
    min-width: 44px;
    height: 28px;
    padding: 0 0.55rem;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: var(--color-white);
    color: var(--color-text);
    font-size: 0.8rem;
    cursor: pointer;
}

.poem-pattern-btn:hover,
.poem-font-btn:hover,
.poem-align-btn:hover,
.poem-swatch:hover,
.poem-paper-swatch:hover {
    filter: brightness(0.97);
}

.poem-font-btn,
.poem-align-btn {
    min-width: 44px;
    height: 28px;
    padding: 0 0.55rem;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: var(--color-white);
    color: var(--color-text);
    font-size: 0.8rem;
    cursor: pointer;
}

.poem-paper-swatches {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.poem-paper-swatch {
    width: 28px;
    height: 28px;
    border-radius: 6px;
    border: 1px solid rgba(0, 0, 0, 0.18);
    cursor: pointer;
    padding: 0;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
}

.poem-paper-swatch[data-paper="xuan"] { background: #f7f0de; }
.poem-paper-swatch[data-paper="ivory"] { background: #fbf7ec; }
.poem-paper-swatch[data-paper="aged"] { background: #ead7b0; }
.poem-paper-swatch[data-paper="moon"] { background: #eef2ee; }
.poem-paper-swatch[data-paper="bamboo"] { background: #e8f0e4; }
.poem-paper-swatch[data-paper="cyan"] { background: #e7eef3; }

.poems-card-license {
    font-size: 0.78rem;
    color: var(--color-text-light);
    margin: -0.25rem 0 0.85rem;
    line-height: 1.5;
}

.poems-card-slider-row {
    align-items: center;
}

.poems-card-slider-row input[type="range"] {
    width: 120px;
    accent-color: var(--color-primary-dark);
}

.poems-card-slider-val {
    font-size: 0.8rem;
    color: var(--color-text-secondary);
    min-width: 3.2em;
}

.poem-reset-type-btn {
    height: 28px;
    padding: 0 0.7rem;
    border: 1px dashed var(--color-border);
    border-radius: 999px;
    background: transparent;
    color: var(--color-text-secondary);
    font-size: 0.8rem;
    cursor: pointer;
}

.poem-layout-hint {
    font-size: 0.85rem;
    color: var(--color-text-secondary);
    margin: 0 0 1rem;
}

.poem-card-status {
    font-size: 0.9rem;
    color: var(--color-success);
    min-height: 1.2em;
    margin: 0 0 0.75rem;
}

.poem-card-status.is-error {
    color: var(--color-danger);
}

.poem-card-preview-wrap {
    display: flex;
    justify-content: center;
    margin-bottom: 1.5rem;
    overflow-x: auto;
}

/* ---- 知识卡片：装裱式边框 + 宣纸花纹 ---- */
.poem-share-card {
    --card-border: #9c2b27;
    --card-paper: #f7f0de;
    --card-ink: #3b2a1a;
    --card-accent: #a33b32;
    --card-muted: #7a6854;
    --card-gold: #c9a86c;
    --card-pattern: rgba(120, 58, 36, 0.1);
    --card-width: 380px;
    --card-font: "Noto Serif SC", serif;
    --card-base-size: 1.2rem;
    --card-title-size: 1.45rem;
    --card-font-scale: 1;
    --card-line-gap: 0.35rem;
    --card-line-gap-scale: 1;
    --card-letter-gap: 0.06em;
    width: var(--card-width);
    max-width: 100%;
    min-height: 520px;
    background: var(--card-border);
    border-radius: 6px;
    padding: 11px;
    box-shadow: var(--shadow-lg);
    color: var(--card-ink);
    box-sizing: border-box;
}

.poem-share-card[data-border="cinnabar"] {
    --card-border: #9c2b27;
    --card-accent: #c23a2b;
    --card-pattern: rgba(156, 43, 39, 0.12);
}
.poem-share-card[data-border="indigo"] {
    --card-border: #2b4c6f;
    --card-accent: #3d5a80;
    --card-pattern: rgba(43, 76, 111, 0.12);
}
.poem-share-card[data-border="pine"] {
    --card-border: #2d5a45;
    --card-accent: #3d7a5c;
    --card-pattern: rgba(45, 90, 69, 0.12);
}
.poem-share-card[data-border="ochre"] {
    --card-border: #8a5a2b;
    --card-accent: #b07838;
    --card-pattern: rgba(138, 90, 43, 0.14);
}
.poem-share-card[data-border="ink"] {
    --card-border: #2c2c2c;
    --card-accent: #5a4a3a;
    --card-pattern: rgba(44, 44, 44, 0.1);
}
.poem-share-card[data-border="sandalwood"] {
    --card-border: #5c2e4e;
    --card-accent: #8a4a72;
    --card-pattern: rgba(92, 46, 78, 0.12);
}
.poem-share-card[data-border="moon"] {
    --card-border: #6d7f82;
    --card-accent: #4f6a6e;
    --card-pattern: rgba(109, 127, 130, 0.14);
}

.poem-share-card[data-paper="xuan"] { --card-paper: #f7f0de; }
.poem-share-card[data-paper="ivory"] { --card-paper: #fbf7ec; }
.poem-share-card[data-paper="aged"] { --card-paper: #ead7b0; }
.poem-share-card[data-paper="moon"] { --card-paper: #eef2ee; }
.poem-share-card[data-paper="bamboo"] { --card-paper: #e8f0e4; }
.poem-share-card[data-paper="cyan"] { --card-paper: #e7eef3; }

.poem-share-frame {
    position: relative;
    border: 1px solid var(--card-gold);
    padding: 7px;
    min-height: inherit;
    box-sizing: border-box;
}

.poem-share-paper {
    position: relative;
    background-color: var(--card-paper);
    color: var(--card-ink);
    min-height: 480px;
    padding: 28px 22px 52px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    overflow: hidden;
    box-sizing: border-box;
}

.poem-share-paper::before {
    content: "";
    position: absolute;
    inset: 8px;
    border: 1px solid rgba(61, 42, 26, 0.18);
    pointer-events: none;
    z-index: 1;
}

.poem-share-corners {
    position: absolute;
    inset: 2px;
    pointer-events: none;
    z-index: 2;
}

.poem-share-corners span {
    position: absolute;
    width: 18px;
    height: 18px;
    border-color: var(--card-gold);
    border-style: solid;
    border-width: 0;
}

.poem-share-corners span:nth-child(1) { top: 0; left: 0; border-top-width: 2px; border-left-width: 2px; }
.poem-share-corners span:nth-child(2) { top: 0; right: 0; border-top-width: 2px; border-right-width: 2px; }
.poem-share-corners span:nth-child(3) { bottom: 0; left: 0; border-bottom-width: 2px; border-left-width: 2px; }
.poem-share-corners span:nth-child(4) { bottom: 0; right: 0; border-bottom-width: 2px; border-right-width: 2px; }

.poem-share-card[data-pattern="xuan"] .poem-share-paper {
    background-image: radial-gradient(rgba(90, 60, 30, 0.05) 0.6px, transparent 0.7px);
    background-size: 5px 5px;
}

.poem-share-card[data-pattern="huiwen"] .poem-share-paper {
    background-image:
        repeating-linear-gradient(0deg, transparent, transparent 13px, var(--card-pattern) 13px, var(--card-pattern) 14px),
        repeating-linear-gradient(90deg, transparent, transparent 13px, var(--card-pattern) 13px, var(--card-pattern) 14px);
}

.poem-share-card[data-pattern="ice"] .poem-share-paper {
    background-image:
        repeating-linear-gradient(28deg, transparent, transparent 11px, var(--card-pattern) 11px, var(--card-pattern) 12px),
        repeating-linear-gradient(-38deg, transparent, transparent 17px, var(--card-pattern) 17px, var(--card-pattern) 18px),
        repeating-linear-gradient(72deg, transparent, transparent 23px, var(--card-pattern) 23px, var(--card-pattern) 24px);
}

.poem-share-card[data-pattern="brocade"] .poem-share-paper {
    background-image:
        repeating-linear-gradient(45deg, transparent, transparent 9px, var(--card-pattern) 9px, var(--card-pattern) 10px),
        repeating-linear-gradient(-45deg, transparent, transparent 9px, var(--card-pattern) 9px, var(--card-pattern) 10px);
}

.poem-share-card[data-pattern="wave"] .poem-share-paper {
    background-image:
        repeating-linear-gradient(0deg, transparent, transparent 10px, var(--card-pattern) 10px, var(--card-pattern) 11px),
        repeating-linear-gradient(8deg, transparent, transparent 18px, var(--card-pattern) 18px, var(--card-pattern) 19px);
}

.poem-share-card[data-pattern="bamboo"] .poem-share-paper {
    background-image: repeating-linear-gradient(
        90deg,
        rgba(45, 90, 69, 0.07) 0 9px,
        transparent 9px 20px
    );
}

.poem-share-card[data-pattern="cloud"] .poem-share-paper {
    background-image:
        radial-gradient(ellipse at 18% 22%, rgba(255, 255, 255, 0.45) 0 28px, transparent 30px),
        radial-gradient(ellipse at 78% 18%, var(--card-pattern) 0 36px, transparent 38px),
        radial-gradient(ellipse at 42% 88%, var(--card-pattern) 0 42px, transparent 44px),
        radial-gradient(ellipse at 88% 72%, rgba(255, 255, 255, 0.35) 0 24px, transparent 26px);
}

.poem-share-inner {
    position: relative;
    z-index: 3;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
}

.poem-share-brand {
    font-size: 0.7rem;
    color: var(--card-accent);
    letter-spacing: 0.28em;
    margin: 0 0 10px;
}

.poem-share-title {
    font-family: var(--card-font);
    font-size: calc(var(--card-title-size) * var(--card-font-scale));
    font-weight: 700;
    margin: 0 0 6px;
    color: var(--card-ink);
}

.poem-share-author {
    font-size: 0.88rem;
    color: var(--card-muted);
    margin: 0 0 8px;
}

.poem-share-ornament {
    width: 64px;
    height: 2px;
    margin: 4px 0 14px;
    background: linear-gradient(90deg, transparent, var(--card-gold), transparent);
    opacity: 0.9;
}

.poem-share-lines {
    flex: 1;
    width: 100%;
    font-size: calc(var(--card-base-size) * var(--card-font-scale));
}

.poem-share-lines .poem-ruby-line {
    margin: calc(var(--card-line-gap) * var(--card-line-gap-scale)) 0;
}

.poem-share-lines .poem-ruby {
    min-width: 1.05em;
    margin: 0 var(--card-letter-gap);
}

.poem-share-lines .poem-ruby-hz,
.poem-share-lines .poem-punct {
    font-family: var(--card-font);
}

.poem-share-lines .poem-ruby-py {
    color: var(--card-muted);
    font-size: 0.4em;
    letter-spacing: -0.03em;
    transform: scale(0.92);
    transform-origin: bottom center;
}

.poem-share-lines .poem-ruby-hz,
.poem-share-lines .poem-punct {
    color: var(--card-ink);
}

.poem-share-card:not(.is-pinyin-on) .poem-share-lines .poem-ruby-py {
    display: none;
}

.poem-share-translation {
    margin-top: 14px;
    font-size: 0.82rem;
    color: var(--card-muted);
    line-height: 1.7;
    text-align: justify;
    width: 100%;
    border-top: 1px dashed rgba(61, 42, 26, 0.25);
    padding-top: 12px;
}

.poem-share-footer {
    margin-top: 18px;
    font-size: 0.68rem;
    color: var(--card-muted);
    letter-spacing: 0.04em;
}

.poem-share-seal {
    position: absolute;
    right: 16px;
    bottom: 18px;
    z-index: 4;
    width: 42px;
    height: 42px;
    border: 2px solid var(--card-accent);
    color: var(--card-accent);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--card-font);
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 0.12em;
    transform: rotate(-9deg);
    opacity: 0.88;
    background: rgba(194, 58, 43, 0.06);
}

.poem-share-card.is-seal-off .poem-share-seal {
    display: none;
}

.poem-share-card[data-font="mashan"],
.poem-share-card[data-font="zhimang"],
.poem-share-card[data-font="longcang"] {
    --card-font: "Ma Shan Zheng", "Noto Serif SC", serif;
    font-synthesis: none;
}
.poem-share-card[data-font="zhimang"] {
    --card-font: "Zhi Mang Xing", "Noto Serif SC", serif;
}
.poem-share-card[data-font="longcang"] {
    --card-font: "Long Cang", "Noto Serif SC", serif;
}
.poem-share-card[data-font="serif"] {
    --card-font: "Noto Serif SC", serif;
}
.poem-share-card[data-font="sans"] {
    --card-font: "Noto Sans SC", sans-serif;
}

.poem-share-card[data-font="mashan"] .poem-share-title,
.poem-share-card[data-font="zhimang"] .poem-share-title,
.poem-share-card[data-font="longcang"] .poem-share-title {
    font-weight: 400;
}

/* 排版算法：按字数切换疏朗 / 均衡 / 紧凑 / 长文 */
.poem-share-card[data-layout="spacious"] {
    --card-width: 390px;
    --card-base-size: 1.45rem;
    --card-title-size: 1.6rem;
    --card-line-gap: 0.55rem;
}
.poem-share-card[data-layout="spacious"] .poem-share-paper {
    min-height: 520px;
    padding: 36px 26px 44px;
}

.poem-share-card[data-layout="balanced"] {
    --card-width: 400px;
    --card-base-size: 1.2rem;
    --card-title-size: 1.45rem;
    --card-line-gap: 0.35rem;
}
.poem-share-card[data-layout="balanced"] .poem-share-paper {
    min-height: 560px;
    padding: 30px 22px 40px;
}

.poem-share-card[data-layout="compact"] {
    --card-width: 455px;
    --card-base-size: 1.02rem;
    --card-title-size: 1.25rem;
    --card-line-gap: 0.18rem;
}
.poem-share-card[data-layout="compact"] .poem-share-paper {
    min-height: 620px;
    padding: 24px 16px 48px;
}
.poem-share-card[data-layout="compact"] .poem-share-lines .poem-ruby {
    min-width: 1em;
}
.poem-share-card[data-layout="compact"] .poem-share-translation {
    font-size: 0.78rem;
}

.poem-share-card[data-layout="prose"] {
    --card-width: 460px;
    --card-base-size: 0.95rem;
    --card-title-size: 1.35rem;
    --card-line-gap: 0.12rem;
}
.poem-share-card[data-layout="prose"] .poem-share-paper {
    min-height: 680px;
    padding: 22px 18px 40px;
    align-items: stretch;
    text-align: left;
}
.poem-share-card[data-layout="prose"] .poem-share-inner {
    align-items: stretch;
    text-align: left;
}
.poem-share-card[data-layout="prose"] .poem-share-brand,
.poem-share-card[data-layout="prose"] .poem-share-title,
.poem-share-card[data-layout="prose"] .poem-share-author,
.poem-share-card[data-layout="prose"] .poem-share-ornament {
    align-self: center;
    text-align: center;
}
.poem-share-card[data-layout="prose"] .poem-share-lines .poem-ruby-line {
    justify-content: flex-start;
}
.poem-share-card[data-layout="prose"] .poem-share-translation {
    font-size: 0.76rem;
    text-align: justify;
}

.poem-share-card[data-align="center"] .poem-share-lines .poem-ruby-line {
    justify-content: center;
}
.poem-share-card[data-align="left"] .poem-share-lines .poem-ruby-line {
    justify-content: flex-start;
}

.poems-miniprogram-cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border-light);
}

.poems-miniprogram-cta p {
    flex: 1;
    min-width: 200px;
    margin: 0;
    color: var(--color-text-secondary);
    font-size: 0.95rem;
}

.poems-related-list {
    list-style: disc;
    padding-left: 1.25rem;
}

.poems-related-list li {
    margin: 0.35rem 0;
}

.poems-back {
    margin-top: 1.5rem;
}

@media (max-width: 480px) {
    .poem-share-card {
        width: 100%;
        --card-width: 100%;
    }

    .poem-lines {
        font-size: 1.15rem;
    }
}
