/* ════════════════════════════════════════════════════════════════════════
   The Deadline Board — /conferences/ and the home-page preview (2026-09-27)
   Replaces the poster-carousel tracker. One idea: every conference is a
   ticket with its submission deadline counting down on the left.
   Uses the landing.css tokens, so light and dark themes both follow.
   ════════════════════════════════════════════════════════════════════════ */
.cb{ --hot:#e5484d; --warm:#f5921e; --cool:#1f9d57; --pub-ieee:#00629b; --pub-acm:#0085ca;
  --pub-springer:#e2231a; --pub-elsevier:#ff6c00; --pub-usenix:#b31b1b; --pub-nature:#006f9c; }
[data-theme="dark"] .cb, [data-theme="dark"] .cb-home{ --hot:#ff6b6f; --warm:#ffb056; --cool:#54dca0;
  --pub-ieee:#5fb4e8; --pub-acm:#6cc3f0; --pub-springer:#ff7a73; --pub-elsevier:#ffa05c;
  --pub-usenix:#ff7a7a; --pub-nature:#5cc3e6; }
.cb-home{ --hot:#e5484d; --warm:#f5921e; --cool:#1f9d57; --pub-ieee:#00629b; --pub-acm:#0085ca;
  --pub-springer:#e2231a; --pub-elsevier:#ff6c00; --pub-usenix:#b31b1b; --pub-nature:#006f9c; }

/* ── hero ─────────────────────────────────────────────────────────────── */
/* .page already clears the nav; the hero only adds breathing room */
.cb-hero{ max-width:980px; margin:0 auto; text-align:center;
  padding:clamp(1.2rem,3vw,2rem) 0 clamp(1.6rem,4vw,2.4rem); }
.page.cb{ max-width:1180px; }
.cb-hero h1{ font-family:var(--disp); font-weight:600; letter-spacing:-.025em; line-height:1.05;
  font-size:clamp(2.3rem,6vw,4.1rem); color:var(--ink); margin:1rem 0 1.1rem; }
.cb-hero h1 em{ font-style:italic; background:var(--iris); -webkit-background-clip:text;
  background-clip:text; color:transparent; }
.cb-hero > p{ max-width:660px; margin:0 auto; color:var(--soft); font-size:clamp(.98rem,1.6vw,1.1rem); line-height:1.6; }

.cb-stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:.7rem; max-width:760px;
  margin:clamp(1.6rem,4vw,2.3rem) auto 0; }
.cb-stat{ border:1px solid var(--line); background:var(--card); border-radius:16px;
  padding:.85rem .6rem .75rem; min-height:82px; }
.cb-stat b{ display:block; font-family:var(--disp); font-weight:600; font-size:clamp(1.5rem,3.4vw,2rem);
  line-height:1.1; color:var(--ink); letter-spacing:-.02em; }
.cb-stat span{ display:block; font-size:.74rem; color:var(--muted); margin-top:.25rem; }

.cb-search{ display:flex; align-items:center; gap:.7rem; max-width:680px; margin:1.3rem auto 0;
  padding:.2rem .6rem .2rem 1.1rem; border:1px solid var(--line-2); border-radius:999px;
  background:var(--card); box-shadow:var(--shadow-s); cursor:text;
  transition:border-color .2s var(--ease), box-shadow .2s var(--ease); }
.cb-search:focus-within{ border-color:var(--violet); box-shadow:0 0 0 4px rgba(123,79,196,.18); }
.cb-search svg{ width:19px; height:19px; flex:0 0 auto; fill:none; stroke:var(--muted); stroke-width:2; stroke-linecap:round; }
.cb-search input{ flex:1; min-width:0; border:0; outline:0; background:transparent; color:var(--ink);
  font:inherit; font-size:1rem; padding:.85rem 0; }
.cb-search input::placeholder{ color:var(--muted); }

/* ── this week ────────────────────────────────────────────────────────── */
.cb-week{ max-width:1120px; margin:0 auto; padding:0 clamp(1rem,4vw,2rem);
  display:grid; grid-template-columns:1.25fr 1fr; gap:1rem; }
.cb-week:empty{ display:none; }
.cb-panel{ border:1px solid var(--line); background:var(--card); border-radius:20px; padding:1.1rem 1.2rem 1.15rem; }
.cb-panel h2{ font-size:.78rem; font-weight:700; letter-spacing:.07em; text-transform:uppercase;
  color:var(--muted); margin:0 0 .75rem; display:flex; align-items:baseline; gap:.5rem; }
.cb-panel h2 small{ font-family:var(--mono); font-weight:500; letter-spacing:0; text-transform:none; }
.cb-soon{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.5rem; }
.cb-soon li{ display:grid; grid-template-columns:auto auto 1fr; align-items:baseline; gap:.55rem; min-width:0; }
.cb-soon b{ color:var(--ink); font-size:.92rem; white-space:nowrap; }
.cb-soon em{ font-style:normal; color:var(--muted); font-size:.82rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cb-pill{ font-family:var(--mono); font-size:.72rem; font-weight:500; padding:.14rem .45rem; border-radius:6px; color:#fff; }
.cb-pill.hot{ background:var(--hot); } .cb-pill.warm{ background:var(--warm); }
.cb-quiet{ color:var(--muted); font-size:.9rem; margin:0; }
.cb-picks{ display:flex; flex-wrap:wrap; gap:.45rem; }
.cb-pick{ display:flex; flex-direction:column; align-items:flex-start; gap:.1rem; text-align:left; cursor:pointer;
  border:1px solid var(--line); background:var(--bg-2); color:var(--ink); border-radius:12px;
  padding:.45rem .7rem; font:inherit; transition:border-color .2s var(--ease), transform .2s var(--ease); }
.cb-pick:hover{ border-color:var(--violet); transform:translateY(-1px); }
.cb-pick b{ font-size:.86rem; } .cb-pick span{ font-size:.7rem; color:var(--muted); }
.cb-fresh{ margin:.8rem 0 0; font-size:.84rem; color:var(--soft); }
.cb-link{ border:0; background:none; padding:0; font:inherit; color:var(--navy); font-weight:600;
  cursor:pointer; text-decoration:underline; text-underline-offset:3px; }

/* ── filter bar (sticky under the nav) ───────────────────────────────── */
.cb-bar{ position:sticky; top:62px; z-index:20; max-width:1120px; margin:1.2rem auto .4rem;
  display:flex; flex-wrap:wrap; align-items:center; gap:.5rem;
  padding:.6rem clamp(.8rem,3vw,1rem); border:1px solid var(--line); border-radius:16px;
  background:var(--glass); backdrop-filter:saturate(170%) blur(18px); -webkit-backdrop-filter:saturate(170%) blur(18px); }
.cb-bar select{ font:inherit; font-size:.84rem; color:var(--ink); background:var(--card);
  border:1px solid var(--line-2); border-radius:10px; padding:.46rem 1.9rem .46rem .7rem; cursor:pointer;
  appearance:none; -webkit-appearance:none; max-width:210px;
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%; background-size:5px 5px; background-repeat:no-repeat; }
.cb-bar select option{ color:#10182f; background:#fff; }
.cb-quick{ display:flex; gap:.35rem; }
.cb-q{ font:inherit; font-size:.8rem; font-weight:600; padding:.42rem .7rem; border-radius:10px; cursor:pointer;
  border:1px solid var(--line-2); background:transparent; color:var(--soft); transition:.18s var(--ease); }
.cb-q:hover{ color:var(--ink); border-color:var(--ink); }
.cb-q.on{ background:var(--ink); color:var(--bg); border-color:var(--ink); }
.cb-toggle{ display:inline-flex; align-items:center; gap:.4rem; font-size:.84rem; color:var(--soft); cursor:pointer; user-select:none; }
.cb-toggle input{ accent-color:var(--violet); width:16px; height:16px; }
.cb-count{ margin-left:auto; font-family:var(--mono); font-size:.76rem; color:var(--muted); }

/* ── list ─────────────────────────────────────────────────────────────── */
.cb-list{ max-width:1120px; margin:0 auto; padding:0 clamp(1rem,4vw,2rem); display:flex; flex-direction:column; gap:.6rem; }
.cb-month{ display:flex; align-items:baseline; gap:.7rem; margin:1.4rem 0 .15rem; font-family:var(--disp);
  font-weight:600; font-size:1.25rem; color:var(--ink); letter-spacing:-.01em; }
.cb-month::after{ content:""; flex:1; height:1px; background:var(--line); transform:translateY(-4px); }
.cb-month small{ font-family:var(--mono); font-size:.72rem; font-weight:500; color:var(--muted); order:2; }

.cb-t{ position:relative; display:grid; grid-template-columns:96px 1fr auto; gap:1.1rem; align-items:center;
  border:1px solid var(--line); background:var(--card); border-radius:18px; padding:.85rem 1rem .85rem .85rem;
  transition:border-color .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease); }
.cb-t:hover{ border-color:var(--line-2); transform:translateY(-1px); box-shadow:var(--shadow-s); }
.cb-t.hot{ border-left:3px solid var(--hot); }
.cb-t.is-new::before{ content:""; position:absolute; inset:-1px; border-radius:18px; padding:1px;
  background:var(--iris); -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none; opacity:.7; }

.cb-cd{ display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  border-radius:14px; padding:.55rem .3rem; min-height:88px; background:var(--bg-2); border:1px solid var(--line); }
.cb-cd b{ font-family:var(--disp); font-weight:600; font-size:1.9rem; line-height:1; letter-spacing:-.02em; color:var(--ink); }
.cb-cd span{ font-size:.66rem; font-weight:600; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin-top:.2rem; }
.cb-cd small{ font-family:var(--mono); font-size:.68rem; color:var(--soft); margin-top:.35rem; }
.cb-cd.hot{ background:color-mix(in srgb,var(--hot) 14%,transparent); border-color:color-mix(in srgb,var(--hot) 40%,transparent); }
.cb-cd.hot b{ color:var(--hot); }
.cb-cd.warm{ background:color-mix(in srgb,var(--warm) 13%,transparent); border-color:color-mix(in srgb,var(--warm) 38%,transparent); }
.cb-cd.warm b{ color:var(--warm); }
.cb-cd.cool b{ color:var(--cool); }
.cb-cd.shut b, .cb-cd.tba b{ color:var(--muted); font-size:1.45rem; }
.cb-cd.tba{ border-style:dashed; }

.cb-main{ min-width:0; }
.cb-l1{ display:flex; flex-wrap:wrap; align-items:center; gap:.4rem .5rem; }
.cb-l1 h3{ font-family:var(--disp); font-weight:600; font-size:1.2rem; letter-spacing:-.01em; color:var(--ink); margin:0 .2rem 0 0; }
.cb-l1 h3 .yr{ font-family:var(--font); font-weight:500; font-size:.86rem; color:var(--muted); }
.cb-b{ font-size:.66rem; font-weight:700; letter-spacing:.02em; line-height:1; padding:.28rem .45rem;
  border-radius:6px; border:1px solid var(--line-2); color:var(--soft); white-space:nowrap; }
.cb-b.pub{ color:var(--ink); }
.cb-b.p-ieee{ color:var(--pub-ieee); border-color:color-mix(in srgb,var(--pub-ieee) 45%,transparent); font-style:italic; font-weight:800; }
.cb-b.p-acm{ color:var(--pub-acm); border-color:color-mix(in srgb,var(--pub-acm) 45%,transparent); }
.cb-b.p-springer{ color:var(--pub-springer); border-color:color-mix(in srgb,var(--pub-springer) 45%,transparent); }
.cb-b.p-elsevier{ color:var(--pub-elsevier); border-color:color-mix(in srgb,var(--pub-elsevier) 45%,transparent); }
.cb-b.p-usenix{ color:var(--pub-usenix); border-color:color-mix(in srgb,var(--pub-usenix) 45%,transparent); }
.cb-b.p-nature{ color:var(--pub-nature); border-color:color-mix(in srgb,var(--pub-nature) 45%,transparent); }
.cb-b.rank{ color:var(--violet); border-color:color-mix(in srgb,var(--violet) 45%,transparent); }
[data-theme="dark"] .cb-b.rank{ color:#c9b6ff; }
.cb-b.new{ color:#fff; border-color:transparent; background:var(--iris); }
.cb-b.comm{ color:var(--warm); border-color:color-mix(in srgb,var(--warm) 45%,transparent); border-style:dashed; }
.cb-name{ margin:.28rem 0 0; color:var(--soft); font-size:.9rem; line-height:1.4;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
/* spacing, not "·" separators: a separator wraps to the start of a line */
.cb-meta{ display:flex; flex-wrap:wrap; gap:.2rem 1.1rem; margin-top:.45rem; font-size:.8rem; color:var(--muted); }
.cb-m{ display:inline-flex; align-items:center; gap:.3rem; }
.cb-m.fld{ color:var(--soft); }

.cb-act{ display:flex; flex-direction:column; align-items:stretch; gap:.4rem; min-width:150px; }
.cb-go{ display:inline-flex; align-items:center; justify-content:center; gap:.35rem; font-size:.84rem; font-weight:600;
  padding:.55rem .9rem; border-radius:11px; background:var(--ink); color:var(--bg); text-decoration:none;
  transition:transform .15s var(--ease), opacity .15s; }
.cb-go:hover{ transform:translateY(-1px); opacity:.92; }
.cb-go i{ font-style:normal; }
.cb-cal, .cb-vet{ font:inherit; font-size:.8rem; font-weight:600; padding:.45rem .8rem; border-radius:11px; cursor:pointer;
  border:1px solid var(--line-2); background:transparent; color:var(--soft); text-align:center; text-decoration:none; }
.cb-cal:hover, .cb-vet:hover{ color:var(--ink); border-color:var(--ink); }
.cb-vet{ color:var(--warm); border-color:color-mix(in srgb,var(--warm) 40%,transparent); }

.cb-t.past{ opacity:.78; }
.cb-morewrap{ text-align:center; margin:1.2rem 0 .4rem; }
.cb-more{ font:inherit; font-weight:600; font-size:.9rem; padding:.7rem 1.4rem; border-radius:999px; cursor:pointer;
  border:1px solid var(--line-2); background:var(--card); color:var(--ink); }
.cb-more:hover{ border-color:var(--ink); }
.cb-empty{ display:flex; flex-direction:column; align-items:center; gap:.4rem; padding:3rem 1rem;
  border:1px dashed var(--line-2); border-radius:18px; color:var(--muted); text-align:center; }
.cb-empty b{ color:var(--ink); font-size:1.02rem; }
.cb-note{ max-width:820px; margin:1.3rem auto 0; padding:0 1rem; text-align:center; font-size:.8rem;
  line-height:1.6; color:var(--muted); }
.cb-note b{ color:var(--soft); }

/* skeleton while the feed loads */
.cb-stat.sk, .cb-t.sk{ min-height:96px; background:linear-gradient(100deg,var(--card) 30%,var(--bg-2) 50%,var(--card) 70%);
  background-size:300% 100%; animation:cb-shimmer 1.4s linear infinite; }
.cb-stat.sk{ min-height:82px; }
@keyframes cb-shimmer{ to{ background-position:-150% 0; } }

/* ── home-page preview (#confGrid.cb-home) ──────────────────────────── */
.conf-grid.cb-home{ grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:.8rem; }
.cb-home .cb-t{ grid-template-columns:82px 1fr; text-align:left; }
.cb-home .cb-cd{ min-height:78px; }
.cb-home .cb-cd b{ font-size:1.6rem; }
.cb-home .cb-name{ -webkit-line-clamp:1; }
.cb-cover{ position:absolute; inset:0; border-radius:18px; }
.cb-cover:focus-visible{ outline:2px solid var(--violet); outline-offset:2px; }

/* ── small screens ───────────────────────────────────────────────────── */
@media (max-width:860px){
  .cb-week{ grid-template-columns:1fr; }
  .cb-t{ grid-template-columns:78px 1fr; }
  .cb-act{ grid-column:1 / -1; flex-direction:row; flex-wrap:wrap; min-width:0; }
  .cb-act > *{ flex:1 1 auto; }
  /* wrapped onto several lines, a sticky bar would cover half a phone screen */
  .cb-bar{ position:static; }
  .cb-count{ width:100%; margin-left:0; }
}
@media (max-width:560px){
  .cb-stats{ grid-template-columns:repeat(2,1fr); }
  .cb-stat span{ font-size:.68rem; }
  .cb-bar select{ flex:1 1 44%; max-width:none; }
  .cb-quick{ flex-wrap:wrap; }
  .cb-t{ grid-template-columns:66px 1fr; gap:.75rem; padding:.7rem; }
  .cb-cd{ min-height:72px; } .cb-cd b{ font-size:1.5rem; } .cb-cd small{ font-size:.6rem; }
  .cb-l1 h3{ font-size:1.08rem; }
  .conf-grid.cb-home{ grid-template-columns:1fr; }
}
