/* ============================================================
 * Gift Ledger - Dashboard & Book Styles
 * 包含：我的记礼簿页、单礼簿页、预设按钮、确认弹窗
 * ============================================================ */

/* ==================== 页面容器 ==================== */
.gl-dashboard {
    max-width: 960px;
    margin: 24px auto;
    font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
    color: #333;
    background: radial-gradient(ellipse at top, #fffdf8 0%, #ffffff 60%);
    padding: 8px;
    border-radius: 14px;
}

/* ==================== 页头（暖米渐变） ==================== */
.gl-dash-header {
    padding: 22px 26px;
    background: linear-gradient(135deg, #fffaf0 0%, #fff2e6 100%);
    border-left: 4px solid #c9a26b;
    border-radius: 10px;
    margin-bottom: 22px;
    box-shadow: 0 2px 12px rgba(201, 162, 107, .08);
}
.gl-dash-header h2 {
    margin: 0 0 6px;
    color: #6b4a2b;
    font-size: 22px;
    letter-spacing: 1px;
}
.gl-dash-header p {
    margin: 0;
    color: #a08668;
    font-size: 13px;
}

/* ==================== 场景卡片 ==================== */
.gl-dash-section {
    margin-bottom: 28px;
    background: #fff;
    border: 1px solid #eee6da;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 18px rgba(160, 134, 104, .06);
}
.gl-dash-section-title {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 22px;
    border-bottom: 1px solid #eee6da;
}
.gl-dash-section-title h3 {
    margin: 0;
    font-size: 16px;
}
.gl-dash-quota {
    font-size: 13px;
    color: #8a7560;
}
.gl-dash-quota strong {
    margin: 0 4px;
}
.gl-dash-hint {
    margin: 0;
    padding: 10px 22px 0;
    font-size: 13px;
}

/* ---- 婚礼场景配色 ---- */
.gl-dash-wedding .gl-dash-section-title {
    background: linear-gradient(135deg, #fdf0f2 0%, #fbe7ea 100%);
}
.gl-dash-wedding .gl-dash-section-title h3 { color: #b76e79; }
.gl-dash-wedding .gl-dash-hint           { color: #b08a92; }
.gl-dash-wedding .gl-dash-quota strong   { color: #b76e79; }
.gl-dash-wedding .gl-create-book-form    { background: #fffafb; }
.gl-dash-wedding .gl-book-item:hover     { background: #fffafb; }
.gl-dash-wedding .gl-dash-btn {
    background: #b76e79;
    border-color: #b76e79;
}
.gl-dash-wedding .gl-dash-btn:hover {
    background: #9c5a65;
    border-color: #9c5a65;
}

/* ---- 丧事场景配色（肃穆墨蓝） ---- */
.gl-dash-funeral .gl-dash-section-title {
    background: linear-gradient(135deg, #eef1f4 0%, #e4e9ee 100%);
}
.gl-dash-funeral .gl-dash-section-title h3 { color: #3a4a5a; letter-spacing: 3px; }
.gl-dash-funeral .gl-dash-hint           { color: #6a7887; }
.gl-dash-funeral .gl-dash-quota strong   { color: #3a4a5a; }
.gl-dash-funeral .gl-create-book-form    { background: #fafbfc; }
.gl-dash-funeral .gl-book-item:hover     { background: #fafbfc; }
.gl-dash-funeral .gl-dash-btn {
    background: #3a4a5a;
    border-color: #3a4a5a;
}
.gl-dash-funeral .gl-dash-btn:hover {
    background: #2c3a47;
    border-color: #2c3a47;
}

/* ---- 喜事场景配色（红金） ---- */
.gl-dash-festive .gl-dash-section-title {
    background: linear-gradient(135deg, #fff2d6 0%, #ffe0e0 100%);
}
.gl-dash-festive .gl-dash-section-title h3 { color: #d32f2f; letter-spacing: 2px; }
.gl-dash-festive .gl-dash-hint           { color: #b8860b; }
.gl-dash-festive .gl-dash-quota strong   { color: #d32f2f; }
.gl-dash-festive .gl-create-book-form    { background: #fffcf5; }
.gl-dash-festive .gl-book-item:hover     { background: #fffcf5; }
.gl-dash-festive .gl-dash-btn {
    background: #d32f2f;
    border-color: #d32f2f;
}
.gl-dash-festive .gl-dash-btn:hover {
    background: #a93226;
    border-color: #a93226;
}

/* ==================== 礼簿列表 ==================== */
.gl-book-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.gl-book-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 22px;
    border-bottom: 1px solid #f2ede4;
    transition: background .15s;
}
.gl-book-item:last-child { border-bottom: none; }
.gl-book-item-main { flex: 1 1 auto; min-width: 0; }
.gl-book-title {
    font-size: 15px;
    font-weight: 600;
    color: #2c333a;
    text-decoration: none;
    word-break: break-word;
}
.gl-book-title:hover {
    color: #d32f2f;
    text-decoration: underline;
}
.gl-book-meta {
    font-size: 12px;
    color: #8a94a0;
    margin-top: 4px;
}
.gl-book-meta strong {
    color: #d32f2f;
    margin: 0 2px;
}

/* ==================== 新建礼簿表单 ==================== */
.gl-create-book-form {
    display: flex;
    gap: 10px;
    padding: 14px 22px;
    border-top: 1px dashed #eee6da;
    flex-wrap: wrap;
}
.gl-book-title-input {
    flex: 1 1 260px;
    padding: 8px 12px;
    border: 1px solid #ccd2d9;
    border-radius: 6px;
    font-size: 13px;
    background: #fff;
}
.gl-book-title-input:focus {
    outline: none;
    border-color: #8a6a4f;
    box-shadow: 0 0 0 3px rgba(138, 106, 79, .1);
}

/* ==================== 通用按钮 ==================== */
.gl-dash-btn {
    display: inline-block;
    padding: 8px 18px;
    border: 1px solid #8a6a4f;
    background: #8a6a4f;
    color: #fff;
    border-radius: 6px;
    font-size: 13px;
    cursor: pointer;
    text-decoration: none;
    transition: all .15s;
    line-height: 1.4;
}
.gl-dash-btn:hover {
    background: #6f533b;
    border-color: #6f533b;
    color: #fff;
}

/* 危险按钮统一红（覆盖所有场景） */
.gl-dash-btn-danger,
.gl-dash-wedding .gl-dash-btn-danger,
.gl-dash-funeral .gl-dash-btn-danger,
.gl-dash-festive .gl-dash-btn-danger {
    background: #c0392b;
    border-color: #c0392b;
}
.gl-dash-btn-danger:hover,
.gl-dash-wedding .gl-dash-btn-danger:hover,
.gl-dash-funeral .gl-dash-btn-danger:hover,
.gl-dash-festive .gl-dash-btn-danger:hover {
    background: #a93226;
    border-color: #a93226;
}

/* ==================== 空状态 ==================== */
.gl-empty {
    padding: 16px 22px;
    color: #a8a095;
    margin: 0;
    font-size: 13px;
}

/* ==================== 提示条 ==================== */
.gl-notice {
    max-width: 960px;
    margin: 12px auto;
    padding: 12px 16px;
    border-radius: 8px;
    font-size: 14px;
    box-sizing: border-box;
}
.gl-notice-success { background: #eaf7ec; color: #2d6a3a; border: 1px solid #c4e5cb; }
.gl-notice-error   { background: #fdecea; color: #a93226; border: 1px solid #f5c6cb; }
.gl-notice-warning { background: #fff8e1; color: #8a6d00; border: 1px solid #ffe08a; }
.gl-notice a { margin-left: 8px; }

/* ============================================================
 * 单礼簿页（book.php）
 * ============================================================ */
.gl-book {
    max-width: 900px;
    margin: 24px auto;
    font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
}
.gl-book-header {
    padding: 18px 20px;
    border-radius: 8px;
    margin-bottom: 18px;
}
.gl-back {
    font-size: 13px;
    text-decoration: none;
}
.gl-back:hover { text-decoration: underline; }
.gl-book-title-display {
    margin: 8px 0 6px;
    font-size: 22px;
}
.gl-book-meta-line {
    font-size: 13px;
}
.gl-book-meta-line strong {
    margin: 0 3px;
}

/* 修改标题表单 */
.gl-title-form {
    display: flex;
    gap: 10px;
    align-items: center;
    padding: 12px 20px;
    background: #fbfcfe;
    border: 1px solid #e6e9ed;
    border-radius: 8px;
    margin-bottom: 18px;
    flex-wrap: wrap;
}
.gl-title-form label {
    font-size: 13px;
    color: #6a7887;
}
.gl-title-form input[type="text"] {
    flex: 1 1 260px;
    padding: 8px 12px;
    border: 1px solid #ccd2d9;
    border-radius: 6px;
    font-size: 13px;
    background: #fff;
}
.gl-title-form input:focus {
    outline: none;
    border-color: #8a6a4f;
    box-shadow: 0 0 0 3px rgba(138, 106, 79, .1);
}

/* 礼簿底部删除 */
.gl-book-footer {
    margin-top: 22px;
    padding-top: 14px;
    border-top: 1px dashed #e6e9ed;
}

/* ==================== 记录表格 ==================== */
.gl-table-wrap { overflow-x: auto; }
.gl-table {
    width: 100%;
    border-collapse: collapse;
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .04);
}
.gl-table th,
.gl-table td {
    padding: 10px 12px;
    border-bottom: 1px solid #f0f2f5;
    text-align: left;
    font-size: 13px;
}
.gl-table th {
    background: #f8fafc;
    color: #3a4a5a;
}
.gl-records-title {
    font-size: 16px;
    color: #2c333a;
    margin-bottom: 12px;
}
.gl-inline-form {
    display: inline;
    margin: 0;
}

/* ============================================================
 * 预设按钮
 * ============================================================ */
.gl-presets {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}
.gl-preset {
    padding: 5px 14px;
    border: 1px solid #ccd2d9;
    border-radius: 16px;
    background: #fff;
    color: #4a4a4a;
    font-size: 13px;
    cursor: pointer;
    transition: all .15s;
    line-height: 1.4;
}
.gl-preset:hover {
    border-color: #888;
    background: #f7f8fa;
}
.gl-preset-active {
    border-color: #d32f2f;
    background: #fdecea;
    color: #d32f2f;
}

/* ============================================================
 * 提交确认弹窗
 * ============================================================ */
body.gl-modal-open { overflow: hidden; }

.gl-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .5);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 999999;
    padding: 20px;
    animation: gl-fade-in .15s ease-out;
}
.gl-modal {
    background: #fff;
    border-radius: 12px;
    max-width: 460px;
    width: 100%;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
    overflow: hidden;
    animation: gl-pop-in .2s ease-out;
}
.gl-modal-header {
    padding: 18px 22px;
    font-size: 16px;
    font-weight: 600;
    color: #2c333a;
    border-bottom: 1px solid #eef1f4;
}
.gl-modal-body { padding: 8px 22px 16px; }
.gl-modal-table {
    width: 100%;
    border-collapse: collapse;
}
.gl-modal-table th,
.gl-modal-table td {
    padding: 12px 0;
    text-align: left;
    font-size: 14px;
    border-bottom: 1px dashed #eef1f4;
    vertical-align: top;
}
.gl-modal-table th {
    color: #8a94a0;
    font-weight: 500;
    width: 84px;
    white-space: nowrap;
}
.gl-modal-table td {
    color: #2c333a;
    word-break: break-word;
}
.gl-modal-table tr:last-child th,
.gl-modal-table tr:last-child td { border-bottom: none; }

.gl-modal-footer {
    padding: 14px 22px;
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    background: #fbfcfe;
    border-top: 1px solid #eef1f4;
}
.gl-modal-btn {
    padding: 8px 20px;
    border-radius: 6px;
    font-size: 14px;
    cursor: pointer;
    border: 1px solid transparent;
    line-height: 1.4;
}
.gl-modal-cancel {
    background: #fff;
    border-color: #ccd2d9;
    color: #4a4a4a;
}
.gl-modal-cancel:hover { background: #f7f8fa; }
.gl-modal-confirm {
    background: #d32f2f;
    color: #fff;
    border-color: #d32f2f;
}
.gl-modal-confirm:hover {
    background: #a93226;
    border-color: #a93226;
}

@keyframes gl-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes gl-pop-in {
    from { transform: scale(.96); opacity: 0; }
    to   { transform: scale(1);   opacity: 1; }
}


/* 礼簿页头 - 合计金额放大突出 */
.gl-book-meta-line {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px;
    font-size: 13px;
    line-height: 1.8;
}
.gl-book-sum {
    font-size: 26px;
    font-weight: 700;
    letter-spacing: .5px;
    margin: 0 2px;
    line-height: 1;
}
.gl-book-sum-unit {
    font-size: 13px;
    margin-right: 4px;
}

/* 各场景主色 */
.gift-ledger-wedding .gl-book-sum { color: #b76e79; }
.gift-ledger-funeral .gl-book-sum { color: #3a4a5a; }
.gift-ledger-festive .gl-book-sum { color: #d32f2f; }

/* 兼容旧结构：如果 strong 没有 .gl-book-sum，也不至于太大 */
.gl-book-meta-line strong { font-weight: 600; }



/* ==================== 记录工具栏（搜索 + 导出） ==================== */
.gl-records-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    margin-bottom: 12px;
    padding: 10px 14px;
    background: #fbfcfe;
    border: 1px solid #e6e9ed;
    border-radius: 8px;
}
.gl-search-input {
    flex: 1 1 220px;
    min-width: 180px;
    padding: 8px 12px;
    border: 1px solid #ccd2d9;
    border-radius: 6px;
    font-size: 13px;
    background: #fff;
}
.gl-search-input:focus {
    outline: none;
    border-color: #8a6a4f;
    box-shadow: 0 0 0 3px rgba(138, 106, 79, .1);
}
.gl-search-count {
    font-size: 12px;
    color: #8a94a0;
    min-width: 90px;
}
.gl-records-toolbar-actions {
    display: flex;
    gap: 8px;
    margin-left: auto;
}

/* 各场景搜索框聚焦配色 */
.gl-dash-wedding .gl-search-input:focus,
.gift-ledger-wedding .gl-search-input:focus {
    border-color: #b76e79;
    box-shadow: 0 0 0 3px rgba(183, 110, 121, .12);
}
.gift-ledger-funeral .gl-search-input:focus {
    border-color: #3a4a5a;
    box-shadow: 0 0 0 3px rgba(58, 74, 90, .12);
}
.gift-ledger-festive .gl-search-input:focus {
    border-color: #d32f2f;
    box-shadow: 0 0 0 3px rgba(211, 47, 47, .12);
}

/* 底部合计 */
.gl-records-footnote {
    margin: 10px 0 0;
    font-size: 12px;
    color: #8a94a0;
    text-align: right;
}

/* 小屏幕适配 */
@media (max-width: 600px) {
    .gl-records-toolbar-actions {
        margin-left: 0;
        width: 100%;
        justify-content: flex-end;
    }
    .gl-search-count { width: 100%; }
}



/* ============================================================
 * 表单稀疏化 & 分组 & 支付方式
 * 说明：.gl-book .gl-form-card ... 三段选择器优先级高于场景 css
 *       中的 .gift-ledger-xxx .gl-row，可直接覆盖
 * ============================================================ */

.gl-book .gl-form-card {
    padding: 30px 34px;
}

.gl-book .gl-form-card .gl-form-card-title {
    margin: 0 0 24px;
    padding-bottom: 14px;
    font-size: 18px;
}

/* --- 分组 --- */
.gl-book .gl-form-card .gl-form-section {
    border: 0;
    padding: 0;
    margin: 0 0 28px;
    min-width: 0;
}
.gl-book .gl-form-card .gl-form-section:last-of-type {
    margin-bottom: 10px;
}
.gl-book .gl-form-card .gl-form-section-title {
    display: block;
    width: 100%;
    padding: 0 0 10px;
    margin: 0 0 22px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 1.5px;
    color: #8a7560;
    border-bottom: 1px dashed #eee;
    box-sizing: border-box;
}

/* --- 行间距拉大 --- */
.gl-book .gl-form-card .gl-row {
    margin-bottom: 26px;
}
.gl-book .gl-form-card .gl-row:last-child {
    margin-bottom: 0;
}
.gl-book .gl-form-card .gl-label {
    margin-bottom: 10px;
    font-size: 14px;
    letter-spacing: .3px;
}

/* --- 输入框更透气 --- */
.gl-book .gl-form-card .gl-input,
.gl-book .gl-form-card .gl-textarea {
    padding: 12px 14px;
    font-size: 14px;
    border-radius: 10px;
}

/* --- 预设按钮独立浅色区，视觉上远离输入框 --- */
.gl-book .gl-form-card .gl-presets {
    margin-top: 12px;
    padding: 10px 12px;
    background: rgba(0, 0, 0, .025);
    border-radius: 10px;
    gap: 8px;
}
.gl-book .gl-form-card .gl-preset {
    padding: 6px 16px;
    font-size: 13px;
    border-radius: 16px;
}

/* --- 提交按钮区域更宽裕 --- */
.gl-book .gl-form-card .gl-actions {
    margin-top: 26px;
    padding-top: 22px;
    border-top: 1px dashed #eee;
}

/* --- 场景微调：浅色背景色调 --- */
.gift-ledger-wedding .gl-book .gl-form-card .gl-form-section-title { color: #b08a92; border-bottom-color: #f0d8dd; }
.gift-ledger-funeral .gl-book .gl-form-card .gl-form-section-title { color: #6a7887; border-bottom-color: #d8dde2; }
.gift-ledger-festive .gl-book .gl-form-card .gl-form-section-title { color: #b8860b; border-bottom-color: #ffd5d5; }

/* --- 表格新增列适配：支付方式窄一点 --- */
.gl-table td:nth-child(3),
.gl-table th:nth-child(3) {
    white-space: nowrap;
}

/* --- 小屏适配 --- */
@media (max-width: 600px) {
    .gl-book .gl-form-card {
        padding: 22px 20px;
    }
    .gl-book .gl-form-card .gl-row {
        margin-bottom: 22px;
    }
}


/* ==================== 连续录入开关 ==================== */
.gl-form-options {
    display: flex;
    justify-content: flex-end;
    padding: 0 4px;
    margin: 0 0 10px;
}
.gl-continuous-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    background: #f7f8fa;
    border: 1px solid #e6e9ed;
    border-radius: 20px;
    font-size: 13px;
    color: #5a6773;
    cursor: pointer;
    user-select: none;
    transition: all .15s;
}
.gl-continuous-toggle:hover { background: #f0f2f5; }
.gl-continuous-toggle input[type="checkbox"] {
    width: 16px; height: 16px;
    cursor: pointer;
    accent-color: #d32f2f;
}
.gl-continuous-toggle:has(input:checked) {
    background: #fff3d4;
    border-color: #f0b429;
    color: #a13b3b;
}

/* ==================== Toast 通知 ==================== */
.gl-toast-container {
    position: fixed;
    top: 80px;
    right: 24px;
    z-index: 999998;
    display: flex;
    flex-direction: column;
    gap: 10px;
    pointer-events: none;
    max-width: 380px;
}
.gl-toast {
    pointer-events: auto;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: #2c333a;
    color: #fff;
    border-radius: 8px;
    font-size: 14px;
    box-shadow: 0 8px 24px rgba(0,0,0,.15);
    animation: gl-toast-in .25s ease-out;
}
.gl-toast-msg { flex: 1 1 auto; word-break: break-word; }
.gl-toast-action {
    flex: 0 0 auto;
    padding: 4px 12px;
    background: transparent;
    border: 1px solid rgba(255,255,255,.5);
    color: #fff;
    border-radius: 4px;
    font-size: 13px;
    cursor: pointer;
    transition: all .15s;
}
.gl-toast-action:hover {
    background: rgba(255,255,255,.15);
    border-color: #fff;
}
.gl-toast-close {
    flex: 0 0 auto;
    padding: 0 4px;
    background: transparent;
    border: 0;
    color: rgba(255,255,255,.6);
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
}
.gl-toast-close:hover { color: #fff; }

@keyframes gl-toast-in {
    from { transform: translateX(20px); opacity: 0; }
    to   { transform: translateX(0);    opacity: 1; }
}

/* ==================== 表格行高亮（新增 / 编辑后） ==================== */
.gl-row-flash {
    animation: gl-row-flash-anim 1.2s ease-out;
}
@keyframes gl-row-flash-anim {
    0%   { background: #fffbe6; }
    100% { background: transparent; }
}

/* ==================== 搜索空结果提示 ==================== */
.gl-search-empty {
    padding: 24px 20px;
    text-align: center;
    color: #a8a095;
    font-size: 14px;
    background: #fbfcfe;
    border-radius: 8px;
    margin: 12px 0;
}

/* ==================== 编辑弹窗表单 ==================== */
.gl-edit-form {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.gl-edit-row {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.gl-edit-row label {
    font-size: 13px;
    color: #6a7887;
}
.gl-edit-row .gl-input {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #ccd2d9;
    border-radius: 8px;
    font-size: 14px;
    box-sizing: border-box;
    background: #fff;
}
.gl-edit-row .gl-input:focus {
    outline: none;
    border-color: #8a6a4f;
    box-shadow: 0 0 0 3px rgba(138, 106, 79, .1);
}
.gl-edit-error {
    margin: 8px 0 0;
    color: #e74c3c;
    font-size: 13px;
}

/* 表格操作按钮紧凑排列 */
.gl-col-op {
    white-space: nowrap;
}
.gl-col-op .gl-dash-btn {
    padding: 5px 12px;
    font-size: 12px;
    margin: 0 2px;
}

/* 小屏：Toast 占满宽度 */
@media (max-width: 600px) {
    .gl-toast-container {
        right: 12px;
        left: 12px;
        max-width: none;
        top: 60px;
    }
    .gl-continuous-toggle {
        width: 100%;
        justify-content: flex-start;
        font-size: 12px;
    }
}



/* ==================== 只读模式提示 ==================== */
.gl-readonly-banner {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 18px;
    margin-bottom: 16px;
    background: linear-gradient(90deg, #fff8e1, #fffbf0);
    border: 1px solid #ffe08a;
    border-left: 4px solid #f0b429;
    border-radius: 8px;
    color: #8a6d00;
    font-size: 13px;
}
.gl-readonly-banner strong { color: #a13b3b; }
.gl-readonly-icon { font-size: 16px; }

/* ==================== 分享面板 ==================== */
.gl-share-panel {
    background: #fbfcfe;
    border: 1px solid #e6e9ed;
    border-radius: 10px;
    padding: 16px 20px;
    margin-bottom: 18px;
}
.gl-share-panel-title {
    font-size: 14px;
    font-weight: 600;
    color: #4a4a4a;
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 12px;
}
.gl-share-icon { font-size: 16px; }
.gl-share-body { padding-left: 0; }
.gl-share-hint {
    font-size: 13px;
    color: #6a7887;
    margin: 0 0 12px;
    line-height: 1.5;
}
.gl-share-input-row {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: 10px;
}
.gl-share-url {
    flex: 1 1 260px;
    padding: 8px 12px;
    border: 1px solid #ccd2d9;
    border-radius: 6px;
    background: #fff;
    font-size: 13px;
    color: #4a4a4a;
    font-family: ui-monospace, Menlo, Consolas, monospace;
    min-width: 200px;
}
.gl-share-url:focus {
    outline: none;
    border-color: #8a6a4f;
    box-shadow: 0 0 0 3px rgba(138, 106, 79, .1);
}
.gl-share-revoke-form { display: inline-block; margin-top: 4px; }
.gl-copy-share-btn {
    background: #6b8e23;
    border-color: #6b8e23;
    transition: all .15s;
}
.gl-copy-share-btn:hover { background: #587219; border-color: #587219; }
.gl-copy-share-btn.gl-copied {
    background: #4a7c2f;
    border-color: #4a7c2f;
}

/* 各场景 share panel 底色微调 */
.gift-ledger-wedding .gl-share-panel { background: #fffafb; border-color: #f0d8dd; }
.gift-ledger-funeral .gl-share-panel { background: #fafbfc; border-color: #d8dde2; }
.gift-ledger-festive .gl-share-panel { background: #fffcf5; border-color: #ffe0e0; }

/* 只读模式：隐藏操作列按钮 */
.gl-book[data-readonly="1"] .gl-col-op { display: none; }




/* ==================== 协作 banner ==================== */
.gl-collab-banner {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 18px;
    margin-bottom: 16px;
    background: linear-gradient(90deg, #e8f0ff, #f2f7ff);
    border: 1px solid #b8d0f5;
    border-left: 4px solid #3a72c9;
    border-radius: 8px;
    color: #2c4a80;
    font-size: 13px;
}
.gl-collab-banner strong { color: #1f3d70; }
.gl-collab-banner .gl-readonly-icon { font-size: 16px; }

/* ==================== 协作者面板 ==================== */
.gl-collab-panel {
    background: #fbfcfe;
    border: 1px solid #e6e9ed;
    border-radius: 10px;
    padding: 16px 20px;
    margin-bottom: 18px;
}
.gl-collab-panel-title {
    font-size: 14px;
    font-weight: 600;
    color: #4a4a4a;
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 12px;
}
.gl-collab-icon { font-size: 16px; }
.gl-collab-count { font-weight: 400; color: #8a94a0; }
.gl-collab-hint {
    font-size: 13px;
    color: #6a7887;
    margin: 0 0 12px;
    line-height: 1.5;
}
.gl-collab-list {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
}
.gl-collab-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 12px;
    background: #fff;
    border: 1px solid #eef1f4;
    border-radius: 6px;
    margin-bottom: 6px;
    font-size: 13px;
}
.gl-collab-item:last-child { margin-bottom: 0; }
.gl-collab-name { color: #2c333a; }
.gl-collab-name strong { color: #2c333a; margin-right: 2px; }
.gl-collab-login { color: #8a94a0; }
.gl-collab-name em { color: #a8a095; font-style: normal; }
.gl-collab-remove-form { display: inline; margin: 0; }
.gl-collab-remove-btn {
    padding: 4px 10px !important;
    font-size: 12px !important;
}
.gl-collab-add-form {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.gl-collab-input {
    flex: 1 1 220px;
    padding: 8px 12px;
    border: 1px solid #ccd2d9;
    border-radius: 6px;
    font-size: 13px;
    background: #fff;
    min-width: 200px;
}
.gl-collab-input:focus {
    outline: none;
    border-color: #3a72c9;
    box-shadow: 0 0 0 3px rgba(58, 114, 201, .12);
}
.gl-collab-footnote {
    margin: 8px 0 0;
    font-size: 12px;
    color: #a8a095;
}

/* 场景底色微调 */
.gift-ledger-wedding .gl-collab-panel { background: #fffafb; border-color: #f0d8dd; }
.gift-ledger-funeral .gl-collab-panel { background: #fafbfc; border-color: #d8dde2; }
.gift-ledger-festive .gl-collab-panel { background: #fffcf5; border-color: #ffe0e0; }

/* ==================== 退出协作 ==================== */
.gl-collab-leave-wrap {
    margin-bottom: 18px;
}

/* ==================== 列表页：协作分组 ==================== */
.gl-collab-group-title {
    padding: 14px 22px 6px;
    font-size: 13px;
    font-weight: 600;
    color: #3a72c9;
    letter-spacing: 1px;
    border-top: 1px dashed #e6e9ed;
    margin-top: 6px;
}
.gl-collab-book-list { background: #fbfcff; }
.gl-collab-book-item { background: transparent; }

.gl-book-badge {
    display: inline-block;
    padding: 1px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 500;
    margin-left: 6px;
    vertical-align: middle;
    line-height: 1.6;
}
.gl-book-badge-owner {
    background: #eef1f4;
    color: #5a6773;
}
.gl-book-badge-collab {
    background: #e8f0ff;
    color: #3a72c9;
}

/* ==================== 表格新列"录入人" ==================== */
.gl-cell-user { color: #6a7887; font-size: 12px; }




/* ==================== 协作人数上限提示 ==================== */
.gl-collab-limit-hint {
    margin: 8px 0 0;
    padding: 10px 14px;
    background: #fff8e1;
    border: 1px solid #ffe08a;
    border-radius: 6px;
    font-size: 13px;
    color: #8a6d00;
    line-height: 1.5;
}
.gl-collab-limit-hint a {
    color: #a13b3b;
    text-decoration: underline;
}
.gl-collab-limit-hint a:hover {
    color: #d32f2f;
}





/* ==================== 分享密码显示 ==================== */
.gl-share-password-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 8px 0 4px;
    padding: 10px 14px;
    background: #fff8e1;
    border: 1px dashed #f0b429;
    border-radius: 8px;
    flex-wrap: wrap;
}
.gl-share-password-label {
    font-size: 13px;
    color: #8a6d00;
}
.gl-share-password-value {
    font-family: ui-monospace, Menlo, Consolas, monospace;
    font-size: 20px;
    font-weight: 700;
    letter-spacing: 4px;
    color: #a13b3b;
    padding: 2px 8px;
    background: #fff;
    border-radius: 4px;
    border: 1px solid #f0d0a0;
}
.gl-share-password-row .gl-dash-btn {
    background: #f0b429;
    border-color: #f0b429;
    color: #4a3000;
    padding: 6px 14px;
    font-size: 12px;
}
.gl-share-password-row .gl-dash-btn:hover {
    background: #d99f1e;
    border-color: #d99f1e;
}
.gl-share-password-hint {
    margin: 4px 0 12px;
    font-size: 12px;
    color: #a8a095;
    line-height: 1.5;
}

/* ==================== 分享密码输入界面 ==================== */
.gl-share-lock {
    display: flex;
    justify-content: center;
    padding: 60px 20px;
}
.gl-share-lock-card {
    max-width: 400px;
    width: 100%;
    background: #fff;
    border: 1px solid #e6e9ed;
    border-radius: 14px;
    padding: 36px 32px;
    text-align: center;
    box-shadow: 0 8px 32px rgba(0, 0, 0, .06);
}
.gl-share-lock-icon {
    font-size: 44px;
    line-height: 1;
    margin-bottom: 12px;
}
.gl-share-lock-title {
    margin: 0 0 6px;
    font-size: 20px;
    color: #2c333a;
    letter-spacing: 1px;
}
.gl-share-lock-sub {
    margin: 0 0 20px;
    font-size: 14px;
    color: #6a7887;
    word-break: break-word;
}
.gl-share-lock-hint {
    margin: 0 0 20px;
    font-size: 13px;
    color: #8a94a0;
}
.gl-share-lock-error {
    padding: 10px 14px;
    margin-bottom: 16px;
    background: #fdecea;
    color: #a93226;
    border: 1px solid #f5c6cb;
    border-radius: 8px;
    font-size: 13px;
}
.gl-share-lock-form {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.gl-share-lock-input {
    width: 100%;
    padding: 14px 16px;
    border: 2px solid #ccd2d9;
    border-radius: 10px;
    font-size: 28px;
    font-weight: 700;
    letter-spacing: 12px;
    text-align: center;
    font-family: ui-monospace, Menlo, Consolas, monospace;
    background: #fbfcfe;
    box-sizing: border-box;
    transition: all .15s;
}
.gl-share-lock-input:focus {
    outline: none;
    border-color: #3a72c9;
    background: #fff;
    box-shadow: 0 0 0 4px rgba(58, 114, 201, .12);
}
.gl-share-lock-btn {
    padding: 12px 20px;
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, #3a72c9, #2c5aa0);
    color: #fff;
    font-size: 15px;
    letter-spacing: 2px;
    cursor: pointer;
    transition: all .15s;
}
.gl-share-lock-btn:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(58, 114, 201, .3);
}
.gl-share-lock-footnote {
    margin: 18px 0 0;
    font-size: 12px;
    color: #a8a095;
}

@media (max-width: 480px) {
    .gl-share-lock-card { padding: 28px 22px; }
    .gl-share-lock-title { font-size: 18px; }
    .gl-share-password-value { font-size: 18px; letter-spacing: 3px; }
}






/* ==================== 通知面板 ==================== */
.gl-notify-panel {
    background: #fff;
    border: 1px solid #e6e9ed;
    border-radius: 12px;
    padding: 16px 20px;
    margin-bottom: 20px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, .04);
}
.gl-notify-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}
.gl-notify-title {
    font-size: 15px;
    font-weight: 600;
    color: #2c333a;
    display: flex;
    align-items: center;
    gap: 6px;
}
.gl-notify-badge {
    display: inline-block;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    background: #d32f2f;
    color: #fff;
    border-radius: 9px;
    font-size: 11px;
    line-height: 18px;
    text-align: center;
    font-weight: 600;
}
.gl-notify-actions { font-size: 12px; }
.gl-notify-link {
    color: #6a7887;
    text-decoration: none;
    cursor: pointer;
}
.gl-notify-link:hover {
    color: #3a72c9;
    text-decoration: underline;
}
.gl-notify-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.gl-notify-item {
    border-top: 1px solid #f2f5f8;
}
.gl-notify-item:first-child { border-top: none; }
.gl-notify-msg {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 4px;
    font-size: 13px;
    text-decoration: none;
    color: #4a4a4a;
    border-radius: 6px;
    transition: background .15s;
}
.gl-notify-msg:hover {
    background: #f7f9fc;
    color: #2c333a;
}
.gl-notify-text { flex: 1 1 auto; }
.gl-notify-time {
    flex: 0 0 auto;
    font-size: 11px;
    color: #a8a095;
}
.gl-notify-dot {
    flex: 0 0 auto;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #d32f2f;
    box-shadow: 0 0 0 3px rgba(211, 47, 47, .15);
}
.gl-notify-unread .gl-notify-text { font-weight: 600; }
.gl-notify-more {
    margin: 8px 0 0;
    font-size: 12px;
    color: #a8a095;
    text-align: center;
}

/* ==================== 后台操作日志列表 ==================== */
.gl-log-action {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
    background: #eef1f4;
    color: #4a4a4a;
}




/* ==================== 通知分页 ==================== */
.gl-notify-sep {
    color: #ccd2d9;
    margin: 0 4px;
}
.gl-notify-more a {
    color: #3a72c9;
    text-decoration: underline;
}
.gl-notify-pager {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid #f2f5f8;
    font-size: 13px;
}
.gl-notify-page-btn {
    padding: 6px 14px;
    border: 1px solid #ccd2d9;
    border-radius: 6px;
    background: #fff;
    color: #4a4a4a;
    text-decoration: none;
    transition: all .15s;
}
.gl-notify-page-btn:hover {
    border-color: #3a72c9;
    color: #3a72c9;
    background: #f2f7ff;
}
.gl-notify-page-info {
    color: #8a94a0;
}

/* ==================== 后台锁定页表格 ==================== */
.gl-log-action {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
    background: #eef1f4;
    color: #4a4a4a;
}




/* ==================== 录入人列：截断显示 + 悬停全名 ==================== */
.gl-table .gl-cell-user {
    max-width: 60px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: help;
    color: #6a7887;
    font-size: 12px;
}

/* 小屏进一步收紧到 3 个字 */
@media (max-width: 600px) {
    .gl-table .gl-cell-user {
        max-width: 48px;
    }
}