:root{
  --paper:#FBFAF6; --panel:#FFFFFF; --ink:#17150F; --muted:#6A675C; --hair:#E4E0D6;
  --invited:#2F4B7C; --contributed:#1F7A6B; --parallel:#B26A1E; --lightning:#B2402B;
  --break:#9A968B; --social:#6A4A86;
  --invited-bg:#ECF0F7; --contributed-bg:#E7F2EF; --parallel-bg:#F6ECDD;
  --lightning-bg:#F6E7E3; --break-bg:#F1EFEA; --social-bg:#EFEAF4;
  --grid-line:#17150F; --r:12px;
}
.ctprog *{box-sizing:border-box}
.ctprog{color:var(--ink);font-family:var(--font-body),system-ui,sans-serif;line-height:1.45;padding-bottom:112px}
.ctprog a{color:inherit}
.ctprog .mono{font-family:var(--font-display),monospace;font-variant-numeric:tabular-nums}

.ctprog .view{display:none;animation:ctfade .18s ease}
.ctprog .view.active{display:block}
@keyframes ctfade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* WEEK GRID */
.ctprog .weekhead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:8px 0 10px;flex-wrap:wrap}
.ctprog .weekhead h2{font-family:var(--font-display),monospace;font-size:20px;margin:0;font-weight:600}
.ctprog .tznote{font-size:12.5px;color:var(--muted);margin:0 2px 12px}
.ctprog .grid-scroll{overflow-x:auto;border:2px solid var(--grid-line);border-radius:4px;-webkit-overflow-scrolling:touch;background:var(--panel)}
.ctprog table.grid{border-collapse:collapse;width:100%;min-width:760px}
.ctprog table.grid th,.ctprog table.grid td{border:1px solid var(--grid-line);vertical-align:top}
.ctprog table.grid thead th{position:sticky;top:0;z-index:3;background:var(--ink);color:var(--paper);font-weight:500;font-size:13px;padding:8px 6px;text-align:center;border-color:var(--ink)}
.ctprog table.grid thead th:first-child{left:0;z-index:5}
.ctprog table.grid tbody th.time{position:sticky;left:0;z-index:2;background:var(--panel);font-family:var(--font-display),monospace;font-weight:500;font-size:12px;color:var(--muted);padding:6px 8px;text-align:right;white-space:nowrap;border-right:2px solid var(--grid-line)}
.ctprog table.grid td{padding:6px 7px;font-size:13px;min-width:96px}
.ctprog td.invited{background:var(--invited-bg)} .ctprog td.contributed{background:var(--contributed-bg)}
.ctprog td.parallel{background:var(--parallel-bg)} .ctprog td.lightning{background:var(--lightning-bg)}
.ctprog td.break{background:var(--break-bg);color:var(--muted);font-size:12px;text-align:center}
.ctprog td.social{background:var(--social-bg);text-align:center;font-weight:500;color:var(--social)}
.ctprog td .nm{display:block}
.ctprog td.invited .nm{font-weight:600;color:var(--invited)}
/* darker amber than --parallel for AA contrast on the cream --parallel-bg */
.ctprog td.parallel .nm{font-size:12px;color:#8A4E12;line-height:1.4}
.ctprog td.lightning .lbl{color:var(--lightning);font-weight:500}
.ctprog td.lightning button.lbl{appearance:none;-webkit-appearance:none;background:none;border:0;margin:0;padding:0;font:inherit;color:var(--lightning);font-weight:500;cursor:pointer;text-align:left}
.ctprog td.lightning button.lbl:hover{text-decoration:underline}
.ctprog td.lightning button.lbl:focus-visible{outline:2px solid var(--lightning);outline-offset:2px}
.ctprog td.social button.lbl{appearance:none;-webkit-appearance:none;background:none;border:0;margin:0;padding:0;font:inherit;color:var(--social);font-weight:500;cursor:pointer}
.ctprog td.social button.lbl:hover{text-decoration:underline}
.ctprog td.social button.lbl:focus-visible{outline:2px solid var(--social);outline-offset:2px}
.ctprog .grid a{text-decoration:none;border-bottom:1px solid transparent}
.ctprog .grid a:hover{border-bottom-color:currentColor}
.ctprog .grid .tba{color:var(--invited);font-weight:600}
.ctprog td.empty{background:repeating-linear-gradient(135deg,#fff,#fff 7px,#faf8f3 7px,#faf8f3 14px)}

/* DAY VIEW */
.ctprog #ct-day{max-width:760px;margin:0 auto}
.ctprog .dayhead{display:flex;align-items:baseline;gap:12px;margin:8px 0 14px;flex-wrap:wrap}
.ctprog .dayhead h2{font-family:var(--font-display),monospace;font-size:26px;margin:0;font-weight:600}
.ctprog .dayhead h2 .ddate{color:var(--muted);font-weight:400}
.ctprog .dayhead .dnote{color:var(--muted);font-size:14px}
.ctprog .stream{display:flex;flex-direction:column;gap:10px;max-width:760px}

.ctprog .card{position:relative;background:var(--panel);border:1px solid var(--hair);border-radius:var(--r);padding:12px 16px 12px 18px;overflow:hidden}
.ctprog .card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--c,var(--muted))}
.ctprog .card .ctop{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.ctprog .card .ctime{font-family:var(--font-display),monospace;font-size:12.5px;color:var(--muted)}
.ctprog .card .ckind{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--c);font-weight:600}
.ctprog .card .croom{font-size:11px;color:var(--muted);margin-left:auto}
.ctprog .card .cname{font-weight:600;margin-top:3px;font-size:16px}
.ctprog .card .ctitle{font-family:var(--font-body),sans-serif;color:var(--ink);margin-top:2px;font-size:14.5px;opacity:.9;line-height:1.35}
.ctprog .card .ctba{font-size:13px;color:var(--muted);margin-top:2px;font-style:italic}
.ctprog .card a.lnk{text-decoration:none;border-bottom:1px solid var(--hair)}
.ctprog .card a.lnk:hover{border-bottom-color:var(--c)}
.ctprog .tag{font-size:11px;color:var(--muted);border:1px solid var(--hair);border-radius:999px;padding:1px 8px;margin-left:6px}
.ctprog .card.invited{--c:var(--invited)} .ctprog .card.contributed{--c:var(--contributed)}
.ctprog .card.social{--c:var(--social);background:var(--social-bg);border-color:transparent}
.ctprog .card.social .cname{color:var(--social)}
.ctprog .card .cvenue{font-size:12.5px;color:var(--muted);margin-top:2px;line-height:1.3}

.ctprog .sessgap{height:8px}
.ctprog .brk{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12.5px;margin:6px 2px;letter-spacing:.04em;text-transform:uppercase}
.ctprog .brk::before,.ctprog .brk::after{content:"";height:1px;background:var(--hair);flex:1}
.ctprog .brk.big{margin:16px 2px}

/* ROOMS SESSION (parallel + lightning share this) */
.ctprog .rooms{position:relative}
.ctprog .rooms .rhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 8px;flex-wrap:wrap}
.ctprog .rooms .rhead .ckind{color:var(--kc)}
.ctprog .roomtabs{display:flex;gap:6px;flex-wrap:wrap}
.ctprog .roomtab{font-size:12.5px;border:1px solid var(--kc);background:transparent;color:var(--kc);border-radius:999px;padding:4px 11px;cursor:pointer;line-height:1.1;transition:background .12s,color .12s}
.ctprog .roomtab[aria-pressed="true"]{background:var(--kc);color:#fff}
.ctprog .tracks{display:grid;gap:10px}
.ctprog .track .ttheme{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--kc);font-weight:600;margin-bottom:2px}
.ctprog .snote{font-size:12.5px;color:var(--muted);margin-top:8px}
@media(min-width:721px){
  .ctprog .roomtabs{display:none}
  /* subgrid: each .track shares the parent's row tracks so same-time cards across
     rooms align on a common baseline (rows size to the tallest card in the slot) */
  .ctprog .tracks{grid-template-columns:repeat(var(--ncols,3),1fr);grid-template-rows:repeat(var(--nrows,4),auto);row-gap:8px}
  .ctprog .track{display:grid;grid-template-rows:subgrid;grid-row:1 / -1;row-gap:8px}
}
@media(max-width:720px){
  .ctprog .track{display:none;flex-direction:column;gap:8px}
  .ctprog .track.shown{display:flex}
  .ctprog .stackwrap{position:relative}
  .ctprog .stackwrap::before,.ctprog .stackwrap::after{content:"";position:absolute;top:0;bottom:0;left:0;width:5px;background:var(--kc);opacity:.3;border-radius:4px}
  .ctprog .stackwrap[data-n="3"]::before{transform:translateX(-14px);opacity:.16}
  .ctprog .stackwrap::after{transform:translateX(-7px)}
  .ctprog .stackwrap[data-n="1"]::before,.ctprog .stackwrap[data-n="1"]::after{display:none}
  .ctprog .stackwrap[data-n="2"]::before{display:none}
}

