/* copytrade.css: the copy-trade pages' own stylesheet (copytrade.html, signal-channel.html, signal-analysis.html,
   signal-ranking.html). Moved out of copytrade.html's inline <style> unchanged (2026-10-20, ctnav release 1.0);
   linked right where the <style> was, before the modules' stylesheets, so the cascade is the same. */
  @font-face { font-family:'IRANSans'; src:url('/assets/assets/fonts/IRANSansMobile.ttf') format('truetype'); font-weight:400; font-display:swap; }
  @font-face { font-family:'IRANSans'; src:url('/assets/assets/fonts/IRANSansMobile_Bold.ttf') format('truetype'); font-weight:700; font-display:swap; }

  /* The education tab's palette: a soft ground under white cards, CrowdFx's
     teal for what is chosen, green and red for results, amber for stars. */
  :root, :root[data-theme="light"] {
    --g-bg:#F3F6F9; --g-card:#FFFFFF; --g-line:#E4EAF0; --g-line-soft:#EEF2F6;
    --g-ink:#0F1B2D; --g-ink-2:#4B5B70; --g-ink-3:#5E6E82;
    --g-teal:#0B9DB0; --g-teal-ink:#087F8E; --g-teal-soft:#E8F7FA; --g-teal-line:#BDE6EE;
    --g-up:#16A34A; --g-up-soft:#EBF8F0; --g-down:#DC2626; --g-down-soft:#FDEFEF;
    --g-flat-soft:#F2F5F8; --g-skeleton:#EDF1F5; --g-star:#B45309;
    --g-amber:#D97706; --g-amber-ink:#B45309; --g-amber-soft:#FEF5E3; --g-amber-line:#F4C470;
    --g-shadow:0 1px 2px rgba(15,27,45,.04), 0 8px 24px rgba(15,27,45,.04);
    --g-lift:0 2px 4px rgba(15,27,45,.05), 0 14px 32px rgba(15,27,45,.08);
    --g-pop:0 4px 10px rgba(15,27,45,.06), 0 18px 40px rgba(15,27,45,.14);
    --g-scrim:rgba(15,27,45,.42);
    --avatar-l:92%; --avatar-ink-l:32%;
  }
  :root[data-theme="dark"] {
    --g-bg:#0B1314; --g-card:#111C1D; --g-line:#22302F; --g-line-soft:#1A2627;
    --g-ink:#E6F1F2; --g-ink-2:#A3B5B7; --g-ink-3:#8A9C9E;
    --g-teal:#29E3E3; --g-teal-ink:#29E3E3; --g-teal-soft:rgba(41,227,227,.10); --g-teal-line:rgba(41,227,227,.35);
    --g-up:#34D399; --g-up-soft:rgba(52,211,153,.10); --g-down:#F87171; --g-down-soft:rgba(248,113,113,.10);
    --g-flat-soft:#162122; --g-skeleton:#172324; --g-star:#FBBF24;
    --g-amber:#FBBF24; --g-amber-ink:#FBBF24; --g-amber-soft:rgba(251,191,36,.12); --g-amber-line:rgba(251,191,36,.5);
    --g-shadow:none; --g-lift:0 0 0 1px var(--g-teal-line);
    --g-pop:0 18px 44px rgba(0,0,0,.55);
    --g-scrim:rgba(0,0,0,.6);
    --avatar-l:22%; --avatar-ink-l:76%;
  }
  * { box-sizing:border-box; }
  html { background:var(--g-bg); }
  body {
    margin:0; background:var(--g-bg); color:var(--g-ink);
    font-family:'Vazirmatn','IRANSans',Tahoma,sans-serif; -webkit-font-smoothing:antialiased;
  }
  body.ct-locked { overflow:hidden; }
  button, select, input { font-family:inherit; color:inherit; }
  .ico { display:block; flex:none; }
  .up { color:var(--g-up); }
  .down { color:var(--g-down); }
  .muted { color:var(--g-ink-3); }
  bdi { unicode-bidi:isolate; }
  :where(button, [role="button"], select, input):focus-visible { outline:2px solid var(--g-teal); outline-offset:2px; }
  /* Inside the phone chip scroller the ring is drawn inward, so the scroller cannot clip it. */
  .ct-chips .ct-chip:focus-visible { outline-offset:-2px; }
  .sr-only {
    position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
    clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0;
  }

  .ct-page { max-width:1280px; margin:0 auto; padding:22px 20px 56px; display:flex; flex-direction:column; gap:16px; }
  .ct-page > * { min-width:0; }

  /* ---- the head: one card, the title and the list's two figures above the tabs ---- */
  .ct-top {
    position:relative; isolation:isolate; overflow:hidden; min-width:0;
    background:var(--g-card); border:1px solid var(--g-line); border-radius:20px; box-shadow:var(--g-shadow);
  }
  .ct-top::before {
    content:''; position:absolute; inset:0 0 auto; height:128px; z-index:-1; pointer-events:none;
    background:linear-gradient(180deg, var(--g-teal-soft), transparent);
  }
  .ct-head { display:flex; align-items:center; flex-wrap:wrap; gap:14px 18px; padding:20px 22px 18px; border-bottom:1px solid var(--g-line-soft); }
  .ct-head-mark {
    flex:none; width:50px; height:50px; border-radius:15px; display:grid; place-items:center;
    background:var(--g-card); color:var(--g-teal-ink); border:1px solid var(--g-teal-line); box-shadow:0 1px 2px rgba(15,27,45,.06);
  }
  .ct-head-text { flex:1 1 240px; min-width:0; }
  .ct-head h1 { margin:0; font-size:25px; font-weight:800; line-height:1.4; }
  .ct-head p { margin:1px 0 0; font-size:14px; line-height:1.8; color:var(--g-ink-2); }
  /* The figures as quiet stats: the value over its label, divided by a hairline. */
  .ct-head-stats { display:flex; align-items:stretch; margin:0; flex:none; min-width:0; }
  .ct-head-stat { display:flex; flex-direction:column-reverse; gap:1px; min-width:0; padding:2px 22px; border-inline-start:1px solid var(--g-line); }
  .ct-head-stat:first-child { padding-inline-start:0; border-inline-start:0; }
  .ct-head-stat:last-child { padding-inline-end:0; }
  .ct-head-stat dt { font-size:12px; font-weight:700; color:var(--g-ink-3); white-space:nowrap; }
  .ct-head-stat dd { margin:0; display:flex; align-items:center; gap:6px; font-size:18px; font-weight:800; line-height:1.5; color:var(--g-ink); white-space:nowrap; }
  .ct-head-sep { color:var(--g-ink-3); font-weight:700; }
  .ct-dot { flex:none; width:8px; height:8px; border-radius:50%; background:var(--g-ink-3); }
  .ct-dot.live { background:var(--g-up); box-shadow:0 0 0 3px var(--g-up-soft); }
  .ct-head-stats.ct-skel { gap:22px; }
  .ct-head-stats.ct-skel .bar { display:block; width:92px; height:40px; }
  /* The tabs: a segmented control across the card under the head, each with its mark. */
  .ct-top > .ct-tabs { display:flex; max-width:none; margin:14px 22px 16px; }
  .ct-top > .ct-tabs button { flex:1 1 0; min-width:0; }
  .ct-tab-ico { color:var(--g-ink-3); transition:color .15s; }
  .ct-tabs button[aria-selected="true"] .ct-tab-ico { color:var(--g-teal); }
  #ctBarBox { scroll-margin-top:112px; }     /* «منابع کانال من» brings the bar into sight under the site's sticky header */

  /* ---- the filter bar: one row of quiet chips, each opening a dropdown list under it ---- */
  .ct-bar {
    position:relative; z-index:5;
    background:var(--g-card); border:1px solid var(--g-line); border-radius:14px;
    padding:8px 10px; display:flex; align-items:center; gap:8px 12px;
  }
  .ct-chips { display:flex; flex-wrap:wrap; align-items:center; gap:4px; flex:1 1 auto; min-width:0; }
  /* A chip: no frame of its own, a soft ground, small type; chosen ones teal. */
  .ct-chip {
    position:relative;     /* holds its .sr-only text inside the phone scroller */
    display:inline-flex; align-items:center; gap:4px; height:30px; padding:0 10px; border-radius:9px; flex:none;
    border:1px solid transparent; background:var(--g-flat-soft); color:var(--g-ink-2);
    font-size:12.5px; font-weight:500; white-space:nowrap; cursor:pointer; transition:border-color .15s, background .15s;
  }
  .ct-chip:hover { background:var(--g-line-soft); border-color:var(--g-line); }
  .ct-chip-k { color:var(--g-ink-3); }
  .ct-chip-v { color:var(--g-ink); font-weight:700; display:inline-flex; align-items:center; gap:3px; }
  .ct-chip-v .ico { color:var(--g-ink-3); }
  .ct-chip .caret { color:var(--g-ink-3); transition:transform .15s; }
  .ct-chip.open { background:var(--g-card); border-color:var(--g-teal-line); }
  .ct-chip.open .caret { transform:rotate(180deg); }
  .ct-chip.on { background:var(--g-teal-soft); }
  .ct-chip.on .ct-chip-k { color:var(--g-teal-ink); opacity:.8; }
  .ct-chip.on .ct-chip-v, .ct-chip.on .ct-chip-v .ico, .ct-chip.on .caret { color:var(--g-teal-ink); }
  .ct-chip.on.open { border-color:var(--g-teal); }
  .ct-chip-star .ct-star-glyph { font-size:14px; line-height:1; color:var(--g-ink-3); }
  .ct-chip-star.on { background:var(--g-teal-soft); color:var(--g-teal-ink); }
  .ct-chip-star.on .ct-star-glyph { color:var(--g-star); }
  /* «منابع کانال من»: the sources of the user's own signal channel. */
  .ct-chip-mine .ct-mine-glyph { color:var(--g-teal-ink); }
  .ct-chip-mine.on { background:var(--g-teal-soft); border-color:var(--g-teal-line); color:var(--g-teal-ink); }
  .ct-chip-mine.on .ct-count { background:var(--g-card); color:var(--g-teal-ink); }
  .ct-count { min-width:18px; height:18px; padding:0 5px; border-radius:99px; background:var(--g-card); color:var(--g-ink-2); font-size:11px; font-weight:800; display:inline-grid; place-items:center; }

  .ct-tools { display:flex; align-items:center; gap:6px; flex:none; margin-inline-start:auto; }
  .ct-seg {
    display:inline-flex; padding:3px; gap:2px; border-radius:11px; background:var(--g-flat-soft);
    border:1px solid var(--g-line-soft); max-width:100%; flex:none;
  }
  .ct-seg button {
    border:0; background:none; min-width:30px; height:26px; padding:0 9px; border-radius:8px; font-size:13px; font-weight:800;
    color:var(--g-ink-2); cursor:pointer; white-space:nowrap; display:inline-flex; align-items:center; justify-content:center; gap:6px;
  }
  .ct-seg button:hover { color:var(--g-ink); }
  .ct-seg button[aria-pressed="true"] { background:var(--g-card); color:var(--g-teal-ink); box-shadow:0 1px 3px rgba(15,27,45,.10); }
  :root[data-theme="dark"] .ct-seg button[aria-pressed="true"] { background:var(--g-teal-soft); box-shadow:none; }
  .ct-seg button[aria-selected="true"] { background:var(--g-card); color:var(--g-teal-ink); box-shadow:0 1px 3px rgba(15,27,45,.10); }
  :root[data-theme="dark"] .ct-seg button[aria-selected="true"] { background:var(--g-teal-soft); box-shadow:none; }
  .ct-reset { border:0; background:none; color:var(--g-teal-ink); font-size:12.5px; font-weight:800; cursor:pointer; padding:4px 6px; white-space:nowrap; }
  .ct-reset:hover { text-decoration:underline; }

  /* The dropdown: a list under its chip, one option a row (a select's menu), the same for every filter. */
  .ct-pop {
    position:absolute; top:calc(100% + 6px); inset-inline-start:0; width:min(272px, 100%); z-index:10;
    background:var(--g-card); border:1px solid var(--g-line); border-radius:12px; box-shadow:var(--g-pop);
    padding:5px; display:flex; flex-direction:column; gap:0;
    max-height:min(70vh, 560px); max-height:min(70dvh, 560px); overflow-y:auto; overscroll-behavior:contain;
  }
  .ct-pop-title { padding:8px 10px 3px; font-size:11px; font-weight:700; color:var(--g-ink-3); }
  .ct-options + .ct-pop-title { margin-top:3px; border-top:1px solid var(--g-line-soft); padding-top:9px; }
  .ct-pop-note {
    margin:4px 0 0; padding:8px 10px 5px; border-top:1px solid var(--g-line-soft);
    font-size:11.5px; line-height:1.85; color:var(--g-ink-3);
  }
  .ct-pop-lock { display:flex; align-items:flex-start; gap:6px; }
  .ct-pop-lock .ico { margin-top:3px; }
  .ct-options, .ct-checks { display:flex; flex-direction:column; gap:1px; }
  /* A row: its tick (single choice) or box (several) first, the words, then what goes with them. */
  .ct-option, .ct-check {
    display:flex; align-items:center; gap:9px; width:100%; min-height:36px; padding:6px 9px; border-radius:8px;
    border:0; background:none; color:var(--g-ink); font-size:13px; font-weight:500; line-height:1.6; text-align:start;
    cursor:pointer;
  }
  .ct-option:hover:not(:disabled), .ct-check:hover { background:var(--g-flat-soft); }
  .ct-option:focus-visible { outline:2px solid var(--g-teal); outline-offset:-2px; background:var(--g-flat-soft); }
  .ct-tick { color:var(--g-teal-ink); visibility:hidden; }
  .ct-option[aria-pressed="true"] { color:var(--g-teal-ink); font-weight:800; }
  .ct-option[aria-pressed="true"] .ct-tick { visibility:visible; }
  .ct-option:disabled { cursor:not-allowed; color:var(--g-ink-3); }
  .ct-option-l { min-width:0; overflow-wrap:anywhere; }
  .ct-option-a { margin-inline-start:auto; display:inline-flex; align-items:center; gap:4px; font-size:11.5px; font-weight:500; color:var(--g-ink-3); white-space:nowrap; }
  .ct-option-caret { transition:transform .15s; }
  .ct-option-caret.up { transform:rotate(180deg); }
  /* «پیشنهادی هر منبع»: first in «ریسک‌ریوارد مبنا»'s list, amber, a hairline under it before the fixed ratios. */
  .ct-option-best { border-bottom:1px solid var(--g-line-soft); border-radius:9px 9px 0 0; margin-bottom:2px; }
  .ct-option-best .ct-option-l { color:var(--g-amber-ink); font-weight:800; }
  .ct-best-note { font-size:11px; }
  .ct-soon { font-size:10px; font-weight:800; padding:1px 6px; border-radius:99px; background:var(--g-line-soft); color:var(--g-ink-3); }
  .ct-custom { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px; padding:4px 9px 6px; }
  .ct-custom label { display:flex; flex-direction:column; gap:4px; font-size:11.5px; font-weight:700; color:var(--g-ink-3); min-width:0; }
  .ct-select {
    width:100%; min-width:0; height:36px; padding:0 8px; border-radius:10px; border:1px solid var(--g-line);
    background:var(--g-card); color:var(--g-ink); font-size:13px; font-weight:700;
  }
  :root[data-theme="dark"] .ct-select { color-scheme:dark; }
  .ct-apply {
    grid-column:1 / -1; height:36px; border:0; border-radius:10px; background:var(--g-teal); color:#fff;
    font-size:13px; font-weight:800; cursor:pointer;
  }
  :root[data-theme="dark"] .ct-apply { color:#0B1314; }
  .ct-pop-error { grid-column:1 / -1; font-size:12px; font-weight:700; color:var(--g-down); }
  .ct-pop-error:empty { display:none; }
  /* Several at once: the native checkbox drawn as a small box, ticked teal. */
  .ct-check input {
    -webkit-appearance:none; appearance:none; flex:none; width:16px; height:16px; margin:0; border-radius:4px;
    border:1.5px solid var(--g-ink-3); background:var(--g-card) no-repeat center / 12px 12px; cursor:pointer;
  }
  .ct-check input:checked {
    border-color:var(--g-teal-ink); background-color:var(--g-teal-ink);
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
  }
  :root[data-theme="dark"] .ct-check input:checked {
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230B1314' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E");
  }
  .ct-check input:focus-visible { outline:2px solid var(--g-teal); outline-offset:2px; }
  @supports selector(:has(*)) {
    .ct-check:has(input:focus-visible) { outline:2px solid var(--g-teal); outline-offset:-2px; background:var(--g-flat-soft); }
    .ct-check input:focus-visible { outline:none; }
  }
  .ct-check:has(input:checked) { color:var(--g-teal-ink); font-weight:800; }
  .ct-check .muted { margin-inline-start:auto; font-size:11.5px; font-weight:500; }
  .ct-link { align-self:flex-start; border:0; background:none; padding:2px 10px 6px; color:var(--g-teal-ink); font-size:12.5px; font-weight:800; cursor:pointer; }
  .ct-link:hover { text-decoration:underline; }
  /* «حداقل وین‌ریت»: a slider (0-100, steps of 5), its value over it, the part kept filled teal from its start (--p). */
  .ct-range { display:flex; flex-direction:column; gap:6px; padding:8px 10px 6px; }
  .ct-range-head { display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
  .ct-range-head label { font-size:12px; font-weight:700; color:var(--g-ink-3); }
  .ct-range-head output { font-size:15px; font-weight:800; color:var(--g-teal-ink); }
  .ct-range.off output { color:var(--g-ink-3); }
  .ct-range-in { -webkit-appearance:none; appearance:none; display:block; width:100%; height:24px; margin:0; background:transparent; cursor:pointer; }
  .ct-range-in::-webkit-slider-runnable-track {
    height:8px; border-radius:99px; background:linear-gradient(to left, var(--g-teal) 0 var(--p, 0%), var(--g-line) var(--p, 0%) 100%);
  }
  :root[dir="ltr"] .ct-range-in::-webkit-slider-runnable-track { background:linear-gradient(to right, var(--g-teal) 0 var(--p, 0%), var(--g-line) var(--p, 0%) 100%); }
  .ct-range-in::-webkit-slider-thumb {
    -webkit-appearance:none; appearance:none; width:20px; height:20px; margin-top:-6px; border-radius:50%;
    background:var(--g-card); border:2px solid var(--g-teal); box-shadow:0 1px 4px rgba(15,27,45,.22);
  }
  .ct-range-in::-moz-range-track { height:8px; border-radius:99px; background:var(--g-line); }
  .ct-range-in::-moz-range-progress { height:8px; border-radius:99px; background:var(--g-teal); }
  .ct-range-in::-moz-range-thumb { width:16px; height:16px; border-radius:50%; background:var(--g-card); border:2px solid var(--g-teal); }
  .ct-range-in:focus-visible { outline:2px solid var(--g-teal); outline-offset:3px; border-radius:99px; }
  .ct-range-in:disabled { cursor:not-allowed; opacity:.5; }
  .ct-range-scale { display:flex; justify-content:space-between; font-size:10.5px; font-weight:700; color:var(--g-ink-3); }
  /* The sort list: each chosen order with its place (a teal number) and direction; its «×» over the row's end. */
  .ct-pop.ct-pop-sort { width:min(336px, 100%); }     /* room for each order's place, direction and «×» on one line */
  .ct-sort-row { position:relative; }
  .ct-sort-row.on .ct-sort-opt { padding-inline-end:40px; }
  .ct-sort-n {
    flex:none; width:20px; height:20px; border-radius:50%; display:inline-grid; place-items:center;
    background:var(--g-teal-ink); color:#fff; font-size:11.5px; font-weight:800; line-height:1;
  }
  :root[data-theme="dark"] .ct-sort-n { background:var(--g-teal); color:#0B1314; }
  .ct-sort-n.off { background:none; border:1.5px dashed var(--g-line); color:var(--g-ink-3); }
  :root[data-theme="dark"] .ct-sort-n.off { background:none; color:var(--g-ink-3); }
  .ct-sort-x {
    position:absolute; top:50%; inset-inline-end:5px; transform:translateY(-50%); width:28px; height:28px; padding:0; border:0; border-radius:8px;
    background:none; color:var(--g-ink-3); cursor:pointer; display:grid; place-items:center;
  }
  .ct-sort-x:hover, .ct-sort-x:focus-visible { color:var(--g-down); background:var(--g-down-soft); }
  .ct-sort-x:focus-visible { outline:2px solid var(--g-teal); outline-offset:-2px; }
  .ct-sort-more { font-size:11px; font-weight:800; padding:0 5px; border-radius:99px; background:var(--g-card); color:var(--g-ink-2); }
  .ct-chip.on .ct-sort-more { color:var(--g-teal-ink); }

  /* ---- list head ---- */
  .ct-found { display:flex; align-items:center; gap:4px 12px; justify-content:space-between; flex-wrap:wrap; padding:0 4px; font-size:13px; color:var(--g-ink-3); margin-bottom:12px; }
  .ct-found b { color:var(--g-ink); }
  /* Under «پیشنهادی هر منبع»: the figures are chosen on the same recent results (a quiet line under the head). */
  .ct-note.ct-best-caveat { margin:-6px 4px 12px; }
  .ct-notice { padding:10px 14px; border-radius:12px; background:var(--g-down-soft); color:var(--g-down); font-size:13px; font-weight:700; margin-bottom:12px; }
  .ct-busy { opacity:.45; transition:opacity .15s; }

  /* ---- «جمع منابع»: the sum of the filtered (or the user's chosen) sources, in the Mother Card's place ----
     The Mother Card's family (mychannel.css .mc-mother): the photos, a title line, the figures, the actions;
     one row on wide screens, wrapped below. While it shows, the Mother Card's slot gives way. */
  #ctMotherBox.ct-agg-on, #ctMotherBox.ct-agg-on .mc-mother { display:none !important; }
  #ctAggBox { min-width:0; }
  .ct-agg {
    position:relative; min-width:0;
    display:grid; grid-template-columns:auto minmax(0, 1fr) auto auto; grid-template-areas:"pics id figs acts" "note note note note";
    align-items:center; gap:4px 24px; padding:12px 18px;
    background:var(--g-card); border:1px solid var(--g-teal-line); border-inline-start:4px solid var(--g-teal); border-radius:18px; box-shadow:var(--g-shadow);
  }
  .ct-agg-avatars { grid-area:pics; display:flex; align-items:center; min-width:0; }
  .ct-agg-avatars .ct-avatar { width:32px; height:32px; font-size:12.5px; box-shadow:0 0 0 2px var(--g-card); }
  .ct-agg-avatars .ct-avatar + .ct-avatar, .ct-agg-avatars .ct-agg-more { margin-inline-start:-8px; }
  .ct-agg-more {
    position:relative; display:inline-grid; place-items:center; min-width:32px; height:32px; padding:0 6px; border-radius:99px;
    background:var(--g-flat-soft); color:var(--g-ink-2); font-size:12px; font-weight:800; box-shadow:0 0 0 2px var(--g-card);
  }
  .ct-agg-id { grid-area:id; min-width:0; display:flex; flex-direction:column; gap:1px; }
  .ct-agg h2 { margin:0; min-width:0; display:flex; align-items:center; flex-wrap:wrap; gap:4px 8px; font-size:15.5px; font-weight:800; line-height:1.6; }
  .ct-agg h2 .ico { color:var(--g-teal-ink); }
  .ct-agg-tag { font-size:11px; font-weight:800; padding:2px 8px; border-radius:99px; background:var(--g-teal-soft); color:var(--g-teal-ink); white-space:nowrap; }
  .ct-agg-sub { margin:0; font-size:12px; font-weight:600; line-height:1.7; color:var(--g-ink-3); }
  .ct-agg-figs { grid-area:figs; margin:0; display:flex; align-items:flex-start; min-width:0; transition:opacity .15s; }
  .ct-agg-figs.moving { opacity:.6; }
  .ct-agg-fig { display:flex; flex-direction:column; min-width:0; padding-inline:16px; border-inline-start:1px solid var(--g-line); }
  .ct-agg-fig:first-child { padding-inline-start:0; border-inline-start:0; }
  .ct-agg-fig:last-child { padding-inline-end:0; }
  .ct-agg-fig dt { font-size:11.5px; font-weight:700; line-height:1.6; color:var(--g-ink-3); white-space:nowrap; }
  .ct-agg-fig dd { margin:0; min-height:24px; font-size:16px; font-weight:800; line-height:1.5; color:var(--g-ink); white-space:nowrap; font-variant-numeric:tabular-nums; }
  /* Its growth in green or red, a shade deeper so 16 px figures read on the light card (4.5:1). */
  .ct-agg-fig dd.up { color:color-mix(in srgb, var(--g-up) 70%, var(--g-ink)); }
  .ct-agg-fig dd.down { color:color-mix(in srgb, var(--g-down) 70%, var(--g-ink)); }
  .ct-agg-fig .bar { display:inline-block; width:46px; height:16px; margin-top:4px; border-radius:6px; background:var(--g-skeleton); animation:ct-pulse 1.4s ease-in-out infinite; }
  .ct-agg-acts { grid-area:acts; display:flex; flex-wrap:wrap; gap:6px; justify-content:flex-end; }
  .ct-agg-act {
    display:inline-flex; align-items:center; gap:5px; height:30px; padding:0 10px; border-radius:9px; border:1px solid var(--g-line);
    background:var(--g-card); color:var(--g-teal-ink); font-size:12.5px; font-weight:800; white-space:nowrap; cursor:pointer;
  }
  .ct-agg-act:hover { border-color:var(--g-teal-line); background:var(--g-teal-soft); }
  .ct-agg-note { grid-area:note; margin:0; font-size:12.5px; font-weight:700; line-height:1.8; color:var(--g-ink-3); }
  .ct-agg-note.bad { color:var(--g-down); }
  .ct-link-inline { border:0; background:none; padding:0; font:inherit; color:var(--g-teal-ink); font-weight:800; text-decoration:underline; cursor:pointer; }
  @media (prefers-reduced-motion:reduce) { .ct-agg-fig .bar { animation:none; } .ct-agg-figs, .ct-pick, .ct-x { transition:none; } }
  /* Narrower wide screens: the figures under the photos, the title and the actions. */
  @media (max-width:1080px) {
    .ct-agg { grid-template-columns:auto minmax(0, 1fr) auto; grid-template-areas:"pics id acts" "figs figs figs" "note note note"; gap:8px 18px; }
  }
  /* Phones: the photos and the actions, the title, then the four figures two by two, each value over its label. */
  @media (max-width:600px) {
    .ct-agg { grid-template-columns:minmax(0, 1fr) auto; grid-template-areas:"pics acts" "id id" "figs figs" "note note"; gap:10px 12px; padding:12px 14px; }
    .ct-agg-figs { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px; }
    .ct-agg-fig, .ct-agg-fig:first-child, .ct-agg-fig:last-child { padding:8px 10px; border:0; border-radius:12px; background:var(--g-flat-soft); }
    .ct-agg-fig dd { order:-1; font-size:15px; }
    .ct-agg-fig dt { font-size:11px; white-space:normal; }
  }
  /* The narrowest phones: the actions on a row of their own under the photos, never over them (5 photos and «+N» are ~152 px). */
  @media (max-width:360px) {
    .ct-agg { grid-template-columns:minmax(0, 1fr); grid-template-areas:"pics" "acts" "id" "figs" "note"; }
    .ct-agg-acts { justify-content:flex-start; }
  }

  /* ---- avatar, name, tags, bio, star ---- */
  .ct-avatar {
    --h:190; width:48px; height:48px; border-radius:50%; flex:none; overflow:hidden; display:grid; place-items:center;
    background:hsl(var(--h) 55% var(--avatar-l)); color:hsl(var(--h) 50% var(--avatar-ink-l));
    font-size:19px; font-weight:800; position:relative;
  }
  .ct-avatar img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity .25s; }
  .ct-avatar img.on { opacity:1; }

  .ct-name { font-size:15px; font-weight:800; line-height:1.5; unicode-bidi:plaintext; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  /* A card's or row's name is its button; its ::after spreads the hit area over the whole card or row. */
  .ct-open {
    display:block; max-width:100%; min-width:0; margin:0; padding:0; border:0; background:none; color:inherit;
    font-family:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent;
  }
  .ct-open::after { content:''; position:absolute; inset:0; z-index:1; border-radius:inherit; }
  .ct-open:focus-visible { outline:none; }
  .ct-open:focus-visible::after { outline:2px solid var(--g-teal); outline-offset:2px; }
  .ct-card .ct-open::after { border-radius:18px; }
  .ct-line .ct-open:focus-visible::after { outline-offset:-2px; }   /* .ct-rows clips anything outside */
  /* A card's name and «(۶۷ روز)» on one line: a long name ends in an ellipsis, the days stay whole. */
  .ct-card-name { display:flex; align-items:baseline; gap:5px; unicode-bidi:isolate; }
  .ct-name-text { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .ct-days { flex:none; font-size:12.5px; font-weight:600; color:var(--g-ink-3); white-space:nowrap; }
  .ct-since { font-size:12px; line-height:1.7; color:var(--g-ink-3); font-weight:600; }
  /* A source CrowdFx no longer reads well: amber when its messages stopped arriving, grey otherwise. */
  .ct-health.cut { color:var(--g-star); }
  .ct-line .ct-since { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .ct-tags { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
  .ct-tag { font-size:11px; font-weight:800; padding:2px 8px; border-radius:99px; background:var(--g-teal-soft); color:var(--g-teal-ink); white-space:nowrap; }
  .ct-tag.soft { background:var(--g-flat-soft); color:var(--g-ink-2); }
  .ct-rank { font-size:11px; font-weight:800; padding:2px 8px; border-radius:99px; background:var(--g-ink); color:var(--g-card); white-space:nowrap; }
  /* The platform's 0-100 score, beside the rank. */
  .ct-score { flex:none; font-size:11px; font-weight:800; padding:1px 7px; border-radius:99px; border:1px solid var(--g-teal-line); background:var(--g-card); color:var(--g-teal-ink); white-space:nowrap; }
  /* The channel's own words: each paragraph reads in its own direction. */
  .ct-bio { font-size:12.5px; line-height:1.9; color:var(--g-ink-2); overflow:hidden; display:-webkit-box; -webkit-box-orient:vertical; white-space:pre-line; unicode-bidi:plaintext; overflow-wrap:anywhere; }
  .ct-bio.empty, .ct-about.empty { color:var(--g-ink-3); }
  /* A Latin name or card bio keeps its own reading order but sits on the page's side. */
  .ct-name, .ct-bio { text-align:right; }
  :root[dir="ltr"] .ct-name, :root[dir="ltr"] .ct-bio { text-align:left; }
  .ct-star {
    position:relative; z-index:2;     /* above the card's open button */
    flex:none; width:32px; height:32px; border-radius:10px; border:0; background:none; cursor:pointer;
    display:grid; place-items:center; font-size:19px; line-height:1; color:var(--g-ink-3); transition:color .15s, background .15s;
  }
  .ct-star:hover { background:var(--g-flat-soft); color:var(--g-star); }
  .ct-star.on { color:var(--g-star); }
  .ct-icon-btn {
    width:34px; height:34px; border-radius:10px; border:1px solid var(--g-line); background:var(--g-card);
    display:grid; place-items:center; cursor:pointer; color:var(--g-ink-2);
  }
  .ct-icon-btn:hover { color:var(--g-teal-ink); border-color:var(--g-teal-line); }
  /* «جمع منابع»'s «+» beside the star (✓ while the source is in the user's selection), above the card's open button. */
  .ct-pick {
    position:relative; z-index:2; flex:none; width:32px; height:32px; padding:0; border-radius:10px; border:1px dashed var(--g-line);
    background:none; color:var(--g-ink-3); cursor:pointer; display:grid; place-items:center; transition:color .15s, background .15s, border-color .15s;
  }
  .ct-pick .ico { stroke-width:2.2; }
  .ct-pick:hover { color:var(--g-teal-ink); border-color:var(--g-teal-line); background:var(--g-teal-soft); }
  .ct-pick.on { border:1px solid var(--g-teal); background:var(--g-teal-soft); color:var(--g-teal-ink); }
  /* A card's star with its «+» right under it: a column at the card's top end, the name's lines keeping their room. */
  .ct-card-acts { flex:none; display:flex; flex-direction:column; align-items:center; gap:4px; margin:-4px; margin-inline-start:0; position:relative; z-index:2; }
  .ct-card .ct-card-acts .ct-star { margin:0; }
  .ct-card.picked, .ct-card.picked:hover { border-color:var(--g-teal); }
  /* With a filter on, «×» takes a source out of the filtered set: at a card's corner, beside a row's star. */
  .ct-x {
    position:relative; z-index:2; flex:none; width:24px; height:24px; padding:0; border-radius:50%; border:1px solid var(--g-line);
    background:var(--g-card); color:var(--g-ink-3); cursor:pointer; display:grid; place-items:center; transition:color .15s, border-color .15s;
  }
  .ct-x::before { content:''; position:absolute; inset:-5px; border-radius:50%; }   /* a 34 px hit area round the 24 px mark */
  .ct-x .ico { stroke-width:2.4; }
  .ct-x:hover, .ct-x:focus-visible { color:var(--g-down); border-color:var(--g-down); }
  .ct-card > .ct-x { position:absolute; top:-10px; inset-inline-end:-10px; box-shadow:var(--g-shadow); }

  /* ---- grid ---- */
  .ct-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(296px, 1fr)); gap:14px; }
  .ct-card {
    position:relative; isolation:isolate;
    display:flex; flex-direction:column; gap:12px; text-align:start; min-width:0;
    background:var(--g-card); border:1px solid var(--g-line); border-radius:18px; padding:16px; box-shadow:var(--g-shadow);
    cursor:pointer; transition:box-shadow .15s, border-color .15s, transform .15s;
  }
  .ct-card:hover { border-color:var(--g-teal-line); box-shadow:var(--g-lift); transform:translateY(-1px); }
  .ct-card-top { display:flex; align-items:flex-start; gap:12px; min-width:0; }
  .ct-card-id { min-width:0; flex:1; display:flex; flex-direction:column; gap:1px; }
  .ct-card .ct-star { margin:-4px; margin-inline-start:0; }
  .ct-card .ct-bio { -webkit-line-clamp:2; min-height:calc(1.9em * 2); }
  .ct-perf { position:relative; border-radius:14px; background:var(--g-flat-soft); padding:12px 12px 0; overflow:hidden; }
  .ct-perf.up { background:var(--g-up-soft); } .ct-perf.down { background:var(--g-down-soft); }
  .ct-perf-head { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:2px 8px; }
  .ct-perf-value { font-size:22px; font-weight:800; color:var(--g-ink); }
  .ct-perf.up .ct-perf-value { color:var(--g-up); } .ct-perf.down .ct-perf-value { color:var(--g-down); }
  .ct-per-signal { margin-top:6px; font-size:12px; font-weight:600; color:var(--g-ink-3); }
  .ct-per-signal b { color:var(--g-ink); font-weight:800; }
  .ct-perf-label { font-size:11.5px; font-weight:700; color:var(--g-ink-3); }
  .ct-spark { display:block; width:100%; height:54px; margin-top:4px; }
  .ct-stats { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:6px; }
  .ct-stat { display:flex; flex-direction:column; align-items:center; gap:2px; padding:8px 4px; border-radius:12px; border:1px solid var(--g-line-soft); min-width:0; }
  .ct-stat em { font-style:normal; font-size:11.5px; font-weight:700; color:var(--g-ink-3); white-space:nowrap; }
  .ct-stat b { font-size:14.5px; font-weight:800; white-space:nowrap; }
  /* An ⓘ (a source's «ریسک‌ریوارد پیشنهادی»): a small mark with a finger-sized hit area. */
  .ct-info {
    position:relative; z-index:2; flex:none; display:inline-grid; place-items:center; width:22px; height:22px; margin:-4px -3px;
    padding:0; border:0; border-radius:50%; background:none; color:var(--g-ink-3); cursor:pointer;
  }
  .ct-info:hover, .ct-info[aria-expanded="true"] { color:var(--g-teal-ink); background:var(--g-teal-soft); }
  .ct-info .ico { width:15px; height:15px; }
  /* Its word: a small box by the ⓘ, over everything, never past the screen's edges (placeTip). */
  .ct-htip {
    position:fixed; z-index:90; top:0; left:0; width:min(300px, calc(100vw - 24px)); padding:11px 13px;
    max-height:calc(100vh - 24px); overflow-y:auto; overscroll-behavior:contain;
    border-radius:12px; border:1px solid var(--g-line); background:var(--g-card); color:var(--g-ink-2); box-shadow:var(--g-pop);
    font-family:'Vazirmatn','IRANSans',Tahoma,sans-serif; font-size:12.5px; line-height:1.9; text-align:start; direction:rtl;
  }
  .ct-htip[hidden] { display:none; }
  .ct-htip p { margin:4px 0 0; }
  .ct-htip-h { font-size:13px; font-weight:800; color:var(--g-ink); }
  /* «کپی» at the foot of each card: no action yet, but above the card's open button. */
  .ct-copy {
    position:relative; z-index:2; margin-top:auto;
    width:100%; height:33px; padding:0 12px; border:0; border-radius:10px; background:var(--g-up); color:#fff;
    font-family:inherit; font-size:13.5px; font-weight:800; line-height:1; cursor:pointer; transition:filter .15s;
  }
  .ct-copy:hover { filter:brightness(.92); }
  .ct-copy:focus-visible { outline:2px solid var(--g-teal); outline-offset:2px; }
  :root[data-theme="dark"] .ct-copy { color:#0B1314; }
  :root[data-theme="dark"] .ct-copy:hover { filter:brightness(1.08); }

  /* ---- rows ---- */
  .ct-rows { background:var(--g-card); border:1px solid var(--g-line); border-radius:18px; box-shadow:var(--g-shadow); overflow:hidden; }
  .ct-rows-head, .ct-line {
    /* The fifth, «سیگنال در روز» (2026-10-17): room for its head chosen, with its arrow and place. */
    display:grid; grid-template-columns:52px minmax(0, 1fr) 112px 72px 96px 68px 104px 112px 96px 66px;
    gap:12px; align-items:center; padding:10px 14px;
  }
  /* The row's end: «+» (or «×» with a filter on) and the star. */
  .ct-line-acts { display:flex; align-items:center; justify-content:flex-end; gap:2px; min-width:0; }
  .ct-line.picked { background:var(--g-teal-soft); }
  .ct-rows-head .ct-sort-at { font-size:10px; font-weight:800; }
  .ct-rows-head { background:var(--g-flat-soft); font-size:12px; font-weight:800; color:var(--g-ink-3); }
  .ct-rows-head button { border:0; background:none; padding:0; font:inherit; color:inherit; cursor:pointer; display:inline-flex; align-items:center; gap:4px; white-space:nowrap; }
  .ct-rows-head button[aria-pressed="true"] { color:var(--g-teal-ink); padding:2px 6px; margin:-2px -6px; border-radius:8px; background:var(--g-teal-soft); }
  .ct-rows-head .ct-dir { stroke-width:2.6; }
  .ct-rows-head .num, .ct-line .num { text-align:center; justify-self:center; }
  .ct-line { position:relative; isolation:isolate; border-top:1px solid var(--g-line-soft); cursor:pointer; font-size:13.5px; font-weight:700; }
  .ct-line:hover { background:var(--g-flat-soft); }
  .ct-line-rank { text-align:center; font-size:13px; font-weight:800; color:var(--g-ink-3); }
  .ct-line-score { display:block; margin-top:2px; font-size:10px; font-weight:700; color:var(--g-teal-ink); white-space:nowrap; }
  .ct-line-id { display:flex; align-items:center; gap:12px; min-width:0; }
  .ct-line-id > div { min-width:0; flex:1; display:flex; flex-direction:column; gap:1px; }
  .ct-name-row { display:flex; align-items:center; gap:6px; min-width:0; }
  .ct-name-row .ct-name { min-width:0; }
  .ct-line .ct-avatar { width:40px; height:40px; font-size:16px; }
  .ct-line .ct-bio { -webkit-line-clamp:1; font-size:12px; white-space:normal; }
  .ct-line .c-days { display:flex; flex-direction:column; align-items:center; line-height:1.5; }
  .ct-line .c-days small { font-size:11px; font-weight:600; color:var(--g-ink-3); white-space:nowrap; }
  .ct-line .ct-spark { height:34px; margin:0; }
  .ct-rows-head .ct-growth, .ct-line .ct-growth { justify-self:end; text-align:end; }
  .ct-line .ct-growth { font-size:15px; font-weight:800; }
  /* A row's «ریسک‌ریوارد ثابت» or «دستی ۱:۱٫۵» goes under the name when both do not fit on its line (the name keeps its room). */
  .ct-name-row.has-best { flex-wrap:wrap; row-gap:2px; }
  .ct-line .sub { display:none; }

  .ct-more { display:flex; justify-content:center; padding:4px; margin-top:14px; }
  .ct-more button {
    border:1px solid var(--g-line); background:var(--g-card); color:var(--g-ink-2); border-radius:12px;
    padding:10px 18px; font-size:13.5px; font-weight:800; cursor:pointer;
  }
  .ct-more button:hover { border-color:var(--g-teal-line); color:var(--g-teal-ink); }

  /* ---- states ---- */
  .ct-state {
    background:var(--g-card); border:1px solid var(--g-line); border-radius:18px; padding:36px 20px; text-align:center;
    display:flex; flex-direction:column; align-items:center; gap:10px; color:var(--g-ink-2); font-size:14px; line-height:2;
  }
  .ct-state .ico { color:var(--g-teal); }
  .ct-state a, .ct-state button {
    border:0; border-radius:12px; padding:9px 18px; background:var(--g-teal); color:#fff; font-size:13.5px; font-weight:800;
    text-decoration:none; cursor:pointer;
  }
  :root[data-theme="dark"] .ct-state a, :root[data-theme="dark"] .ct-state button { color:#0B1314; }
  .ct-skel { pointer-events:none; }
  .ct-skel .bar { background:var(--g-skeleton); border-radius:8px; animation:ct-pulse 1.4s ease-in-out infinite; }
  @keyframes ct-pulse { 50% { opacity:.55; } }
  .ct-spin {
    display:inline-block; flex:none; width:16px; height:16px; border-radius:50%;
    border:2px solid var(--g-teal-line); border-top-color:var(--g-teal); animation:ct-rot .8s linear infinite;
  }
  @keyframes ct-rot { to { transform:rotate(360deg); } }
  @media (prefers-reduced-motion:reduce) {
    .ct-skel .bar { animation:none; } .ct-card, .ct-chip, .ct-chip .caret { transition:none; }
    .ct-badge-dot { animation:none; } .ct-step-bar > i, .ct-tabs button, .ct-tab-ico { transition:none; }
    .ct-spin { animation:none; width:10px; height:10px; border:0; background:var(--g-teal); }   /* a still dot */
  }

  /* ---- the tabs and their panes ---- */
  .ct-tabs { align-self:flex-start; padding:4px; gap:4px; border-radius:14px; }
  .ct-tabs button { height:40px; padding:0 16px; border-radius:10px; font-size:14px; gap:8px; transition:background .15s, color .15s; }
  .ct-pane { display:flex; flex-direction:column; gap:16px; min-width:0; }
  .ct-pane[hidden] { display:none; }
  .ct-pane > * { min-width:0; }
  .ct-mine { background:var(--g-up-soft); color:var(--g-up); }

  /* ---- «افزودن کانال دلخواه» ---- */
  .ct-add-top { display:flex; flex-direction:column; gap:16px; }
  .ct-add-box {
    background:var(--g-card); border:1px solid var(--g-line); border-radius:18px; box-shadow:var(--g-shadow);
    padding:18px; display:flex; flex-direction:column; gap:12px;
  }
  .ct-add-box h2 { margin:0; font-size:17px; font-weight:800; display:flex; align-items:center; gap:8px; }
  .ct-add-box h2 .ico { color:var(--g-teal); }
  .ct-add-lead { margin:0; font-size:13.5px; line-height:1.9; color:var(--g-ink-2); max-width:760px; }
  .ct-add-h { margin:0; padding:0 4px; font-size:15px; font-weight:800; }
  .ct-add-form { display:flex; flex-direction:column; gap:8px; max-width:640px; }
  .ct-add-label { font-size:13px; font-weight:800; color:var(--g-ink-2); }
  .ct-add-row { display:flex; gap:8px; }
  .ct-add-input {
    flex:1; min-width:0; height:44px; padding:0 14px; border-radius:12px; border:1px solid var(--g-line);
    background:var(--g-card); color:var(--g-ink); font-size:15px; font-weight:600;
  }
  .ct-add-input::placeholder { color:var(--g-ink-3); font-weight:500; }
  .ct-add-input:focus { border-color:var(--g-teal); }
  .ct-add-input[aria-invalid="true"] { border-color:var(--g-down); }
  .ct-add-input:disabled { background:var(--g-flat-soft); color:var(--g-ink-3); cursor:not-allowed; }
  :root[data-theme="dark"] .ct-add-input { color-scheme:dark; }
  .ct-add-submit {
    flex:none; height:44px; padding:0 18px; border:0; border-radius:12px; background:var(--g-teal); color:#fff;
    font-size:14px; font-weight:800; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; gap:8px; white-space:nowrap;
  }
  :root[data-theme="dark"] .ct-add-submit { color:#0B1314; }
  .ct-add-submit:disabled { background:var(--g-flat-soft); color:var(--g-ink-3); cursor:not-allowed; }
  .ct-add-submit .ct-spin { border-color:var(--g-line); border-top-color:var(--g-ink-3); }
  .ct-add-hint { margin:0; font-size:12px; line-height:1.9; color:var(--g-ink-3); }
  .ct-add-limit {
    margin:0; padding:9px 12px; border-radius:12px; background:var(--g-flat-soft); color:var(--g-ink-2);
    font-size:13px; font-weight:700; line-height:1.8; display:flex; align-items:center; gap:8px;
  }
  .ct-add-limit .ico { color:var(--g-teal); }
  .ct-add-error { margin:0; font-size:13px; font-weight:700; color:var(--g-down); }
  .ct-add-soon { display:flex; flex-direction:column; align-items:flex-start; gap:10px; }
  .ct-add-soon p { margin:0; font-size:14px; line-height:1.9; color:var(--g-ink-2); }
  .ct-add-soon .ico { color:var(--g-teal); }
  .ct-soon-badge { font-size:13px; font-weight:800; padding:4px 14px; border-radius:99px; background:var(--g-teal-soft); color:var(--g-teal-ink); }
  /* min-height: a box's one action is a full tap target (the review of 21 October 2026: the signed-out channel leaf's
     «ورود / ثبت‌نام» was 35 px). */
  .ct-add-btn {
    display:inline-flex; align-items:center; justify-content:center; min-height:44px; border:0; border-radius:12px; padding:9px 18px;
    background:var(--g-teal); color:#fff; font-size:13.5px; font-weight:800; text-decoration:none; cursor:pointer;
  }
  :root[data-theme="dark"] .ct-add-btn { color:#0B1314; }
  .ct-strip {
    margin:0; padding:10px 14px; border-radius:12px; font-size:13px; font-weight:700; line-height:1.9;
    background:var(--g-teal-soft); color:var(--g-teal-ink);
  }
  .ct-strip.ok { background:var(--g-up-soft); color:var(--g-up); }
  .ct-strip.bad { background:var(--g-down-soft); color:var(--g-down); }
  .ct-strip.warn { background:var(--g-flat-soft); color:var(--g-star); }

  .ct-add-h { display:flex; align-items:center; gap:8px; }

  /* A request: its address and status, the estimate, the five steps, then what came of it. */
  .ct-reqs { display:flex; flex-direction:column; gap:12px; }
  .ct-reqs:empty { display:none; }
  .ct-req {
    background:var(--g-card); border:1px solid var(--g-line); border-radius:18px; box-shadow:var(--g-shadow);
    padding:18px 20px; display:flex; flex-direction:column; gap:14px; min-width:0;
  }
  .ct-req.hl { border-color:var(--g-teal); }
  .ct-req-head { display:flex; align-items:center; gap:10px 12px; flex-wrap:wrap; }
  .ct-req-mark { flex:none; width:40px; height:40px; border-radius:12px; display:grid; place-items:center; background:var(--g-teal-soft); color:var(--g-teal-ink); }
  .ct-req-mark.ok { background:var(--g-up-soft); color:var(--g-up); }
  .ct-req-mark.bad { background:var(--g-down-soft); color:var(--g-down); }
  .ct-req-mark.ok .ico, .ct-req-mark.bad .ico { stroke-width:2.4; }
  .ct-req-id { flex:1 1 180px; min-width:0; display:flex; flex-direction:column; gap:1px; }
  .ct-req-input { align-self:flex-start; max-width:100%; font-size:15.5px; font-weight:800; overflow-wrap:anywhere; }   /* on the page's side, whatever its direction */
  .ct-req-status { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-inline-start:auto; }
  .ct-req-del { display:inline-flex; align-items:center; gap:4px; height:40px; padding:0 14px; border-radius:99px; border:1px solid var(--g-line);
    background:transparent; color:var(--g-ink-3); font:inherit; font-size:12.5px; font-weight:700; cursor:pointer; }
  .ct-req-del:hover, .ct-req-del:focus-visible, .ct-req-del[aria-expanded="true"] { color:var(--g-down); border-color:var(--g-down); }
  .ct-req-del:disabled { opacity:.5; cursor:default; }
  /* «حذف»'s question, in the card under its head (owner, 2026-10-20 ~20:40; no window.confirm). */
  .ct-req-ask { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; padding:10px 14px; border-radius:12px;
    border:1px solid var(--g-down); background:var(--g-down-soft); }
  .ct-req-q { font-size:13.5px; font-weight:800; color:var(--g-ink); }
  .ct-req-btns { display:inline-flex; gap:8px; margin-inline-start:auto; }
  .ct-req-yes, .ct-req-no { min-height:44px; padding:0 16px; border-radius:10px; font:inherit; font-size:13.5px; font-weight:800; cursor:pointer; }
  .ct-req-yes { border:1px solid var(--g-down); background:var(--g-down); color:#fff; }
  :root[data-theme="dark"] .ct-req-yes { color:#0B1314; }
  .ct-req-no { border:1px solid var(--g-line); background:var(--g-card); color:var(--g-ink); }
  .ct-req-yes:focus-visible, .ct-req-no:focus-visible { outline:2px solid var(--g-teal); outline-offset:2px; }
  .ct-req-yes:disabled, .ct-req-no:disabled { opacity:.6; cursor:default; }
  .ct-req-err { flex:1 1 100%; margin:0; font-size:13px; font-weight:700; color:var(--g-down); }
  .ct-badge { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:800; padding:4px 11px; border-radius:99px;
    background:var(--g-teal-soft); color:var(--g-teal-ink); white-space:nowrap; }
  .ct-badge.ok { background:var(--g-up-soft); color:var(--g-up); }
  .ct-badge.bad { background:var(--g-down-soft); color:var(--g-down); }
  .ct-badge-dot { flex:none; width:6px; height:6px; border-radius:50%; background:currentColor; animation:ct-pulse 1.4s ease-in-out infinite; }
  /* The estimate (contract C3): when the card should be ready; amber while the queue is long. */
  .ct-eta {
    display:flex; flex-wrap:wrap; align-items:center; gap:6px 20px; padding:9px 14px; border-radius:12px;
    background:var(--g-flat-soft); color:var(--g-ink-2); font-size:13px; font-weight:700; line-height:1.8;
  }
  @media (min-width:761px) { .ct-eta { align-self:flex-start; max-width:100%; } }   /* wide screens: as wide as its words */
  .ct-eta > span { display:inline-flex; align-items:center; gap:7px; min-width:0; }
  .ct-eta .ico { color:var(--g-teal-ink); }
  .ct-eta b { font-weight:800; color:var(--g-ink); }
  .ct-req-queue { color:var(--g-teal-ink); font-weight:800; }
  .ct-eta.busy { background:color-mix(in srgb, var(--g-star) 8%, var(--g-card)); border:1px solid color-mix(in srgb, var(--g-star) 24%, var(--g-card)); }
  .ct-eta-busy, .ct-eta-busy .ico { color:var(--g-star); }
  /* The five steps in a row, each joined to the next (phones: one under the other, below). */
  .ct-steps {
    list-style:none; margin:0; padding:16px 0 0; border-top:1px solid var(--g-line-soft);
    display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:0;
  }
  .ct-step { position:relative; display:flex; flex-direction:column; align-items:flex-start; gap:8px; min-width:0;
    padding-inline-end:16px; font-size:13.5px; font-weight:700; color:var(--g-ink-3); }
  .ct-step:not(:last-child)::after {
    content:''; position:absolute; top:13px; inset-inline-start:36px; inset-inline-end:8px; height:2px; border-radius:2px; background:var(--g-line);
  }
  .ct-step.done:not(:last-child)::after { background:var(--g-up); }
  .ct-step.done, .ct-step.active, .ct-step.failed { color:var(--g-ink); }
  .ct-step-mark { flex:none; width:28px; height:28px; border-radius:50%; display:grid; place-items:center; font-size:12.5px; font-weight:800; }
  .ct-step.done .ct-step-mark { background:var(--g-up-soft); color:var(--g-up); }
  .ct-step.done .ct-step-mark .ico { stroke-width:2.6; }
  .ct-step.active .ct-step-mark { background:var(--g-teal-soft); box-shadow:0 0 0 3px var(--g-card), 0 0 0 4px var(--g-teal-line); }
  .ct-step.waiting .ct-step-mark { border:2px solid var(--g-line); color:var(--g-ink-3); }
  .ct-step.failed .ct-step-mark { background:var(--g-down-soft); color:var(--g-down); }
  .ct-step.failed .ct-step-mark .ico { stroke-width:2.6; }
  .ct-step.skipped .ct-step-mark { background:var(--g-flat-soft); color:var(--g-ink-3); }
  .ct-step-body { width:100%; min-width:0; display:flex; flex-direction:column; gap:3px; line-height:1.8; }
  .ct-step-head { display:flex; align-items:baseline; flex-wrap:wrap; gap:0 8px; min-width:0; }
  .ct-step-label { overflow-wrap:anywhere; }
  .ct-step-pct { font-size:13.5px; font-weight:800; color:var(--g-teal-ink); white-space:nowrap; }
  .ct-step-bar { display:block; width:100%; max-width:200px; height:5px; margin:2px 0 3px; border-radius:99px; overflow:hidden; background:var(--g-line-soft); }
  :root[data-theme="dark"] .ct-step-bar { background:var(--g-line); }
  .ct-step-bar > i { display:block; height:100%; border-radius:inherit; background:var(--g-teal); transition:width .4s ease; }
  .ct-step-at { font-size:11.5px; font-weight:600; color:var(--g-ink-3); white-space:nowrap; }
  .ct-step-note { font-size:12px; font-weight:600; color:var(--g-ink-3); }
  .ct-step-live { font-size:12.5px; font-weight:700; color:var(--g-teal-ink); line-height:1.8; }
  .ct-step-live bdi { white-space:nowrap; }     /* «۸۰۰ / ۱٬۸۳۵» stays on one line */

  .ct-result { display:flex; flex-direction:column; gap:12px; border-top:1px solid var(--g-line-soft); padding-top:14px; }
  /* Wide screens: the card beside its numbers and its signals. */
  .ct-result-body { display:grid; grid-template-columns:minmax(0, 1fr); gap:14px; align-items:start; min-width:0; }
  .ct-result-body.has-card { grid-template-columns:minmax(0, 400px) minmax(0, 1fr); }
  .ct-result-more { display:flex; flex-direction:column; gap:12px; min-width:0; }
  .ct-add-card { width:100%; max-width:440px; cursor:default; }
  .ct-add-card:hover { transform:none; border-color:var(--g-line); box-shadow:var(--g-shadow); }
  .ct-add-card .ct-name { white-space:normal; overflow-wrap:anywhere; }
  .ct-add-card .ct-stat em { white-space:normal; text-align:center; line-height:1.5; }
  .ct-add-card .ct-stat b { font-size:13.5px; white-space:normal; text-align:center; }
  .ct-add-actions { display:flex; gap:8px; }
  .ct-add-actions .ct-copy { flex:1; margin-top:0; }
  .ct-add-open {
    flex:1; height:33px; border:1px solid var(--g-teal-line); border-radius:10px; background:var(--g-teal-soft); color:var(--g-teal-ink);
    font-size:13.5px; font-weight:800; cursor:pointer;
  }
  .ct-add-open:hover { border-color:var(--g-teal); }
  .ct-more-box { border:1px solid var(--g-line); border-radius:14px; padding:0 14px; min-width:0; }
  .ct-more-box > summary { cursor:pointer; padding:12px 0; font-size:14px; font-weight:800; }
  .ct-more-box > summary:focus-visible { outline-offset:-2px; }
  .ct-more-box[open] > summary { border-bottom:1px solid var(--g-line-soft); margin-bottom:12px; }
  .ct-more-body { display:flex; flex-direction:column; gap:12px; padding-bottom:14px; min-width:0; }
  .ct-more-body:empty { display:none; }
  .ct-more-body h4 { margin:4px 0 0; font-size:13px; font-weight:800; color:var(--g-ink-2); }
  .ct-more-body .ct-more { margin-top:0; }
  .ct-more-body .ct-stat em { white-space:normal; line-height:1.6; }
  .ct-month-wrap { overflow-x:auto; border:1px solid var(--g-line-soft); border-radius:12px; }
  .ct-month { width:100%; border-collapse:collapse; font-size:12.5px; font-weight:700; }
  .ct-month th, .ct-month td { padding:7px 8px; text-align:center; border-bottom:1px solid var(--g-line-soft); white-space:nowrap; }
  .ct-month thead th { background:var(--g-flat-soft); color:var(--g-ink-3); font-size:11.5px; font-weight:800; }
  .ct-month tbody th { font-weight:800; }
  .ct-month tbody tr:last-child > * { border-bottom:0; }
  .ct-trade-sym { font-size:12px; font-weight:800; color:var(--g-ink-2); }

  /* ---- the source's page: a professional profile, right to left ----
     A page of its own between the site's header and footer, in the list's
     place (#copyTrade.ct-viewing hides the title, the tabs and the panes):
     a top row (back, the path), the header card, then the overview card
     beside the main column with its tabs. */
  .ct-page.ct-viewing > :not(.ct-source) { display:none !important; }
  .ct-source { min-width:0; }
  .ct-pf { display:flex; flex-direction:column; gap:14px; min-width:0; }
  .ct-pf dl, .ct-pf dd { margin:0; }
  .ct-pf h1, .ct-pf h2, .ct-pf h3 { margin:0; }
  .ct-pf-bar { display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; }
  .ct-pf-back {
    display:inline-flex; align-items:center; gap:7px; height:38px; padding:0 14px 0 16px; border-radius:11px; flex:none;
    border:1px solid var(--g-line); background:var(--g-card); color:var(--g-ink); font-size:13.5px; font-weight:800; cursor:pointer;
  }
  .ct-pf-back:hover { border-color:var(--g-teal-line); color:var(--g-teal-ink); }
  .ct-pf-crumbs { display:flex; align-items:center; gap:8px; min-width:0; font-size:13px; font-weight:700; color:var(--g-ink-3); }
  .ct-pf-crumbs span { white-space:nowrap; }
  .ct-pf-crumbs b { min-width:0; max-width:280px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--g-ink); font-weight:800; unicode-bidi:plaintext; }
  .ct-pf-wrap { display:flex; flex-direction:column; gap:16px; min-width:0; }
  .ct-pf-wrap > .ct-notice { margin:0; }
  .ct-pf-card { background:var(--g-card); border:1px solid var(--g-line); border-radius:20px; box-shadow:var(--g-shadow); min-width:0; }
  .ct-pf .ct-busy { pointer-events:none; }

  /* The header card: a faint teal wash at its top, the photo in a ring. */
  .ct-pf-head { position:relative; isolation:isolate; padding:22px 24px 0; overflow:hidden; }
  .ct-pf-head::before {
    content:''; position:absolute; inset:0 0 auto; height:96px; z-index:-1; pointer-events:none;
    background:linear-gradient(180deg, var(--g-teal-soft), transparent);
  }
  .ct-pf-top { display:flex; align-items:center; gap:18px; min-width:0; }
  .ct-pf-top .ct-avatar { width:96px; height:96px; font-size:36px; box-shadow:0 0 0 4px var(--g-card), 0 0 0 5px var(--g-line); }
  .ct-pf-id { flex:1; min-width:0; display:flex; flex-direction:column; gap:6px; }
  .ct-pf-id .ct-name { font-size:23px; line-height:1.5; white-space:normal; overflow-wrap:anywhere; border-radius:6px; }
  /* The name takes the focus when the page opens: a ring for the keyboard only. */
  .ct-pf-id .ct-name:focus { outline:none; }
  .ct-pf-id .ct-name:focus-visible { outline:2px solid var(--g-teal); outline-offset:3px; }
  /* The trading style beside the tags: amber, apart from the teal ones. */
  .ct-tag.ct-style-tag { background:color-mix(in srgb, var(--g-star) 13%, var(--g-card)); color:var(--g-star); }
  /* No card or row says a source's recommended ratio (rrcards D1, 20 October 2026): its page alone. */
  /* Crowd Clock, CrowdFx's own strategy (2026-10-17): the site's logo on the card's own ground with a hairline (the mark
     is mostly transparent; a white disc would glare in the dark theme), «ریسک‌ریوارد ثابت» in teal (never the
     recommendation's amber), its times as small teal chips. Nothing here touches any other source. */
  .ct-avatar.ct-avatar-site { background:var(--g-card); box-shadow:inset 0 0 0 1px var(--g-line); }
  .ct-avatar-site img { object-fit:contain; padding:5%; }     /* the PNG keeps its own ~11% clear margin */
  .ct-pf-top .ct-avatar.ct-avatar-site { box-shadow:inset 0 0 0 1px var(--g-line), 0 0 0 4px var(--g-card), 0 0 0 5px var(--g-line); }
  .ct-agg-avatars .ct-avatar.ct-avatar-site { box-shadow:inset 0 0 0 1px var(--g-line), 0 0 0 2px var(--g-card); }
  /* An outlined teal pill on the card's own ground: the teal ink reads at 4.7:1 there (4.3:1 on the teal-soft fill). */
  .ct-tag.ct-fixed-tag { background:var(--g-card); color:var(--g-teal-ink); box-shadow:inset 0 0 0 1px var(--g-teal-line); }
  .ct-name-row .ct-fixed-tag { flex:none; }
  .ct-slot-chip {
    display:inline-flex; align-items:center; gap:4px; padding:1px 8px; border-radius:99px; border:1px solid var(--g-teal-line);
    background:var(--g-card); color:var(--g-teal-ink); font-size:11.5px; font-weight:800; line-height:1.6; white-space:nowrap;
  }
  .ct-pf-links { display:flex; flex-wrap:wrap; gap:6px 18px; margin:0; font-size:13px; }
  /* Its description is Persian that starts with its Latin name: read right to left, not by its first letter. */
  .ct-about.ct-about-rtl { unicode-bidi:isolate; direction:rtl; text-align:right; }
  .ct-pf-meta { display:flex; flex-wrap:wrap; align-items:center; gap:4px 16px; font-size:13px; font-weight:700; color:var(--g-ink-2); }
  .ct-pf-meta > span { display:inline-flex; align-items:center; gap:5px; white-space:nowrap; }
  .ct-pf-meta .ico { color:var(--g-ink-3); }
  .ct-pf-rank { color:var(--g-teal-ink); font-weight:800; }
  .ct-pf-meta > span.ct-pf-rank-of { white-space:normal; margin-inline-start:-10px; font-size:12px; font-weight:600; color:var(--g-ink-3); }
  .ct-pf-actions { display:flex; align-items:center; gap:8px; flex:none; }
  .ct-pf-actions .ct-icon-btn, .ct-pf-actions .ct-star {
    width:42px; height:42px; margin:0; border-radius:12px; border:1px solid var(--g-line); background:var(--g-card);
  }
  .ct-pf-actions .ct-star { font-size:20px; }
  .ct-pf-actions .ct-star:hover { background:var(--g-flat-soft); }
  .ct-pf-copy { width:auto; min-width:132px; height:42px; margin:0; padding:0 28px; border-radius:12px; font-size:15px; }
  /* The strip of figures under a hairline, divided like a stat bar. */
  .ct-pf-strip {
    display:grid; grid-template-columns:repeat(auto-fit, minmax(128px, 1fr)); gap:10px 0;
    margin:20px -24px 0; padding:14px 24px 16px; border-top:1px solid var(--g-line-soft);
  }
  .ct-pf-cell { display:flex; flex-direction:column; gap:3px; min-width:0; padding:0 18px; border-inline-start:1px solid var(--g-line-soft); }
  .ct-pf-cell:first-child { padding-inline-start:0; border-inline-start:0; }
  .ct-pf-cell dt { font-size:12px; font-weight:700; line-height:1.6; color:var(--g-ink-3); overflow-wrap:anywhere; }
  .ct-pf-cell dd { font-size:18px; font-weight:800; color:var(--g-ink); white-space:nowrap; }
  .ct-pf-cell dd small { font-size:12px; font-weight:700; color:var(--g-ink-3); }
  .ct-pf-cell .ct-pf-sub { font-size:11px; font-weight:600; color:var(--g-ink-3); white-space:normal; line-height:1.6; }
  .ct-pf-cell.ct-busy { pointer-events:none; }

  /* Two columns: the main column, and the overview on the left (in RTL). */
  .ct-pf-body { display:grid; grid-template-columns:minmax(0, 1fr) 340px; gap:16px; align-items:start; }
  .ct-pf-main { grid-column:1; grid-row:1; }
  .ct-pf-aside { grid-column:2; grid-row:1; padding:18px 20px; display:flex; flex-direction:column; gap:14px; }
  .ct-pf-card-head { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:4px 10px; }
  .ct-pf-card-head h3 { font-size:15.5px; font-weight:800; }
  .ct-ov-big { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; padding:14px 0; border-block:1px solid var(--g-line-soft); }
  .ct-ov-big > div { display:flex; flex-direction:column; gap:2px; min-width:0; }
  .ct-ov-big > div:last-child { align-items:flex-end; text-align:end; }
  .ct-ov-big b { font-size:26px; font-weight:800; line-height:1.35; color:var(--g-ink); }
  .ct-ov-big b.up { color:var(--g-up); } .ct-ov-big b.down { color:var(--g-down); }
  .ct-ov-big span { font-size:12.5px; font-weight:700; color:var(--g-ink-2); }
  .ct-ov-big.ct-skel > div:last-child .bar { margin-inline-start:auto; }
  .ct-ov { display:flex; flex-direction:column; }
  .ct-ov-row { display:flex; align-items:baseline; justify-content:space-between; gap:6px 12px; padding:11px 0; border-top:1px solid var(--g-line-soft); }
  .ct-ov-row:first-child { border-top:0; padding-top:0; }
  .ct-ov-row dt { display:flex; flex-direction:column; gap:1px; font-size:13.5px; font-weight:700; color:var(--g-ink-2); min-width:0; }
  .ct-ov-row dt small { font-size:11px; font-weight:600; color:var(--g-ink-3); }
  .ct-ov-row dd { font-size:15px; font-weight:800; white-space:nowrap; text-align:end; }
  .ct-ov-win { flex-wrap:wrap; }
  .ct-ov-row dd.ct-ov-wl { flex:1 1 100%; display:flex; flex-direction:column; gap:7px; white-space:normal; text-align:start; }
  .ct-wl { display:flex; gap:2px; height:8px; border-radius:99px; overflow:hidden; background:var(--g-flat-soft); }
  .ct-wl i { display:block; flex-basis:0; min-width:3px; }
  .ct-wl .w, .ct-key.w { background:var(--g-up); }
  .ct-wl .l, .ct-key.l { background:var(--g-down); }
  .ct-wl-legend { display:flex; justify-content:space-between; flex-wrap:wrap; gap:4px 10px; font-size:12px; font-weight:700; color:var(--g-ink-2); }
  .ct-key { display:inline-block; width:8px; height:8px; border-radius:2px; margin-inline-end:6px; }

  /* The main column: its tabs, then one panel at a time. */
  /* scroll-margin: the site's sticky header (and its trial line) stays above the tabs brought into sight. */
  .ct-pf-tabs { display:flex; gap:6px; padding:14px 18px; border-bottom:1px solid var(--g-line); scroll-margin-top:112px; }
  .ct-pf-tab {
    display:inline-flex; align-items:center; justify-content:center; gap:8px; height:42px; padding:0 18px; border:0; border-radius:12px;
    background:none; color:var(--g-ink-2); font-size:14.5px; font-weight:800; cursor:pointer; white-space:nowrap; transition:background .15s, color .15s;
  }
  .ct-pf-tab:hover { color:var(--g-ink); background:var(--g-flat-soft); }
  .ct-pf-tab[aria-selected="true"] { background:var(--g-teal-ink); color:#fff; }
  :root[data-theme="dark"] .ct-pf-tab[aria-selected="true"] { color:#0B1314; }
  .ct-pf-panel { padding:18px 20px 22px; display:flex; flex-direction:column; gap:18px; min-width:0; }
  .ct-pf-panel[hidden] { display:none; }
  .ct-pf-panel:focus-visible { outline:2px solid var(--g-teal); outline-offset:-4px; border-radius:0 0 20px 20px; }
  .ct-pf-panel > .ct-recent { border:0; padding:0; border-radius:0; }
  .ct-pf-block { display:flex; flex-direction:column; gap:12px; min-width:0; }
  .ct-pf-block + .ct-pf-block { border-top:1px solid var(--g-line-soft); padding-top:18px; }
  .ct-pf-step {
    flex:none; width:22px; height:22px; border-radius:50%; display:inline-grid; place-items:center;
    background:var(--g-teal-ink); color:#fff; font-size:12px; font-weight:800; line-height:1;
  }
  :root[data-theme="dark"] .ct-pf-step { color:#0B1314; }

  /* «ریسک‌ریوارد پایه»: first, above the weekly chart; the chosen ratio filled. */
  .ct-pf-rr {
    display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px 18px;
    padding:14px 16px; border-radius:16px; background:var(--g-teal-soft); border:1px solid var(--g-teal-line);
  }
  .ct-pf-rr-text { flex:1 1 260px; min-width:0; }
  .ct-pf-rr h3 { font-size:14.5px; font-weight:800; display:flex; align-items:center; gap:8px; }
  .ct-pf-rr p { margin:4px 0 0; font-size:12.5px; line-height:1.85; color:var(--g-ink-2); }
  .ct-pf-rr-ctl { display:flex; align-items:center; gap:10px; flex:none; max-width:100%; }
  .ct-pf-rr .ct-seg { background:var(--g-card); border-color:var(--g-teal-line); }
  .ct-pf-rr .ct-seg button { height:34px; min-width:56px; font-size:14px; }
  .ct-pf-rr .ct-seg button[aria-pressed="true"] { background:var(--g-teal-ink); color:#fff; box-shadow:none; }
  :root[data-theme="dark"] .ct-pf-rr .ct-seg button[aria-pressed="true"] { background:var(--g-teal); color:#0B1314; }
  /* The source's recommended ratio: an amber ring and «پیشنهادی» in it (chosen or not); the line under the words says it, with its ⓘ. */
  .ct-pf-rr .ct-seg.has-best button { height:44px; }
  .ct-pf-rr .ct-seg.has-best button.ct-rr-best { flex-direction:column; gap:2px; line-height:1.1; box-shadow:inset 0 0 0 2px var(--g-amber); }
  .ct-rr-tag {
    display:block; padding:0 4px; border-radius:5px; background:var(--g-amber); color:#231400;
    font-size:10.5px; font-weight:800; line-height:14px; white-space:nowrap;
  }
  .ct-pf-rr .ct-pf-best { display:flex; align-items:center; flex-wrap:wrap; gap:2px 6px; margin-top:6px; font-weight:700; color:var(--g-amber-ink); }
  .ct-pf-rr .ct-pf-best b { font-weight:800; }
  .ct-pf-rr .ct-pf-best.none { display:block; font-weight:600; color:var(--g-ink-3); }
  .ct-pf-best-mark { font-size:13px; line-height:1; }
  .ct-pf-best .ct-info { margin:-4px 0; }
  .ct-pf-best .ct-info::before { content:''; position:absolute; inset:-5px; border-radius:50%; }   /* a 32 px hit area */
  /* «ریسک‌ریوارد دستی» (packratio, ?copydemo=1 until it is public): the pinned chip says «دستی» on a light teal pill
     (it reads on the filled chosen chip and on a plain one), the line under the words names the pin with «بازگشت به
     پیشنهادی», and 1:0.5 says it is for looking only. Nothing here applies without a pin. */
  .ct-pf-rr .ct-seg.has-pin button { height:44px; }
  .ct-pf-rr .ct-seg.has-pin button.ct-rr-pin { flex-direction:column; gap:2px; line-height:1.1; }
  .ct-rr-tag.ct-rr-own { background:var(--g-card); color:var(--g-teal-ink); box-shadow:inset 0 0 0 1px var(--g-teal-line); }
  /* In the step's teal-soft box the teal ink reads under 4.5:1: the line and its link in the page's ink (the link underlined). */
  /* Its two parts in a row, the second's « · » at its own start (the line's edge clips it when the part wraps); the line
     padded so the hit areas inside it are not clipped. */
  .ct-pf-rr .ct-pf-pin { display:block; overflow:hidden; padding:5px 0; margin:1px 0 -5px; font-weight:700; color:var(--g-ink-2); }
  .ct-pf-pin-in { display:flex; flex-wrap:wrap; align-items:center; row-gap:2px; margin-inline-start:-1.1em; }
  .ct-pf-pin-part { position:relative; display:inline-flex; align-items:center; flex-wrap:wrap; gap:0 6px; padding-inline-start:1.1em; }
  .ct-pf-rr .ct-pf-pin b { font-weight:800; color:var(--g-ink); }
  .ct-pf-pin-sep { position:absolute; inset-inline-start:0; width:1.1em; text-align:center; white-space:pre; color:var(--g-ink-3); }
  .ct-pf-pin .ct-rr-unpin { padding:5px 0; margin:-5px 0; color:var(--g-ink); white-space:nowrap; }     /* a taller hit area, the line's height unchanged */
  .ct-pf-pin .ct-info { margin:-4px 0; }
  .ct-pf-pin .ct-info::before { content:''; position:absolute; inset:-5px; border-radius:50%; }
  .ct-pf-rr .ct-pf-view { margin-top:6px; font-weight:600; color:var(--g-ink-3); }
  /* A pack member's card (copypacks.js): the ratio of its figures over them. */
  .ct-card-rr { display:flex; align-items:center; flex-wrap:wrap; gap:2px 6px; margin-top:-2px; font-size:12px; font-weight:800; line-height:1.8; color:var(--g-ink-2); }
  .ct-card-rr button, .ct-card-rr a { position:relative; z-index:2; }     /* above the card's open button */
  .ct-card-rr-sep { color:var(--g-ink-3); font-weight:600; }
  /* Its word: the recommendation, how it is chosen, every ratio's figures over the window. */
  .ct-htip .ct-best-v { color:var(--g-amber-ink); }
  .ct-best-table { width:100%; margin-top:8px; border-collapse:collapse; font-size:12px; line-height:1.5; }
  .ct-best-table caption { caption-side:top; text-align:start; padding-bottom:3px; font-weight:800; color:var(--g-ink); }
  .ct-best-table th, .ct-best-table td { padding:2px 4px; text-align:center; font-weight:700; border-top:1px solid var(--g-line-soft); white-space:nowrap; }
  .ct-best-table thead th { border-top:0; font-size:11px; color:var(--g-ink-3); }
  .ct-best-table tbody th { text-align:start; color:var(--g-ink); }
  .ct-best-table tr.on { background:var(--g-amber-soft); }
  .ct-best-table tr.on th { color:var(--g-amber-ink); }
  .ct-best-table tr.few { opacity:.55; }
  .ct-htip .ct-best-few { font-size:11.5px; color:var(--g-ink-3); }

  /* The weekly bars: a fixed axis, the weeks scrolling sideways when they do not fit. */
  .ct-wk-sum { display:flex; flex-wrap:wrap; gap:4px 18px; font-size:12.5px; font-weight:700; color:var(--g-ink-3); }
  .ct-wk-sum b { color:var(--g-ink); font-weight:800; }
  .ct-wk { position:relative; height:260px; direction:ltr; }
  .ct-wk-plot { display:flex; height:100%; }
  .ct-wk-axis { display:block; flex:none; overflow:visible; }
  .ct-wk-scroll {
    flex:1; min-width:0; overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain; scrollbar-width:thin;
    border-radius:10px;
  }
  .ct-wk-scroll:focus-visible { outline:2px solid var(--g-teal); outline-offset:2px; }
  .ct-wk-scroll svg { display:block; }
  .ct-wk text { font-family:inherit; font-size:11px; fill:var(--g-ink-3); }
  .ct-wk .ct-wk-val { font-size:10.5px; font-weight:700; fill:var(--g-ink-2); }
  .ct-wk .ct-wk-none { font-size:12px; font-weight:700; }
  .ct-wk .ct-tip { line-height:1.85; z-index:2; }
  .ct-tip-h { font-weight:800; }

  /* «آمار دوره»: nine figures, three a row, divided by hairlines. */
  .ct-pgrid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); row-gap:14px; }
  .ct-pgrid > div { display:flex; flex-direction:column; gap:4px; min-width:0; padding:4px 16px; border-inline-start:1px solid var(--g-line-soft); }
  .ct-pgrid > div:nth-child(3n + 1) { padding-inline-start:0; border-inline-start:0; }
  .ct-pgrid dt { font-size:12.5px; font-weight:700; color:var(--g-ink-3); }
  .ct-pgrid dd { font-size:17px; font-weight:800; color:var(--g-ink); overflow-wrap:anywhere; }
  .ct-pgrid dd small { display:block; margin-top:2px; font-size:11px; font-weight:600; color:var(--g-ink-3); }
  /* «میانگین حد ضرر» under the nine figures (2026-10-18; no take-profit average), its ⓘ after its last word: «حد ضرر» and
     the ⓘ never part. One cell: under the first column (three a row), the whole row on phones (a lone odd last cell). */
  .ct-pgrid-lv { margin-top:14px; padding-top:14px; border-top:1px solid var(--g-line-soft); }
  .ct-pgrid-lv .lv-nw { white-space:nowrap; }
  .ct-pgrid-lv dt .ct-info { vertical-align:middle; margin-block:-4px; margin-inline:4px -3px; }

  /* «شباهت سیگنال‌ها با منابع دیگر» (2026-10-18), the end of «عملکرد»: the share, the five most alike (a name that opens its
     page, a bar, its %), what «مشابه» means, the hint. */
  .ct-sim { border-top:1px solid var(--g-line-soft); padding-top:18px; }
  .ct-sim-lead { margin:0; font-size:14px; font-weight:700; line-height:1.9; color:var(--g-ink-2); }
  .ct-sim-lead b { font-size:17px; font-weight:800; color:var(--g-ink); }
  .ct-sim-cap { margin:0; font-size:12.5px; font-weight:700; color:var(--g-ink-3); }
  .ct-sim-list { list-style:none; margin:-4px 0 0; padding:0; display:grid; }
  .ct-sim-list li { display:grid; grid-template-columns:minmax(0, 1fr) minmax(60px, 34%) 44px; align-items:center; gap:10px; min-width:0; }
  .ct-sim-list li + li { border-top:1px solid var(--g-line-soft); }
  /* Each source a link: its picture (or coloured initial) as on its card, its name, its members (the review of
     2026-10-18: two names masked alike told apart). The name in its own direction (dir="auto" on the clipped name
     itself: a long one cut at its end keeps its beginning), on the page's side. */
  .ct-sim-who { display:flex; align-items:center; gap:10px; min-width:0; padding-block:7px; color:inherit; text-decoration:none; }
  .ct-sim-who .ct-avatar { width:30px; height:30px; font-size:12.5px; }
  .ct-sim-id { display:flex; flex-direction:column; flex:1 1 auto; min-width:0; }
  .ct-sim-name {
    display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:right;
    font-size:14px; font-weight:700; line-height:1.5; color:var(--g-teal-ink);
  }
  .ct-sim-sub { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11.5px; font-weight:600; line-height:1.5; color:var(--g-ink-3); }
  :root[dir="ltr"] .ct-sim-name { text-align:left; }
  .ct-sim-who:hover .ct-sim-name, .ct-sim-who:focus-visible .ct-sim-name { text-decoration:underline; }
  .ct-sim-who:focus-visible { outline:2px solid var(--g-teal); outline-offset:2px; border-radius:6px; }
  .ct-sim-bar { height:8px; border-radius:99px; background:var(--g-flat-soft); overflow:hidden; }
  .ct-sim-bar i { display:block; height:100%; border-radius:inherit; background:var(--g-teal); }
  .ct-sim-pct { text-align:end; font-size:14px; font-weight:800; color:var(--g-ink); }
  .ct-sim-hint {
    margin:0; padding:10px 14px; border-radius:14px; font-size:13px; font-weight:700; line-height:1.9; color:var(--g-ink-2);
    background:color-mix(in srgb, var(--g-star) 8%, var(--g-card)); border:1px solid color-mix(in srgb, var(--g-star) 28%, var(--g-card));
  }

  /* «درباره کانال»: the bio, then the channel's figures two by two. */
  .ct-about {
    font-size:13.5px; line-height:2; color:var(--g-ink-2); white-space:pre-line; unicode-bidi:plaintext; text-align:start;
    overflow-wrap:anywhere; padding:12px 14px; border-radius:14px; background:var(--g-flat-soft);
  }
  /* «سبک معاملاتی: …», one line above the bio, what showed it under it in small. */
  .ct-style-line {
    display:flex; flex-direction:column; gap:2px; padding:10px 14px; border-radius:14px;
    background:color-mix(in srgb, var(--g-star) 8%, var(--g-card)); border:1px solid color-mix(in srgb, var(--g-star) 28%, var(--g-card));
  }
  .ct-style-main { font-size:14px; font-weight:700; line-height:1.9; color:var(--g-ink-2); }
  .ct-style-main b { font-weight:800; color:var(--g-ink); }
  .ct-style-second { margin-inline-start:6px; font-size:12px; font-weight:600; color:var(--g-ink-3); }
  .ct-style-why { font-size:12px; font-weight:600; line-height:1.8; color:var(--g-ink-3); overflow-wrap:anywhere; }
  .ct-facts { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:0 28px; }
  .ct-facts > div { display:flex; align-items:baseline; justify-content:space-between; gap:12px; padding:11px 0; border-bottom:1px solid var(--g-line-soft); min-width:0; }
  .ct-facts dt { font-size:13px; font-weight:700; color:var(--g-ink-2); }
  .ct-facts dd { font-size:14px; font-weight:800; text-align:end; min-width:0; }
  .ct-facts dd small { display:block; font-size:11px; font-weight:600; color:var(--g-ink-3); }
  .ct-pf-foot { padding:12px 16px; border-radius:16px; border:1px solid var(--g-line); background:var(--g-card); }

  /* The link button's word, over everything. */
  .ct-toast {
    position:fixed; z-index:80; left:50%; bottom:28px; max-width:calc(100vw - 32px); padding:10px 18px; border-radius:12px;
    background:var(--g-ink); color:var(--g-card); font-size:13.5px; font-weight:700; text-align:center; box-shadow:var(--g-pop);
    opacity:0; transform:translate(-50%, 10px); transition:opacity .2s, transform .2s; pointer-events:none;
  }
  .ct-toast.on { opacity:1; transform:translate(-50%, 0); }
  @media (prefers-reduced-motion:reduce) { .ct-toast, .ct-pf-tab { transition:none; } }
  .ct-sheet-ctl { display:flex; gap:8px; flex-wrap:wrap; }
  /* Figure tiles, as on a reviewed request's «آمار» (the add tab). */
  .ct-sheet-stats { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:8px; }
  .ct-sheet-stats .ct-stat { align-items:flex-start; padding:10px 12px; }
  .ct-sheet-stats .ct-stat b { font-size:16px; white-space:normal; }
  .ct-sheet-stats .ct-stat small { font-size:11px; line-height:1.7; color:var(--g-ink-3); font-weight:600; overflow-wrap:anywhere; }
  .ct-chart-card { border:1px solid var(--g-line); border-radius:16px; padding:14px; display:flex; flex-direction:column; gap:10px; }
  .ct-chart-head { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
  .ct-chart-head h3 { margin:0; font-size:14.5px; font-weight:800; display:flex; align-items:center; flex-wrap:wrap; gap:4px 8px; }
  .ct-chart-head h3 .ico { color:var(--g-teal); }
  .ct-chart-period { font-size:12px; font-weight:700; color:var(--g-ink-3); }
  .ct-chart-now { font-size:22px; font-weight:800; }
  .ct-chart { position:relative; height:240px; direction:ltr; touch-action:pan-y; }
  .ct-chart svg { display:block; width:100%; height:100%; overflow:visible; }
  .ct-chart text { font-family:inherit; font-size:11px; fill:var(--g-ink-3); }
  .ct-tip {
    position:absolute; top:0; pointer-events:none; padding:6px 10px; border-radius:10px; white-space:nowrap;
    background:var(--g-ink); color:var(--g-card); font-size:12px; font-weight:700; transform:translateX(-50%);
    direction:rtl; box-shadow:0 6px 18px rgba(0,0,0,.18);
  }
  .ct-chart-foot { display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; font-size:12px; color:var(--g-ink-3); }
  .ct-note { margin:0; font-size:12px; line-height:2; color:var(--g-ink-3); }
  /* The last closed trades, under the chart: one tidy row each. */
  .ct-trades { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
  .ct-trade {
    display:flex; flex-direction:column; gap:6px; padding:10px 12px; border-radius:12px;
    border:1px solid var(--g-line-soft); min-width:0;
  }
  .ct-trade-top { display:flex; align-items:center; flex-wrap:wrap; gap:6px 8px; min-width:0; }
  .ct-res {
    display:inline-flex; align-items:center; gap:5px; padding:2px 9px; border-radius:99px; white-space:nowrap;
    font-size:12px; font-weight:800; background:var(--g-flat-soft); color:var(--g-ink-2);
  }
  .ct-res.win { background:var(--g-up-soft); color:var(--g-up); }
  .ct-res.loss { background:var(--g-down-soft); color:var(--g-down); }
  .ct-side { font-size:11px; font-weight:800; padding:1px 7px; border-radius:99px; border:1px solid var(--g-line); color:var(--g-ink-2); white-space:nowrap; }
  .ct-side.buy { color:var(--g-up); }
  .ct-side.sell { color:var(--g-down); }
  /* signal-order-type (sot-20261101-1): a signal's order type after its side (Buy Limit … / «ورود فوری»), copytrade.js,
     mychannel.js, mychoices.js; a dashed outline so it reads as a second fact about the side, not a result. */
  .ct-kind {
    font-size:11px; font-weight:700; padding:1px 7px; border-radius:99px; border:1px dashed var(--g-line);
    color:var(--g-ink-2); white-space:nowrap; unicode-bidi:isolate;
  }
  :root[data-theme="dark"] .ct-kind { border-color:color-mix(in srgb, var(--g-ink-3) 55%, transparent); }
  /* «انتخاب‌های من» draws its provisional states in a dashed outline (mychoices.css .my-res.is-dashed): there the type
     is a solid, softly filled pill, so it never reads as another provisional state (review, 2 Nov 2026). */
  .my-sig-what .ct-kind { border-style:solid; background:var(--g-flat-soft); }
  [data-kind-note] bdi { white-space:nowrap; }
  .ct-trade-when { font-size:12.5px; font-weight:700; color:var(--g-ink); white-space:nowrap; }
  .ct-trade-closed { margin-inline-start:auto; font-size:11.5px; font-weight:600; color:var(--g-ink-3); white-space:nowrap; }
  .ct-levels { display:flex; flex-wrap:wrap; gap:2px 14px; font-size:11.5px; font-weight:600; color:var(--g-ink-3); }
  .ct-levels span { white-space:nowrap; }
  .ct-levels bdi { color:var(--g-ink-2); font-weight:700; }
  .ct-trade-skel { height:54px; border-radius:12px; }
  .ct-trade-skel + .ct-trade-skel { margin-top:8px; }
  /* «۱۰ سیگنال آخر»: every issued signal with its state; an open or waiting
     one keeps a live line of its own, so a quote moves no row. */
  .ct-lt-sub { margin:-4px 0 0; font-size:12px; font-weight:700; line-height:1.8; color:var(--g-ink-3); }
  .ct-lt-at { white-space:nowrap; }
  .ct-res.open { background:var(--g-teal-soft); color:var(--g-teal-ink); }
  .ct-res.wait { background:color-mix(in srgb, var(--g-star) 12%, var(--g-card)); color:var(--g-star); }
  .ct-res b { font-weight:800; }
  .ct-trade.ct-lt-open { border-color:var(--g-teal-line); }
  .ct-live-dot { position:relative; flex:none; width:7px; height:7px; border-radius:50%; background:currentColor; }
  .ct-live-dot::after {
    content:''; position:absolute; inset:0; border-radius:50%; background:currentColor;
    animation:ct-ping 1.8s ease-out infinite;
  }
  @keyframes ct-ping { from { transform:scale(1); opacity:.5; } to { transform:scale(2.6); opacity:0; } }
  .ct-lt-new {
    font-size:10.5px; font-weight:800; padding:1px 7px; border-radius:99px; white-space:nowrap;
    background:var(--g-teal-ink); color:#fff;
  }
  :root[data-theme="dark"] .ct-lt-new { color:#0B1314; }
  .ct-lt-why { min-width:0; font-size:11.5px; font-weight:600; color:var(--g-ink-3); overflow-wrap:anywhere; }
  .ct-lt-live {
    min-width:0; font-size:11.5px; font-weight:700; line-height:1.7; color:var(--g-ink-3);
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .ct-lt-live bdi { color:var(--g-ink-2); }
  .ct-lt-live.in, .ct-lt-live.in bdi { color:var(--g-teal-ink); }
  .ct-lt-live.done { color:var(--g-star); }
  @media (prefers-reduced-motion:reduce) { .ct-live-dot::after { animation:none; } }

  /* ---- smaller screens ---- */
  @media (max-width:1080px) {
    .ct-rows-head, .ct-line { grid-template-columns:52px minmax(0, 1fr) 104px 68px 96px 92px 92px 66px; }     /* the curve gives «سیگنال در روز» its 12 px */
    .ct-rows-head .c-trades, .ct-line .c-trades, .ct-rows-head .c-members, .ct-line .c-members { display:none; }
    /* The members column is gone at this width: the line under the name carries them. */
    .ct-line .sub { display:block; font-size:11.5px; color:var(--g-ink-3); font-weight:600; }
  }
  /* The source's page under 960px: one column, the overview first. A reviewed request's card above its numbers. */
  @media (max-width:960px) {
    .ct-pf-body { grid-template-columns:minmax(0, 1fr); }
    .ct-pf-main, .ct-pf-aside { grid-column:1; grid-row:auto; }
    .ct-result-body.has-card { grid-template-columns:minmax(0, 1fr); }
  }
  /* A request's five steps one under the other, each mark joined to the next by a line down. */
  @media (max-width:900px) {
    .ct-steps { grid-template-columns:minmax(0, 1fr); padding-top:14px; }
    .ct-step { flex-direction:row; gap:12px; padding-inline-end:0; padding-bottom:12px; }
    .ct-step:last-child { padding-bottom:0; }
    .ct-step:not(:last-child)::after { top:32px; bottom:2px; inset-inline-start:13px; inset-inline-end:auto; width:2px; height:auto; }
    .ct-step-body { padding-top:2px; }
  }
  /* Tablets: the header's figures three a row (five a row would leave the sixth alone); phones box them below. */
  @media (min-width:761px) and (max-width:960px) {
    .ct-pf-strip { grid-template-columns:repeat(3, minmax(0, 1fr)); }
    .ct-pf-cell:nth-child(3n + 1) { padding-inline-start:0; border-inline-start:0; }
  }
  @media (max-width:760px) {
    .ct-page { padding:14px 16px 40px; gap:12px; }
    /* The head: the title beside its mark, the two figures in a row of their own, the tabs across the card. */
    .ct-top { border-radius:18px; }
    .ct-head { padding:16px 16px 14px; gap:12px; }
    .ct-head-mark { width:42px; height:42px; border-radius:13px; }
    .ct-head-text { flex:1 1 0; }
    .ct-head h1 { font-size:20px; }
    .ct-head p { font-size:13px; line-height:1.7; }
    .ct-head-stats { flex:1 1 100%; padding-top:12px; border-top:1px solid var(--g-line-soft); }
    .ct-head-stat { flex:1 1 0; padding:0 14px; }
    .ct-head-stat dd { font-size:15px; }
    .ct-head-stats.ct-skel .bar { flex:1; height:36px; }
    .ct-top > .ct-tabs { margin:12px 16px 16px; }
    #ctBarBox { scroll-margin-top:104px; }
    /* Phones: the tools on top, the chips in one scrolling line, panels across the bar. */
    .ct-bar { flex-wrap:wrap; padding:8px; gap:8px; border-radius:14px; }
    .ct-tools { order:1; width:100%; margin:0; }
    .ct-tools .ct-reset { margin-inline-end:auto; }
    .ct-tools .ct-seg:first-of-type { margin-inline-start:auto; }
    .ct-tools .ct-reset + .ct-seg { margin-inline-start:0; }
    .ct-chips { order:2; flex:1 1 100%; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; overscroll-behavior-x:contain; }
    .ct-chips::-webkit-scrollbar { display:none; }
    .ct-grid { grid-template-columns:minmax(0, 1fr); gap:12px; }
    .ct-rows-head { display:none; }
    .ct-line { grid-template-columns:40px minmax(0, 1fr) auto 32px; padding:12px 10px; gap:8px 10px; }
    /* Phones: a row's «+» (or «×») under its star, as on the cards, so the name keeps its room. */
    .ct-line-acts { flex-direction:column-reverse; gap:4px; }
    .ct-line .ct-pick { width:28px; height:28px; }
    .ct-line .num, .ct-line .ct-spark-cell { display:none; }
    .ct-line .sub { display:block; font-size:11.5px; color:var(--g-ink-3); font-weight:600; }
    .ct-name-row .ct-tag { display:none; }      /* the origin moves into the line under the name */
    .ct-line .ct-avatar { width:36px; height:36px; font-size:15px; }
    .ct-line .ct-star { width:28px; }
    /* The source's page: one column, the actions in a row of their own. */
    .ct-pf { gap:12px; }
    .ct-pf-crumbs { display:none; }
    .ct-pf-wrap { gap:12px; }
    .ct-pf-tabs { scroll-margin-top:104px; }
    .ct-pf-card { border-radius:18px; }
    .ct-pf-head { padding:16px 16px 0; }
    .ct-pf-top { flex-wrap:wrap; align-items:flex-start; gap:12px 14px; }
    .ct-pf-top .ct-avatar { width:66px; height:66px; font-size:26px; }
    .ct-pf-id { flex:1 1 0; }
    .ct-pf-id .ct-name { font-size:19px; }
    .ct-pf-meta { gap:2px 12px; font-size:12.5px; }
    .ct-pf-actions { flex:1 1 100%; }
    .ct-pf-copy { flex:1; min-width:0; }
    .ct-pf-strip { grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px; margin:14px -16px 0; padding:12px 16px 16px; }
    .ct-pf-cell, .ct-pf-cell:first-child { padding:8px 10px; border:0; border-radius:12px; background:var(--g-flat-soft); }
    .ct-pf-cell dd { font-size:15px; white-space:normal; }
    .ct-pf-aside { padding:16px; }
    .ct-ov-big b { font-size:23px; }
    .ct-pf-tabs { padding:8px; gap:4px; }
    .ct-pf-tab { flex:1 1 0; min-width:0; height:40px; padding:0 6px; gap:6px; font-size:13.5px; }
    .ct-pf-panel { padding:14px; gap:14px; }
    .ct-pf-panel:focus-visible { border-radius:0 0 18px 18px; }
    .ct-pf-rr { padding:12px; }
    .ct-pf-rr-ctl { flex:1 1 100%; }
    .ct-pf-rr .ct-seg { flex:1; }
    .ct-pf-rr .ct-seg button { flex:1 1 0; min-width:0; padding:0 2px; font-size:13px; }
    .ct-sheet-ctl { width:100%; }
    .ct-sheet-ctl .ct-seg { flex:1 1 auto; }
    .ct-sheet-ctl .ct-seg button { flex:1 1 0; }
    .ct-wk { height:220px; }
    .ct-pgrid { grid-template-columns:repeat(2, minmax(0, 1fr)); }
    .ct-pgrid > div:nth-child(3n + 1) { padding-inline-start:16px; border-inline-start:1px solid var(--g-line-soft); }
    .ct-pgrid > div:nth-child(2n + 1) { padding-inline-start:0; border-inline-start:0; }
    /* Two a row: an odd last figure takes the whole row. */
    .ct-pgrid > div:last-child:nth-child(odd) { grid-column:1 / -1; }
    /* «شباهت سیگنال‌ها …»: each source a finger's height (44 px at least); a shorter bar leaves its name and members room. */
    .ct-sim-who { min-height:44px; padding-block:6px; }
    .ct-sim-list li { grid-template-columns:minmax(0, 1fr) minmax(56px, 28%) 40px; }
    .ct-facts { grid-template-columns:minmax(0, 1fr); }
    .ct-chart { height:200px; }
    .ct-sheet-stats { grid-template-columns:repeat(2, minmax(0, 1fr)); }
    .ct-trade { padding:9px 10px; }
    .ct-levels { gap:2px 10px; }
    .ct-tabs { align-self:stretch; }
    .ct-tabs button { flex:1 1 0; min-width:0; padding:0 8px; font-size:13.5px; }
    .ct-pane, .ct-add-top { gap:12px; }
    .ct-add-box, .ct-req { padding:14px; border-radius:16px; }
    .ct-req-mark { width:36px; height:36px; border-radius:11px; }
    .ct-req-del { height:44px; }   /* (ct4 review) a phone's tap target, as its question's «حذف» / «انصراف» */
    .ct-req-status { flex:1 1 100%; margin-inline-start:0; padding-inline-start:48px; }   /* under the address, past its mark */
    .ct-eta { padding:9px 12px; gap:4px 14px; }
    .ct-name-row .ct-tag.ct-mine { display:inline-block; }
    /* A phone's row keeps Crowd Clock's «ریسک‌ریوارد ثابت» and «دستی ۱:۱٫۵» (packratio), under the name when they do not fit. */
    .ct-name-row .ct-tag.ct-fixed-tag { display:inline-block; }
    .ct-name-row .ct-tag.ct-pin-tag { display:inline-block; }
  }
  /* Phones: the tab titles take the whole room (mychannel.css lets three of them wrap). */
  /* The reload offer when copytrade.js did not arrive whole. */
  .ct-loadfail {
    box-sizing:border-box; width:calc(100% - 32px); max-width:520px; margin:40px auto; padding:22px 20px; text-align:center; border-radius:16px;
    background:var(--g-card); border:1px solid var(--g-line); box-shadow:var(--g-shadow); color:var(--g-ink);
  }
  .ct-loadfail b { display:block; font-size:16px; font-weight:800; }
  .ct-loadfail p { margin:8px 0 16px; font-size:13.5px; line-height:1.9; color:var(--g-ink-2); }
  .ct-loadfail button {
    height:40px; padding:0 22px; border:0; border-radius:11px; background:var(--g-teal-ink); color:#fff;
    font:inherit; font-size:14px; font-weight:800; cursor:pointer;
  }
  :root[data-theme="dark"] .ct-loadfail button { background:var(--g-teal); color:#0B1314; }
  /* Narrow phones: the six base ratios in two rows of three, so «۱:۰٫۷۵» keeps its room. */
  @media (max-width:400px) {
    .ct-pf-rr .ct-seg { flex-wrap:wrap; }
    .ct-pf-rr .ct-seg button { flex:1 1 30%; font-size:14px; }
  }
  @media (max-width:600px) {
    .ct-tab-ico { display:none; }
    .ct-step-head .ct-step-at { margin-inline-start:auto; }      /* a step's time at the row's far end */
  }
  /* Narrow phones: two lines a row; the close time gives way. */
  @media (max-width:480px) {
    .ct-trade-closed { display:none; }
    .ct-pf-tab .ico { display:none; }
    .ct-pf-strip { gap:6px; }
    .ct-pf-cell, .ct-pf-cell:first-child { padding:8px; }
    .ct-pf-cell dt { font-size:11.5px; }
    .ct-pf-cell dd { font-size:14.5px; }
    .ct-pf-cell .ct-pf-sub { display:none; }
    .ct-pf-cell.ct-pf-dd .ct-pf-sub { display:block; font-size:10.5px; }     /* the drawdown keeps «از سقف موجودی · …» */
    .ct-pf-back { height:36px; padding:0 12px; }
    .ct-add-row { flex-direction:column; }
    .ct-add-submit { width:100%; }
  }
  /* The narrowest phones: the source's figures two by two. */
  @media (max-width:360px) {
    .ct-pf-strip { grid-template-columns:repeat(2, minmax(0, 1fr)); }
  }

  /* The review of 21 October 2026 (ct5). Phones: the bar's filter chips and its ٪/$ and grid/list switches (the ranking,
     «کانال سیگنال تکی» and the channel leaves share the bar) are 40 px tap targets, as the site's other controls. */
  @media (max-width:760px) {
    .ct-chip { height:40px; }
    .ct-seg button { height:40px; min-width:40px; }
    /* The narrowest phones with «بازنشانی» in the row: the switches go to a second line, never sideways. */
    .ct-tools { flex-wrap:wrap; row-gap:6px; }
  }

  /* ---- analysis-approve (the owner, 26 October 2026): «کانال‌های فقط‌آنالیز» and «تأیید و افزودن به منابع», for the
     unlimited lists' account alone (copytrade.js approveHtml, approveBarHtml); the request cards' idioms. ---- */
  .ct-apv { display:flex; flex-direction:column; gap:12px; margin-top:22px; min-width:0; }
  .ct-apv[hidden] { display:none; }
  .ct-apv-head { display:flex; align-items:center; flex-wrap:wrap; gap:6px 10px; }
  .ct-apv-only { display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:800; padding:3px 10px; border-radius:99px;
    background:var(--g-amber-soft); color:var(--g-amber-ink); border:1px solid var(--g-amber-line); }
  .ct-apv-lead { margin:0; padding:0 4px; font-size:13px; line-height:1.9; color:var(--g-ink-2); max-width:760px; }
  .ct-apv-empty { margin:0; padding:14px 16px; border-radius:14px; background:var(--g-flat-soft); color:var(--g-ink-2); font-size:13.5px; font-weight:700; }
  .ct-apv-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; min-width:0; }
  .ct-apv-item {
    background:var(--g-card); border:1px solid var(--g-line); border-radius:18px; box-shadow:var(--g-shadow);
    padding:16px 18px; display:flex; flex-direction:column; gap:12px; min-width:0;
  }
  .ct-apv-item.is-approved { border-color:var(--g-up); }
  .ct-apv-item.is-refused { box-shadow:none; }
  .ct-apv-top { display:flex; align-items:flex-start; flex-wrap:wrap; gap:8px 12px; }
  .ct-apv-id { flex:1 1 200px; min-width:0; display:flex; flex-direction:column; gap:2px; }
  .ct-apv-name { align-self:flex-start; max-width:100%; font-size:15.5px; font-weight:800; overflow-wrap:anywhere; }
  .ct-apv-user { align-self:flex-start; font-size:13px; font-weight:700; color:var(--g-teal-ink); text-decoration:none; }
  .ct-apv-user:hover { text-decoration:underline; }
  .ct-apv-stats { grid-template-columns:repeat(4, minmax(0, 1fr)); }
  .ct-apv-stats .ct-stat em { white-space:normal; text-align:center; line-height:1.5; }
  .ct-apv-stats .ct-stat b { font-size:13.5px; white-space:normal; text-align:center; }
  .ct-apv-reason { margin:0; display:flex; align-items:flex-start; gap:6px; font-size:13px; font-weight:700; line-height:1.8; color:var(--g-ink-2); }
  .ct-apv-reason .ico { flex:none; margin-top:4px; color:var(--g-ink-3); }
  .ct-apv-actions { display:flex; flex-wrap:wrap; gap:8px; }
  .ct-apv-actions .ct-add-open { flex:0 1 auto; height:auto; min-height:44px; padding:0 16px; }
  .ct-apv-go {
    display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:44px; padding:0 18px; border:0; border-radius:12px;
    background:var(--g-teal); color:#fff; font:inherit; font-size:13.5px; font-weight:800; cursor:pointer;
  }
  :root[data-theme="dark"] .ct-apv-go { color:#0B1314; }
  .ct-apv-go .ico { stroke-width:2.4; }
  .ct-apv-undo {
    min-height:44px; padding:0 16px; border-radius:12px; border:1px solid var(--g-line); background:var(--g-card); color:var(--g-ink-2);
    font:inherit; font-size:13px; font-weight:800; cursor:pointer;
  }
  .ct-apv-undo:hover, .ct-apv-undo:focus-visible, .ct-apv-undo[aria-expanded="true"] { color:var(--g-down); border-color:var(--g-down); }
  .ct-apv-go:disabled, .ct-apv-undo:disabled { opacity:.6; cursor:default; }
  /* The question of «تأیید و افزودن به منابع» in the site's teal («لغو تأیید»'s keeps «حذف»'s red). */
  .ct-apv-ask.is-approve { border-color:var(--g-teal); background:var(--g-teal-soft); }
  .ct-apv-ask.is-approve .ct-req-yes { border-color:var(--g-teal); background:var(--g-teal); }
  .ct-apv-more-body { display:flex; flex-direction:column; gap:12px; border-top:1px solid var(--g-line-soft); padding-top:12px; min-width:0; }
  .ct-apv-more-body[hidden] { display:none; }
  .ct-apv-refused > summary { color:var(--g-ink-2); }
  .ct-apv-refused .ct-apv-item { border-radius:14px; padding:12px 14px; }
  /* On the approver's own analysed-only request: the offer and its button, or «✓ به منابع اضافه شد» and «لغو تأیید». */
  .ct-apv-bar { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; }
  .ct-apv-bar .ct-note, .ct-apv-bar .ct-apv-reason { flex:1 1 240px; }
  .ct-apv-bar .ct-strip { flex:1 1 200px; }
  @media (max-width:760px) {
    .ct-apv-item { padding:14px; border-radius:16px; }
    .ct-apv-stats { grid-template-columns:repeat(2, minmax(0, 1fr)); }
    .ct-apv-actions > button { flex:1 1 140px; }
    .ct-apv-bar > button { flex:1 1 100%; }
  }

/* source-card-en (the owner, 30 October 2026: «وقتی سایت رو انگلیسی میکنم محتوای کارت ها و جزییاتش انگلیسی نمیشه و چون
   ۹۰ درصد منابع انگلیسی هستند اینو درست کن بتونم عکس هارو براشون بفرستم»): in English (site.js puts dir="ltr" on the
   page) the boxes that were fixed right to left read left to right, the way back points left, and the ranking's English
   #pageInfo (ctnav.js) reads left to right. Persian: nothing here applies. */
  :root[dir="ltr"] .ct-htip, :root[dir="ltr"] .ct-tip, :root[dir="ltr"] .mc-chart-empty { direction:ltr; }
  :root[dir="ltr"] .ct-pf-back:not(.ct-pf-dl) .ico { transform:scaleX(-1); }
  .site-info[lang="en"] { direction:ltr; text-align:left; }
/* source-card-en (the owner, 30 October 2026: «… توی همون نوار اولیه صفحه بالا دانلود رو بزار … سریع فقط زیاد پیجیدش
   نکن»): «دانلود تصویر» at the end of a source page's top bar, the back button's own look (light and dark through the
   --g-* tokens); the crumbs go to that end with it (phones hide them: back at one end, the download at the other).
   Under 360 px the label goes and the icon stays (its aria-label still says it). Busy: dimmed while the image is drawn. */
  .ct-pf-bar .ct-pf-crumbs { margin-inline-start:auto; }
  .ct-pf-dl { flex:none; }
  .ct-pf-dl[aria-disabled="true"] { opacity:.6; cursor:progress; }
  @media (max-width: 359.98px) {
    .ct-pf-dl { padding:0 10px; }
    .ct-pf-dl .ct-pf-dl-l { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
  }

/* public-channel-no-join (the owner, 1 November 2026: «که دکمه عضویت بزار بعد از بررسی اگر خواستم عضو شوم»):
   «عضویت» for the approver on a channel read without membership, its question and its honest state; and the one
   sentence a request read from a channel's public page carries (no join). */
.ct-readvia { display:flex; align-items:flex-start; gap:6px; margin:0; }
.ct-readvia .ico { flex:none; margin-top:4px; color:var(--g-ink-3); }
.ct-mem { display:flex; flex-direction:column; gap:8px; }
.ct-mem-row { display:flex; flex-wrap:wrap; align-items:center; gap:8px 12px; }
.ct-mem-row .ct-apv-reason { flex:1 1 240px; }
.ct-mem-go {
  display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:44px; padding:0 18px; border-radius:12px;
  border:1px solid var(--g-teal); background:var(--g-card); color:var(--g-teal); font:inherit; font-size:13.5px; font-weight:800;
  cursor:pointer;
}
.ct-mem-go:hover, .ct-mem-go:focus-visible, .ct-mem-go[aria-expanded="true"] { background:var(--g-teal-soft); }
.ct-mem-go .ico { stroke-width:2.4; }
.ct-mem-ask { border-color:var(--g-teal); background:var(--g-teal-soft); }
.ct-mem-ask .ct-req-yes { border-color:var(--g-teal); background:var(--g-teal); }
@media (max-width:760px) {
  .ct-mem-row > button { flex:1 1 100%; }
}
