:root {
  color: #18313b;
  background: #f7f6f2;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-synthesis: none;
}

* { box-sizing: border-box; }
body { margin: 0; background: #f7f6f2; }
button, summary, a { -webkit-tap-highlight-color: transparent; }
.schedule-app { width: 100%; min-height: 100vh; }
.page-header { padding: 24px 18px 21px; border-top: 4px solid #15a6b8; border-bottom: 1px solid #d7dfdc; background: #fff; text-align: center; }
.page-header > p:first-child { margin: 0 0 6px; color: #198da0; font-size: 12px; font-weight: 850; letter-spacing: .17em; }
.page-header h1 { margin: 0; font-size: clamp(25px, 4vw, 40px); letter-spacing: -.04em; }
.page-header span { display: block; margin-top: 8px; color: #6c7e83; font-size: 15px; }
.match-guide { max-width: 560px; margin: 18px auto 0; display: grid; grid-template-columns: 1fr; gap: 10px; text-align: left; }
.match-guide p { margin: 0; padding: 11px 13px; border: 1px solid #d8e1de; border-radius: 9px; background: #f8faf8; color: #586d74; font-size: 13px; line-height: 1.45; }
.match-guide strong { display: block; margin-bottom: 2px; color: #24414a; font-size: 13px; }
.planner-tools { margin: 13px auto 0; display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; }
.planner-tools button { min-height: 38px; padding: 8px 13px; border: 1px solid #aebfbd; border-radius: 9px; background: #fff; color: #31505a; font-size: 12px; font-weight: 800; cursor: pointer; }
.planner-tools button:hover, .planner-tools button:focus-visible { border-color: #279db8; outline: none; }
.planner-tools button.active { border-color: #168ca0; background: #e6f5f3; color: #126f7e; }
.planner-tools button:disabled { opacity: .48; cursor: default; }
.planner-tools span { min-width: 20px; padding: 2px 6px; display: inline-block; border-radius: 99px; background: #e5f1ef; font-size: 10px; }
.planner-header { padding-block: 18px; }
.planner-search { width: min(680px, 100%); margin: 12px auto 0; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 8px 10px; text-align: left; }
.planner-search label { color: #36535c; font-size: 12px; font-weight: 800; }
.planner-search-control { min-width: 0; display: flex; align-items: center; overflow: hidden; border: 1px solid #aebfbd; border-radius: 11px; background: #fff; box-shadow: 0 4px 14px rgba(24,49,59,.06); }
.planner-search-control:focus-within { border-color: #279db8; box-shadow: 0 0 0 3px rgba(39,157,184,.12); }
.planner-search input { width: 100%; min-width: 0; height: 42px; padding: 0 13px; border: 0; outline: 0; color: #18313b; background: transparent; font: inherit; }
.planner-search-control button { height: 32px; margin-right: 5px; padding: 0 9px; border: 0; border-radius: 7px; background: #edf4f2; color: #426069; font-size: 10px; font-weight: 800; white-space: nowrap; cursor: pointer; }
.planner-search > span { color: #6c7e83; font-size: 11px; white-space: nowrap; }
.planner-privacy { margin: 9px 0 0; color: #6c7e83; font-size: 11px; }
.planner-privacy a { color: #177f99; font-weight: 750; }
.status { margin: 28px auto; padding: 14px; color: #64777d; text-align: center; }
.status.error { color: #9e4339; }
.day-tabs { position: sticky; top: 0; z-index: 5; display: flex; justify-content: center; gap: 3px; overflow-x: auto; border-bottom: 1px solid #d7dddb; background: rgba(250,250,248,.96); backdrop-filter: blur(8px); }
.day-tabs button { padding: 15px 18px 13px; border: 0; border-bottom: 3px solid transparent; background: transparent; color: #667980; font-size: 12px; letter-spacing: .035em; white-space: nowrap; cursor: pointer; }
.day-tabs button.active { border-bottom-color: #2c9db6; color: #177f99; font-weight: 850; }
.timetable-scroll { max-width: 100%; overflow-x: auto; }
.timetable { min-width: max-content; display: grid; background: #d9dfdd; gap: 1px; }
.corner, .room, .time, .cell { background: #fff; }
.corner { position: sticky; left: 0; z-index: 3; }
.room { min-height: 58px; padding: 19px 11px; font-size: 15px; font-weight: 800; text-align: center; }
.time { position: sticky; left: 0; z-index: 2; min-height: 138px; padding: 14px 9px; color: #6c7e83; background: #f8f8f5; font-size: 12px; text-align: right; }
.cell { min-width: 270px; min-height: 138px; padding: 8px; background: #fafbf9; }
.cell.activity-cell { padding: 8px; background: #f5f5f2; }
.activity-slot { min-height: 112px; display: grid; grid-template-columns: 70px minmax(0, 1fr); overflow: hidden; border: 1px solid #d6d9d7; border-radius: 9px; background: #ececea; color: #4c5b60; }
.activity-time { padding: 13px 5px 9px; display: flex; flex-direction: column; align-items: center; gap: 7px; background: #8b9294; color: #fff; text-align: center; }
.activity-time strong { font-size: 17px; }
.activity-time span { font-size: 11px; opacity: .9; }
.activity-copy { padding: 12px 13px; display: flex; flex-direction: column; justify-content: center; gap: 7px; }
.activity-copy strong { max-width: 100%; overflow-wrap: anywhere; font-size: 15px; line-height: 1.35; }
.activity-copy span { color: #7a8588; font-size: 11px; letter-spacing: .04em; text-transform: uppercase; }
.slot { position: relative; overflow: hidden; border: 1px solid #d4dcda; border-radius: 9px; background: #fff; }
.favorite-talk { position: absolute; top: 7px; right: 7px; z-index: 2; width: 31px; height: 31px; display: grid; place-items: center; border: 1px solid #d9dfdc; border-radius: 50%; background: rgba(255,255,255,.94); color: #a96f09; font-size: 20px; line-height: 1; cursor: pointer; box-shadow: 0 2px 8px rgba(24,49,59,.09); }
.favorite-talk:hover, .favorite-talk:focus-visible { border-color: #e2a423; background: #fff9e8; outline: none; }
.slot.favorited { box-shadow: 0 0 0 2px #efbd3d; }
.favorites-empty { padding: 60px 20px; color: #687a80; font-size: 15px; text-align: center; }
.slot-main { min-height: 112px; display: grid; grid-template-columns: 70px minmax(0,1fr); color: inherit; text-decoration: none; }
.slot-time { padding: 13px 5px 9px; display: flex; flex-direction: column; align-items: center; gap: 7px; background: #279db8; color: #fff; text-align: center; }
.slot-time strong { font-size: 17px; }
.slot-time span { font-size: 11px; opacity: .9; }
.slot-copy { min-width: 0; padding: 12px 11px; display: flex; flex-direction: column; }
.slot-copy strong { max-width: 100%; overflow-wrap: anywhere; font-size: 14px; line-height: 1.38; }
.slot-copy span { margin-top: 8px; color: #74858a; font-size: 12px; line-height: 1.4; }
.slot-copy .speaker-byline { min-width: 0; display: flex; align-items: center; gap: 7px; }
.slot-copy .speaker-byline > span:last-child { min-width: 0; margin-top: 0; overflow-wrap: anywhere; }
.speaker-thumbnails { flex: 0 0 auto; display: flex; align-items: center; margin-top: 0 !important; padding-left: 5px; }
.speaker-thumbnail { width: 25px; height: 25px; margin-left: -5px; display: block; border: 2px solid #fff; border-radius: 50%; background: #e4ecea; object-fit: cover; box-shadow: 0 1px 3px rgba(24,49,59,.18); }
.slot.keynote .speaker-thumbnail { border-color: #fff8f6; }
.slot.tutorial .speaker-thumbnail { border-color: #fbf9ff; }
.slot-copy small { margin-top: auto; padding-top: 9px; color: #8a979b; font-size: 10px; letter-spacing: .05em; text-transform: uppercase; }
.slot.keynote { border-color: #e2a69e; background: #fff8f6; }
.slot.keynote .slot-time { background: #d36458; }
.slot.tutorial { border-color: #b9abd1; background: #fbf9ff; }
.slot.tutorial .slot-time { background: #7b66a7; }
.slot details { border-top: 1px solid #e1e7e4; background: rgba(255,255,255,.8); }
.slot summary { min-height: 39px; padding: 10px 11px; display: flex; align-items: center; gap: 8px; color: #50676e; font-size: 12px; font-weight: 800; list-style: none; cursor: pointer; }
.slot summary::-webkit-details-marker { display: none; }
.slot summary::before { width: 13px; content: "＋"; color: #158ba0; font-size: 12px; }
.slot details[open] summary::before { content: "−"; }
.slot details.current { background: #fffdf4; }
.details-body { padding: 0 11px 11px; display: grid; gap: 7px; color: #536970; font-size: 13px; line-height: 1.52; }
.details-body > p { margin: 0; }
.related { padding: 8px; display: grid; gap: 3px; border: 1px solid #dbe5e1; border-radius: 7px; background: #fff; color: inherit; text-decoration: none; }
.related:hover, .related:focus-visible { border-color: #62b2ba; outline: none; }
.related strong { color: #203942; font-size: 12px; line-height: 1.38; }
.related span { color: #78888d; font-size: 10px; }
.related em { color: #13839a; font-size: 10px; font-style: normal; font-weight: 800; }
.empty { color: #7b898d; font-style: italic; }

@media (max-width: 700px) {
  .page-header { padding-block: 18px; }
  .page-header span { font-size: 13px; }
  .match-guide { grid-template-columns: 1fr; }
  .planner-search { grid-template-columns: 1fr; }
  .planner-search label { margin-bottom: -3px; }
  .planner-search > span { text-align: center; }
  .day-tabs { justify-content: flex-start; }
  .cell { min-width: 245px; }
}
