.schedule-page-container { width: min(calc(100% - 32px), 1400px); margin: 0 auto; padding: 26px 0; }
/* Panel look comes from the shared .content-panel/.talk-content rule in pycon.css. */
.schedule-page-container .talk-content { margin-bottom: 28px; }
.schedule-content { padding: 12px 0; }
.schedule-download { margin-bottom: 20px; }
.schedule-city-tables { overflow-x: auto; padding: 12px 0; }
.schedule-list { min-width: 1000px; margin-bottom: 24px; }
.schedule-table { display: grid; grid-template-rows: 104px; grid-auto-rows: minmax(104px, auto); border: 2px solid var(--ink); background: var(--paper-muted); }
.schedule-table-header { display: flex; align-items: center; justify-content: center; flex-direction: column; background: var(--py-yellow); color: var(--ink); font-weight: 700; }
.schedule-table-item { display: flex; align-items: stretch; padding: 5px 8px; font-size: .9em; text-align: center; }
.schedule-item { display: flex; flex: 1; min-height: 88px; align-items: center; justify-content: center; flex-direction: column; gap: 6px; border-radius: 5px; padding: 10px 8px; color: var(--ink); line-height: 1.35; }
.schedule-item.talk { background: var(--py-blue); border-bottom: 4px solid color-mix(in srgb, var(--py-blue) 68%, #000); }
.schedule-item.misc { background: var(--paper); border: 1px solid #b9d8ca; }
a.schedule-item { text-decoration: none; }
a.schedule-item:hover { background: var(--py-yellow); transform: translateY(-2px); }
.schedule-item-span { color: var(--accent); font-size: .8em; font-weight: 700; }
/* On blue talk bricks the blue accent fails contrast (1.82); ink passes (5.52). */
.schedule-item.talk .schedule-item-span { color: var(--ink); }
.schedule-item-badge { font-size: .68em; }
.schedule-item-title { overflow-wrap: anywhere; text-align: center; }
@media (max-width: 700px) { .schedule-page-container { width: min(calc(100% - 24px), 1400px); } .schedule-list { min-width: 780px; } }
