:root{
  --ink:#221F1C; --ink-2:#4A443D; --gold:#A68554; --gold-deep:#8a6c3f;
  --cream:#F6F1E8; --paper:#FBF8F3; --card:#fff; --line:rgba(34,31,28,.12);
  --line-2:rgba(34,31,28,.07);
  --red:#B23A2E; --red-bg:#fbeae8; --amber:#9A6B16; --amber-bg:#fbf2df;
  --green:#3E6B47; --green-bg:#e7f0e8; --grey:#8a8073;
  --shadow:0 1px 2px rgba(34,31,28,.04),0 8px 30px rgba(34,31,28,.06);
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
  --mono:"SF Mono",ui-monospace,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;margin:0;line-height:1.2}
a{color:var(--gold-deep);text-decoration:none}
code,.mono{font-family:var(--mono)}
button{font-family:inherit;cursor:pointer}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;background:var(--ink);color:#fff;border:none;
  border-radius:9px;padding:10px 16px;font-size:13.5px;font-weight:600;transition:.15s}
.btn:hover{opacity:.92}
.btn.gold{background:var(--gold)}
.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn.ghost:hover{background:var(--cream)}
.btn.sm{padding:6px 11px;font-size:12px;border-radius:8px}
.btn.danger{background:#fff;color:var(--red);border:1px solid var(--red-bg)}
.btn.danger:hover{background:var(--red-bg)}
.btn[disabled]{opacity:.5;cursor:not-allowed}

/* ---------- login / setup ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(800px 360px at 50% -10%,rgba(166,133,84,.16),transparent),var(--paper)}
.login-card{width:350px;background:var(--card);border:1px solid var(--line);border-radius:18px;
  padding:34px 32px;text-align:center;box-shadow:var(--shadow)}
.login-card .lg{font-family:var(--serif);font-size:26px;letter-spacing:2px}
.login-card .lg b{color:var(--gold-deep)}
.login-card .tag{letter-spacing:2.6px;text-transform:uppercase;font-size:9.5px;color:var(--ink-2);margin-top:4px}
.field{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-top:14px;
  font-size:14px;background:#fdfbf7;color:var(--ink)}
.field:focus{outline:none;border-color:var(--gold)}
.login-card .btn{width:100%;justify-content:center;margin-top:14px}
.hint{font-size:11.5px;color:var(--ink-2);margin-top:12px}
.error{background:var(--red-bg);color:var(--red);border-radius:9px;padding:9px 12px;font-size:12.5px;margin-top:14px}

/* ---------- app shell ---------- */
.shell{display:grid;grid-template-columns:212px 1fr;min-height:100vh}
.side{background:#1c1a17;color:#cfc7ba;padding:20px 14px;position:sticky;top:0;height:100vh;overflow:auto}
.side .lg{font-family:var(--serif);color:#fff;font-size:19px;letter-spacing:1.4px;padding:4px 8px 18px}
.side .lg b{color:var(--gold)}
.side .grp{font-size:9.5px;letter-spacing:2px;text-transform:uppercase;color:#8a8073;margin:18px 0 5px 10px}
.side a{display:flex;gap:9px;align-items:center;color:#cfc7ba;font-size:13.3px;padding:9px 10px;border-radius:8px;transition:.13s}
.side a:hover{background:#262320;color:#fff}
.side a.on{background:#2c2823;color:#fff}
.side a.disabled{opacity:.4;pointer-events:none}
.side .foot{margin-top:24px;border-top:1px solid #2c2823;padding-top:12px}
.side form{margin:0}
.side .logout{width:100%;background:none;border:none;color:#8a8073;text-align:left;font-size:12.5px;padding:8px 10px;border-radius:8px}
.side .logout:hover{background:#262320;color:#cfc7ba}

.main{padding:0;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:20px 30px;border-bottom:1px solid var(--line-2);background:linear-gradient(180deg,#fff,#fdfbf7)}
.topbar .eyebrow{font-size:10.5px;letter-spacing:2.4px;text-transform:uppercase;color:var(--gold-deep);font-weight:700}
.topbar h1{font-size:23px;margin-top:3px}
.content{padding:26px 30px;max-width:1000px;min-width:0}

/* ---------- panel bits ---------- */
.counter{font-family:var(--serif);font-size:30px;color:var(--gold-deep);line-height:1}
.counter small{font-family:var(--sans);font-size:12px;color:var(--ink-2)}
.muted{color:var(--ink-2)}
.row{display:flex;align-items:center;gap:12px}
.between{justify-content:space-between}
.wrap-actions{display:flex;gap:8px;flex-wrap:wrap}

/* dropzone */
.dropzone{border:2px dashed var(--gold);border-radius:14px;background:#fffdf8;padding:26px;text-align:center;
  margin-top:14px;transition:.15s;cursor:pointer}
.dropzone:hover,.dropzone.drag{background:#fdf6e9}
.dropzone .big{font-family:var(--serif);font-size:17px}
.dropzone .sub{font-size:12.5px;color:var(--ink-2);margin-top:4px}

/* project rows */
.projects{margin-top:14px;display:flex;flex-direction:column;gap:9px}
.pj{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:12px 15px}
.pj .hd{width:10px;height:10px;border-radius:50%;flex:0 0 auto;background:var(--grey)}
.pj.s-healthy .hd{background:var(--green)} .pj.s-reachable .hd{background:var(--green)}
.pj.s-quota .hd{background:var(--amber)} .pj.s-timeout .hd{background:var(--amber)}
.pj.s-billing .hd{background:var(--red)} .pj.s-auth .hd{background:var(--red)}
.pj.s-no_key .hd{background:var(--red)} .pj.s-permission .hd{background:var(--red)}
.pj.s-api_disabled .hd{background:var(--red)} .pj.s-error .hd{background:var(--red)}
.pj .nm{flex:1;min-width:0}
.pj .nm b{font-family:var(--mono);font-size:13px;font-weight:600}
.pj .nm small{display:block;font-size:11.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pj.disabled{opacity:.55}
.pj .stat{font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-2);min-width:74px;text-align:right;flex:0 0 auto}
.pj .stat.s-healthy,.pj .stat.s-reachable{color:var(--green)}
.pj .stat.s-quota,.pj .stat.s-timeout{color:var(--amber)}
.pj .stat.s-billing,.pj .stat.s-auth,.pj .stat.s-no_key,.pj .stat.s-permission,.pj .stat.s-api_disabled,.pj .stat.s-error{color:var(--red)}
.pj .acts{display:flex;gap:6px;flex:0 0 auto}

.empty{border:1px dashed var(--line);border-radius:12px;padding:30px;text-align:center;color:var(--ink-2);margin-top:14px}

/* toast */
.toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:50}
.toast{background:var(--ink);color:#fff;padding:11px 16px;border-radius:10px;font-size:13px;box-shadow:var(--shadow);max-width:360px;animation:slidein .2s}
.toast.ok{background:#26432c} .toast.err{background:#5a2620} .toast.warn{background:#6a4a16}
@keyframes slidein{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}

/* callout */
.callout{border-left:3px solid var(--gold);background:#fffdf7;border-radius:0 12px 12px 0;padding:13px 16px;margin-top:16px;font-size:13px;color:var(--ink-2)}
.callout b{color:var(--ink)}
.spin{display:inline-block;width:13px;height:13px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:sp .7s linear infinite}
.btn.ghost .spin{border-color:rgba(34,31,28,.25);border-top-color:var(--ink)}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- settings forms ---------- */
.settings-form{max-width:620px}
.fld{margin-top:16px}
.fld label{display:block;font-size:11px;letter-spacing:.7px;text-transform:uppercase;color:var(--ink-2);font-weight:700;margin-bottom:6px}
.fld input[type=text],.fld input[type=password],.fld input[type=number],.fld select{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-size:14px;background:#fdfbf7;color:var(--ink);font-family:var(--sans)}
.fld input:focus,.fld select:focus{outline:none;border-color:var(--gold)}
.fld .desc{font-size:11.5px;color:var(--ink-2);margin-top:5px}
.fld.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.set-section{font-family:var(--serif);font-size:15px;margin:26px 0 2px;padding-top:18px;border-top:1px solid var(--line-2)}
.toggle{display:flex;align-items:center;gap:10px;margin-top:14px}
.toggle input{width:17px;height:17px;accent-color:var(--gold);flex:0 0 auto}
.toggle label{font-size:13.5px;margin:0;text-transform:none;letter-spacing:0;color:var(--ink)}
.actionsbar{display:flex;gap:10px;margin-top:24px}

/* ---------- run pipeline ---------- */
.tabhint{font-size:12px;color:var(--ink-2);margin-top:3px}
textarea.urlbox{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px;font-family:var(--mono);font-size:12.5px;background:#fdfbf7;color:var(--ink);margin-top:10px;resize:vertical}
textarea.urlbox:focus{outline:none;border-color:var(--gold)}
.run-opts{display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin-top:14px}
.run-opts label{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:7px}
.run-opts input[type=number]{width:60px;border:1px solid var(--line);border-radius:7px;padding:5px 8px;font-size:13px;background:#fff}
.run-opts select{border:1px solid var(--line);border-radius:7px;padding:5px 8px;font-size:13px;background:#fff}
.run-opts input[type=checkbox]{width:16px;height:16px;accent-color:var(--gold)}
.run-pill{font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:4px 11px;border-radius:999px;background:var(--cream);color:var(--ink-2);font-weight:700}
.run-pill.s-running,.run-pill.s-queued{background:var(--amber-bg);color:var(--amber)}
.run-pill.s-done{background:var(--green-bg);color:var(--green)}
.run-pill.s-failed{background:var(--red-bg);color:var(--red)}
.run-pill.s-stopped,.run-pill.s-stopping{background:#eceae5;color:var(--ink-2)}
.run-stats{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0;font-size:12.5px;color:var(--ink-2)}
.run-stats span{background:var(--cream);padding:4px 10px;border-radius:7px}
.prog{display:flex;flex-direction:column;gap:7px;margin-top:6px}
.prow{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 11px}
.prow .nm{flex:1;min-width:0;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow .bar{height:6px;background:#eee5d6;border-radius:4px;flex:1.2;overflow:hidden}
.prow .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-deep));transition:width .3s}
.prow .st{font-size:10.5px;text-transform:uppercase;color:var(--ink-2);width:72px;text-align:right}
.console{margin-top:14px;background:#1c1a17;color:#cfc7ba;border-radius:10px;padding:12px 14px;font-family:var(--mono);font-size:11.5px;line-height:1.5;max-height:280px;overflow:auto}
.console .line{white-space:pre-wrap;word-break:break-word}
.console .line.err{color:#e89a8f}
#csvlink{font-size:13px;font-weight:600}

/* ---------- gallery ---------- */
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;margin-top:16px}
.gcard{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}
.gimg{position:relative;aspect-ratio:4/5;background:var(--cream);display:flex;align-items:center;justify-content:center;overflow:hidden}
.gimg img{width:100%;height:100%;object-fit:cover;display:block}
.gactions{position:absolute;top:7px;right:7px;display:flex;gap:6px;opacity:0;transition:opacity .12s ease;z-index:2}
.gcard:hover .gactions{opacity:1}
.gbtn{width:28px;height:28px;border:none;border-radius:7px;cursor:pointer;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.gbtn.gen{background:#221F1C;color:#fff}
.gbtn.del{background:#fff;color:#b23a2e}
.gbtn:hover{transform:translateY(-1px)}
.gph{font-size:11px;color:var(--ink-2)}
.gmeta{padding:9px 11px}
.gmeta b{font-size:12.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gmeta small{font-size:10.5px;color:var(--gold-deep);letter-spacing:.3px}
.drow{display:flex;gap:6px;margin-top:9px}
.sel-card{cursor:pointer;position:relative;transition:.12s;user-select:none}
.sel-card:hover{border-color:var(--gold)}
.sel-card.sel{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold)}
.selmark{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:50%;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--gold-deep);z-index:2}
.sel-card.sel .selmark{background:var(--gold);color:#fff;border-color:var(--gold)}

/* ad preview modal — zoom + full copy */
.ad-modal{position:fixed;inset:0;background:rgba(20,18,15,.62);backdrop-filter:blur(3px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px}
.ad-modal-card{background:var(--paper);border-radius:16px;max-width:940px;width:100%;max-height:90vh;overflow:auto;display:grid;grid-template-columns:1fr 1fr;box-shadow:0 24px 70px rgba(0,0,0,.35);position:relative}
.ad-modal-img{background:var(--cream);display:flex;align-items:center;justify-content:center}
.ad-modal-img img{width:100%;height:100%;max-height:90vh;object-fit:contain;display:block}
.ad-modal-info{padding:30px}
.ad-modal-info h2{margin:.25em 0 .7em;font-size:1.55rem;line-height:1.1}
.ad-modal-x{position:absolute;top:12px;right:14px;background:#fff;border:1px solid var(--line);border-radius:50%;width:34px;height:34px;font-size:20px;line-height:1;cursor:pointer;z-index:3;box-shadow:var(--shadow)}
.amf{margin:9px 0;border-top:1px solid var(--line-2);padding-top:9px}
.amf label{display:block;font-size:.68rem;letter-spacing:.09em;text-transform:uppercase;color:var(--grey);margin-bottom:3px}
.amf p{margin:0;line-height:1.45}
.amf a{color:var(--gold-deep);word-break:break-all}
@media(max-width:680px){.ad-modal-card{grid-template-columns:1fr}.ad-modal-img img{max-height:42vh}}

/* ---------- proxies ---------- */
.px-tier{margin-top:20px}
.px-tier-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:0 2px 2px}
.px-tier-name{font-family:var(--serif);font-size:16px;color:var(--ink)}
.px-tier-sub{font-size:12px;color:var(--ink-2);max-width:640px;margin-top:3px;line-height:1.5}
.px-tier-sub b{color:var(--ink)}
.px-tier-head .px-add{flex:0 0 auto}
.proxies{margin-top:11px;display:flex;flex-direction:column;gap:14px}
.px-role{flex:0 0 auto;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12px;background:#fff;color:var(--ink);font-family:var(--sans);cursor:pointer}
.px-role:focus{outline:none;border-color:var(--gold)}
.px{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 16px 16px}
.px.off{opacity:.62}
.px-top{display:flex;align-items:center;gap:11px}
.px-dot{width:9px;height:9px;border-radius:50%;background:var(--grey);flex:0 0 auto}
.px.s-ok .px-dot{background:var(--green)} .px.s-err .px-dot{background:var(--red)} .px.s-warn .px-dot{background:var(--amber)}
.px-label{flex:1;min-width:0;font-family:var(--serif);font-size:15.5px;border:none;background:transparent;padding:5px 2px;color:var(--ink)}
.px-label:focus{outline:none;box-shadow:inset 0 -1px 0 var(--gold)}
.px-en{display:flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--ink-2);font-weight:700;flex:0 0 auto}
.px-en input{width:16px;height:16px;accent-color:var(--gold)}
.px-grid{display:grid;grid-template-columns:130px 1fr 96px;gap:11px;margin-top:11px}
.px-grid.creds{grid-template-columns:1fr 1fr}
.px .fld{margin-top:0}
.px .reveal{position:relative}
.px .reveal .eye{position:absolute;right:8px;top:31px;background:none;border:none;cursor:pointer;font-size:14px;opacity:.5;padding:2px}
.px .reveal .eye:hover{opacity:1}
.px-stat{font-size:12.5px;margin-top:11px;min-height:17px;color:var(--ink-2)}
.px-stat.ok{color:var(--green)} .px-stat.err{color:var(--red)} .px-stat.warn{color:var(--amber)}
.px-acts{display:flex;gap:7px;margin-top:13px;align-items:center}
.px-acts .sp{flex:1}
@media(max-width:680px){.px-grid{grid-template-columns:1fr 1fr}.px-grid.creds{grid-template-columns:1fr}}

@media(max-width:820px){
  .shell{grid-template-columns:1fr}
  .side{position:static;height:auto}
  .content{padding:18px}
}

/* Laptop-scrape bulb — a small dot beside the run pill. Detail lives in the tooltip. */
.statusrow{display:inline-flex;align-items:center;gap:9px}
.laptop-bulb{width:11px;height:11px;border-radius:50%;flex:none;cursor:default;
  background:#5a5a62;box-shadow:0 0 0 2px rgba(255,255,255,.04)}
.laptop-bulb[data-state="busy"]{background:#ff3b46;animation:lp-pulse 1.2s infinite}
.laptop-bulb[data-state="done"]{background:#22c55e;box-shadow:0 0 9px rgba(34,197,94,.75)}
.laptop-bulb[data-state="stale"]{background:#eab308}
@keyframes lp-pulse{0%{box-shadow:0 0 0 0 rgba(255,59,70,.55)}70%{box-shadow:0 0 0 7px rgba(255,59,70,0)}100%{box-shadow:0 0 0 0 rgba(255,59,70,0)}}

/* Inbox — staged products captured by the extension / prefetch */
.inbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:14px}
.inbox-card{position:relative;display:flex;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:var(--shadow)}
.inbox-card .ib-pick{position:absolute;top:6px;left:6px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:4px 6px;box-shadow:var(--shadow);z-index:2}
.inbox-card .ib-pick input{transform:scale(1.35);cursor:pointer}
.inbox-card .ib-thumb{width:78px;height:104px;object-fit:cover;border-radius:8px;background:var(--cream);flex:none}
.inbox-card .ib-body{min-width:0;flex:1}
.inbox-card .ib-title{font-weight:600;font-size:13px;line-height:1.3;margin-bottom:5px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.inbox-card .ib-meta{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--ink-2);margin-bottom:4px;flex-wrap:wrap}
.inbox-card .ib-meta .src{padding:1px 8px;border-radius:999px;background:var(--cream);text-transform:capitalize;font-weight:700}
.inbox-card .ib-meta .src.alibaba{color:var(--gold-deep)}.inbox-card .ib-meta .src.aliexpress{color:var(--red)}.inbox-card .ib-meta .src.shopify{color:var(--green)}
.inbox-card .ib-meta .st{padding:1px 8px;border-radius:999px;background:var(--cream)}
.inbox-card .ib-meta .st.s-running{color:var(--amber)}.inbox-card .ib-meta .st.s-staged{color:var(--ink-2)}.inbox-card .ib-meta .st.s-done{color:var(--green)}.inbox-card .ib-meta .st.s-error{color:var(--red)}
.inbox-card .ib-sub{font-size:11px;color:var(--grey);margin-bottom:2px}
.inbox-card .ib-ncol{color:var(--ink);font-weight:700}
.inbox-card .ib-merch{display:flex;align-items:center;gap:7px;margin-top:6px;flex-wrap:wrap}
.inbox-card .ib-merch-lbl{font-size:11px;color:var(--ink-2)}
.inbox-card .merch-sel{font-size:11px;padding:3px 6px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);cursor:pointer}
.inbox-card .merch-auto{font-size:10px;color:var(--grey);padding:1px 7px;border-radius:999px;background:var(--cream)}
.inbox-card .merch-auto.is-auto{color:var(--green)}
.inbox-card .ib-acts{display:flex;gap:6px;margin-top:8px;align-items:center}
#setup{margin-bottom:12px}#setup .fld{margin-top:8px}#setup input{width:100%;font-family:var(--mono);font-size:12px}
