/* cr3check web — ported from the Flask UI's base.html, extended for the
   hosted app (landing, upload, billing). Same visual language. */
:root { --bg:#f7f7f5; --card:#fff; --ink:#222; --muted:#777; --line:#e4e4e0; --ghostbg:#ececea;
        --green:#1e7e34; --blue:#0b5ed7; --amber:#9a6a00; --purple:#6f42c1; --red:#b02a37; }
[data-theme="dark"] { --bg:#131315; --card:#1d1d20; --ink:#e9e9e6; --muted:#a0a09b;
        --line:#333336; --ghostbg:#2b2b2f;
        --green:#3fb950; --blue:#6ea8fe; --amber:#d29922; --purple:#bc8cff; --red:#f4707a; }
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--ink);
       font:15px/1.5 -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; }
nav { background:#1c1c1e; color:#eee; padding:10px 18px; display:flex; gap:18px; align-items:center; }
nav a { color:#cfcfcf; text-decoration:none; font-weight:600; }
nav a:hover { color:#fff; }
nav .brand { color:#fff; margin-right:8px; }
nav .spacer { flex:1; }
nav .credits { color:#ffd97a; font-weight:700; font-size:14px; }
main { max-width:1100px; margin:24px auto; padding:0 18px 60px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:10px; padding:18px; margin-bottom:16px; }
h1 { font-size:22px; margin:0 0 12px; } h2 { font-size:17px; margin:0 0 10px; }
.muted { color:var(--muted); } .small { font-size:13px; }
label { display:block; font-weight:600; margin:12px 0 4px; }
input[type=text], input[type=number], input[type=email] { width:100%; padding:8px 10px; border:1px solid var(--line);
    border-radius:6px; font-size:14px; background:var(--card); color:var(--ink); }
.row { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.check { display:flex; gap:8px; align-items:flex-start; margin:10px 0; font-weight:400; }
.check input { margin-top:4px; }
button, .btn { background:#1c1c1e; color:#fff; border:0; border-radius:8px; padding:10px 18px;
    font-size:15px; cursor:pointer; text-decoration:none; display:inline-block; }
button:hover, .btn:hover { background:#333; }
button.danger { background:var(--red); }
button.ghost, .btn.ghost { background:var(--ghostbg); color:var(--ink); }
button:disabled { opacity:.45; cursor:default; }
.themetoggle { margin-left:auto; background:transparent; border:1px solid #555;
    padding:5px 12px; font-size:14px; border-radius:20px; }
.badge { display:inline-block; padding:3px 10px; border-radius:20px; font-size:12.5px; font-weight:700; color:#fff; }
.b-fine { background:var(--green); } .b-improved { background:var(--blue); }
.b-manual { background:var(--amber); } .b-noise { background:var(--purple); }
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px; }
.pair img.thumb { width:100%; height:170px; object-fit:cover; border-radius:6px; background:var(--line); display:block; }
.pair .meta { padding:10px 2px 0; }
.pair .name { font-weight:700; font-size:14px; word-break:break-all; }
.pair .reasons { font-size:13px; color:var(--muted); margin:6px 0; }
.pair .actions { display:flex; gap:8px; margin-top:8px; flex-wrap:wrap; }
.pair .actions button, .pair .actions .btn { padding:7px 12px; font-size:13.5px; }
.filters { display:flex; gap:8px; flex-wrap:wrap; margin:14px 0; }
.filters a { padding:6px 14px; border:1px solid var(--line); border-radius:20px; text-decoration:none;
    color:var(--ink); background:var(--card); font-size:13.5px; cursor:pointer; }
.filters a.active { background:var(--ink); color:var(--bg); border-color:var(--ink); }
.stickybar { position:sticky; top:0; z-index:100; background:var(--bg); padding:12px 0 4px; }
@supports (backdrop-filter:blur(8px)) {
  .stickybar { background:color-mix(in srgb, var(--bg) 86%, transparent); backdrop-filter:blur(8px); }
}
.pager { display:flex; gap:12px; align-items:center; margin:18px 0; }
.bar { height:14px; background:var(--line); border-radius:8px; overflow:hidden; }
.bar > div { height:100%; background:var(--blue); width:0%; transition:width .4s; }
pre.log { background:#1c1c1e; color:#d8d8d8; padding:14px; border-radius:8px; max-height:380px;
    overflow:auto; font-size:12.5px; white-space:pre-wrap; }
table.counts { border-collapse:collapse; margin:12px 0; }
table.counts td { padding:5px 14px 5px 0; }
.cmp { position:relative; max-width:1000px; margin:0 auto; user-select:none; }
.cmp img { display:block; width:100%; }
.cmp .topwrap { position:absolute; inset:0; overflow:hidden; width:50%; border-right:3px solid #fff; }
.cmp.stacked .topwrap { position:static; width:100% !important; border-right:none; margin-top:10px; }
.cmp.stacked .tag { display:none; }
.cmp input[type=range] { width:100%; margin-top:12px; }
.cmp .tag { position:absolute; top:10px; padding:4px 12px; border-radius:6px; font-size:13px; font-weight:700;
    background:rgba(0,0,0,.65); color:#fff; }
.cmp .tag.left { left:10px; } .cmp .tag.right { right:10px; }
.zoombox { overflow:hidden; }
.cmp.sbs .zoombox, .cmp.stacked .zoombox { overflow:auto; max-height:72vh; }
.zoombox img { cursor:zoom-in; }
.zoombox img.zoomed { cursor:zoom-out; }
.cmp.sbs { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.cmp.sbs .sbshead { display:grid; grid-template-columns:1fr 1fr; grid-column:1 / -1;
    font-size:13px; font-weight:700; }
.cmp.sbs #topwrap, .cmp.sbs .topwrap { order:2; position:static; width:100% !important; border-right:none; }
.cmp.sbs #boxSecond, .cmp.sbs .boxSecond { order:3; }
.cmp.sbs .tag { display:none; }
.sbshead { display:none; }
.modebtn.active { background:var(--ink); color:var(--bg); }
.err { background:#fdecea; border:1px solid #f5c2c7; color:#842029; padding:10px 14px; border-radius:8px; margin:12px 0; }
[data-theme="dark"] .err { background:#3a1f24; border-color:#7a2e35; color:#f2b8c6; }
.okbox { background:#e6f4ea; border:1px solid #b7dfc0; color:#14532d; padding:10px 14px; border-radius:8px; margin:12px 0; }
[data-theme="dark"] .okbox { background:#1d3524; border-color:#2f6b3d; color:#b9e6c3; }
.pair.selected { outline:2px solid var(--blue); outline-offset:2px; }
.kbd { font:12px/1 monospace; background:var(--ghostbg); border:1px solid var(--line);
    border-radius:4px; padding:2px 6px; }
/* landing + app additions */
.hero { text-align:center; padding:48px 18px 36px; }
.hero h1 { font-size:34px; }
.hero p.lede { font-size:17px; color:var(--muted); max-width:640px; margin:0 auto 20px; }
.steps { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px; margin:24px 0; }
.stepnum { font-size:26px; font-weight:800; color:var(--blue); }
.plans { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px; margin:20px 0; }
.plan { position:relative; }
.plan.popular { border:2px solid var(--blue); }
.plan .pname { font-size:18px; font-weight:800; }
.plan .pprice { font-size:28px; font-weight:800; margin:6px 0; }
.plan .ppairs { color:var(--muted); }
.tabs { display:flex; gap:8px; margin:0 0 16px; flex-wrap:wrap; }
.tabs a { padding:8px 16px; border:1px solid var(--line); border-radius:20px; text-decoration:none;
    color:var(--ink); background:var(--card); font-weight:600; cursor:pointer; }
.tabs a.active { background:var(--ink); color:var(--bg); border-color:var(--ink); }
table.jobs { width:100%; border-collapse:collapse; }
table.jobs td, table.jobs th { padding:10px 8px; border-bottom:1px solid var(--line); text-align:left; font-size:14px; }
table.jobs tr:hover td { background:var(--ghostbg); cursor:pointer; }
.upl-row { display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--line); font-size:13.5px; }
.upl-row .nm { flex:1; word-break:break-all; }
.upl-row .st { min-width:110px; text-align:right; color:var(--muted); }
.ubar { height:6px; background:var(--line); border-radius:4px; overflow:hidden; min-width:120px; flex:0 0 140px; }
.ubar > div { height:100%; background:var(--blue); width:0%; }
.modal-veil { position:fixed; inset:0; background:rgba(0,0,0,.72); z-index:200; display:flex;
    align-items:flex-start; justify-content:center; overflow:auto; padding:24px 12px; }
.modal { background:var(--card); border-radius:12px; max-width:1080px; width:100%; padding:20px; }
.modal .x { float:right; }
input[type=range].wipeslider { width:100%; margin-top:12px; }
.keybox { font-family:monospace; background:var(--ghostbg); border:1px dashed var(--line);
    padding:12px; border-radius:8px; word-break:break-all; margin:10px 0; }
footer { text-align:center; color:var(--muted); font-size:13px; padding:30px 0; }
footer a { color:var(--muted); }
