/* ==========================================================
   手写签名生成器 /tools/signature_generator
   复刻 tools.ai225.com/tools/signature-generator 的卡片式设计，
   工具条 + 画布 + 导出设置，三端响应式，跟随站点深浅色主题。
   ========================================================== */

/* 整屏工具页：解除中心限宽并铺满（保留左侧导航） */
body.page-signature-generator-full .app { max-width: 100%; }
body.page-signature-generator-full .main-content { max-width: 100%; width: 100%; border-right: 0; }

.sgc { padding: 16px 18px 34px; box-sizing: border-box; }

/* [hidden] 兜底：本文件多处用 display:flex / inline-flex，必须强制隐藏 */
.sgc [hidden] { display: none !important; }

/* ---------- Hero ---------- */
.sgc-hero { display: flex; align-items: center; gap: 13px; margin-bottom: 14px; }
.sgc-hero-ico {
    width: 52px; height: 52px; flex: 0 0 auto; border-radius: 15px; font-size: 26px;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, color-mix(in srgb, var(--accent, #136ce9) 16%, transparent), color-mix(in srgb, var(--accent, #136ce9) 5%, transparent));
    border: 1px solid color-mix(in srgb, var(--accent, #136ce9) 22%, transparent);
}
.sgc-hero-txt { min-width: 0; }
.sgc-title { margin: 0; font-size: 22px; font-weight: 800; letter-spacing: .2px; color: var(--text-primary, #111827); }
.sgc-sub { margin: 4px 0 0; font-size: 13px; line-height: 1.7; color: var(--text-secondary, #6b7280); max-width: 980px; }

/* ---------- 提示条 ---------- */
.sgc-note {
    margin: 0 0 12px; padding: 10px 13px; border-radius: 11px; font-size: 13.5px; line-height: 1.6;
    background: var(--bg-secondary, #f3f4f6); color: var(--text-primary, #111827);
    border: 1px solid var(--border-color, #e5e7eb);
}
.sgc-note.is-err { background: color-mix(in srgb, #dc2626 10%, transparent); border-color: color-mix(in srgb, #dc2626 32%, transparent); color: #b91c1c; }
.sgc-note.is-ok { background: color-mix(in srgb, #16a34a 10%, transparent); border-color: color-mix(in srgb, #16a34a 32%, transparent); color: #15803d; }
.sgc-note.is-warn { background: color-mix(in srgb, #d97706 12%, transparent); border-color: color-mix(in srgb, #d97706 34%, transparent); color: #b45309; }

.sgc-app { display: flex; flex-direction: column; gap: 16px; }
.sgc-card {
    background: var(--bg-primary, #fff); border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 14px; padding: 13px 14px;
}

/* ---------- 工具条 ---------- */
.sgc-tools { display: flex; flex-direction: column; gap: 10px; }
.sgc-tools-row { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.sgc-tools-row-2 { border-top: 1px solid var(--border-color, #e5e7eb); padding-top: 10px; }
.sgc-grp { display: flex; align-items: center; gap: 8px; min-width: 0; }
.sgc-grp-grow { flex: 1 1 190px; }
.sgc-lab { font-size: 12.5px; font-weight: 700; color: var(--text-secondary, #6b7280); white-space: nowrap; }
.sgc-lab-inline { font-size: 12.5px; font-weight: 700; color: var(--text-secondary, #6b7280); }

.sgc-seg { display: inline-flex; padding: 3px; border-radius: 10px; background: var(--bg-secondary, #f3f4f6); gap: 3px; }
.sgc-seg-btn {
    border: 0; background: transparent; cursor: pointer; border-radius: 8px;
    padding: 6px 12px; font-size: 12.5px; font-weight: 700; color: var(--text-secondary, #6b7280);
}
.sgc-seg-btn.is-on { background: var(--bg-primary, #fff); color: var(--accent, #136ce9); box-shadow: 0 1px 3px rgba(15, 23, 42, .1); }

.sgc-color-wrap { display: inline-flex; align-items: center; gap: 7px; }
.sgc-color-wrap input[type="color"] {
    width: 34px; height: 30px; padding: 1px; cursor: pointer; border-radius: 8px;
    border: 1px solid var(--border-color, #e5e7eb); background: var(--bg-primary, #fff);
}
.sgc-color-wrap input[type="color"]:disabled { opacity: .45; cursor: not-allowed; }
.sgc-color-prev {
    width: 26px; height: 26px; border-radius: 50%; border: 1px solid var(--border-color, #e5e7eb);
    background: var(--bg-primary, #fff); display: inline-flex; align-items: center; justify-content: center;
}
.sgc-color-prev i { display: block; border-radius: 50%; background: #000; }
.sgc-swatches { display: inline-flex; gap: 5px; }
.sgc-sw {
    width: 20px; height: 20px; border-radius: 50%; cursor: pointer; padding: 0;
    border: 1px solid color-mix(in srgb, var(--text-primary, #111827) 18%, transparent);
}
.sgc-sw:hover { transform: scale(1.12); }

.sgc-grp-grow input[type="range"] { flex: 1 1 auto; min-width: 90px; accent-color: var(--accent, #136ce9); }

.sgc-chk { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--text-secondary, #6b7280); cursor: pointer; }
.sgc-chk input { accent-color: var(--accent, #136ce9); width: 15px; height: 15px; }

/* ---------- 按钮 ---------- */
.sgc-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 5px;
    padding: 7px 12px; border-radius: 10px; font-size: 13px; font-weight: 600; cursor: pointer;
    border: 1px solid var(--border-color, #e5e7eb); background: var(--bg-primary, #fff); color: var(--text-primary, #111827);
    transition: background .15s, border-color .15s, opacity .15s;
}
.sgc-btn:hover:not(:disabled) { background: var(--bg-secondary, #f3f4f6); }
.sgc-btn:disabled { opacity: .45; cursor: not-allowed; }
.sgc-btn-go { background: var(--accent, #136ce9); border-color: var(--accent, #136ce9); color: #fff; }
.sgc-btn-go:hover:not(:disabled) { background: color-mix(in srgb, var(--accent, #136ce9) 86%, #000); }
.sgc-btn-danger { color: #b91c1c; border-color: color-mix(in srgb, #dc2626 34%, transparent); }
.sgc-btn-danger:hover:not(:disabled) { background: color-mix(in srgb, #dc2626 9%, transparent); }
.sgc-acts { display: inline-flex; gap: 7px; }
.sgc-spacer { flex: 1 1 auto; }

/* ---------- 下载下拉 ---------- */
.sgc-dl { position: relative; }
.sgc-dl-menu {
    position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 132px;
    background: var(--bg-primary, #fff); border: 1px solid var(--border-color, #e5e7eb);
    border-radius: 10px; box-shadow: 0 12px 30px rgba(15, 23, 42, .16); padding: 4px; overflow: hidden;
}
.sgc-dl-menu button {
    display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%;
    border: 0; background: transparent; cursor: pointer; text-align: left;
    padding: 8px 10px; border-radius: 7px; font-size: 13px; color: var(--text-primary, #111827);
}
.sgc-dl-menu button:hover { background: var(--bg-secondary, #f3f4f6); }
.sgc-dl-menu em { font-style: normal; font-size: 10px; opacity: .55; }

/* ---------- 文字生成面板 ---------- */
.sgc-pad { padding: 11px; border: 1px dashed var(--border-color, #e5e7eb); border-radius: 12px; background: var(--bg-secondary, #f9fafb); margin-bottom: 11px; }
.sgc-pad-row { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; }
.sgc-input, .sgc-select {
    padding: 8px 10px; font-size: 13.5px; border-radius: 10px; box-sizing: border-box;
    border: 1px solid var(--border-color, #e5e7eb); background: var(--bg-primary, #fff); color: var(--text-primary, #111827);
}
.sgc-input:focus, .sgc-select:focus { outline: none; border-color: var(--accent, #136ce9); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #136ce9) 16%, transparent); }
.sgc-select-sm { padding: 6px 8px; font-size: 12.5px; }
.sgc-input-sm { padding: 6px 9px; font-size: 12.5px; width: 150px; }

/* ---------- 画布 ---------- */
.sgc-stage {
    position: relative; width: 100%; border: 2px dashed var(--border-color, #d1d5db);
    border-radius: 12px; overflow: hidden; touch-action: none; user-select: none; -webkit-user-select: none;
    background: #fff; transition: border-color .15s;
}
/* 透明背景：棋盘格底纹（与参考站一致的 4px 棋盘） */
.sgc-stage.is-transparent {
    background-color: #fff;
    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAACBJREFUGFdjZEADJEYmJpBkA0kkRiYmkGSDRCRGJiagJAA+LQQE9XvH2gAAAABJRU5ErkJggg==");
}
.sgc-canvas { display: block; width: 100%; cursor: crosshair; }
.sgc-canvas.is-eraser { cursor: cell; }
.sgc-ph {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    pointer-events: none; font-size: 20px; color: var(--text-secondary, #9ca3af); user-select: none;
}
/* 参考基线：用覆盖层画，不进画布，因此不会被导出 */
.sgc-stage.is-baseline::after {
    content: ""; position: absolute; left: 6%; right: 6%; top: 66%;
    border-bottom: 1px dashed color-mix(in srgb, var(--accent, #136ce9) 45%, transparent);
    pointer-events: none;
}

/* ---------- 导出设置 ---------- */
.sgc-export {
    display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 11px;
    padding-top: 11px; border-top: 1px solid var(--border-color, #e5e7eb);
}
.sgc-suffix { font-size: 12.5px; color: var(--text-secondary, #6b7280); }
.sgc-size { font-size: 12.5px; color: var(--text-secondary, #6b7280); margin-left: auto; }
.sgc-tip { margin: 10px 0 0; font-size: 12.5px; line-height: 1.7; color: var(--text-secondary, #6b7280); text-align: center; }

/* ---------- 说明 ---------- */
.sgc-about {
    padding: 16px 18px; border-radius: 14px; font-size: 13.5px; line-height: 1.8;
    background: var(--bg-primary, #fff); border: 1px solid var(--border-color, #e5e7eb); color: var(--text-primary, #111827);
}
.sgc-about-title { margin: 0 0 8px; font-size: 15px; font-weight: 800; }
.sgc-about h3 { margin: 16px 0 8px; font-size: 14px; font-weight: 800; }
.sgc-about-list { margin: 0; padding-left: 20px; }
.sgc-about-list li { margin-bottom: 4px; }
.sgc-about table { width: 100%; border-collapse: collapse; margin-top: 6px; font-size: 13px; }
.sgc-about th, .sgc-about td { border: 1px solid var(--border-color, #e5e7eb); padding: 7px 9px; text-align: left; vertical-align: top; }
.sgc-about th { background: var(--bg-secondary, #f9fafb); font-weight: 700; width: 120px; }
.sgc-hint { margin: 12px 0 0; font-size: 12.5px; color: var(--text-secondary, #6b7280); }

/* ---------- 响应式 ---------- */
@media (max-width: 991px) {
    .sgc-tools-row { gap: 11px; }
    .sgc-grp-grow { flex: 1 1 100%; order: 5; }
}
@media (max-width: 767px) {
    .sgc { padding: 12px 12px 26px; }
    .sgc-title { font-size: 19px; }
    .sgc-sub { font-size: 12.5px; }
    .sgc-hero-ico { width: 44px; height: 44px; border-radius: 13px; font-size: 22px; }
    /* 16px 防 iOS 聚焦缩放 */
    .sgc-input, .sgc-select { font-size: 16px; }
    .sgc-tools-row { gap: 9px; }
    .sgc-tools-row-2 .sgc-btn { flex: 1 1 auto; }
    .sgc-spacer { display: none; }
    .sgc-acts { flex: 1 1 100%; }
    .sgc-export { gap: 9px; }
    .sgc-input-sm { width: 100%; }
    .sgc-size { margin-left: 0; flex: 1 1 100%; }
    .sgc-about { padding: 13px; font-size: 13px; }
    .sgc-about th { width: 92px; }
}
@media (max-width: 420px) {
    .sgc-swatches { display: none; }
    .sgc-dl-menu { right: auto; left: 0; }
}
