/*
 * Toolbox — 主样式表 v3
 * ====================================
 * 视觉硬性约束：
 *   - 主色：冷灰色 #2A3B4C + 琥珀色 #D4875E / 石灰绿 #8BA888
 *   - 禁止紫色/靛蓝渐变
 *   - 背景禁止纯平色块（#FFFFFF / #F5F5F5 不可单独使用）
 *   - SVG噪点纹理 + 细微线性渐变
 *   - 不对称非居中布局
 *   - 纯CSS几何线条图标（无Emoji）
 *   - 动画仅用 cubic-bezier(0.34, 1.56, 0.64, 1) 或 steps(4, end)
 * ====================================
 */

/* ===== Google Fonts 预连 ===== */
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;700&family=Noto+Sans+SC:wght@400;700&display=swap");

/* ===== Reset & Base ===== */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: "Inter", "Noto Sans SC", -apple-system, BlinkMacSystemFont,
                 "Segoe UI", Roboto, sans-serif;
    font-weight: 400;
    color: #2A3B4C;
    min-height: 100vh;
    line-height: 1.6;
    position: relative;
}

/* ============================================================
   1. 背景层 — .noise-bg
      噪点图 + 左上→右下细微渐变
      禁止纯平色块
   ============================================================ */
.noise-bg {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    pointer-events: none;

    /* SVG噪点纹理叠加在渐变之上 */
    background:
        url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.25'/%3E%3C/svg%3E"),
        linear-gradient(
            135deg,
            #E8EDF2 0%,
            #d5dbdf 40%,
            #C5CBCE 100%
        );
    background-blend-mode: overlay, normal;
    background-repeat: repeat, no-repeat;
    background-size: 256px 256px, cover;
}

/* 所有内容在噪点层之上 */
body > * {
    position: relative;
    z-index: 1;
}

/* ============================================================
   2. 布局重置 — 强制非居中
   ============================================================ */
.nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 8% 16px 12%;
    background: #2A3B4C;
    border-bottom: 1px solid rgba(212, 135, 94, 0.2);
    gap: 10px;
    position: relative;
    z-index: 1000;
}

.nav-links {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: nowrap;
    flex-shrink: 1;
    min-width: 0;
}

.hero {
    padding: 60px 8% 60px 12%;
    max-width: 1100px;
}

.tools-preview {
    padding: 40px 5% 60px 20%;
    max-width: 1100px;
    margin-left: 0;
    margin-right: 0;
}

.tool-page {
    padding: 48px 8% 48px 12%;
    max-width: 1200px;
    display: flex;
    flex-wrap: wrap;
    gap: 40px;
    align-items: flex-start;
}

.tool-main {
    flex: 0 0 58%;
    min-width: 0;
}

.tool-sidebar {
    flex: 0 0 220px;
    margin-top: 80px;
}

.footer {
    padding: 40px 15% 30px 12%;
    text-align: right;
    border-top: 1px solid rgba(212, 135, 94, 0.12);
    margin-top: 60px;
}

.footer p {
    max-width: 380px;
    margin-left: auto;
    margin-right: 0;
}

/* ============================================================
   3. 卡片设计
   ============================================================ */
.card {
    background: rgba(255, 255, 255, 0.75);
    backdrop-filter: blur(4px);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
    padding: 24px;
    transition: box-shadow 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
                transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.card:hover {
    box-shadow: 0 6px 20px rgba(42, 59, 76, 0.12);
    transform: translateY(-2px);
}

.tool-chip {
    display: inline-block;
    padding: 10px 24px;
    margin: 0 12px 12px 0;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    color: #2A3B4C;
    text-decoration: none;
    font-size: 0.9rem;
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
    transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.tool-chip:hover {
    color: #D4875E;
    border-color: rgba(212, 135, 94, 0.4);
    box-shadow: 0 6px 20px rgba(42, 59, 76, 0.12);
    transform: translateY(-3px);
}

/* 首页工具卡片容器 */
.tool-card {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    margin: 0 12px 12px 0;
    vertical-align: top;
}

.tool-card .tool-chip {
    margin: 0 0 4px 0;
}

.tool-guide-link {
    display: inline-block;
    font-size: 0.75rem;
    color: #8BA888;
    text-decoration: none;
    padding: 2px 0 2px 12px;
    transition: color 0.2s;
    position: relative;
}
.tool-guide-link::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 6px;
    height: 6px;
    border-right: 1.5px solid #8BA888;
    border-bottom: 1.5px solid #8BA888;
    transform: translateY(-50%) rotate(-45deg);
}
.tool-guide-link:hover {
    color: #6d8a6e;
}
.tool-guide-link:hover::before {
    border-color: #6d8a6e;
}

.tool-sidebar {
    padding: 24px 20px;
    background: rgba(255, 255, 255, 0.75);
    backdrop-filter: blur(4px);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
    position: sticky;
    top: 100px;
}

.tool-sidebar h3 {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: #8898a8;
    margin-bottom: 16px;
    font-weight: 700;
}

/* ============================================================
   4. 按钮交互 — .bounce-btn
   ============================================================ */
.bounce-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 36px;
    background: #D4875E;
    color: #ffffff;
    font-family: "Inter", "Noto Sans SC", sans-serif;
    font-size: 1rem;
    font-weight: 700;
    border: 1px solid transparent;
    border-radius: 4px;
    cursor: pointer;
    text-decoration: none;
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
                background 0.2s,
                box-shadow 0.2s;
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
}
.bounce-btn:hover {
    transform: translateY(-6px);
    background: #c97a53;
    box-shadow: 0 10px 24px rgba(42, 59, 76, 0.12);
}
.bounce-btn:active {
    transform: translateY(-2px);
}

.bounce-btn.jump {
    animation: btnJump 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes btnJump {
    0%   { transform: translateY(0) scale(1); }
    30%  { transform: translateY(-10px) scale(1.08); }
    60%  { transform: translateY(0) scale(0.92); }
    80%  { transform: translateY(-4px) scale(1.02); }
    100% { transform: translateY(0) scale(1); }
}

.hero-cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 32px;
    background: #D4875E;
    color: #ffffff;
    font-family: "Inter", "Noto Sans SC", sans-serif;
    font-size: 0.95rem;
    font-weight: 700;
    border-radius: 4px;
    text-decoration: none;
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
                background 0.2s,
                box-shadow 0.2s;
}
.hero-cta:hover {
    transform: translateY(-6px);
    background: #c97a53;
    box-shadow: 0 10px 24px rgba(42, 59, 76, 0.12);
}
.hero-cta:active {
    transform: translateY(-2px);
}

.lang-btn {
    display: inline-block;
    padding: 6px 16px;
    border: 1px solid rgba(212, 135, 94, 0.5);
    border-radius: 4px;
    color: #D4875E;
    font-size: 0.8rem;
    font-weight: 700;
    text-decoration: none;
    transition: background 0.2s, border-color 0.2s,
                transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.lang-btn:hover {
    background: rgba(212, 135, 94, 0.12);
    border-color: #D4875E;
    transform: translateY(-2px);
}

/* ===== 导航下拉菜单 ===== */
.nav-dropdown {
    position: relative;
    display: inline-block;
}

/* 下拉按钮 */
.nav-dropdown-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 400;
    color: #b0bfcc;
    text-decoration: none;
    font-size: 0.875rem;
    transition: color 0.2s;
    cursor: pointer;
    white-space: nowrap;
}
.nav-dropdown-btn:hover {
    color: #D4875E;
}

/* CSS 箭头 */
.nav-arrow {
    display: inline-block;
    font-size: 0.6rem;
    line-height: 1;
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
    color: inherit;
}
.nav-dropdown.open .nav-arrow {
    transform: rotate(180deg);
}

