:root{
  --ink:#0E2748; --muted:#5B6B86; --faint:#93A3BD;
  --blue:#1C8FE0; --azure:#34A8EE; --indigo:#5B6BF0; --cyan:#22C7E0;
  --line:rgba(15,40,80,.09); --line2:rgba(15,40,80,.15);
  --card:#FFFFFF; --soft:#F1F7FF;
  --buy:#13A06B; --hold:#B5851A; --sell:#D6485A;
  --shadow:0 14px 38px rgba(22,70,140,.10); --shadow-sm:0 6px 18px rgba(22,70,140,.07);
  --flowell-blue:#1C8FE0; --flowell-navy:#10448F; --flowell-gold:#5B6BF0;
}
*{box-sizing:border-box}
body{
  margin:0;font-family:Calibri,"Segoe UI","Helvetica Neue",Arial,sans-serif;color:var(--ink);
  min-height:100vh;-webkit-font-smoothing:antialiased;
  background:
    radial-gradient(1100px 480px at 80% -130px, rgba(91,107,240,.13), transparent 60%),
    radial-gradient(900px 440px at 6% -70px, rgba(34,199,224,.12), transparent 60%),
    linear-gradient(180deg,#F3F8FF,#FBFDFF 42%);
  background-attachment:fixed;
}

/* header */
header.top{
  position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;
  padding:14px 28px;background:rgba(255,255,255,.74);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);
}
header.top .logo{font-weight:700;font-size:18px;letter-spacing:.2px;display:flex;align-items:center;gap:9px;color:var(--ink)}
header.top .logo b{background:linear-gradient(90deg,var(--blue),var(--indigo));-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700;margin:0 4px}
header.top .lang-wrap{display:flex;align-items:center;gap:8px}
header.top .ic-globe{width:16px;height:16px;fill:none;stroke:var(--faint);stroke-width:1.6}
header.top .lang{background:#fff;color:var(--ink);border:1px solid var(--line2);border-radius:9px;padding:7px 11px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm)}
header.top .lang:focus{outline:none;border-color:var(--blue)}
header.top .lang option{color:var(--ink);background:#fff}

/* shell */
.shell{display:flex;align-items:stretch;min-height:calc(100vh - 56px)}

/* coverage sidebar */
.sidebar{width:256px;flex:none;background:rgba(255,255,255,.62);border-right:1px solid var(--line);backdrop-filter:blur(10px);
  padding:16px 10px;position:sticky;top:0;align-self:flex-start;height:calc(100vh - 56px);overflow-y:auto}
.sidebar .side-head{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:600;letter-spacing:1.4px;text-transform:uppercase;color:var(--faint);padding:4px 8px 12px;margin:0}
.ic{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.collapse-btn,.sidebar-reopen{background:none;border:none;cursor:pointer;color:var(--faint);padding:3px;margin:0;display:inline-flex;align-items:center;border-radius:6px}
.collapse-btn:hover{background:var(--soft);color:var(--blue)}
.sidebar-reopen{display:none;position:sticky;top:14px;align-self:flex-start;height:32px;width:24px;justify-content:center;background:#fff;border:1px solid var(--line);border-left:none;border-radius:0 8px 8px 0;color:var(--blue);margin-top:14px;box-shadow:var(--shadow-sm)}
body.nav-collapsed .sidebar{display:none}
body.nav-collapsed .sidebar-reopen{display:inline-flex}

.side-item{display:block;padding:8px 12px;font-size:13px;cursor:pointer;color:var(--muted);border-radius:9px;margin:1px 2px}
.side-item:hover{background:var(--soft)}
.side-item.active{background:linear-gradient(90deg,rgba(28,143,224,.12),rgba(28,143,224,.02));color:var(--blue);font-weight:600;box-shadow:inset 0 0 0 1px var(--line2)}
.side-item.all{font-weight:600}
.cov-empty{padding:10px 12px;color:var(--faint);font-size:12px}
/* "new run" entry above the saved-plan list — the only way into an empty board */
.cov-new{display:flex;align-items:center;gap:6px;padding:7px 12px;margin:1px 2px;font-size:12.5px;
  font-weight:600;color:var(--blue);cursor:pointer;border-radius:9px}
.cov-new:hover{background:var(--soft)}
.cov-group{margin:1px 0}
.cov-head{display:flex;align-items:center;gap:8px;padding:8px 12px 8px 8px;cursor:pointer;font-size:13px;border-radius:9px;margin:1px 2px}
.cov-head:hover{background:var(--soft)}
.cov-head.active{background:rgba(28,143,224,.10)}
.cov-head .chev{width:13px;height:13px;color:var(--faint);transition:transform .15s;flex:none}
.cov-group.open .cov-head .chev{transform:rotate(90deg)}
.cov-head .tk{font-weight:600;color:var(--ink);flex:1;letter-spacing:.2px}
.cov-head .meta{font-size:11px;color:var(--faint);display:flex;align-items:center;gap:6px}
.cov-reports{display:none;padding:2px 0 6px}
.cov-group.open .cov-reports{display:block}
.cov-report{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 12px 6px 30px;font-size:11.5px;color:var(--muted);cursor:pointer;border-radius:8px;margin:1px 2px}
.cov-report:hover{background:var(--soft)}
.cov-report.active{background:rgba(28,143,224,.12);color:var(--blue)}
.cov-report .when{color:var(--faint)}
.cov-report .vt{font-weight:600;display:flex;align-items:center;gap:5px}

.rtag{font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;letter-spacing:.2px}
.rtag-Buy{background:#E4F6EE;color:#0E8B5C}
.rtag-Hold{background:#FAF2DD;color:#9A7100}
.rtag-Sell{background:#FBE9EC;color:#C13A4B}

/* main */
.main{flex:1;min-width:0}
.page-title{max-width:1180px;margin:22px auto 0;padding:0 22px;font-size:25px;color:var(--ink);font-weight:800;letter-spacing:.2px}
.wrap{max-width:1180px;margin:14px auto 28px;padding:0 22px;display:grid;grid-template-columns:1.12fr .88fr;gap:22px}
@media (max-width:1100px){.sidebar{width:210px}}
@media (max-width:920px){
  .wrap{grid-template-columns:1fr}
  .shell{display:block}
  .sidebar{width:auto;height:auto;position:static;border-right:none;border-bottom:1px solid var(--line)}
  /* On phones the Coverage panel folds UP from the top (no left-edge collapse). */
  .sidebar-reopen{display:none !important}
  .side-head{cursor:pointer}
  body.nav-collapsed .sidebar{display:block}            /* ignore the desktop left-collapse */
  body.sidebar-folded .side-actions,
  body.sidebar-folded .watchlist-box,
  body.sidebar-folded #coverage{display:none}
  .collapse-btn .ic{transition:transform .15s}
  body:not(.sidebar-folded) .collapse-btn .ic{transform:rotate(90deg)}   /* points up = tap to fold */
  body.sidebar-folded .collapse-btn .ic{transform:rotate(-90deg)}        /* points down = tap to open */
}

/* cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;margin-bottom:20px;box-shadow:var(--shadow)}
.card h2{margin:0 0 14px;font-size:15px;color:var(--ink);font-weight:700;display:flex;align-items:center;gap:9px}
.card h2::before{content:"";width:4px;height:15px;border-radius:3px;background:linear-gradient(var(--azure),var(--indigo))}
label{display:block;font-size:12px;color:var(--muted);margin:11px 0 5px;font-weight:600}
input[type=text],input[type=email],input[type=number],input[type=password],input[type=search],textarea,select{width:100%;padding:9px 12px;border:1px solid var(--line2);border-radius:10px;font-size:14px;font-family:inherit;background:#fff;color:var(--ink)}
input[type=text]:focus,input[type=email]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,textarea:focus,select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(28,143,224,.15)}
input::placeholder,textarea::placeholder{color:var(--faint)}
textarea{resize:vertical;min-height:54px}
.row{display:flex;gap:10px}
.row>div{flex:1;min-width:0}
button{background:linear-gradient(135deg,var(--azure),var(--indigo));color:#fff;border:none;padding:10px 18px;border-radius:11px;font-size:14px;font-weight:700;cursor:pointer;margin-top:14px;box-shadow:0 8px 20px rgba(40,90,200,.28);transition:transform .1s,box-shadow .15s}
button:hover{transform:translateY(-1px);box-shadow:0 10px 26px rgba(40,90,200,.38)}
button.ghost{background:#fff;color:var(--blue);border:1px solid var(--line2);box-shadow:var(--shadow-sm)}
button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.hint{font-size:11px;color:var(--faint);margin-top:6px;line-height:1.5}

/* progress */
.progress-item{border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin-bottom:10px;background:var(--soft)}
.progress-item .tk{font-weight:800;color:var(--ink)}
.progress-item .msg{font-size:12px;color:var(--muted);margin-top:3px;min-height:16px}
.bar{height:7px;background:#E6EFFA;border-radius:5px;overflow:hidden;margin-top:8px}
.bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--azure),var(--indigo));width:0;transition:width .3s}
.bar.error>span{background:var(--sell)}
.bar.done>span{background:var(--buy)}
.progress-inline{margin-top:14px}
.progress-inline:empty{display:none}

/* reports table */
table.reports{width:100%;border-collapse:collapse;font-size:13px}
table.reports th,table.reports td{border-bottom:1px solid var(--line);padding:8px;text-align:left;color:var(--ink)}
table.reports th{color:var(--faint);font-size:11px;text-transform:uppercase;font-weight:600}
.tag{padding:2px 9px;border-radius:20px;font-size:11px;font-weight:700}
.tag-Buy{background:#E4F6EE;color:#0E8B5C}
.tag-Hold{background:#FAF2DD;color:#9A7100}
.tag-Sell{background:#FBE9EC;color:#C13A4B}
.linkbtn{color:var(--blue);cursor:pointer;font-weight:600;margin-right:8px}
.linkbtn:hover{text-decoration:underline}
.sel{cursor:pointer}
tr.active td{background:rgba(28,143,224,.07)}
.act{display:inline-flex;gap:4px}
.act .iconbtn{border:none;background:none;border-radius:6px;padding:4px;cursor:pointer;color:var(--muted);display:inline-flex;align-items:center}
.act .iconbtn:hover{background:var(--soft);color:var(--blue)}
.act .iconbtn.del:hover{background:#FBE9EC;color:var(--sell)}
.act .iconbtn.locked{color:var(--faint);opacity:.6}
.act .iconbtn.locked:hover{background:var(--soft);color:var(--blue);opacity:1}
.empty{color:var(--faint);font-size:13px}
/* Pricing / upgrade modal */
.modal.plan{max-width:760px}
.plan-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.plan-card{position:relative;border:1px solid var(--line);border-radius:14px;padding:14px;background:#fff;display:flex;flex-direction:column}
.plan-card.feat{border:2px solid var(--blue)}
.plan-card.current{background:var(--soft)}
.plan-badge{position:absolute;top:-9px;left:14px;background:#E6F1FB;color:#0C447C;font-size:10px;font-weight:600;padding:2px 8px;border-radius:8px}
.plan-name{font-size:13px;color:var(--muted)}
.plan-price{font-size:24px;font-weight:600;margin:2px 0 8px}
.plan-price span{font-size:12px;color:var(--muted);font-weight:400}
.plan-card ul{list-style:none;margin:0 0 12px;padding:0;font-size:12px;color:var(--ink);line-height:1.9;flex:1}
.plan-pick{width:100%;border-radius:9px;padding:7px;font-size:13px;cursor:pointer;border:1px solid var(--blue)}
.plan-pick.primary{background:var(--blue);color:#fff}
.plan-pick.ghost{background:none;color:var(--muted);border-color:var(--line)}
.plan-pick:disabled{cursor:default;opacity:.7}
/* Invite-only beta gate */
.modal.invite{max-width:440px}
.ig-lbl{display:block;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin:0 0 8px}
.ig-row{display:flex;gap:8px}
.ig-row input{flex:1;padding:11px 13px;border:1px solid var(--line2);border-radius:10px;font-size:14px;font-family:inherit;color:var(--ink)}
.ig-row input:focus{outline:none;border-color:var(--blue)}
.ig-row button{padding:11px 18px;border-radius:10px;border:none;background:var(--blue);color:#fff;font-weight:700;cursor:pointer;white-space:nowrap}
.ig-row button.ghost{background:none;color:var(--blue);border:1px solid var(--line2)}
.ig-row button:disabled{opacity:.6;cursor:default}
.ig-msg{font-size:13px;font-weight:600;margin-top:8px;min-height:18px}
.ig-msg.ok{color:#0E8B5C}.ig-msg.err{color:#C13A4B}
.ig-divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--faint);font-size:12px}
.ig-divider::before,.ig-divider::after{content:"";flex:1;height:1px;background:var(--line)}

/* floating chat */
.chat-fab{position:fixed;right:26px;bottom:26px;width:58px;height:58px;border-radius:50%;background:linear-gradient(135deg,var(--azure),var(--indigo));border:none;cursor:pointer;z-index:70;margin:0;display:flex;align-items:center;justify-content:center;box-shadow:0 14px 32px rgba(40,90,200,.4);transition:transform .12s}
.chat-fab:hover{transform:translateY(-2px)}
.chat-fab svg{width:26px;height:26px;fill:none;stroke:#fff;stroke-width:1.8;stroke-linejoin:round}
body.chat-open .chat-fab{display:none}
.chat-widget{position:fixed;right:26px;bottom:26px;width:380px;max-width:calc(100vw - 32px);height:560px;max-height:calc(100vh - 96px);z-index:71;display:none;flex-direction:column;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 28px 64px rgba(22,60,130,.26)}
.chat-widget.open{display:flex}
.chat-whead{padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(120deg,#10448F,#2E73D6);color:#fff}
.chat-whead .wt{font-weight:700;font-size:14px}
.chat-whead .ct{font-size:11px;color:rgba(212,228,255,.85);margin-top:2px;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-close{background:none;border:none;color:rgba(212,228,255,.85);cursor:pointer;padding:4px;margin:0;display:inline-flex}
.chat-close:hover{color:#fff}
.chat-log{flex:1;height:auto;border:none;border-radius:0;background:#fff;padding:14px 16px;overflow-y:auto;font-size:13px}
.chat-log .me{align-self:flex-end;color:#fff;background:linear-gradient(135deg,var(--blue),#2E73D6);padding:9px 13px;border-radius:14px 14px 4px 14px;margin:8px 0 2px;max-width:88%;display:inline-block;float:right;clear:both}
.chat-log .ai{color:var(--ink);background:var(--soft);border:1px solid var(--line);padding:9px 13px;border-radius:14px 14px 14px 4px;margin:2px 0 10px;white-space:pre-wrap;line-height:1.55;max-width:90%;display:inline-block;float:left;clear:both}
.chat-log .sys{color:var(--faint);font-size:11px;margin:3px 0;clear:both}
.chat-log .ok{color:var(--buy);font-weight:600;margin:2px 0 8px;clear:both}
.chat-log .err{color:var(--sell);clear:both}
.chat-winput{display:flex;gap:8px;padding:11px 12px;border-top:1px solid var(--line);background:#FAFCFF}
.chat-winput input{flex:1}
.chat-winput button{margin:0;padding:0 13px;display:inline-flex;align-items:center;border-radius:10px}
.chat-winput button:disabled{opacity:.45}
.chat-winput button .ic{width:17px;height:17px;stroke:#fff}
@media (max-width:640px){.chat-widget{right:8px;left:8px;width:auto;bottom:8px;height:calc(100vh - 80px)}}

/* confirm modal */
.modal-overlay{position:fixed;inset:0;z-index:80;background:rgba(10,30,70,.32);backdrop-filter:blur(4px);display:none;align-items:flex-start;justify-content:center;padding:48px 16px;overflow-y:auto}
.modal-overlay.show{display:flex}
.modal{width:100%;max-width:640px;border-radius:18px;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:0 28px 64px rgba(22,60,130,.3)}
.modal .head{padding:16px 20px;background:linear-gradient(120deg,#10448F,#2E73D6);color:#fff}
.modal .head h3{margin:0;font-size:16px}
.modal .head .sub{font-size:12px;color:rgba(212,228,255,.85);margin-top:3px}
.modal .body{padding:14px 20px;max-height:56vh;overflow-y:auto}
.modal .foot{padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;align-items:center}
.rrow{border:1px solid var(--line);border-radius:11px;padding:10px 12px;margin-bottom:10px;background:#fff}
.rrow.bad{border-color:rgba(214,72,90,.45);background:#FCF1F3}
.rrow .top{display:flex;gap:10px;align-items:center}
.rrow .sym{width:130px;font-weight:700;text-transform:uppercase;color:var(--ink)}
.rrow .name{flex:1;font-size:14px;color:var(--ink)}
.rrow .name b{color:var(--blue)}
.rrow .meta{font-size:11px;color:var(--faint)}
.rrow .recheck{font-size:12px;color:var(--blue);cursor:pointer;font-weight:600;white-space:nowrap}
.rrow .recheck:hover{text-decoration:underline}
.rrow .warn{color:var(--sell);font-size:12px;font-weight:600}
.rrow .alts{margin-top:6px;font-size:11px;color:var(--faint)}
.rrow .alt{display:inline-block;background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:1px 8px;margin:2px 4px 0 0;cursor:pointer;color:var(--muted)}
.rrow .alt:hover{border-color:var(--blue);color:var(--blue)}
.modal .muted{color:var(--faint);font-size:12px;margin-right:auto}

/* ---- Credits chip + buy-credits modal ---- */
header.top .head-right{display:flex;align-items:center;gap:12px}
.credits-chip{display:inline-flex;align-items:center;gap:6px;margin:0;padding:7px 13px;background:#fff;color:var(--ink);border:1px solid var(--line2);border-radius:999px;font-size:13px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}
.credits-chip:hover{border-color:var(--blue);box-shadow:0 0 0 3px rgba(28,143,224,.12)}
.credits-chip .ic{width:16px;height:16px;fill:none;stroke:var(--blue);stroke-width:1.7}
.credits-chip .cl{color:var(--muted);font-weight:600}
.credits-chip.low{border-color:#E8B84B;background:linear-gradient(90deg,rgba(232,184,75,.14),#fff)}
.credits-chip.low .ic{stroke:#D8961A}
.modal.buy{max-width:460px}
.pack{display:flex;align-items:center;gap:14px;padding:13px 14px;border:1px solid var(--line2);border-radius:14px;margin-bottom:11px;transition:border-color .15s,box-shadow .15s}
.pack:hover{border-color:var(--blue);box-shadow:0 6px 18px rgba(40,90,200,.12)}
.pack .pk-l{width:58px;height:58px;border-radius:12px;background:linear-gradient(135deg,rgba(52,168,238,.16),rgba(91,107,240,.12));display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none}
.pack .pk-c{font-size:22px;font-weight:800;color:var(--blue);line-height:1}
.pack .pk-u{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.pack .pk-m{flex:1}
.pack .pk-label{font-weight:700;color:var(--ink)}
.pack .pk-per{font-size:12px;color:var(--muted);margin-top:2px}
.pack .save{display:inline-block;margin-top:4px;font-size:11px;font-weight:700;color:#1E8E5A;background:rgba(30,142,90,.12);padding:2px 7px;border-radius:6px}
.pack .pk-r{display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.pack .pk-price{font-size:18px;font-weight:800;color:var(--ink)}
.pack .pk-buy{margin:0;padding:7px 16px;font-size:13px;border-radius:9px}
.pack .pk-buy:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}

/* ---- Auth + account ---- */
.signin-btn{margin:0;padding:8px 16px;font-size:13px;border-radius:999px}
.user-chip{display:inline-flex;align-items:center;gap:6px;margin:0;padding:7px 13px;background:#fff;color:var(--ink);border:1px solid var(--line2);border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);max-width:200px}
.user-chip:hover{border-color:var(--blue)}
.user-chip .ic{width:16px;height:16px;fill:none;stroke:var(--blue);stroke-width:1.7;flex:none}
.user-chip #userEmail{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.modal.auth,.modal.acct{max-width:440px}
.modal .body label{display:block;font-size:12px;color:var(--muted);font-weight:600;margin:4px 0 6px}
.modal.auth input{margin-bottom:10px}
.authmsg{font-size:13px;color:var(--blue);min-height:18px;font-weight:600}
.modal .body .hint{font-size:12px;color:var(--muted);background:var(--soft);border:1px dashed var(--line2);border-radius:8px;padding:7px 10px;margin-top:2px}
button.ghost.danger{color:#C0392B;border-color:rgba(192,57,43,.3)}
button.ghost.danger:hover{background:rgba(192,57,43,.06)}
/* Account modal: admin link lives in the header (a subtle pill), not crammed into the footer */
.modal.acct .head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.modal.acct .head-l{min-width:0}
.head-admin{flex:none;color:#fff;font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap;border:1px solid rgba(255,255,255,.45);border-radius:999px;padding:5px 12px;transition:background .15s,border-color .15s}
.head-admin:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.7)}
/* Footer: Sign out sits on the left; the rest align right, all one consistent size */
.modal.acct .foot{flex-wrap:wrap;gap:8px}
.modal.acct .foot button{margin:0;padding:8px 15px;font-size:13px;border-radius:10px}
.modal.acct .foot #acctSignout{margin-right:auto}
.acct-stats{display:flex;gap:10px;margin-bottom:16px}
.acct-stats .stat{flex:1;text-align:center;padding:14px 8px;border:1px solid var(--line2);border-radius:12px;background:linear-gradient(160deg,rgba(52,168,238,.08),#fff)}
.acct-stats .sv{font-size:22px;font-weight:800;color:var(--ink)}
.acct-stats .sl{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-top:3px}
.acct-h{margin:6px 0 4px;font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.5px}
/* Recent reports — clean list (no token column) */
.jobs-list{display:flex;flex-direction:column;max-height:280px;overflow-y:auto}
.job-row{display:flex;align-items:center;gap:12px;padding:9px 2px;border-bottom:1px solid var(--line);font-size:13px}
.job-row:last-child{border-bottom:none}
.j-tk{font-weight:700;color:var(--ink);min-width:60px}
.j-type{font-size:10.5px;padding:2px 9px;border-radius:20px;font-weight:600;text-transform:capitalize}
.j-new{background:rgba(52,168,238,.12);color:var(--blue)}
.j-update{background:rgba(224,150,30,.16);color:#B0771A}
.j-cache_hit{background:var(--soft);color:var(--muted)}
.j-date{margin-left:auto;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}

/* ---- Mobile responsive polish ---- */
@media (max-width:680px){
  /* Menu bar: one compact row, icon-style controls */
  header.top{flex-wrap:nowrap;height:auto;gap:6px;padding:10px 12px}
  header.top .logo{font-size:16px;flex:none}
  .logo-tag{display:none}
  .head-right{flex-wrap:nowrap;gap:6px;justify-content:flex-end;align-items:center}
  .credits-chip{padding:6px 10px;gap:4px}
  .credits-chip .cl{display:none}
  .user-chip{padding:6px;max-width:none}
  .user-chip #userEmail{display:none}
  .signin-btn{padding:7px 13px;font-size:13px}
  header.top .lang{padding:6px 7px;font-size:12px}
  header.top .ic-globe{display:none}
  .bell-btn{width:34px;height:34px}
  .page-title{font-size:20px;margin-top:14px;padding:0 16px}
  .wrap{padding:0 16px;margin-top:12px}
  .card{padding:16px;border-radius:14px}
  .row{flex-direction:column;gap:12px}
  /* Reports: each row becomes a vertical card (no horizontal scrolling) */
  #reports,#acctJobs,#cmpResult{overflow-x:visible}
  table.reports,table.reports tbody,table.reports tr,table.reports td{display:block;width:auto;min-width:0}
  table.reports thead{display:none}
  table.reports tr{border:1px solid var(--line2);border-radius:12px;margin-bottom:10px;padding:4px 14px;background:#fff;box-shadow:var(--shadow-sm)}
  table.reports tr.active{box-shadow:0 0 0 2px var(--blue)}
  table.reports td{border:none;border-bottom:1px solid var(--line);padding:8px 0;display:flex;justify-content:space-between;align-items:center;gap:14px;text-align:right}
  table.reports tr td:last-child{border-bottom:none}
  table.reports td::before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:600;text-align:left;white-space:nowrap}
  table.reports td.sel{font-size:18px;font-weight:800;color:var(--ink);padding:6px 0 8px;justify-content:flex-start}
  table.reports td.sel::before{content:none}
  table.reports td .act{justify-content:flex-end}
  /* Account usage table → cards too */
  table.jobs thead{display:none}
  table.jobs,table.jobs tbody,table.jobs tr,table.jobs td{display:block;width:auto}
  table.jobs tr{border:1px solid var(--line);border-radius:10px;margin-bottom:8px;padding:4px 12px}
  table.jobs td{border:none;display:flex;justify-content:space-between;gap:14px;padding:5px 0}
  /* Account stat tiles + compare selectors stack vertically */
  .acct-stats{flex-direction:column;gap:8px}
  .cmp-selectors{flex-direction:column;align-items:stretch}
  .cmp-selectors .cmp-vs{display:none}
  .cmp-selectors button{width:100%;margin:0}
  .user-chip{max-width:150px}
  /* iOS Safari auto-zooms when a focused field is < 16px — keep every form control at 16px on phones */
  input[type=text],input[type=email],input[type=number],input[type=password],input[type=search],textarea,select{font-size:16px}
  .modal .head{padding:14px 16px}
  .modal .body{padding:12px 16px}
  .modal .foot{padding:10px 16px;flex-wrap:wrap}
  .pack{gap:10px;padding:11px 12px}
  .pack .pk-l{width:48px;height:48px}
}

/* ---- Watchlist ---- */
.watchlist-box{padding:10px 12px 6px;border-bottom:1px solid var(--line)}
.wl-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:8px}
.wl-add{display:flex;gap:6px;margin-bottom:8px}
.wl-add input{padding:6px 9px;font-size:12px;border-radius:8px}
.wl-add button{margin:0;padding:0 12px;font-size:16px;line-height:1;border-radius:8px}
.wl-list{display:flex;flex-direction:column;gap:3px}
.wl-empty{font-size:12px;color:var(--faint);padding:2px 0 6px}
.wl-item{display:flex;align-items:center;gap:7px;padding:5px 8px;border-radius:8px;cursor:default}
.wl-item:hover{background:var(--soft)}
.wl-tk{font-weight:700;color:var(--ink);font-size:13px;cursor:pointer;flex:none}
.wl-tk:hover{color:var(--blue)}
.wl-badge{color:#E07A1A;font-size:11px;line-height:1}
.wl-x{margin-left:auto;color:var(--faint);cursor:pointer;font-size:12px;opacity:0;transition:opacity .12s}
.wl-item:hover .wl-x{opacity:1}
.wl-x:hover{color:#C0392B}

/* ---- Alerts bell ---- */
.bell-wrap{position:relative}
.bell-btn{position:relative;margin:0;padding:8px;width:38px;height:38px;background:#fff;color:var(--ink);border:1px solid var(--line2);border-radius:50%;box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:center;cursor:pointer}
.bell-btn:hover{border-color:var(--blue)}
.bell-btn .ic{width:18px;height:18px;fill:none;stroke:var(--ink);stroke-width:1.7}
.bell-badge{position:absolute;top:-3px;right:-3px;min-width:17px;height:17px;padding:0 4px;background:#E0492F;color:#fff;border-radius:9px;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px #fff}
.bell-pop{position:absolute;top:46px;right:0;width:300px;max-width:80vw;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 48px rgba(22,60,130,.24);z-index:75;display:none;overflow:hidden}
.bell-pop.open{display:block}
.bell-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid var(--line);font-weight:700;font-size:13px;color:var(--ink)}
button.ghost.tiny{margin:0;padding:4px 10px;font-size:12px;border-radius:8px}
.bell-list{max-height:320px;overflow-y:auto}
.bell-empty{padding:18px 14px;color:var(--faint);font-size:13px;text-align:center}
.alert-item{padding:10px 14px;border-bottom:1px solid var(--line);cursor:pointer;display:flex;flex-direction:column;gap:2px}
.alert-item:hover{background:var(--soft)}
.alert-item.unread{background:linear-gradient(90deg,rgba(28,143,224,.08),#fff)}
.alert-item .al-tk{font-weight:800;color:var(--ink);font-size:13px}
.alert-item .al-msg{font-size:12px;color:var(--muted)}

@media (max-width:680px){
  .bell-pop{position:fixed;top:62px;left:8px;right:8px;width:auto;max-width:none}
}

/* ---- Version comparison ---- */
.cov-head .meta .cmp-btn{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-left:5px;border-radius:5px;color:var(--blue);font-size:13px;cursor:pointer;background:rgba(28,143,224,.1)}
.cov-head .meta .cmp-btn:hover{background:rgba(28,143,224,.22)}
.modal.cmp{max-width:520px}
.cmp-selectors{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.cmp-selectors select{flex:1;min-width:150px}
.cmp-selectors .cmp-vs{color:var(--muted);font-weight:700}
.cmp-selectors button{margin:0;padding:8px 16px;border-radius:9px}
table.cmp-table{width:100%;border-collapse:collapse;font-size:13px}
table.cmp-table th,table.cmp-table td{border-bottom:1px solid var(--line);padding:8px;text-align:left;color:var(--ink)}
table.cmp-table th{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}
table.cmp-table td:first-child{color:var(--muted);font-weight:600}
.cmp-d.up{color:#1E8E5A;font-weight:700}
.cmp-d.down{color:#C0392B;font-weight:700}
.cmp-h{margin:14px 0 8px;font-size:13px;color:var(--ink);font-weight:700}
ul.cmp-log{margin:0;padding-left:18px;font-size:13px;color:var(--ink);line-height:1.6}

/* ---- Social login ---- */
.auth-social{margin-bottom:14px}
.social-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin:0 0 10px;padding:11px 14px;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer;border:1px solid var(--line2);background:#fff;color:var(--ink);box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}
.social-btn:hover{border-color:var(--blue);box-shadow:0 4px 14px rgba(40,90,200,.12)}
.social-btn svg{flex:none}
.social-btn.wechat{background:#07C160;border-color:#07C160;color:#fff}
.social-btn.wechat:hover{background:#06ad56}
.auth-or{display:flex;align-items:center;text-align:center;color:var(--faint);font-size:12px;margin:6px 0 2px}
.auth-or::before,.auth-or::after{content:"";flex:1;height:1px;background:var(--line)}
.auth-or span{padding:0 12px}

/* ---- Buy-side verdict tags + discount/premium ---- */
.rtag-under,.tag-under{background:#E4F6EE;color:#0E8B5C}
.rtag-fair,.tag-fair{background:#FAF2DD;color:#9A7100}
.rtag-over,.tag-over{background:#FBE9EC;color:#C13A4B}
.dp-disc{color:#0E8B5C;font-weight:600}
.dp-prem{color:#C13A4B;font-weight:600}

/* ---- Materials upload ---- */
.upload-box{border:1px dashed var(--line2);border-radius:12px;padding:12px;background:var(--soft)}
.upload-btn{display:inline-block;background:#fff;color:var(--blue);border:1px solid var(--line2);border-radius:9px;padding:8px 14px;font-size:13px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-sm);margin:0}
.upload-btn:hover{border-color:var(--blue)}
.upload-box .hint{margin-top:8px}
.upload-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.up-chip{font-size:11.5px;font-weight:600;color:var(--ink);background:#fff;border:1px solid var(--line2);border-radius:20px;padding:4px 6px 4px 10px;display:inline-flex;align-items:center;gap:6px}
.up-chip.reading{color:var(--muted)}
.up-chip.bad{color:#C0392B;border-color:rgba(192,57,43,.3)}
.up-x{border:none;background:none;cursor:pointer;color:var(--muted);font-size:16px;line-height:1;padding:0 2px;font-weight:600;border-radius:50%}
.up-x:hover{color:#C0392B;background:rgba(192,57,43,.1)}
/* sent attachments echoed into the conversation */
.lv-log .me.att{background:none;padding:0;box-shadow:none;display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.chat-img{max-width:190px;max-height:190px;border-radius:12px;display:block;border:1px solid var(--line2)}
.lv-log .me.att .chat-file{background:linear-gradient(135deg,var(--azure),var(--indigo));color:#fff;padding:7px 12px;border-radius:12px 12px 3px 12px;font-size:13px}
.plan-upg{font-size:12px;font-weight:700;color:var(--blue);margin-top:4px}

/* ---------- Shared site footer (sitemap, fintech style) ---------- */
.sf-footer{background:#0A1830;color:#9FB2CC;padding:52px 0 34px;border-top:1px solid rgba(255,255,255,.06);margin-top:40px}
.sf-wrap{max-width:1080px;margin:0 auto;padding:0 22px}
.sf-grid{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr 1fr;gap:40px;padding-bottom:30px;border-bottom:1px solid rgba(255,255,255,.08)}
.sf-logo{font-size:22px;font-weight:800;color:#fff;text-decoration:none;display:inline-block}
.sf-tag{font-size:14px;color:#8FA3C0;line-height:1.6;margin:12px 0 12px;max-width:280px}
.sf-mini{font-size:12px;color:#6E83A3}
.sf-col h4{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:#6E83A3;font-weight:700;margin:0 0 14px}
.sf-col a{display:block;color:#B7C6DD;text-decoration:none;font-size:14px;font-weight:500;margin:0 0 10px;transition:color .12s}
.sf-col a:hover{color:#fff}
.sf-all{color:#34A8EE !important;font-weight:700 !important;margin-top:6px !important}
.sf-bottom{padding-top:20px;font-size:12.5px;color:#8FA3C0;font-weight:600}
.sf-bottom a{color:#B7C6DD;text-decoration:none}.sf-bottom a:hover{color:#fff}
@media(max-width:860px){.sf-grid{grid-template-columns:1fr 1fr;gap:28px 22px}.sf-brand{grid-column:1 / -1}}
@media(max-width:480px){.sf-grid{grid-template-columns:1fr 1fr}}