/* DAY SELECTOR (floating bottom) */
.ctprog .selector{position:fixed;left:0;right:0;bottom:14px;z-index:50;display:flex;justify-content:center;pointer-events:none}
.ctprog .selector .bar{pointer-events:auto;display:flex;gap:4px;background:rgba(23,21,15,.94);backdrop-filter:blur(8px);padding:5px;border-radius:999px;box-shadow:0 6px 24px rgba(0,0,0,.22);max-width:calc(100vw - 24px);overflow-x:auto;-webkit-overflow-scrolling:touch}
.ctprog .daybtn{appearance:none;flex:0 0 auto;cursor:pointer;font-size:14px;font-weight:500;line-height:1;color:#EDEBE3;background:transparent;border:1px solid transparent;border-radius:999px;padding:9px 14px;min-width:46px;text-align:center;transition:background .12s,color .12s;font-family:inherit}
.ctprog .daybtn[aria-pressed="true"]{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.ctprog .daybtn:focus-visible{outline:2px solid #fff;outline-offset:2px}
.ctprog .daybtn.week{font-weight:600}
.ctprog .sep{width:1px;background:rgba(255,255,255,.18);margin:5px 3px}

.ctprog .legend{display:flex;flex-wrap:wrap;gap:12px 18px;margin:14px 0 4px;font-size:12.5px;color:var(--muted)}
.ctprog .legend span{display:inline-flex;align-items:center;gap:6px}
.ctprog .legend i{width:11px;height:11px;border-radius:3px;display:inline-block}
@media (prefers-reduced-motion:reduce){.ctprog *{animation:none!important;transition:none!important}}

