/* CubTools v2 — polished, mobile-first, static. No external requests. */
:root{
  --primary:#2563eb; --primary-dark:#1d4ed8; --primary-deep:#1e3a8a;
  --primary-light:#eff6ff; --accent:#f59e0b;
  --bg:#f4f6fb; --card:#ffffff; --text:#0f172a; --muted:#64748b;
  --border:#e5eaf3; --green:#16a34a; --green-bg:#dcfce7;
  --pdf:#ef4444; --pdf-bg:#fee2e2; --img:#0ea5e9; --img-bg:#e0f2fe; --txt:#8b5cf6; --txt-bg:#ede9fe;
  --radius:14px; --shadow:0 1px 3px rgba(15,23,42,.07),0 4px 14px rgba(15,23,42,.05);
  --shadow-lg:0 8px 28px rgba(37,99,235,.16);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,sans-serif;
  background:var(--bg);color:var(--text);line-height:1.65;min-height:100vh;display:flex;flex-direction:column;
  -webkit-font-smoothing:antialiased}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%}
::selection{background:#bfdbfe}

/* ---------- header ---------- */
.site-header{background:rgba(255,255,255,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}
.site-header .inner{max-width:1020px;margin:0 auto;padding:11px 18px;display:flex;align-items:center;justify-content:space-between}
.logo{font-size:21px;font-weight:800;color:var(--text);letter-spacing:-.4px;display:flex;align-items:center}
.logo .x{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;
  background:linear-gradient(135deg,#fbbf24,#f59e0b);font-size:20px;margin-right:9px;
  box-shadow:0 2px 8px rgba(245,158,11,.4)}
.logo:hover{text-decoration:none}
.logo:hover .x{transform:rotate(-8deg)}
.logo .x{transition:transform .2s}
.site-nav a{margin-left:20px;font-size:14px;color:var(--muted);font-weight:600;padding:8px 14px;border-radius:20px;transition:all .15s}
.site-nav a:hover{color:var(--primary);background:var(--primary-light);text-decoration:none}

/* ---------- layout ---------- */
.wrap{max-width:780px;margin:0 auto;padding:26px 18px 52px;width:100%;flex:1}
.wrap-wide{max-width:1020px}

/* ---------- breadcrumb ---------- */
.crumbs{font-size:13px;color:var(--muted);margin-bottom:18px}
.crumbs a{color:var(--muted)}
.crumbs a:hover{color:var(--primary)}

/* ---------- headings ---------- */
h1{font-size:27px;line-height:1.32;margin-bottom:10px;letter-spacing:-.4px;font-weight:800}
.lede{color:var(--muted);font-size:15px;margin-bottom:18px}
.lede .zh{display:block;margin-top:6px;font-size:14px}
.badges{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:26px}
.badge{background:var(--green-bg);color:#15803d;font-size:12px;font-weight:700;padding:6px 13px;border-radius:20px;
  border:1px solid #bbf7d0}

/* ---------- tool panel / dropzone ---------- */
.tool{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:28px 24px;margin-bottom:30px}
.dropzone{border:2px dashed #b9c6dd;border-radius:var(--radius);background:linear-gradient(180deg,#fbfdff,#f4f7fe);
  padding:48px 20px;text-align:center;cursor:pointer;transition:all .2s;position:relative;overflow:hidden}
.dropzone:hover,.dropzone.over{border-color:var(--primary);background:linear-gradient(180deg,#eff6ff,#e3efff);
  box-shadow:inset 0 0 0 1px var(--primary)}
.dropzone .icon{font-size:46px;margin-bottom:10px;filter:drop-shadow(0 3px 6px rgba(15,23,42,.12))}
.dropzone p{color:var(--muted);font-size:14px;margin-top:6px}
.dropzone p strong{color:var(--text)}
input[type=file]{display:none}

/* ---------- form controls ---------- */
.field{margin:15px 0}
.field label{display:block;font-size:13px;font-weight:700;color:#475569;margin-bottom:7px;letter-spacing:.1px}
.field input[type=text],.field input[type=number],.field select{
  width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:10px;font-size:15px;
  background:#fff;color:var(--text);transition:border-color .15s,box-shadow .15s}
.field input[type=text]:hover,.field input[type=number]:hover,.field select:hover{border-color:#b9c6dd}
.field input[type=range]{width:100%;accent-color:var(--primary);height:28px;cursor:pointer}
.field .hint{font-size:12px;color:var(--muted);margin-top:5px}
.checkrow{display:flex;align-items:center;gap:10px;margin:10px 0;font-size:14px;cursor:pointer;
  padding:9px 12px;border-radius:9px;transition:background .15s}
.checkrow:hover{background:#f1f5f9}
.checkrow input{width:18px;height:18px;accent-color:var(--primary);cursor:pointer;flex-shrink:0}
textarea.ta{width:100%;min-height:160px;padding:13px 14px;border:1.5px solid var(--border);border-radius:10px;
  font-size:14px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical;
  background:#fff;color:var(--text);transition:border-color .15s,box-shadow .15s;line-height:1.6}
textarea.ta:focus,input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.14)}

/* ---------- buttons ---------- */
.btn{display:inline-block;border:none;border-radius:11px;padding:14px 24px;font-size:15px;font-weight:700;
  cursor:pointer;background:linear-gradient(180deg,#3b82f6,#2563eb);color:#fff;
  box-shadow:0 2px 8px rgba(37,99,235,.35),inset 0 1px 0 rgba(255,255,255,.25);
  transition:transform .12s,box-shadow .15s,filter .15s}
.btn:hover{filter:brightness(1.06);box-shadow:0 4px 14px rgba(37,99,235,.4)}
.btn:active{transform:translateY(1px)}
.btn:disabled{background:#93c5fd;cursor:wait;box-shadow:none;transform:none}
.btn-block{width:100%}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:15px}
.btn-ghost{background:#fff;color:var(--text);border:1.5px solid var(--border);box-shadow:0 1px 3px rgba(15,23,42,.06)}
.btn-ghost:hover{background:#f1f5f9;filter:none;box-shadow:0 2px 8px rgba(15,23,42,.08)}
.btn-green{background:linear-gradient(180deg,#22c55e,#16a34a);box-shadow:0 2px 8px rgba(22,163,74,.35),inset 0 1px 0 rgba(255,255,255,.25)}
.btn-green:hover{box-shadow:0 4px 14px rgba(22,163,74,.42)}

/* ---------- file list ---------- */
.filelist{margin-top:15px}
.fitem{display:flex;align-items:center;background:#f8fafc;border:1px solid var(--border);
  border-radius:10px;padding:10px 13px;margin-bottom:8px;font-size:14px;transition:border-color .15s}
.fitem:hover{border-color:#b9c6dd}
.fitem .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.fitem .meta{color:var(--muted);font-size:12px;margin:0 8px;white-space:nowrap;background:#eef2f7;padding:3px 9px;border-radius:12px}
.fitem button{border:none;background:#e2e8f0;border-radius:7px;padding:6px 10px;margin-left:5px;cursor:pointer;
  font-size:12px;font-weight:700;transition:background .15s}
.fitem button:hover{background:#cbd5e1}
.fitem button.del{background:#fee2e2;color:#b91c1c}
.fitem button.del:hover{background:#fecaca}

/* ---------- status / result ---------- */
.auto-hint{color:var(--muted);font-size:13px;margin:10px 0 0}
.status{text-align:center;color:var(--muted);font-size:13px;margin-top:13px;min-height:22px}
.status.ok{color:var(--green);font-weight:700}
.status.err{color:#b91c1c;font-weight:700}
.result{display:none;margin-top:17px;background:linear-gradient(180deg,#f0fdf4,#e8f9ee);
  border:1px solid #bbf7d0;border-radius:12px;padding:18px}
.result.show{display:block;animation:pop .25s ease}
@keyframes pop{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.result .row{display:flex;justify-content:space-between;font-size:14px;padding:4px 0}
.result .row b{color:var(--text)}
.preview{max-width:100%;max-height:260px;border-radius:10px;border:1px solid var(--border);margin:10px 0;display:block}

/* ---------- stats grid ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:15px}
.stat{background:linear-gradient(180deg,#f8fafc,#f1f5f9);border:1px solid var(--border);border-radius:12px;
  padding:14px 10px;text-align:center}
.stat .v{font-size:24px;font-weight:800;color:var(--primary);font-variant-numeric:tabular-nums}
.stat .k{font-size:12px;color:var(--muted);margin-top:3px}

/* ---------- seo content ---------- */
.seo{margin-top:40px}
.seo h2{font-size:20px;margin:28px 0 11px;letter-spacing:-.2px}
.seo h3{font-size:15px;margin:17px 0 7px}
.seo p,.seo li{font-size:14px;color:#334155;margin-bottom:9px}
.seo ol,.seo ul{padding-left:20px}
.seo .zh{color:var(--muted)}

/* ---------- related ---------- */
.related{margin-top:34px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);
  padding:22px;box-shadow:var(--shadow)}
.related h2{font-size:16px;margin-bottom:13px}
.related ul{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:9px}
.related a{display:block;padding:11px 13px;background:#f8fafc;border:1.5px solid var(--border);
  border-radius:10px;font-size:14px;font-weight:600;transition:all .15s}
.related a:hover{border-color:var(--primary);background:var(--primary-light);text-decoration:none;transform:translateY(-1px)}

/* ---------- homepage hero + cards ---------- */
.hero{position:relative;text-align:center;padding:64px 20px 44px;margin:0 -18px 8px;overflow:hidden;
  background:linear-gradient(135deg,#1e3a8a 0%,#2563eb 55%,#4f46e5 100%);border-radius:0 0 26px 26px}
.hero::before,.hero::after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.07)}
.hero::before{width:340px;height:340px;top:-140px;right:-90px}
.hero::after{width:220px;height:220px;bottom:-110px;left:-60px}
.hero .bear{font-size:58px;display:block;margin-bottom:12px;filter:drop-shadow(0 6px 14px rgba(0,0,0,.25));
  animation:bob 3.2s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
.hero h1{font-size:33px;color:#fff;font-weight:800;letter-spacing:-.5px;margin-bottom:12px;position:relative}
.hero p{color:rgba(255,255,255,.88);font-size:15px;max-width:620px;margin:0 auto;position:relative}
.hero p .zh{font-size:13.5px;color:rgba(255,255,255,.72)}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:15px;margin-top:26px}
.card{background:var(--card);border:1.5px solid var(--border);border-radius:16px;padding:24px 20px;
  box-shadow:var(--shadow);transition:transform .16s,box-shadow .18s,border-color .16s;display:block;color:var(--text);
  position:relative;overflow:hidden}
.card::after{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--cat,#2563eb);
  opacity:0;transition:opacity .16s}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:#c7d7f8;text-decoration:none}
.card:hover::after{opacity:1}
.card .ic{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  font-size:29px;margin-bottom:14px;background:var(--cat-bg,#eff6ff);transition:transform .16s}
.card:hover .ic{transform:scale(1.1) rotate(-6deg)}
.card h3{font-size:16.5px;margin-bottom:7px;letter-spacing:-.2px}
.card p{font-size:13px;color:var(--muted);line-height:1.55}
.card .tag{display:inline-block;margin-top:13px;font-size:11px;font-weight:800;letter-spacing:.4px;
  text-transform:uppercase;color:var(--cat,#2563eb);background:var(--cat-bg,#eff6ff);padding:4px 12px;border-radius:12px}
.card[data-cat=pdf]{--cat:var(--pdf);--cat-bg:var(--pdf-bg)}
.card[data-cat=img]{--cat:var(--img);--cat-bg:var(--img-bg)}
.card[data-cat=txt]{--cat:var(--txt);--cat-bg:var(--txt-bg)}

/* feature strip */
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:13px;margin-top:30px}
.feature{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:20px;
  box-shadow:var(--shadow);display:flex;gap:14px;align-items:flex-start}
.feature .fi{font-size:26px;flex-shrink:0}
.feature h3{font-size:15px;margin-bottom:4px}
.feature p{font-size:13px;color:var(--muted)}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--border);background:linear-gradient(180deg,#0f1e3d,#0b1530);
  margin-top:auto;color:#94a3b8}
.site-footer .inner{max-width:1020px;margin:0 auto;padding:30px 18px 26px;font-size:13px;text-align:center}
.site-footer .flogo{font-size:17px;font-weight:800;color:#fff;margin-bottom:8px}
.site-footer .flinks{margin:12px 0;display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.site-footer .flinks a{color:#94a3b8;font-size:13px;padding:5px 10px;border-radius:8px;transition:all .15s}
.site-footer .flinks a:hover{color:#fff;background:rgba(255,255,255,.08);text-decoration:none}
.site-footer .inner p{margin:5px 0}

@media (max-width:600px){
  h1{font-size:23px}
  .hero{padding:48px 16px 36px;border-radius:0 0 20px 20px}
  .hero h1{font-size:27px}
  .hero .bear{font-size:48px}
  .tool{padding:20px 16px}
  .btn-row .btn{flex:1}
  .cards{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:11px}
  .card{padding:18px 15px}
  .card .ic{width:46px;height:46px;font-size:24px}
  }
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* ---- multi-file list (TinyPNG-style file cards) ---- */
.flist{margin-top:14px}
.flist-head{display:flex;align-items:center;gap:10px;margin:12px 0 10px}
.fcount{flex:1;font-weight:700;font-size:14px;color:var(--text)}
.btn-sm{padding:9px 16px;font-size:13px;border-radius:9px}
.fcard{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--border);
  border-radius:14px;padding:10px 12px;margin-bottom:10px;box-shadow:0 1px 3px rgba(15,23,42,.05);
  transition:box-shadow .15s,border-color .15s}
.fcard:hover{box-shadow:0 4px 14px rgba(15,23,42,.10);border-color:#b9c6dd}
.fthumb{width:64px;height:64px;object-fit:cover;border-radius:9px;flex:none;background:#eef2f7}
.fthumb-pdf{display:flex;align-items:center;justify-content:center;font-size:32px}
.fmeta{flex:1;min-width:0}
.fname{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fsub{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fstatus{font-size:12px;color:var(--muted);margin-top:3px}
.fstatus.ok{color:var(--green);font-weight:700}
.fstatus.err{color:#b91c1c;font-weight:700}
.fx{flex:none;border:none;background:transparent;font-size:22px;line-height:1;color:#94a3b8;cursor:pointer;padding:6px;border-radius:8px}
.fx:hover{color:#b91c1c;background:#fee2e2}
.fdown{flex:none;white-space:nowrap}
.spin{display:inline-block;width:13px;height:13px;border:2px solid #b9c6dd;border-top-color:var(--primary);
  border-radius:50%;animation:rot .7s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes rot{to{transform:rotate(360deg)}}
.drop-limit{text-align:center;font-size:12px;color:var(--muted);margin:8px 0 0}
/* pdf-merge row -> card polish */
.fitem{background:#fff;border-radius:12px;padding:10px 12px;margin-bottom:8px;box-shadow:0 1px 3px rgba(15,23,42,.05)}
.fitem:hover{box-shadow:0 4px 12px rgba(15,23,42,.10);border-color:#b9c6dd}
.fitem .pdfic{font-size:26px;margin-right:10px;flex:none}
@media (max-width:600px){
  .fcard{gap:8px;padding:8px 10px}
  .fthumb{width:52px;height:52px}
  .flist-head{flex-wrap:wrap}
}