/* 下拉菜单 */
.nav-dropdown-menu {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    min-width: 180px;
    background: rgba(42, 59, 76, 0.97);
    border: 1px solid #D4875E;
    border-radius: 4px;
    padding: 8px 0;
    z-index: 100;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
    animation: ddSlideIn 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes ddSlideIn {
    from {
        opacity: 0;
        transform: translateX(-50%) translateY(-8px);
    }
    to {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
}

/* 下拉菜单项 */
.nav-dropdown-menu a {
    display: block;
    padding: 10px 20px;
    color: #b0bfcc;
    text-decoration: none;
    font-size: 0.85rem;
    font-weight: 400;
    transition: background 0.15s, color 0.15s;
    white-space: nowrap;
}
.nav-dropdown-menu a:hover {
    background: rgba(212, 135, 94, 0.12);
    color: #D4875E;
}

/* 分隔线 */
.nav-dropdown-sep {
    margin: 4px 16px;
    border: none;
    border-top: 1px solid rgba(212, 135, 94, 0.2);
}

/* 展开状态 */
.nav-dropdown.open .nav-dropdown-menu {
    display: block;
}

/* 桌面端 hover 展开 */
@media (min-width: 769px) {
    /* padding-bottom 物理扩展容器hover区域，margin-bottom 抵消布局偏移 */
    .nav-dropdown {
        padding-bottom: 12px;
        margin-bottom: -12px;
    }
    /* 菜单紧贴扩展后的容器底部，间隙由padding-bottom提供 */
    .nav-dropdown-menu {
        top: 100%;
    }
    .nav-dropdown:hover .nav-dropdown-menu {
        display: block;
    }
    .nav-dropdown:hover .nav-arrow {
        transform: rotate(180deg);
    }
}

/* 移动端 */
@media (max-width: 768px) {
    .nav {
        padding: 12px 5% 12px 5%;
        flex-wrap: wrap;
        gap: 8px;
    }
    .nav-links {
        flex-wrap: wrap;
        gap: 10px;
    }
    .nav-dropdown-menu {
        left: 0;
        transform: none;
    }
    @keyframes ddSlideIn {
        from { opacity: 0; transform: translateY(-8px); }
        to   { opacity: 1; transform: translateY(0); }
    }
    .nav-dropdown-menu a {
        padding: 12px 20px;
        font-size: 16px;
    }
    .nav-arrow {
        font-size: 0.7rem;
    }
}



/* ============================================================
   5. 字体
   ============================================================ */
body {
    color: #2A3B4C;
}

.nav-logo {
    font-size: 1.2rem;
    font-weight: 700;
    color: #D4875E;
    text-decoration: none;
    letter-spacing: 1px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.nav-links a {
    font-weight: 400;
    color: #b0bfcc;
    text-decoration: none;
    font-size: 0.875rem;
    transition: color 0.2s;
    white-space: nowrap;
}
.nav-links a:hover {
    color: #D4875E;
}

.hero h1 {
    font-size: 2.2rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 16px;
    line-height: 1.3;
}
.hero p {
    font-size: 1rem;
    font-weight: 400;
    color: #5a6a7a;
    max-width: 480px;
    margin-bottom: 28px;
}

.tools-preview h2 {
    font-size: 1.4rem;
    font-weight: 700;
    color: #D4875E;
    margin-bottom: 20px;
}

.tool-main h1 {
    font-size: 1.6rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 8px;
}
.tool-main > p {
    font-size: 0.9rem;
    font-weight: 400;
    color: #6a7a8a;
    margin-bottom: 24px;
}

.stat-label {
    font-size: 0.85rem;
    font-weight: 400;
    color: #6a7a8a;
}
.stat-value {
    font-size: 1.3rem;
    font-weight: 700;
    color: #D4875E;
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.stat-value.pop {
    animation: statPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

@keyframes statPop {
    0%   { transform: scale(1); }
    50%  { transform: scale(1.3); }
    100% { transform: scale(1); }
}

.footer p {
    font-size: 0.85rem;
    font-weight: 400;
    color: #8898a8;
}

/* ===== Logo 几何线条图标 ===== */
.nav-logo-icon {
    display: inline-block;
    width: 24px;
    height: 24px;
    position: relative;
}
.nav-logo-icon::before {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 0;
    height: 0;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 14px solid #D4875E;
}
.nav-logo-icon::after {
    content: "";
    position: absolute;
    bottom: 1px;
    left: 4px;
    width: 16px;
    height: 2px;
    background: #8BA888;
}

/* 计数图标（圆+斜线） */
.icon-count {
    display: inline-block;
    width: 18px;
    height: 18px;
    position: relative;
}
.icon-count::before {
    content: "";
    position: absolute;
    top: 1px;
    left: 1px;
    width: 12px;
    height: 12px;
    border: 2px solid #ffffff;
    border-radius: 50%;
}
.icon-count::after {
    content: "";
    position: absolute;
    top: 10px;
    left: 12px;
    width: 2px;
    height: 8px;
    background: #ffffff;
    transform: rotate(-30deg);
}

/* ===== 文本输入框 ===== */
.tool-textarea {
    width: 100%;
    min-height: 280px;
    padding: 18px 20px;
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid rgba(42, 59, 76, 0.15);
    border-radius: 4px;
    color: #2A3B4C;
    font-family: "Inter", "Noto Sans SC", monospace;
    font-size: 0.95rem;
    font-weight: 400;
    line-height: 1.7;
    resize: vertical;
    outline: none;
    transition: border-color 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
                box-shadow 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.tool-textarea:focus {
    border-color: #D4875E;
    box-shadow: 0 0 0 3px rgba(212, 135, 94, 0.12);
}
.tool-textarea::placeholder {
    color: #a0b0c0;
    font-weight: 400;
}

/* ===== 统计项分隔 ===== */
.stat-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid rgba(42, 59, 76, 0.06);
}
.stat-item:last-child {
    border-bottom: none;
}

/* ===== 错误提示 ===== */
.error-msg {
    margin-top: 12px;
    padding: 10px 16px;
    background: rgba(212, 135, 94, 0.08);
    border-left: 3px solid #D4875E;
    color: #b06a45;
    font-size: 0.85rem;
    font-weight: 400;
    border-radius: 0 4px 4px 0;
    animation: btnJump 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ============================================================
   6. Z字形使用指南
   ============================================================ */
.guide {
    padding: 50px 8% 50px 12%;
    max-width: 1100px;
}

.guide-title {
    font-size: 1.4rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 36px;
}

.guide-row {
    display: flex;
    align-items: center;
    gap: 40px;
    margin-bottom: 48px;
}

.guide-row-reverse {
    flex-direction: row-reverse;
    /* margin-right 偏移使Z字折线更明显 */
    margin-right: -4%;
    padding-left: 4%;
}

.guide-text {
    flex: 1;
}

.guide-step {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background: #D4875E;
    color: #ffffff;
    font-size: 0.85rem;
    font-weight: 700;
    border-radius: 4px;
    margin-bottom: 10px;
}

.guide-text h3 {
    font-size: 1.15rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 8px;
}

.guide-text p {
    font-size: 0.9rem;
    font-weight: 400;
    color: #5a6a7a;
    max-width: 360px;
    line-height: 1.7;
}

.guide-visual {
    flex: 0 0 160px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* CSS几何线条图标 — 粘贴（方框+箭头） */
.guide-icon {
    width: 80px;
    height: 80px;
    position: relative;
}

.icon-paste::before {
    content: "";
    position: absolute;
    top: 8px;
    left: 18px;
    width: 44px;
    height: 56px;
    border: 2px solid #2A3B4C;
    border-radius: 3px;
}
.icon-paste::after {
    content: "";
    position: absolute;
    top: 24px;
    left: 30px;
    width: 20px;
    height: 2px;
    background: #D4875E;
    box-shadow: 0 8px 0 #D4875E, 0 16px 0 #D4875E;
}

/* 点击（圆形+手指状竖线） */
.icon-click::before {
    content: "";
    position: absolute;
    top: 6px;
    left: 18px;
    width: 44px;
    height: 44px;
    border: 2px solid #2A3B4C;
    border-radius: 50%;
}
.icon-click::after {
    content: "";
    position: absolute;
    top: 18px;
    left: 38px;
    width: 4px;
    height: 20px;
    background: #D4875E;
    border-radius: 2px;
    box-shadow: -12px 10px 0 #D4875E, 12px 10px 0 #D4875E;
}

/* 结果（对勾+横线） */
.icon-result::before {
    content: "";
    position: absolute;
    top: 12px;
    left: 10px;
    width: 60px;
    height: 56px;
    border: 2px solid #2A3B4C;
    border-radius: 3px;
}
.icon-result::after {
    content: "";
    position: absolute;
    top: 30px;
    left: 20px;
    width: 18px;
    height: 10px;
    border-left: 3px solid #8BA888;
    border-bottom: 3px solid #8BA888;
    transform: rotate(-45deg);
}

/* ===== 响应式 ===== */
@media (max-width: 768px) {
    /* ====================================
       移动端适配
       ==================================== */
    .nav {
        padding: 14px 5%;
        flex-wrap: wrap;
    }
    .nav-links {
        display: flex;
        flex-wrap: wrap;
        gap: 4px;
        margin-top: 8px;
        width: 100%;
    }
    .nav-links a {
        font-size: 16px;         /* 移动端最小字体 16px */
        padding: 10px 12px;      /* 触摸区域 ≥44px */
        min-height: 44px;
        display: inline-flex;
        align-items: center;
    }
    .lang-btn {
        font-size: 16px;
        padding: 10px 14px;
        min-height: 44px;
    }
    .nav-dropdown-btn {
        font-size: 16px;
        padding: 10px 12px;
        min-height: 44px;
        display: inline-flex;
        align-items: center;
    }
    .nav-dropdown-menu {
        left: 0;
        min-width: 200px;
    }
    .nav-dropdown-menu a {
        font-size: 16px;
        padding: 12px 20px;
    }
    .hero {
        padding: 40px 5%;
    }
    .tool-page {
        padding: 32px 5%;
        flex-direction: column;
    }
    .tool-main {
        flex: 0 0 100%;
    }
    .tool-sidebar {
        flex: 0 0 100%;
        margin-top: 0;
        position: static;
    }
    .footer {
        padding: 30px 5%;
        text-align: left;
    }
    .footer p {
        margin-left: 0;
    }
    .guide {
        padding: 30px 5%;
    }
    .guide-row {
        flex-direction: column;
    }
    .bounce-btn {
        font-size: 16px;
        padding: 12px 24px;      /* 触摸区域 ≥44px */
        min-height: 44px;
    }
    .tool-chip {
        font-size: 16px;
        padding: 12px 20px;
        min-height: 44px;
    }
    .contact-field input,
    .contact-field textarea {
        font-size: 16px;         /* 防止 iOS 缩放 */
    }
    .nav {
        padding: 14px 5%;
    }
    .hero {
        padding: 40px 5%;
    }
    .tool-page {
        padding: 32px 5%;
        flex-direction: column;
    }
    .tool-main {
        flex: 0 0 100%;
    }
    .tool-sidebar {
        flex: 0 0 100%;
        margin-top: 0;
        position: static;
    }
    .footer {
        padding: 30px 5%;
        text-align: left;
    }
    .footer p {
        margin-left: 0;
    }
    .guide {
        padding: 30px 5%;
    }
    .guide-row {
        flex-direction: column;
        gap: 20px;
        margin-bottom: 36px;
    }
    .guide-row-reverse {
        flex-direction: column;
        margin-right: 0;
        padding-left: 0;
    }
    .guide-text p {
        max-width: 100%;
    }
    .guide-visual {
        flex: 0 0 auto;
    }
}

/* ============================================================
   7. 图片压缩工具 — 布局 & 控件
   ============================================================ */

/* 左重右轻结构 */
.ic-page {
    padding: 48px 8% 48px 12%;
    max-width: 1200px;
    display: flex;
    flex-wrap: wrap;
    gap: 40px;
    align-items: flex-start;
}

.ic-main {
    flex: 0 0 55%;
    min-width: 0;
}

.ic-sidebar {
    flex: 0 0 180px;
    margin-top: 100px;
    padding: 24px 20px;
    background: rgba(255, 255, 255, 0.75);
    backdrop-filter: blur(4px);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
    position: sticky;
    top: 100px;
}

.ic-main h1 {
    font-size: 1.6rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 8px;
}

.ic-main > p {
    font-size: 0.9rem;
    font-weight: 400;
    color: #6a7a8a;
    margin-bottom: 24px;
}

/* ---------- 上传区域（虚线边框 + CSS 取景框图标） ---------- */
.ic-dropzone {
    position: relative;
    width: 100%;
    min-height: 220px;
    border: 2px dashed rgba(42, 59, 76, 0.25);
    border-radius: 4px;
    background: rgba(255, 255, 255, 0.5);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    cursor: pointer;
    transition: border-color 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
                background 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
                transform 0.2s;
}
.ic-dropzone:hover,
.ic-dropzone.drag-over {
    border-color: #D4875E;
    border-style: solid;
    background: rgba(212, 135, 94, 0.06);
    transform: scale(1.01);
}

.ic-dropzone input[type="file"] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

.ic-dropzone-text {
    font-size: 0.9rem;
    font-weight: 400;
    color: #5a6a7a;
    pointer-events: none;
}

.ic-dropzone-hint {
    font-size: 0.75rem;
    font-weight: 400;
    color: #a0b0c0;
    pointer-events: none;
}

/* 纯CSS取景框图标（方框 + 右上角小圆圈） */
.ic-viewfinder {
    width: 48px;
    height: 48px;
    position: relative;
    pointer-events: none;
}
.ic-viewfinder::before {
    content: "";
    position: absolute;
    top: 4px;
    left: 4px;
    width: 40px;
    height: 40px;
    border: 2px solid #2A3B4C;
    border-radius: 3px;
}
.ic-viewfinder::after {
    content: "";
    position: absolute;
    top: 2px;
    right: 2px;
    width: 10px;
    height: 10px;
    border: 2px solid #D4875E;
    border-radius: 50%;
    background: rgba(212, 135, 94, 0.15);
}

/* ---------- 压缩质量滑块（非对称） ---------- */
.ic-quality-row {
    margin-top: 20px;
}

.ic-quality-label {
    display: flex;
    justify-content: space-between;
    font-size: 0.75rem;
    font-weight: 400;
    color: #8898a8;
    margin-bottom: 8px;
}

.ic-quality-label span:first-child {
    text-align: left;
}
.ic-quality-label span:last-child {
    text-align: right;
}

.ic-slider {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    height: 6px;
    border-radius: 3px;
    background: linear-gradient(
        to right,
        #D4875E 0%,
        #D4875E 70%,
        rgba(42, 59, 76, 0.15) 70%,
        rgba(42, 59, 76, 0.15) 100%
    );
    outline: none;
    transition: opacity 0.2s;
}

.ic-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #D4875E;
    border: 2px solid #ffffff;
    box-shadow: 0 2px 6px rgba(42, 59, 76, 0.2);
    cursor: pointer;
    transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.ic-slider::-webkit-slider-thumb:hover {
    transform: scale(1.2);
}

.ic-slider::-moz-range-thumb {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #D4875E;
    border: 2px solid #ffffff;
    box-shadow: 0 2px 6px rgba(42, 59, 76, 0.2);
    cursor: pointer;
}

/* 当前质量百分比 */
.ic-quality-value {
    font-size: 0.85rem;
    font-weight: 700;
    color: #D4875E;
    margin-top: 6px;
    text-align: right;
}

/* ---------- 预览 & 下载 ---------- */
.ic-preview {
    display: none;
    margin-top: 20px;
}

.ic-preview.visible {
    display: block;
}

.ic-preview img {
    max-width: 100%;
    max-height: 320px;
    border-radius: 4px;
    border: 1px solid rgba(42, 59, 76, 0.1);
}

/* 侧边栏预估大小 */
.ic-estimate-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: #8898a8;
    margin-bottom: 16px;
    font-weight: 700;
}

.ic-estimate-number {
    font-size: 2rem;
    font-weight: 700;
    color: #D4875E;
    margin-bottom: 4px;
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.ic-estimate-number.pop {
    animation: statPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.ic-estimate-unit {
    font-size: 0.85rem;
    font-weight: 400;
    color: #6a7a8a;
}

.ic-original-size {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid rgba(42, 59, 76, 0.06);
    font-size: 0.8rem;
    font-weight: 400;
    color: #8898a8;
}

/* ---------- 错误提示 ---------- */
.ic-error {
    display: none;
    margin-top: 12px;
    padding: 10px 16px;
    background: rgba(212, 135, 94, 0.08);
    border-left: 3px solid #D4875E;
    color: #b06a45;
    font-size: 0.85rem;
    font-weight: 400;
    border-radius: 0 4px 4px 0;
}
.ic-error.visible {
    display: block;
    animation: btnJump 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ---------- 响应式 ---------- */
@media (max-width: 768px) {
    .ic-page {
        padding: 32px 5%;
        flex-direction: column;
    }
    .ic-main {
        flex: 0 0 100%;
    }
    .ic-sidebar {
        flex: 0 0 100%;
        margin-top: 0;
        position: static;
    }
}

/* ============================================================
   8. PDF合并工具 — 竖直队列布局
   ============================================================ */

.pm-page {
    padding: 48px 8% 48px 12%;
    max-width: 1100px;
}

.pm-main {
    width: 70%;
    min-width: 0;
}

.pm-main h1 {
    font-size: 1.6rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 8px;
}

.pm-main > p {
    font-size: 0.9rem;
    font-weight: 400;
    color: #6a7a8a;
    margin-bottom: 24px;
}

/* ---------- 顶栏：添加文件按钮（靠左） ---------- */
.pm-topbar {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 20px;
}

.pm-add-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 24px;
    background: transparent;
    border: 1px dashed rgba(42, 59, 76, 0.3);
    border-radius: 4px;
    color: #2A3B4C;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
    font-family: inherit;
}
.pm-add-btn:hover {
    border-color: #D4875E;
    background: rgba(212, 135, 94, 0.06);
    transform: scale(1.03);
}

.pm-add-btn input[type="file"] {
    display: none;
}

/* 加号图标（纯CSS：十字交叉两条线） */
.pm-plus-icon {
    display: inline-block;
    width: 14px;
    height: 14px;
    position: relative;
}
.pm-plus-icon::before {
    content: "";
    position: absolute;
    top: 6px;
    left: 0;
    width: 14px;
    height: 2px;
    background: #D4875E;
}
.pm-plus-icon::after {
    content: "";
    position: absolute;
    top: 0;
    left: 6px;
    width: 2px;
    height: 14px;
    background: #D4875E;
}

/* ---------- 文件列表 ---------- */
.pm-filelist {
    list-style: none;
    margin-bottom: 24px;
    min-height: 80px;
}

.pm-filelist-empty {
    padding: 32px 20px;
    text-align: center;
    font-size: 0.85rem;
    font-weight: 400;
    color: #a0b0c0;
    border: 1px dashed rgba(42, 59, 76, 0.12);
    border-radius: 4px;
}

/* 文件卡片 */
.pm-file-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    margin-bottom: 8px;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(42, 59, 76, 0.1);
    border-radius: 4px;
    transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
                box-shadow 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.pm-file-card:hover {
    transform: translateX(4px);
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
}

/* 文件序号 */
.pm-file-idx {
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #2A3B4C;
    color: #ffffff;
    font-size: 0.75rem;
    font-weight: 700;
    border-radius: 4px;
    flex-shrink: 0;
}

/* 文件名 */
.pm-file-name {
    flex: 1;
    font-size: 0.85rem;
    font-weight: 400;
    color: #2A3B4C;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* 页码数 */
.pm-file-pages {
    font-size: 0.8rem;
    font-weight: 700;
    color: #D4875E;
    flex-shrink: 0;
    margin-right: 8px;
}

/* ---------- 删除叉号（纯CSS：旋转45度两条线） ---------- */
.pm-delete-btn {
    display: inline-block;
    width: 18px;
    height: 18px;
    position: relative;
    cursor: pointer;
    flex-shrink: 0;
    opacity: 0.4;
    transition: opacity 0.2s, transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.pm-delete-btn:hover {
    opacity: 1;
    transform: rotate(90deg);
}
.pm-delete-btn::before {
    content: "";
    position: absolute;
    top: 8px;
    left: 1px;
    width: 16px;
    height: 2px;
    background: #b06a45;
    transform: rotate(45deg);
}
.pm-delete-btn::after {
    content: "";
    position: absolute;
    top: 8px;
    left: 1px;
    width: 16px;
    height: 2px;
    background: #b06a45;
    transform: rotate(-45deg);
}

/* ---------- 底部：合并按钮（强制靠右） ---------- */
.pm-bottombar {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 12px;
    margin-top: 4px;
}

.pm-summary {
    font-size: 0.8rem;
    font-weight: 400;
    color: #8898a8;
    margin-right: auto;
}

/* ---------- 进度条 - steps(10, end) 跳跃 ---------- */
.pm-progress-wrap {
    display: none;
    margin-top: 24px;
    padding: 20px;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(42, 59, 76, 0.1);
    border-radius: 4px;
}
.pm-progress-wrap.visible {
    display: block;
}

.pm-progress-label {
    font-size: 0.85rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 10px;
}

.pm-progress-track {
    width: 100%;
    height: 14px;
    background: rgba(42, 59, 76, 0.06);
    border-radius: 7px;
    overflow: hidden;
}

.pm-progress-fill {
    height: 100%;
    width: 0%;
    background: #D4875E;
    border-radius: 7px;
    /* 跳跃式填充：每合并一页跳一格 */
    transition: width 0.05s steps(10, end);
}

.pm-progress-text {
    font-size: 0.8rem;
    font-weight: 400;
    color: #8898a8;
    margin-top: 6px;
    text-align: right;
}

/* ---------- 错误 ---------- */
.pm-error {
    display: none;
    margin-top: 12px;
    padding: 10px 16px;
    background: rgba(212, 135, 94, 0.08);
    border-left: 3px solid #D4875E;
    color: #b06a45;
    font-size: 0.85rem;
    font-weight: 400;
    border-radius: 0 4px 4px 0;
}
.pm-error.visible {
    display: block;
    animation: btnJump 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ---------- 响应式 ---------- */
@media (max-width: 768px) {
    .pm-page {
        padding: 32px 5%;
    }
    .pm-main {
        width: 100%;
    }
    .pm-bottombar {
        flex-direction: column;
        align-items: stretch;
    }
    .pm-summary {
        margin-right: 0;
        text-align: center;
    }
    .pm-bottombar .bounce-btn {
        width: 100%;
        justify-content: center;
    }
}

/* ============================================================
   9. 静态页面（隐私政策 / 关于 / 联系我们）
   ============================================================ */
.static-page {
    padding: 48px 8% 48px 12%;
    max-width: 900px;
}

.static-page h1 {
    font-size: 1.6rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 24px;
}

.static-content {
    background: rgba(255, 255, 255, 0.75);
    backdrop-filter: blur(4px);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
    padding: 28px;
    line-height: 1.8;
}

.static-content h2 {
    font-size: 1.15rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-top: 28px;
    margin-bottom: 12px;
}
.static-content h2:first-child {
    margin-top: 0;
}

.static-content p {
    font-size: 0.9rem;
    color: #4a5a6a;
    margin-bottom: 16px;
}

.static-content a {
    color: #D4875E;
    text-decoration: underline;
    text-underline-offset: 2px;
    transition: color 0.2s;
}
.static-content a:hover {
    color: #b06a45;
}

/* ============================================================
   10. 法律页脚 / Legal Footer
   ============================================================ */
.legal-footer {
    /* 底部容器：用 flex 水平居中，不影响上方主体内容的左偏布局 */
    padding: 20px;
    border-top: 1px solid rgba(42, 59, 76, 0.08);
    background: rgba(42, 59, 76, 0.03);
    display: flex;
    justify-content: center;
}

.legal-footer-inner {
    /* flex 容器：自动根据内容宽度居中，不用 max-width 限制 */
    font-size: 0.8rem;
    color: #8898a8;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 10px 16px;
}

.legal-footer-inner a {
    color: #8898a8;
    text-decoration: none;
    transition: color 0.2s;
}
.legal-footer-inner a:hover {
    color: #D4875E;
}

.legal-footer-sep {
    color: #c0c8d0;
    font-size: 0.7rem;
}

.legal-footer-copy {
    color: #a0b0c0;
}

/* ============================================================
   11. 联系表单
   ============================================================ */
.contact-form {
    margin-top: 24px;
    max-width: 560px;
}

.contact-field {
    margin-bottom: 20px;
}

.contact-field label {
    display: block;
    font-size: 0.8rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.contact-field input,
.contact-field textarea {
    width: 100%;
    padding: 12px 16px;
    font-size: 0.9rem;
    font-family: "Inter", "Noto Sans SC", -apple-system, BlinkMacSystemFont,
                 "Segoe UI", Roboto, sans-serif;
    color: #2A3B4C;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(42, 59, 76, 0.15);
    border-radius: 4px;
    outline: none;
    transition: border-color 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
                box-shadow 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.contact-field input:focus,
.contact-field textarea:focus {
    border-color: #D4875E;
    box-shadow: 0 0 0 3px rgba(212, 135, 94, 0.12);
}

.contact-field textarea {
    resize: vertical;
    min-height: 120px;
}

.contact-success {
    padding: 14px 20px;
    margin-bottom: 20px;
    background: rgba(139, 168, 136, 0.1);
    border-left: 3px solid #8BA888;
    color: #5a7a58;
    font-size: 0.9rem;
    border-radius: 0 4px 4px 0;
    animation: btnJump 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.contact-error {
    padding: 14px 20px;
    margin-bottom: 20px;
    background: rgba(212, 135, 94, 0.08);
    border-left: 3px solid #D4875E;
    color: #b06a45;
    font-size: 0.9rem;
    border-radius: 0 4px 4px 0;
    animation: btnJump 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* ============================================================
   12. 响应式 — 新页面
   ============================================================ */
@media (max-width: 768px) {
    .static-page {
        padding: 32px 5%;
    }
    .legal-footer {
        padding: 14px 16px;
    }
    .contact-form {
        max-width: 100%;
    }
}

/* ============================================================
   13. 文章指南页面（工具教程）
   ============================================================ */
.article-page {
    padding: 48px 0 48px 12%;
    max-width: 1200px;
}

.article-page h1 {
    font-size: 1.6rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 28px;
    line-height: 1.4;
}

.article-content {
    width: 65%;
    min-width: 0;
    background: rgba(255, 255, 255, 0.75);
    backdrop-filter: blur(4px);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    box-shadow: 0 4px 12px rgba(42, 59, 76, 0.08);
    padding: 32px;
    line-height: 1.8;
    font-size: 0.95rem;
    color: #3a4a5a;
}

.article-content h2 {
    font-size: 1.2rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-top: 36px;
    margin-bottom: 14px;
    padding-bottom: 6px;
    border-bottom: 2px solid rgba(212, 135, 94, 0.15);
}
.article-content h2:first-child {
    margin-top: 0;
}

.article-content p {
    margin-bottom: 16px;
}

.article-content strong {
    color: #2A3B4C;
}

.article-content em {
    color: #6a7a8a;
    font-style: italic;
}

.article-content a {
    color: #D4875E;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.article-content a:hover {
    color: #b06a45;
}

.article-back {
    margin-top: 32px;
}
.article-back .bounce-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

/* 响应式 */
@media (max-width: 768px) {
    .article-page {
        padding: 32px 5%;
    }
    .article-content {
        width: 100%;
        padding: 20px;
    }
}

/* ============================================================
   14. 工具侧栏中的"使用指南"链接
   ============================================================ */
.guide-link {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid rgba(42, 59, 76, 0.08);
}

.guide-link a {
    display: block;
    font-size: 0.85rem;
    font-weight: 600;
    color: #D4875E;
    text-decoration: none;
    padding: 8px 0;
    transition: color 0.2s;
}
.guide-link a:hover {
    color: #b06a45;
}
.guide-link a::before {
    content: "→ ";
    font-size: 0.75rem;
}


/* ============================================================
   15. 政策合规自查清单
   ============================================================ */
.static-subtitle {
    font-size: 0.95rem;
    color: #6a7a8a;
    margin-bottom: 24px;
}

.policy-checklist h2 {
    font-size: 1.1rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-top: 32px;
    margin-bottom: 16px;
    padding-bottom: 6px;
    border-bottom: 2px solid rgba(212, 135, 94, 0.15);
}
.policy-checklist h2:first-of-type {
    margin-top: 0;
}

.policy-item {
    padding: 14px 0;
    border-bottom: 1px solid rgba(42, 59, 76, 0.06);
}
.policy-item:last-child {
    border-bottom: none;
}

.policy-item strong {
    display: block;
    font-size: 0.95rem;
    color: #2A3B4C;
    margin-bottom: 4px;
}

.policy-item p {
    font-size: 0.85rem;
    color: #6a7a8a;
    margin: 0;
}

.policy-status {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 700;
    padding: 2px 10px;
    border-radius: 3px;
    margin-bottom: 6px;
}

.policy-ok {
    background: rgba(139, 168, 136, 0.12);
    color: #5a7a58;
}

.policy-na {
    background: rgba(42, 59, 76, 0.06);
    color: #8898a8;
}

/* ============================================================
   16. AdSense 策略指南页面
   ============================================================ */
.adsense-guide h2 {
    font-size: 1.1rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-top: 32px;
    margin-bottom: 14px;
    padding-bottom: 6px;
    border-bottom: 2px solid rgba(212, 135, 94, 0.15);
}
.adsense-guide h2:first-of-type {
    margin-top: 0;
}

.adsense-guide h3 {
    font-size: 1rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-top: 24px;
    margin-bottom: 12px;
}

.adsense-guide p {
    font-size: 0.9rem;
    color: #4a5a6a;
    margin-bottom: 14px;
}

.guide-list {
    list-style: none;
    padding: 0;
    margin: 0 0 20px 0;
}
.guide-list li {
    font-size: 0.9rem;
    color: #4a5a6a;
    padding: 8px 0;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    line-height: 1.6;
    border-bottom: 1px solid rgba(42, 59, 76, 0.04);
}
.guide-list li:last-child {
    border-bottom: none;
}

.guide-list-decimal {
    counter-reset: step;
}
.guide-list-decimal li {
    counter-increment: step;
}

.guide-check {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    background: rgba(139, 168, 136, 0.15);
    color: #5a7a58;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7rem;
    font-weight: 700;
    margin-top: 2px;
}

.guide-num {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    background: rgba(42, 59, 76, 0.08);
    color: #2A3B4C;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7rem;
    font-weight: 700;
    margin-top: 2px;
}

.code-block {
    background: #2A3B4C;
    color: #d5dbdf;
    font-family: "Cascadia Code", "Fira Code", "Consolas", monospace;
    font-size: 0.8rem;
    padding: 16px 20px;
    border-radius: 4px;
    overflow-x: auto;
    line-height: 1.5;
    margin: 12px 0;
    white-space: pre-wrap;
    word-break: break-all;
}

/* ============================================================
   17. 博客列表页
   ============================================================ */
.blog-list {
    margin-top: 8px;
}

.blog-item {
    padding: 18px 0;
    border-bottom: 1px solid rgba(42, 59, 76, 0.06);
}
.blog-item:last-child {
    border-bottom: none;
}

.blog-item h3 {
    font-size: 1rem;
    font-weight: 700;
    margin-bottom: 6px;
    line-height: 1.4;
}

.blog-item h3 a {
    color: #2A3B4C;
    text-decoration: none;
    transition: color 0.2s;
}
.blog-item h3 a:hover {
    color: #D4875E;
}

.blog-item p {
    font-size: 0.85rem;
    color: #6a7a8a;
    margin: 0;
    line-height: 1.6;
}

@media (max-width: 768px) {
    .blog-item {
        padding: 14px 0;
    }
}

/* ============================================================
   18. QR Code Generator Tool
   ============================================================ */
.qr-form {
    margin-bottom: 20px;
}

.qr-label {
    display: block;
    font-size: 0.85rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.qr-input {
    width: 100%;
    padding: 16px 20px;
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid rgba(42, 59, 76, 0.15);
    border-radius: 4px;
    color: #2A3B4C;
    font-family: "Inter", "Noto Sans SC", sans-serif;
    font-size: 1rem;
    outline: none;
    transition: border-color 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
                box-shadow 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.qr-input:focus {
    border-color: #D4875E;
    box-shadow: 0 0 0 3px rgba(212, 135, 94, 0.12), 0 0 0 1px #D4875E;
}

.qr-input::placeholder {
    color: #a0b0c0;
    font-weight: 400;
}

.qr-generate-btn {
    margin: 16px 0 0 0;
}

.qr-result-box {
    margin-top: 28px;
    padding: 24px;
    background: rgba(255, 255, 255, 0.75);
    border: 1px solid rgba(42, 59, 76, 0.08);
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.qr-image-wrap {
    background: #ffffff;
    padding: 12px;
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(42, 59, 76, 0.06);
    display: inline-block;
}

#qrCanvas {
    display: block;
    max-width: 100%;
    height: auto;
    image-rendering: pixelated;
}

.qr-download-btn {
    margin-top: 20px;
    align-self: flex-end;
}

@media (max-width: 768px) {
    .qr-result-box {
        padding: 16px;
    }
    .qr-download-btn {
        align-self: center;
        width: 100%;
        justify-content: center;
    }
}

/* ============================================================
   19. Unit Converter Tool
   ============================================================ */
.unit-card {
    background: rgba(255, 255, 255, 0.75);
    border: 1px solid rgba(42, 59, 76, 0.08);
    border-radius: 4px;
    padding: 20px 24px;
    margin-bottom: 16px;
}

.unit-card-title {
    font-size: 0.85rem;
    font-weight: 700;
    color: #D4875E;
    text-transform: uppercase;
    letter-spacing: 2px;
    margin-bottom: 16px;
    padding-bottom: 8px;
    border-bottom: 1px solid rgba(212, 135, 94, 0.12);
}

.unit-row {
    display: flex;
    gap: 24px;
    align-items: flex-start;
}

.unit-col {
    flex: 1;
    min-width: 0;
}

.unit-label {
    display: block;
    font-size: 0.75rem;
    font-weight: 700;
    color: #8898a8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 6px;
}

.unit-select {
    width: 100%;
    padding: 10px 12px;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    color: #2A3B4C;
    font-family: "Inter", "Noto Sans SC", sans-serif;
    font-size: 0.9rem;
    outline: none;
    cursor: pointer;
    transition: border-color 0.2s;
    margin-bottom: 8px;
}
.unit-select:focus {
    border-color: #D4875E;
    box-shadow: 0 0 0 2px rgba(212, 135, 94, 0.1);
}

.unit-input {
    width: 100%;
    padding: 10px 12px;
    background: rgba(255, 255, 255, 0.9);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    color: #2A3B4C;
    font-family: "Inter", "Noto Sans SC", sans-serif;
    font-size: 1rem;
    outline: none;
    box-sizing: border-box;
    transition: border-color 0.2s;
}
.unit-input:focus {
    border-color: #D4875E;
    box-shadow: 0 0 0 2px rgba(212, 135, 94, 0.1);
}

.unit-result-box {
    padding: 10px 12px;
    background: rgba(139, 168, 136, 0.08);
    border: 1px solid rgba(139, 168, 136, 0.15);
    border-radius: 4px;
    min-height: 42px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.unit-result-value {
    font-size: 1.1rem;
    font-weight: 700;
    color: #2A3B4C;
    font-variant-numeric: tabular-nums;
}

.unit-result-label {
    font-size: 0.7rem;
    color: #8BA888;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
}

@media (max-width: 768px) {
    .unit-row {
        flex-direction: column;
        gap: 16px;
    }
    .unit-card {
        padding: 16px;
    }
}
/* ============================================================
   18. 隐私政策页面增强格式
   ============================================================ */
.privacy-content h2 {
    font-size: 1.2rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-top: 36px;
    margin-bottom: 14px;
    padding-bottom: 8px;
    border-bottom: 2px solid rgba(212, 135, 94, 0.2);
}
.privacy-content h2:first-of-type {
    margin-top: 0;
}
.privacy-content h3 {
    font-size: 1rem;
    font-weight: 600;
    color: #2A3B4C;
    margin-top: 24px;
    margin-bottom: 10px;
}
.privacy-content h4 {
    font-size: 0.9rem;
    font-weight: 600;
    color: #4a5a6a;
    margin-top: 18px;
    margin-bottom: 8px;
}
.privacy-content p {
    font-size: 0.9rem;
    color: #4a5a6a;
    margin-bottom: 14px;
    line-height: 1.8;
}
.privacy-content ul {
    margin: 0 0 16px 0;
    padding: 0;
    list-style: none;
}
.privacy-content ul li {
    font-size: 0.9rem;
    color: #4a5a6a;
    margin-bottom: 10px;
    padding-left: 20px;
    position: relative;
    line-height: 1.7;
}
.privacy-content ul li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 10px;
    width: 6px;
    height: 6px;
    background: #D4875E;
    border-radius: 1px;
}
.privacy-content ul li strong {
    color: #2A3B4C;
}
.privacy-content code {
    background: rgba(42, 59, 76, 0.06);
    padding: 2px 6px;
    border-radius: 2px;
    font-size: 0.85rem;
    color: #2A3B4C;
}
.privacy-content a {
    color: #D4875E;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.privacy-content a:hover {
    color: #b06a45;
}
/* ============================================================
   隐私政策格式优化 / Privacy Policy Enhanced
   ============================================================ */

/* 平滑滚动 */
html {
    scroll-behavior: smooth;
}

/* 目录导航 / Table of Contents */
.privacy-toc {
    background: rgba(42, 59, 76, 0.03);
    border: 1px solid rgba(42, 59, 76, 0.1);
    border-left: 3px solid #D4875E;
    border-radius: 4px;
    padding: 20px 24px;
    margin-bottom: 28px;
}
.privacy-toc-title {
    font-size: 0.95rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 12px;
}
.privacy-toc ul {
    margin: 0;
    padding: 0;
    list-style: none;
}
.privacy-toc ul li {
    font-size: 0.85rem;
    margin-bottom: 6px;
    padding-left: 0;
    line-height: 1.6;
}
.privacy-toc ul li::before {
    display: none;
}
.privacy-toc ul li a {
    color: #D4875E;
    text-decoration: none;
    border-bottom: 1px dotted rgba(212, 135, 94, 0.3);
}
.privacy-toc ul li a:hover {
    color: #b06a45;
    border-bottom-style: solid;
}

/* 分区卡片 / Section Card */
.privacy-section {
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(42, 59, 76, 0.06);
    border-radius: 4px;
    padding: 20px 24px;
    margin-bottom: 24px;
    box-shadow: 0 2px 6px rgba(42, 59, 76, 0.04);
}

/* 回到顶部链接 / Back to Top */
.privacy-back-top {
    display: block;
    text-align: right;
    margin-top: 12px;
    padding-top: 8px;
    border-top: 1px solid rgba(42, 59, 76, 0.06);
}
.privacy-back-top a {
    font-size: 0.8rem;
    color: #8a9aa8;
    text-decoration: none;
}
.privacy-back-top a:hover {
    color: #D4875E;
}

/* 定义高亮 */
.privacy-content ul li strong {
    color: #D4875E;
}

/* 移动端适配 / Mobile Responsive */
@media (max-width: 768px) {
    .privacy-content {
        padding: 16px 14px;
    }
    .privacy-content h2 {
        font-size: 1.05rem;
        margin-top: 24px;
    }
    .privacy-content h3 {
        font-size: 0.9rem;
    }
    .privacy-content p,
    .privacy-content ul li {
        font-size: 0.85rem;
        line-height: 1.6;
    }
    .privacy-toc {
        padding: 14px 16px;
    }
    .privacy-toc ul li {
        font-size: 0.8rem;
        margin-bottom: 4px;
    }
    .privacy-section {
        padding: 14px 16px;
    }
}
@media (max-width: 480px) {
    .privacy-content {
        padding: 12px 10px;
    }
    .privacy-content h2 {
        font-size: 0.95rem;
    }
    .privacy-toc {
        padding: 10px 12px;
    }
}
/* ============================================================
   Base64 编码/解码工具
   ============================================================ */

/* 双列容器 */
.base64-dual {
    display: flex;
    flex-wrap: nowrap;
    gap: 12px;
    align-items: flex-start;
    margin-top: 16px;
}

/* 每列占 42%（留空给中间按钮） */
.base64-col {
    flex: 0 0 42%;
    min-width: 0;
}

/* 标签 */
.base64-label {
    display: block;
    font-size: 0.8rem;
    font-weight: 600;
    color: #4a5a6a;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* 文本框 */
.base64-textarea {
    min-height: 300px;
    font-family: "Cascadia Code", "Fira Code", "Consolas", monospace;
    font-size: 0.85rem;
    line-height: 1.5;
    resize: vertical;
}

/* 中间按钮列 */
.base64-btns {
    flex: 0 0 60px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding-top: 32px;
    align-items: center;
}

.base64-btn {
    min-width: 90px;
    padding: 10px 14px;
    font-size: 0.85rem;
    justify-content: center;
}

.base64-btn-decode {
    background: #6a8a7a;
}
.base64-btn-decode:hover {
    background: #5a7a6a;
}

/* 状态提示 */
.base64-status {
    margin-top: 16px;
    padding: 10px 16px;
    border-radius: 4px;
    font-size: 0.85rem;
    color: #4a5a6a;
    background: rgba(42, 59, 76, 0.04);
    border: 1px solid rgba(42, 59, 76, 0.08);
    min-height: 20px;
}
.base64-status-ok {
    color: #3a7a5a;
    background: rgba(58, 122, 90, 0.08);
    border-color: rgba(58, 122, 90, 0.2);
}
.base64-status-error {
    color: #c04040;
    background: rgba(192, 64, 64, 0.08);
    border-color: rgba(192, 64, 64, 0.2);
}

/* 复制按钮 */
.base64-copy-btn {
    margin-top: 12px;
    font-size: 0.85rem;
    padding: 8px 24px;
}

/* 文件上传 */
.base64-upload {
    margin-bottom: 4px;
}
.base64-file-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 14px;
    font-size: 0.82rem;
    color: #6a7a8a;
    background: rgba(42, 59, 76, 0.04);
    border: 1px dashed rgba(42, 59, 76, 0.2);
    border-radius: 4px;
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s;
}
.base64-file-label:hover {
    border-color: #D4875E;
    background: rgba(212, 135, 94, 0.04);
}
.base64-file-icon {
    font-size: 1rem;
}
.base64-file-input {
    display: none;
}

/* 使用步骤 */
.base64-steps {
    margin-top: 32px;
    padding: 20px 24px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(42, 59, 76, 0.06);
    border-radius: 4px;
}
.base64-steps h3 {
    font-size: 0.9rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 12px;
}
.base64-steps ol {
    margin: 0;
    padding-left: 20px;
}
.base64-steps ol li {
    font-size: 0.85rem;
    color: #4a5a6a;
    line-height: 1.7;
    margin-bottom: 6px;
}

/* 侧栏提示 */
.base64-tips {
    list-style: none;
    padding: 0;
    margin: 0;
}
.base64-tips li {
    font-size: 0.82rem;
    color: #6a7a8a;
    line-height: 1.6;
    margin-bottom: 8px;
    padding-left: 14px;
    position: relative;
}
.base64-tips li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 8px;
    width: 4px;
    height: 4px;
    background: #D4875E;
    border-radius: 1px;
}

/* 移动端适配 */
@media (max-width: 768px) {
    .base64-dual {
        flex-direction: column;
        gap: 8px;
    }
    .base64-col {
        flex: 0 0 100%;
    }
    .base64-btns {
        flex-direction: row;
        flex: 0 0 auto;
        padding-top: 4px;
        padding-bottom: 4px;
        justify-content: center;
        gap: 16px;
    }
    .base64-textarea {
        min-height: 160px;
    }
    .base64-btn {
        min-width: 80px;
    }
}
/* ============================================================
   JSON 格式化/校验工具
   ============================================================ */

/* 标签 */
.json-label {
    display: block;
    font-size: 0.8rem;
    font-weight: 600;
    color: #4a5a6a;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* 文本框 */
.json-textarea {
    min-height: 280px;
    font-family: "Cascadia Code", "Fira Code", "Consolas", monospace;
    font-size: 0.85rem;
    line-height: 1.5;
    resize: vertical;
}
.json-output {
    min-height: 200px;
    background: rgba(42, 59, 76, 0.03);
}

/* 状态提示 */
.json-status {
    margin-top: 12px;
    padding: 10px 16px;
    border-radius: 4px;
    font-size: 0.85rem;
    min-height: 20px;
    display: none;
}
.json-status-ok {
    display: block;
    color: #3a7a5a;
    background: rgba(58, 122, 90, 0.08);
    border: 1px solid rgba(58, 122, 90, 0.2);
}
.json-status-error {
    display: block;
    color: #c04040;
    background: rgba(192, 64, 64, 0.08);
    border: 1px solid rgba(192, 64, 64, 0.2);
}

/* 按钮并排 */
.json-btns {
    display: flex;
    gap: 12px;
    margin-top: 12px;
    flex-wrap: wrap;
}
.json-btn {
    min-width: 120px;
    padding: 10px 24px;
    font-size: 0.9rem;
    justify-content: center;
}
.json-btn-icon {
    font-size: 1rem;
    line-height: 1;
}
.json-btn-compress {
    background: #6a8a7a;
}
.json-btn-compress:hover {
    background: #5a7a6a;
}

/* 结果区 */
.json-result-wrap {
    margin-top: 20px;
}

/* 复制按钮 */
.json-copy-btn {
    margin-top: 10px;
    font-size: 0.85rem;
    padding: 8px 24px;
}

/* 使用步骤 */
.json-steps {
    margin-top: 32px;
    padding: 20px 24px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(42, 59, 76, 0.06);
    border-radius: 4px;
}
.json-steps h3 {
    font-size: 0.9rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 12px;
}
.json-steps ol {
    margin: 0;
    padding-left: 20px;
}
.json-steps ol li {
    font-size: 0.85rem;
    color: #4a5a6a;
    line-height: 1.7;
    margin-bottom: 6px;
}

/* 侧栏提示 */
.json-tips {
    list-style: none;
    padding: 0;
    margin: 0;
}
.json-tips li {
    font-size: 0.82rem;
    color: #6a7a8a;
    line-height: 1.6;
    margin-bottom: 8px;
    padding-left: 14px;
    position: relative;
}
.json-tips li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 8px;
    width: 4px;
    height: 4px;
    background: #D4875E;
    border-radius: 1px;
}

/* 移动端适配 */
@media (max-width: 768px) {
    .json-textarea {
        min-height: 180px;
    }
    .json-btns {
        flex-direction: column;
        gap: 8px;
    }
    .json-btn {
        width: 100%;
        min-width: 0;
    }
}
/* ============================================================
   密码生成器 / Password Generator
   ============================================================ */

/* 密码显示行 */
.pwd-display {
    display: flex;
    gap: 8px;
    align-items: center;
    margin-bottom: 24px;
}
.pwd-output {
    flex: 1;
    min-width: 0;
    padding: 14px 18px;
    font-family: "Cascadia Code", "Fira Code", "Consolas", monospace;
    font-size: 1.1rem;
    letter-spacing: 2px;
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid rgba(42, 59, 76, 0.15);
    border-radius: 4px;
    color: #2A3B4C;
    outline: none;
    cursor: default;
}
.pwd-output:focus {
    border-color: #D4875E;
    box-shadow: 0 0 0 3px rgba(212, 135, 94, 0.12);
}

/* 复制按钮（SVG图标） */
.pwd-copy-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 16px;
    background: rgba(42, 59, 76, 0.06);
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 4px;
    color: #4a5a6a;
    font-size: 0.85rem;
    cursor: pointer;
    transition: background 0.2s, border-color 0.2s, color 0.2s;
    white-space: nowrap;
}
.pwd-copy-btn:hover {
    background: rgba(42, 59, 76, 0.1);
    border-color: #D4875E;
    color: #D4875E;
}
.pwd-copy-icon {
    display: flex;
    align-items: center;
    line-height: 0;
}
.pwd-copy-icon svg {
    display: block;
}
.pwd-copied-flash {
    background: rgba(58, 122, 90, 0.1);
    border-color: #3a7a5a;
    color: #3a7a5a;
}

/* 选项区背景框 */
.pwd-options {
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(42, 59, 76, 0.08);
    border-radius: 4px;
    padding: 20px 24px;
}

/* 滑块行 */
.pwd-length-wrap {
    margin-bottom: 18px;
}
.pwd-label {
    display: block;
    font-size: 0.85rem;
    font-weight: 600;
    color: #2A3B4C;
    margin-bottom: 8px;
}
.pwd-slider-row {
    display: flex;
    align-items: center;
    gap: 12px;
}
.pwd-slider-min,
.pwd-slider-max {
    font-size: 0.78rem;
    color: #8a9aa8;
    flex-shrink: 0;
    width: 18px;
    text-align: center;
}
.pwd-slider {
    flex: 1;
    -webkit-appearance: none;
    appearance: none;
    height: 6px;
    border-radius: 3px;
    background: rgba(42, 59, 76, 0.12);
    outline: none;
    cursor: pointer;
}
.pwd-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #D4875E;
    border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(42, 59, 76, 0.2);
    cursor: pointer;
    transition: transform 0.15s;
}
.pwd-slider::-webkit-slider-thumb:hover {
    transform: scale(1.15);
}
.pwd-slider::-moz-range-thumb {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #D4875E;
    border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(42, 59, 76, 0.2);
    cursor: pointer;
}

/* 复选框组 */
.pwd-checkboxes {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 20px;
    margin-bottom: 18px;
}
.pwd-check {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.85rem;
    color: #4a5a6a;
    cursor: pointer;
    user-select: none;
    padding: 6px 0;
}
.pwd-check input[type="checkbox"] {
    display: none;
}
.pwd-check-mark {
    width: 18px;
    height: 18px;
    border: 2px solid rgba(42, 59, 76, 0.2);
    border-radius: 3px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: border-color 0.2s, background 0.2s;
}
.pwd-check input:checked + .pwd-check-mark {
    border-color: #D4875E;
    background: #D4875E;
}
.pwd-check input:checked + .pwd-check-mark::after {
    content: "";
    width: 5px;
    height: 9px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
    margin-top: -2px;
}

/* 生成按钮 */
.pwd-gen-btn {
    width: 100%;
    justify-content: center;
    font-size: 0.95rem;
    padding: 14px 36px;
}
.pwd-gen-icon {
    display: inline-block;
    font-size: 1.1rem;
    line-height: 1;
}
.pwd-gen-btn.jump .pwd-gen-icon {
    animation: pwdSpin 0.45s ease;
}
@keyframes pwdSpin {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* 使用步骤 */
.pwd-steps {
    margin-top: 28px;
    padding: 20px 24px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(42, 59, 76, 0.06);
    border-radius: 4px;
}
.pwd-steps h3 {
    font-size: 0.9rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 12px;
}
.pwd-steps ol {
    margin: 0;
    padding-left: 20px;
}
.pwd-steps ol li {
    font-size: 0.85rem;
    color: #4a5a6a;
    line-height: 1.7;
    margin-bottom: 6px;
}

/* 侧栏提示 */
.pwd-tips {
    list-style: none;
    padding: 0;
    margin: 0;
}
.pwd-tips li {
    font-size: 0.82rem;
    color: #6a7a8a;
    line-height: 1.6;
    margin-bottom: 8px;
    padding-left: 14px;
    position: relative;
}
.pwd-tips li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 8px;
    width: 4px;
    height: 4px;
    background: #D4875E;
    border-radius: 1px;
}

/* 移动端适配 */
@media (max-width: 768px) {
    .pwd-display {
        flex-direction: column;
        gap: 10px;
    }
    .pwd-output {
        width: 100%;
        font-size: 1rem;
        letter-spacing: 1px;
    }
    .pwd-copy-btn {
        width: 100%;
        justify-content: center;
        min-height: 44px;
    }
    .pwd-options {
        padding: 16px;
    }
    .pwd-checkboxes {
        gap: 6px 12px;
    }
}
/* ============================================================
   时间戳转换器 / Timestamp Converter
   ============================================================ */

/* 双列容器 */
.ts-dual {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    margin-bottom: 20px;
}

.ts-col {
    flex: 0 0 43%;
    min-width: 0;
}

.ts-label {
    display: block;
    font-size: 0.8rem;
    font-weight: 600;
    color: #4a5a6a;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.ts-input {
    width: 100%;
    padding: 12px 16px;
    font-size: 1rem;
    font-family: "Cascadia Code", "Fira Code", "Consolas", monospace;
    background: rgba(255, 255, 255, 0.85);
    border: 1px solid rgba(42, 59, 76, 0.15);
    border-radius: 4px;
    color: #2A3B4C;
    outline: none;
    box-sizing: border-box;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.ts-input:focus {
    border-color: #D4875E;
    box-shadow: 0 0 0 3px rgba(212, 135, 94, 0.12);
}

.ts-datetime-input {
    font-family: inherit;
    font-size: 0.95rem;
}

/* 中间箭头 */
.ts-arrows {
    flex: 0 0 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding-top: 32px;
}
.ts-arrow-icon {
    font-size: 1.5rem;
    color: #b0c0d0;
    user-select: none;
}

/* 提示文字 */
.ts-hint {
    font-size: 0.78rem;
    color: #8a9aa8;
    margin-top: 6px;
    margin-bottom: 0;
    font-family: "Cascadia Code", "Fira Code", "Consolas", monospace;
}

/* 按钮行 */
.ts-actions {
    margin-bottom: 16px;
}
.ts-now-btn {
    min-width: 140px;
    padding: 10px 28px;
    font-size: 0.9rem;
    justify-content: center;
}
.ts-now-icon {
    display: inline-block;
    font-size: 1rem;
    line-height: 1;
}
.ts-now-btn.jump .ts-now-icon {
    animation: tsSpin 0.45s ease;
}
@keyframes tsSpin {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* 状态 */
.ts-status {
    margin-top: 8px;
    padding: 8px 14px;
    border-radius: 4px;
    font-size: 0.85rem;
    display: none;
}
.ts-status-ok {
    display: block;
    color: #3a7a5a;
    background: rgba(58, 122, 90, 0.08);
    border: 1px solid rgba(58, 122, 90, 0.2);
}
.ts-status-error {
    display: block;
    color: #c04040;
    background: rgba(192, 64, 64, 0.08);
    border: 1px solid rgba(192, 64, 64, 0.2);
}

/* 使用步骤 */
.ts-steps {
    margin-top: 28px;
    padding: 20px 24px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(42, 59, 76, 0.06);
    border-radius: 4px;
}
.ts-steps h3 {
    font-size: 0.9rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 12px;
}
.ts-steps ol {
    margin: 0;
    padding-left: 20px;
}
.ts-steps ol li {
    font-size: 0.85rem;
    color: #4a5a6a;
    line-height: 1.7;
    margin-bottom: 6px;
}

/* 常用时间戳表 */
.ts-common {
    margin-top: 24px;
    padding: 20px 24px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(42, 59, 76, 0.06);
    border-radius: 4px;
}
.ts-common h3 {
    font-size: 0.9rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 12px;
}
.ts-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}
.ts-table th {
    text-align: left;
    padding: 8px 12px;
    color: #6a7a8a;
    font-weight: 600;
    border-bottom: 1px solid rgba(42, 59, 76, 0.08);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}
.ts-table td {
    padding: 8px 12px;
    color: #4a5a6a;
    border-bottom: 1px solid rgba(42, 59, 76, 0.04);
    font-family: "Cascadia Code", "Fira Code", "Consolas", monospace;
}
.ts-table tr:last-child td {
    border-bottom: none;
}
.ts-clickable {
    color: #D4875E;
    cursor: pointer;
    font-weight: 600;
    transition: color 0.15s;
}
.ts-clickable:hover {
    color: #b06a45;
    text-decoration: underline;
}

/* 移动端适配 */
@media (max-width: 768px) {
    .ts-dual {
        flex-direction: column;
        gap: 12px;
    }
    .ts-col {
        flex: 0 0 100%;
    }
    .ts-arrows {
        padding-top: 0;
        padding-bottom: 4px;
        transform: rotate(90deg);
    }
    .ts-table {
        font-size: 0.78rem;
    }
    .ts-table th,
    .ts-table td {
        padding: 6px 8px;
    }
}
/* QR 增强样式 */
.qr-status {
    margin-top: 12px;
    padding: 10px 16px;
    border-radius: 4px;
    font-size: 0.85rem;
    min-height: 20px;
    display: none;
}
.qr-status-error {
    display: block;
    color: #c04040;
    background: rgba(192, 64, 64, 0.08);
    border: 1px solid rgba(192, 64, 64, 0.2);
}

/* 尺寸选择行 */
.qr-size-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 10px;
}
.qr-size-label {
    font-size: 0.82rem;
    color: #6a7a8a;
    font-weight: 600;
}
.qr-size-select {
    padding: 6px 10px;
    border: 1px solid rgba(42, 59, 76, 0.12);
    border-radius: 3px;
    font-size: 0.85rem;
    color: #2A3B4C;
    background: rgba(255,255,255,0.85);
    cursor: pointer;
    outline: none;
    font-family: inherit;
}
.qr-size-select:focus {
    border-color: #D4875E;
}

/* 结果区操作按钮 */
.qr-result-actions {
    width: 100%;
    display: flex;
    justify-content: flex-end;
    margin-top: 4px;
}

/* 使用步骤 */
.qr-steps {
    margin-top: 28px;
    padding: 20px 24px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid rgba(42, 59, 76, 0.06);
    border-radius: 4px;
}
.qr-steps h3 {
    font-size: 0.9rem;
    font-weight: 700;
    color: #2A3B4C;
    margin-bottom: 12px;
}
.qr-steps ol {
    margin: 0;
    padding-left: 20px;
}
.qr-steps ol li {
    font-size: 0.85rem;
    color: #4a5a6a;
    line-height: 1.7;
    margin-bottom: 6px;
}

/* 生成按钮加载态 */
.bounce-btn.loading {
    pointer-events: none;
    opacity: 0.7;
    position: relative;
}
.bounce-btn.loading::after {
    content: "";
    width: 16px;
    height: 16px;
    border: 2px solid rgba(255,255,255,0.3);
    border-top-color: #fff;
    border-radius: 50%;
    animation: qrSpin 0.6s linear infinite;
    margin-left: 8px;
    display: inline-block;
}
@keyframes qrSpin {
    to { transform: rotate(360deg); }
}

/* 移动端适配 */
@media (max-width: 768px) {
    .qr-steps {
        padding: 14px 16px;
    }
    .qr-size-row {
        flex-wrap: wrap;
    }
}
