/* ============================================================================
   Compress JPG (rebuilt 2026-10-12, browser-first compressor)
   Everything is scoped to .cpj (the tool container) or a cpj- class.
   Same UI family as the other ConvertICO compressors (Compress JPG, PNG, WebP,
   AVIF, HEIC) - each page ships its own copy with its own prefix.
   Light mode default, dark mode via [data-theme="dark"] on <html>. Accent #339966.
   ========================================================================== */
.cpj {
    --tool-accent: #339966;
    --cpj-acc: #339966;
    --cpj-acc-dark: #267a51;
    --cpj-acc-soft: rgba(51, 153, 102, 0.12);
    --cpj-acc-mid: rgba(51, 153, 102, 0.3);
    --cpj-blue: #3399cc;
    --cpj-red: #e64e4e;
    --cpj-red-soft: rgba(230, 78, 78, 0.1);
    --cpj-amber: #b7791f;
    --cpj-amber-soft: rgba(245, 158, 11, 0.12);
    --cpj-bg2: #f1f5f9;
    --cpj-text: var(--text-primary, #1e293b);
    --cpj-text2: var(--text-secondary, #475569);
    --cpj-muted: var(--text-muted, #64748b);
    --cpj-border: var(--border-color, #e2e8f0);
    --cpj-elev: var(--bg-elevated, #ffffff);
    --cpj-checker: #e9eef3;
    --cpj-r: 12px;
    color: var(--cpj-text);
    box-sizing: border-box;
}
[data-theme="dark"] .cpj {
    --cpj-acc: #4cc38a;
    --cpj-acc-dark: #7dd8ac;
    --cpj-acc-soft: rgba(76, 195, 138, 0.14);
    --cpj-acc-mid: rgba(76, 195, 138, 0.32);
    --cpj-red: #f87171;
    --cpj-red-soft: rgba(248, 113, 113, 0.14);
    --cpj-amber: #fbbf24;
    --cpj-amber-soft: rgba(251, 191, 36, 0.14);
    --cpj-bg2: #273449;
    --cpj-checker: #2b3a50;
}
.cpj *, .cpj *::before, .cpj *::after { box-sizing: border-box; }
.cpj [hidden] { display: none !important; }
.cpj button { width: auto; font-family: inherit; }
.cpj a { color: var(--cpj-acc-dark); }
[data-theme="dark"] .cpj a { color: var(--cpj-acc); }
.cpj i[data-lucide], .cpj svg.lucide { width: 18px; height: 18px; flex-shrink: 0; }

/* ---------- breadcrumb + header ---------- */
.cpj .cpj-crumbs { display: flex; flex-wrap: wrap; gap: 0.35rem; list-style: none; margin: 0 0 1rem; padding: 0; font-size: 0.82rem; color: var(--cpj-muted); }
.cpj .cpj-crumbs li + li::before { content: '/'; margin-right: 0.35rem; color: var(--cpj-muted); }
.cpj .cpj-crumbs a { color: var(--cpj-muted); text-decoration: none; }
.cpj .cpj-crumbs a:hover { color: var(--cpj-acc-dark); text-decoration: underline; }
.cpj .cpj-header { text-align: center; margin-bottom: 1.5rem; }
.cpj .cpj-title-row { display: flex; align-items: center; justify-content: center; gap: 0.8rem; margin-bottom: 0.8rem; }
.cpj .cpj-title-icon { width: 52px; height: 52px; border-radius: var(--cpj-r); background: var(--cpj-acc-soft); color: var(--cpj-acc); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.cpj .cpj-title-icon svg { width: 28px; height: 28px; }
.cpj .cpj-title { margin: 0; color: var(--cpj-acc); line-height: 1.15; }
.cpj .cpj-desc { margin: 0 auto 0.6rem; }
.cpj .cpj-pills { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.45rem; margin-top: 0.6rem; }
.cpj .cpj-pill { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.78rem; font-weight: 600; color: var(--cpj-text2); background: var(--cpj-elev); border: 1px solid var(--cpj-border); border-radius: 999px; padding: 0.3rem 0.7rem; }
.cpj .cpj-pill svg { width: 14px; height: 14px; color: var(--cpj-acc); }

/* ---------- messages ---------- */
.cpj .cpj-error, .cpj .cpj-note { display: flex; gap: 0.7rem; align-items: flex-start; border-radius: var(--cpj-r); padding: 0.8rem 0.9rem; margin: 0 0 1rem; font-size: 0.9rem; line-height: 1.5; }
.cpj .cpj-error { background: var(--cpj-red-soft); border: 1px solid rgba(230, 78, 78, 0.35); color: var(--cpj-text); }
.cpj .cpj-error > svg { color: var(--cpj-red); margin-top: 2px; }
.cpj .cpj-note { background: var(--cpj-acc-soft); border: 1px solid var(--cpj-acc-mid); }
.cpj .cpj-note > svg { color: var(--cpj-acc); margin-top: 2px; }
.cpj .cpj-msg-body { flex: 1; min-width: 0; }
.cpj .cpj-msg-body p { margin: 0; }
.cpj .cpj-x { background: none; border: 0; padding: 2px; color: var(--cpj-muted); cursor: pointer; border-radius: 6px; line-height: 0; }
.cpj .cpj-x:hover { color: var(--cpj-text); background: rgba(127, 127, 127, 0.12); }

/* ---------- drop zone ---------- */
.cpj .cpj-drop { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.45rem; text-align: center; padding: 2.2rem 1rem; border: 2px dashed var(--cpj-acc-mid); border-radius: 16px; background: var(--cpj-elev); cursor: pointer; transition: border-color 0.15s, background 0.15s; margin: 0; }
.cpj .cpj-drop:hover, .cpj .cpj-drop.cpj-over { border-color: var(--cpj-acc); background: var(--cpj-acc-soft); }
.cpj .cpj-drop:focus-within { outline: 2px solid var(--cpj-acc); outline-offset: 2px; }
.cpj .cpj-drop-icon { width: 56px; height: 56px; border-radius: 50%; background: var(--cpj-acc-soft); color: var(--cpj-acc); display: inline-flex; align-items: center; justify-content: center; }
.cpj .cpj-drop-icon svg { width: 28px; height: 28px; }
.cpj .cpj-drop strong { font-size: 1.1rem; color: var(--cpj-text); }
.cpj .cpj-drop-link { color: var(--cpj-acc-dark); text-decoration: underline; }
[data-theme="dark"] .cpj .cpj-drop-link { color: var(--cpj-acc); }
.cpj .cpj-drop-sub { font-size: 0.85rem; color: var(--cpj-muted); }
.cpj .cpj-has-files .cpj-drop { padding: 0.9rem 1rem; flex-direction: row; flex-wrap: wrap; }
.cpj .cpj-has-files .cpj-drop-icon { width: 36px; height: 36px; }
.cpj .cpj-has-files .cpj-drop-icon svg { width: 20px; height: 20px; }
.cpj .cpj-has-files .cpj-drop strong { font-size: 0.95rem; }
.cpj .cpj-sample-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; margin: 0.7rem 0 0; }
.cpj .cpj-has-files .cpj-sample-row { display: none; }

/* ---------- buttons ---------- */
.cpj .cpj-btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.45rem; border-radius: 10px; padding: 0.6rem 1rem; font-size: 0.9rem; font-weight: 600; border: 1px solid transparent; cursor: pointer; text-decoration: none; line-height: 1.2; transition: background 0.15s, border-color 0.15s, color 0.15s; }
.cpj .cpj-btn-primary { background: #2b8a5a; color: #fff; }
.cpj .cpj-btn-primary:hover { background: #237049; color: #fff; }
.cpj .cpj-btn-primary:disabled { opacity: 0.55; cursor: not-allowed; }
.cpj .cpj-btn-ghost { background: var(--cpj-elev); color: var(--cpj-text); border-color: var(--cpj-border); }
.cpj .cpj-btn-ghost:hover { border-color: var(--cpj-acc); color: var(--cpj-acc-dark); }
[data-theme="dark"] .cpj .cpj-btn-ghost:hover { color: var(--cpj-acc); }
.cpj .cpj-btn-sm { padding: 0.4rem 0.75rem; font-size: 0.82rem; }
.cpj .cpj-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 8px; border: 1px solid var(--cpj-border); background: var(--cpj-elev); color: var(--cpj-text2); cursor: pointer; padding: 0; text-decoration: none; }
.cpj .cpj-icon-btn:hover { border-color: var(--cpj-acc); color: var(--cpj-acc); }
.cpj .cpj-icon-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.cpj .cpj-icon-btn svg { width: 16px; height: 16px; }
.cpj .cpj-icon-btn.cpj-on { border-color: var(--cpj-acc); background: var(--cpj-acc-soft); color: var(--cpj-acc); }

/* ---------- layout ---------- */
.cpj .cpj-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 1.1rem; margin-top: 1.1rem; align-items: start; }
.cpj .cpj-grid > * { min-width: 0; }
.cpj .cpj-grid.cpj-empty { grid-template-columns: minmax(0, 1fr); }
.cpj .cpj-grid.cpj-empty .cpj-main { display: none; }
.cpj .cpj-card { background: var(--cpj-elev); border: 1px solid var(--cpj-border); border-radius: var(--cpj-r); padding: 1rem; }
.cpj .cpj-card + .cpj-card { margin-top: 1rem; }
.cpj .cpj-card-head { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; margin-bottom: 0.75rem; flex-wrap: wrap; }
.cpj .cpj-card-head h2 { display: flex; align-items: center; gap: 0.45rem; font-size: 1rem; margin: 0; color: var(--cpj-text); }
.cpj .cpj-card-head h2 svg { color: var(--cpj-acc); }

/* ---------- settings ---------- */
.cpj .cpj-side { position: sticky; top: 1rem; }
.cpj .cpj-caption { display: flex; align-items: center; gap: 0.4rem; font-size: 0.78rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--cpj-muted); margin-bottom: 0.45rem; }
.cpj .cpj-caption svg { width: 14px; height: 14px; }
.cpj .cpj-presets { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.9rem; }
.cpj .cpj-preset { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.8rem; font-weight: 600; padding: 0.35rem 0.7rem; border-radius: 999px; border: 1px solid var(--cpj-border); background: var(--cpj-elev); color: var(--cpj-text2); cursor: pointer; }
.cpj .cpj-preset svg { width: 14px; height: 14px; }
.cpj .cpj-preset:hover { border-color: var(--cpj-acc); color: var(--cpj-acc-dark); }
.cpj .cpj-preset.cpj-on { border-color: var(--cpj-acc); background: var(--cpj-acc-soft); color: var(--cpj-acc-dark); }
[data-theme="dark"] .cpj .cpj-preset.cpj-on, [data-theme="dark"] .cpj .cpj-preset:hover { color: var(--cpj-acc); }
.cpj .cpj-adv { border: 1px solid var(--cpj-border); border-radius: var(--cpj-r); overflow: hidden; }
.cpj .cpj-adv-row + .cpj-adv-row { border-top: 1px solid var(--cpj-border); }
.cpj .cpj-adv-head { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; width: 100% !important; padding: 0.7rem 0.85rem; background: none; border: 0; cursor: pointer; text-align: left; color: var(--cpj-text); }
.cpj .cpj-adv-head:hover { background: var(--cpj-bg2); }
.cpj .cpj-adv-head:focus-visible { outline: 2px solid var(--cpj-acc); outline-offset: -2px; }
.cpj .cpj-adv-left, .cpj .cpj-adv-right { display: inline-flex; align-items: center; gap: 0.6rem; min-width: 0; }
.cpj .cpj-adv-right { flex-shrink: 0; gap: 0.4rem; }
.cpj .cpj-adv-left > svg { width: 16px; height: 16px; color: var(--cpj-acc); }
.cpj .cpj-adv-text { display: flex; flex-direction: column; min-width: 0; }
.cpj .cpj-adv-title { font-size: 0.88rem; font-weight: 600; }
.cpj .cpj-adv-hint { font-size: 0.75rem; color: var(--cpj-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cpj .cpj-adv-value { font-size: 0.74rem; font-weight: 700; color: var(--cpj-acc-dark); background: var(--cpj-acc-soft); border-radius: 999px; padding: 0.15rem 0.55rem; white-space: nowrap; max-width: 130px; overflow: hidden; text-overflow: ellipsis; }
[data-theme="dark"] .cpj .cpj-adv-value { color: var(--cpj-acc); }
.cpj .cpj-adv-chev { width: 16px; height: 16px; color: var(--cpj-muted); transition: transform 0.2s ease; }
.cpj .cpj-adv-row.cpj-open .cpj-adv-chev { transform: rotate(180deg); }
.cpj .cpj-adv-row.cpj-open .cpj-adv-head, .cpj .cpj-adv-row.cpj-open .cpj-adv-body { background: var(--cpj-bg2); }
.cpj .cpj-adv-body { padding: 0.2rem 0.85rem 0.9rem; display: flex; flex-direction: column; gap: 0.6rem; }
.cpj .cpj-seg { display: grid; grid-template-columns: repeat(var(--cpj-cols, 3), minmax(0, 1fr)); gap: 0.4rem; }
.cpj .cpj-seg > * { min-width: 0; }
.cpj .cpj-chip { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.1rem; padding: 0.45rem 0.3rem; border-radius: 9px; border: 1px solid var(--cpj-border); background: var(--cpj-elev); color: var(--cpj-text); cursor: pointer; font-size: 0.82rem; font-weight: 600; line-height: 1.2; text-align: center; }
.cpj .cpj-chip small { font-size: 0.68rem; font-weight: 500; color: var(--cpj-muted); }
.cpj .cpj-chip:hover { border-color: var(--cpj-acc); }
.cpj .cpj-chip.cpj-on { border-color: var(--cpj-acc); background: var(--cpj-acc-soft); color: var(--cpj-acc-dark); box-shadow: inset 0 0 0 1px var(--cpj-acc); }
[data-theme="dark"] .cpj .cpj-chip.cpj-on { color: var(--cpj-acc); }
.cpj .cpj-chip:disabled { opacity: 0.45; cursor: not-allowed; }
.cpj .cpj-range-head { display: flex; justify-content: space-between; align-items: baseline; font-size: 0.8rem; color: var(--cpj-muted); }
.cpj .cpj-range-head b { color: var(--cpj-acc-dark); font-size: 0.9rem; }
[data-theme="dark"] .cpj .cpj-range-head b { color: var(--cpj-acc); }
.cpj .cpj-range { width: 100%; accent-color: var(--cpj-acc); margin: 0.1rem 0; }
.cpj .cpj-range:disabled { opacity: 0.45; }
.cpj .cpj-range-ends { display: flex; justify-content: space-between; font-size: 0.72rem; color: var(--cpj-muted); }
.cpj .cpj-inline { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.cpj .cpj-num { display: inline-flex; align-items: center; border: 1px solid var(--input-border, var(--cpj-border)); border-radius: 9px; background: var(--input-bg, var(--cpj-elev)); overflow: hidden; }
.cpj .cpj-num input { width: 92px; border: 0 !important; background: transparent !important; color: var(--cpj-text); padding: 0.45rem 0.55rem !important; font-size: 0.9rem; margin: 0 !important; box-shadow: none !important; }
.cpj .cpj-num input:focus { outline: none; }
.cpj .cpj-num:focus-within { border-color: var(--cpj-acc); }
.cpj .cpj-unit { padding: 0 0.6rem; font-size: 0.8rem; color: var(--cpj-muted); border-left: 1px solid var(--cpj-border); align-self: stretch; display: inline-flex; align-items: center; }
.cpj .cpj-hint { font-size: 0.78rem; color: var(--cpj-muted); line-height: 1.45; margin: 0; }
.cpj .cpj-guard { display: flex; gap: 0.5rem; align-items: flex-start; font-size: 0.8rem; line-height: 1.45; padding: 0.55rem 0.65rem; border-radius: 9px; background: var(--cpj-acc-soft); color: var(--cpj-text); margin: 0.75rem 0 0; }
.cpj .cpj-guard svg { width: 15px; height: 15px; color: var(--cpj-acc); margin-top: 1px; }
.cpj .cpj-guard.cpj-warn { background: var(--cpj-amber-soft); }
.cpj .cpj-guard.cpj-warn svg { color: var(--cpj-amber); }
.cpj .cpj-apply { width: 100% !important; margin-top: 0.85rem; }

/* ---------- summary ---------- */
.cpj .cpj-sum { display: flex; align-items: center; justify-content: space-between; gap: 0.8rem; flex-wrap: wrap; }
.cpj .cpj-sum-stats { display: flex; align-items: center; gap: 0.75rem; min-width: 0; }
.cpj .cpj-sum-ring { width: 48px; height: 48px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 0.85rem; color: var(--cpj-acc-dark); background: var(--cpj-acc-soft); flex-shrink: 0; }
[data-theme="dark"] .cpj .cpj-sum-ring { color: var(--cpj-acc); }
.cpj .cpj-sum-title { font-weight: 700; font-size: 1rem; margin: 0; }
.cpj .cpj-sum-sub { font-size: 0.82rem; color: var(--cpj-muted); margin: 0.1rem 0 0; }
.cpj .cpj-sum-actions { display: flex; gap: 0.45rem; flex-wrap: wrap; }
.cpj .cpj-bar { height: 8px; border-radius: 99px; background: var(--cpj-bg2); overflow: hidden; margin-top: 0.75rem; }
.cpj .cpj-bar-fill { height: 100%; width: 0; background: var(--cpj-acc); border-radius: 99px; transition: width 0.2s ease; }
.cpj .cpj-bar-row { display: flex; justify-content: space-between; gap: 0.5rem; font-size: 0.8rem; color: var(--cpj-muted); margin-top: 0.35rem; }
.cpj .cpj-bar-row b { color: var(--cpj-text); }

/* ---------- compare ---------- */
.cpj .cpj-cmp-tools { display: inline-flex; gap: 0.35rem; }
.cpj .cpj-cmp-stage { position: relative; border-radius: 10px; overflow: hidden; background-color: var(--cpj-checker); background-image: linear-gradient(45deg, rgba(127,127,127,0.13) 25%, transparent 25%, transparent 75%, rgba(127,127,127,0.13) 75%), linear-gradient(45deg, rgba(127,127,127,0.13) 25%, transparent 25%, transparent 75%, rgba(127,127,127,0.13) 75%); background-size: 16px 16px; background-position: 0 0, 8px 8px; height: 360px; touch-action: pan-y; user-select: none; cursor: ew-resize; }
.cpj .cpj-cmp-stage.cpj-zoom { overflow: auto; cursor: grab; touch-action: auto; }
.cpj .cpj-cmp-inner { position: relative; width: 100%; height: 100%; }
.cpj .cpj-cmp-stage.cpj-zoom .cpj-cmp-inner { width: auto; height: auto; }
.cpj .cpj-cmp-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; display: block; pointer-events: none; }
.cpj .cpj-cmp-stage.cpj-zoom .cpj-cmp-img { image-rendering: pixelated; }
.cpj .cpj-cmp-after { clip-path: inset(0 0 0 var(--cpj-pos, 50%)); }
.cpj .cpj-cmp-line { position: absolute; top: 0; bottom: 0; left: var(--cpj-pos, 50%); width: 2px; margin-left: -1px; background: #fff; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25); pointer-events: none; }
.cpj .cpj-cmp-knob { position: absolute; top: 50%; left: 50%; width: 30px; height: 30px; margin: -15px 0 0 -15px; border-radius: 50%; background: #fff; color: #1e293b; display: flex; align-items: center; justify-content: center; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35); }
.cpj .cpj-cmp-knob svg { width: 16px; height: 16px; }
.cpj .cpj-cmp-tag { position: absolute; top: 8px; font-size: 0.72rem; font-weight: 700; padding: 0.2rem 0.5rem; border-radius: 6px; background: rgba(15, 23, 42, 0.72); color: #fff; pointer-events: none; z-index: 2; }
.cpj .cpj-cmp-tag-l { left: 8px; }
.cpj .cpj-cmp-tag-r { right: 8px; }
.cpj .cpj-cmp-wait { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 0.5rem; font-size: 0.85rem; color: var(--cpj-text2); background: rgba(127, 127, 127, 0.08); }
.cpj .cpj-cmp-range { width: 100%; accent-color: var(--cpj-acc); margin-top: 0.55rem; }
.cpj .cpj-cmp-cap { font-size: 0.8rem; color: var(--cpj-muted); margin: 0.35rem 0 0; }

/* ---------- file list ---------- */
.cpj .cpj-list { display: flex; flex-direction: column; gap: 0.5rem; }
.cpj .cpj-row { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; gap: 0.7rem; align-items: center; padding: 0.55rem; border: 1px solid var(--cpj-border); border-radius: 10px; background: var(--cpj-elev); cursor: pointer; }
.cpj .cpj-row:hover { border-color: var(--cpj-acc-mid); }
.cpj .cpj-row.cpj-sel { border-color: var(--cpj-acc); box-shadow: inset 0 0 0 1px var(--cpj-acc); }
.cpj .cpj-thumb { width: 48px; height: 48px; border-radius: 8px; overflow: hidden; background: var(--cpj-checker); display: flex; align-items: center; justify-content: center; color: var(--cpj-muted); }
.cpj .cpj-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cpj .cpj-row-main { min-width: 0; }
.cpj .cpj-row-name { font-weight: 600; font-size: 0.88rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cpj .cpj-row-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0.55rem; font-size: 0.78rem; color: var(--cpj-muted); margin-top: 0.15rem; }
.cpj .cpj-row-meta b { color: var(--cpj-text); font-weight: 700; }
.cpj .cpj-row-meta svg { width: 13px; height: 13px; }
.cpj .cpj-row-err { color: var(--cpj-red); }
.cpj .cpj-row-note { font-size: 0.75rem; color: var(--cpj-text2); margin-top: 0.15rem; }
.cpj .cpj-badge { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.75rem; font-weight: 800; padding: 0.12rem 0.5rem; border-radius: 999px; background: var(--cpj-acc-soft); color: var(--cpj-acc-dark); white-space: nowrap; }
[data-theme="dark"] .cpj .cpj-badge { color: var(--cpj-acc); }
.cpj .cpj-badge.cpj-flat { background: var(--cpj-bg2); color: var(--cpj-text2); }
.cpj .cpj-badge.cpj-up { background: var(--cpj-amber-soft); color: var(--cpj-amber); }
.cpj .cpj-row-actions { display: flex; align-items: center; gap: 0.35rem; }
.cpj .cpj-row-busy { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.78rem; color: var(--cpj-muted); }
.cpj .cpj-list-foot { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin-top: 0.75rem; font-size: 0.8rem; color: var(--cpj-muted); }

/* ConvertICO ring loader (same rings as the header logo) */
.cpj .cpj-loader { display: block; width: 28px; height: 28px; overflow: visible; flex-shrink: 0; --cico-outer: #e64e4e; --cico-mid: #339966; --cico-inner: #3399cc; --cico-outer-soft: rgba(230, 78, 78, 0.18); --cico-mid-soft: rgba(51, 153, 102, 0.18); }
[data-theme="dark"] .cpj .cpj-loader { --cico-outer-soft: rgba(242, 83, 78, 0.22); --cico-mid-soft: rgba(49, 174, 119, 0.22); }
.cpj .cpj-loader circle { fill: none; stroke-width: 72; transform-box: fill-box; transform-origin: center; }
.cpj .cpj-loader .bp { stroke: var(--cico-outer-soft); }
.cpj .cpj-loader .gp { stroke: var(--cico-mid-soft); }
.cpj .cpj-loader .b { stroke: var(--cico-outer); stroke-linecap: round; stroke-dasharray: 35.3 100; animation: cpjSpinL 1.3s linear infinite; }
.cpj .cpj-loader .g { stroke: var(--cico-mid); stroke-linecap: round; stroke-dasharray: 75.8 100; animation: cpjSpinR 2.1s linear infinite; }
.cpj .cpj-loader .r { stroke: var(--cico-inner); animation: cpjBreathe 1.3s ease-in-out infinite; }
.cpj .cpj-loader-sm { width: 18px; height: 18px; }
@keyframes cpjSpinL { from { transform: rotate(117deg); } to { transform: rotate(-243deg); } }
@keyframes cpjSpinR { from { transform: rotate(36deg); } to { transform: rotate(396deg); } }
@keyframes cpjBreathe { 50% { transform: scale(0.9); } }
@media (prefers-reduced-motion: reduce) {
    .cpj .cpj-loader .b { animation-duration: 4s; }
    .cpj .cpj-loader .g { animation-duration: 6s; }
    .cpj .cpj-loader .r { animation: none; }
}

/* ---------- info sections ---------- */
.cpj .cpj-info { margin-top: 2rem; display: flex; flex-direction: column; gap: 1rem; }
.cpj .cpj-info-card { background: var(--cpj-elev); border: 1px solid var(--cpj-border); border-radius: var(--cpj-r); padding: 1.25rem 1.3rem; }
.cpj .cpj-info-card h2 { display: flex; align-items: center; gap: 0.5rem; font-size: 1.2rem; margin: 0 0 0.75rem; color: var(--cpj-text); }
.cpj .cpj-info-card h2 svg { color: var(--cpj-acc); width: 20px; height: 20px; }
.cpj .cpj-info-card p { margin: 0 0 0.7rem; line-height: 1.65; color: var(--cpj-text2); }
.cpj .cpj-info-card p:last-child { margin-bottom: 0; }
.cpj .cpj-info-card ul { margin: 0 0 0.7rem; padding-left: 1.2rem; color: var(--cpj-text2); line-height: 1.65; }
.cpj .cpj-three { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.8rem; margin: 0.4rem 0 0.8rem; }
.cpj .cpj-three > div { min-width: 0; background: var(--cpj-bg2); border-radius: 10px; padding: 0.85rem; }
.cpj .cpj-three h3 { display: flex; align-items: center; gap: 0.4rem; font-size: 0.95rem; margin: 0 0 0.4rem; color: var(--cpj-text); }
.cpj .cpj-three h3 svg { width: 16px; height: 16px; color: var(--cpj-acc); }
.cpj .cpj-three p { font-size: 0.88rem; margin: 0; }
.cpj .cpj-table-wrap { overflow-x: auto; margin: 0 0 0.8rem; }
.cpj .cpj-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }
.cpj .cpj-table th, .cpj .cpj-table td { text-align: left; padding: 0.55rem 0.65rem; border-bottom: 1px solid var(--cpj-border); color: var(--cpj-text2); }
.cpj .cpj-table th { color: var(--cpj-text); font-weight: 700; background: var(--cpj-bg2); }
.cpj .steps-list { --tool-accent: #339966; }

/* ---------- responsive ---------- */
@media (max-width: 920px) {
    .cpj .cpj-grid { grid-template-columns: minmax(0, 1fr); }
    .cpj .cpj-side { position: static; order: -1; }
    .cpj .cpj-three { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 560px) {
    .cpj .cpj-cmp-stage { height: 260px; }
    .cpj .cpj-row { grid-template-columns: 40px minmax(0, 1fr); }
    .cpj .cpj-thumb { width: 40px; height: 40px; }
    .cpj .cpj-row-actions { grid-column: 1 / -1; justify-content: flex-end; }
    .cpj .cpj-sum-actions { width: 100%; }
    .cpj .cpj-sum-actions .cpj-btn { flex: 1; }
    .cpj .cpj-adv-value { max-width: 96px; }
    .cpj .cpj-title-icon { width: 44px; height: 44px; }
}

/* ---------- remember my settings (2026-10-12) ---------- */
.cpj .cpj-mem { display: flex; align-items: center; gap: 0.65rem; margin: 0.75rem 0 0; padding: 0.6rem 0.7rem; border: 1px solid var(--cpj-border); border-radius: 10px; background: var(--cpj-elev); }
.cpj .cpj-mem-sw { position: relative; flex: 0 0 auto; width: 38px; height: 22px; padding: 0; border: 0; border-radius: 999px; background: var(--cpj-border); cursor: pointer; transition: background 0.15s; }
.cpj .cpj-mem-sw[aria-checked="true"] { background: var(--cpj-acc); }
.cpj .cpj-mem-knob { position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,0.25); transition: transform 0.15s; }
.cpj .cpj-mem-sw[aria-checked="true"] .cpj-mem-knob { transform: translateX(16px); }
.cpj .cpj-mem-sw:focus-visible, .cpj .cpj-mem-reset:focus-visible { outline: 2px solid var(--cpj-acc); outline-offset: 2px; }
.cpj .cpj-mem-text { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.cpj .cpj-mem-title { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.82rem; font-weight: 700; color: var(--cpj-text); }
.cpj .cpj-mem-title svg { width: 14px; height: 14px; color: var(--cpj-acc); }
.cpj .cpj-mem-hint { font-size: 0.74rem; line-height: 1.35; color: var(--cpj-muted); }
.cpj .cpj-mem-reset { display: inline-flex; align-items: center; gap: 0.3rem; flex: 0 0 auto; font-size: 0.78rem; font-weight: 600; padding: 0.3rem 0.6rem; border-radius: 999px; border: 1px solid var(--cpj-border); background: transparent; color: var(--cpj-text2); cursor: pointer; }
.cpj .cpj-mem-reset svg { width: 13px; height: 13px; }
.cpj .cpj-mem-reset:hover { border-color: var(--cpj-acc); color: var(--cpj-acc-dark); }
[data-theme="dark"] .cpj .cpj-mem-reset:hover { color: var(--cpj-acc); }
[data-theme="dark"] .cpj .cpj-mem-sw:not([aria-checked="true"]) { background: rgba(255,255,255,0.18); }
