
  :root{
    --primary:#00A44E;
    --primary-ink:#035a2b;
    --secondary:#9E3C23;
    --ink:#1b1f24;
    --muted:#6b7280;
    --bg:#ffffff;
    --bg-soft:#f6f8f7;
    --ring: rgba(0,164,78,.35);
    --radius:14px;
  }

  /* Container */
  #programme{
    --gap:24px;
  }
  #programme .section-eyebrow{
    display:inline-block;
    padding:.25rem .75rem;
    border:2px solid var(--primary);
    color:var(--primary-ink);
    border-radius:999px;
    font-weight:600;
    letter-spacing:.3px;
    background:#fff;
  }
  #programme h2{
    margin:.5rem 0 1.25rem;
    font-size:clamp(26px,3.2vw,40px);
    line-height:1.15;
    color:var(--ink);
  }

  /* Tabs */
  .prog-tabs{
    display:flex;
    gap:10px;
    border-bottom:1px solid #e6e8e7;
    margin:18px 0 10px;
    flex-wrap:wrap;
  }
  .prog-tab{
    -webkit-tap-highlight-color: transparent;
    appearance:none;
    background:#fff;
    border:1px solid #e6e8e7;
    border-bottom:none;
    color:var(--ink);
    padding:.65rem 1rem;
    border-top-left-radius:10px;
    border-top-right-radius:10px;
    font-weight:600;
    cursor:pointer;
  }
  .prog-tab[aria-selected="true"]{
    color:#fff;
    background:linear-gradient(180deg, var(--primary) 0%, #02964a 100%);
    border-color:transparent;
    outline:0;
  }
  .prog-tab:focus-visible{
    box-shadow:0 0 0 4px var(--ring);
    outline:0;
  }

  /* Controls */
  .prog-controls{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
    margin:14px 0 22px;
  }
  .prog-search{
    display:flex;
    gap:10px;
  }
  .prog-search input{
    flex:1;
    padding:.75rem .9rem;
    border:1px solid #e6e8e7;
    border-radius:10px;
    font-size:.98rem;
  }
  .prog-search input:focus{
    outline:0;
    box-shadow:0 0 0 4px var(--ring);
    border-color:transparent;
  }
  .chips{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
  }
  .chip{
    border:1px solid #e6e8e7;
    background:#fff;
    color:#334155;
    border-radius:999px;
    padding:.45rem .75rem;
    font-size:.9rem;
    cursor:pointer;
  }
  .chip.is-active{
    background:var(--bg-soft);
    border-color:var(--primary);
    color:var(--primary-ink);
    box-shadow:0 0 0 2px var(--ring) inset;
  }
  .legend{
    display:flex; gap:14px; align-items:center; flex-wrap:wrap;
    font-size:.9rem; color:var(--muted);
  }
  .pill{display:inline-block; padding:.18rem .5rem; border-radius:999px; font-weight:600; font-size:.75rem;}
  .pill.cat-plenary{background:rgba(0,164,78,.12); color:var(--primary-ink);}
  .pill.cat-keynote{background:rgba(158,60,35,.1); color:#6b2a1a;}
  .pill.cat-break{background:#eef2f1; color:#496057;}
  .pill.cat-session{background:#ebf7f0; color:var(--primary-ink);}
  .pill.cat-masterclass{background:#f8efe6; color:#6a3927;}
  .pill.cat-showcase{background:#eef4ff; color:#1e3a8a;}

  /* Grid layout */
  .prog-grid{
    display:grid;
    grid-template-columns: 140px 1fr;
    gap:16px;
  }
  @media (max-width: 860px){
    .prog-grid{grid-template-columns:1fr;}
  }

  /* Time rail */
  .time-rail{
    position:sticky;
    top:10px;
    align-self:start;
    background:var(--bg-soft);
    border:1px solid #e6e8e7;
    border-radius:12px;
    padding:10px;
    max-height:70vh;
    overflow:auto;
  }
  .time-rail a{
    display:block;
    padding:.4rem .55rem;
    border-radius:8px;
    color:#334155; text-decoration:none;
    font-size:.92rem;
  }
  .time-rail a:hover{background:#e8efe9;}
  .time-rail a.is-now{
    color:#fff; background:var(--primary);
  }

  /* Card list */
  .slot-list{display:flex; flex-direction:column; gap:12px;}
  .slot{
    border:1px solid #e6e8e7;
    background:#fff;
    border-radius:var(--radius);
    padding:16px;
    position:relative;
  }
  .slot.is-break{background:linear-gradient(0deg,#fafcfa,#fff);}
  .slot-header{
    display:grid;
    grid-template-columns: 1fr auto;
    gap:14px; align-items:center;
  }
  .slot-time{
    font-weight:700;
    color:var(--primary-ink);
    background:rgba(0,164,78,.1);
    border:1px dashed rgba(0,164,78,.4);
    border-radius:10px;
    padding:.5rem .9rem;
    white-space:nowrap;
    text-align:right;
  }
  .slot-title{
    font-weight:700; color:#0f172a; font-size:1.05rem;
  }
  .slot-body{color:#374151; margin-top:.4rem;}
  .slot-meta{margin-top:.5rem; display:flex; gap:8px; flex-wrap:wrap;}
  .slot-actions{margin-top:.6rem; display:flex; gap:8px; flex-wrap:wrap;}
  .btn{
    appearance:none; border:1px solid #e6e8e7; background:#fff; color:#0f172a;
    padding:.45rem .7rem; border-radius:10px; cursor:pointer; font-weight:600;
  }
  .btn.primary{background:var(--primary); color:#fff; border-color:transparent;}
  .btn.secondary{background:var(--secondary); color:#fff; border-color:transparent;}
  .btn:focus-visible{outline:0; box-shadow:0 0 0 4px var(--ring);}

  /* Collapsible for mobile */
  .slot-collapser{display:none;}
  @media (max-width:860px){
    .slot-header{grid-template-columns: 1fr auto;}
    .slot-time{order:2}
    .slot-title{order:1}
    .slot-collapser{display:inline-flex; margin-left:auto;}
    .slot[aria-expanded="false"] .slot-body,
    .slot[aria-expanded="false"] .slot-meta,
    .slot[aria-expanded="false"] .slot-actions{display:none;}
  }

  /* Section dividers inside day */
  .divider{
    margin:18px 0 8px;
    padding:6px 10px;
    border-left:6px solid var(--secondary);
    background:#faf4f2; color:#6b2a1a;
    border-radius:8px;
    font-weight:800;
    letter-spacing:.2px;
  }

  /* Print styles */
  @media print{
    .prog-tabs, .prog-controls, .time-rail, .slot-actions, .slot-collapser{display:none !important;}
    .slot{page-break-inside:avoid;}
    .slot[aria-expanded="false"]{display:block !important;}
  }

  /* === Speakers row === */
.spk-row{
  margin-top:.6rem;
  display:flex; gap:10px; flex-wrap:wrap;
  align-items:flex-start;
}
.spk{
  display:flex; align-items:center; gap:8px;
  padding:.45rem .6rem; border:1px solid #e6e8e7; background:#fff;
  border-radius:12px;
  font-size:1rem; line-height:1.1;
}
.spk-avatar{
  width:28px; height:28px; border-radius:50%;
  display:grid; place-items:center; font-weight:800;
  border:1px solid #e6e8e7; background:rgba(0,164,78,.10); color:#0f172a;
  user-select:none;
}
.spk-name{ font-weight:700; color:#0f172a; }
.spk-role{ font-size:.85rem; color:#57606a; margin-left:4px; }
.spk-more{
  appearance:none; border:1px dashed #d6dad8; background:#f6f8f7; color:#334155;
  padding:.45rem .6rem; border-radius:12px; cursor:pointer; font-weight:600;
}
@media (max-width:860px){
  .spk{font-size:1rem;}
}

/* ===== Mobile-first comfort tweaks ===== */
:root{
  --tap: 44px; /* min touch target */
}

/* Tabs: horizontal scroll on mobile */
.prog-tabs{
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  padding-bottom: 4px;
}
.prog-tabs .prog-tab{
  flex: 0 0 auto; /* keep pills from shrinking */
  min-height: var(--tap);
}

/* Chips: horizontal on mobile, wrap on larger screens */
@media (max-width: 860px){
  .chips{
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: nowrap;
    padding-bottom: 6px;
  }
  .chip{
    display: inline-flex;
    align-items: center;
    height: var(--tap);
  }
}

/* Time rail: horizontal on mobile */
@media (max-width: 860px){
  .time-rail{
    position: sticky;
    top: 0;
    z-index: 2;
    display: flex;
    gap: 8px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    background: #fff; /* avoid translucency over content */
    border-radius: 0;
    border-left: 0;
    border-right: 0;
    padding: 8px 10px;
  }
  .time-rail a{
    flex: 0 0 auto;
    line-height: 1;
    height: var(--tap);
    display: inline-flex;
    align-items: center;
    border: 1px solid #e6e8e7;
    background: #fff;
  }
}

/* Card padding and typography on small screens */
@media (max-width: 860px){
  .slot{ padding: 14px; }
  .slot-title{ font-size: 1rem; }
  .slot-time{
    padding: .4rem .6rem;
    font-size: .9rem;
  }
  .slot-body{ font-size: .95rem; }
}

/* Buttons: ensure minimum touch size */
.btn{ min-height: var(--tap); display: inline-flex; align-items: center; }

/* Improve focus rings for accessibility on mobile */
:where(.prog-tab,.chip,.btn,.time-rail a):focus-visible{
  outline: 0;
  box-shadow: 0 0 0 4px var(--ring);
  border-color: transparent;
}

/* Reduce motion if the user prefers */
@media (prefers-reduced-motion: reduce){
  html:focus-within { scroll-behavior: auto; }
  * { transition: none !important; animation: none !important; }
}

/* Prevent layout shift from long pill labels */
.pill{ white-space: nowrap; }

/* === Abstract list inside a session === */
.abstract-list{
  margin: .5rem 0 0;
  padding-left: 1.25rem; /* space for numbers */
  display: grid;
  gap: .4rem;
}
.abstract-list li{
  margin: 0;
}
.abs-title{
  font-weight: 600;
  color: #0f172a;
  line-height: 1.25;
}
.abs-presenter{
  font-size: .9rem;
  color: #57606a;
  margin-top: .1rem;
}

/* Mobile tightening */
@media (max-width: 860px){
  .abstract-list{ gap: .35rem; }
  .abs-title{ font-size: .98rem; }
  .abs-presenter{ font-size: .88rem; }
}
