:root{--blue:#1d62af;--dark:#1c2528;--green:#45b748;--muted:#617078;--line:#dce5e5;--pale:#f3f7f5;--cream:#f5f7f4;--white:#fff;font-family:Inter,"Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;color:var(--dark);background:var(--cream);font-size:16px}*{box-sizing:border-box}body{margin:0;line-height:1.55;overflow-x:hidden}button,a{font:inherit}a{color:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #72b5fa;outline-offset:3px}.topbar{background:#172b35;color:white;min-height:62px;padding:10px max(20px,calc((100vw - 1100px)/2));display:flex;justify-content:space-between;align-items:center;gap:12px}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-size:10px;line-height:1.12;letter-spacing:.12em}.brand img{width:103px;height:34px;object-fit:contain}.brand-divider{height:29px;width:1px;background:#ffffff55}.top-date{font-size:10px;text-align:right;letter-spacing:.07em;line-height:1.4}.top-date small{font-size:9px;color:#b3c7cf}.app{max-width:1100px;margin:auto;padding:0 22px 110px}.hero{position:relative;padding:22px 0 20px;overflow:hidden;display:flex;justify-content:space-between;align-items:end;gap:10px}.eyebrow,.kicker{font-size:11px;font-weight:800;letter-spacing:.16em;color:var(--blue);text-transform:uppercase}.hero h1{font-size:clamp(25px,5vw,35px);letter-spacing:-.035em;line-height:1.22;margin:7px 0}.hero p{color:var(--muted);font-size:13px;margin:0}.star{font-size:56px;line-height:1;color:var(--blue);transform:rotate(15deg);opacity:.9}.section-title{display:flex;align-items:end;justify-content:space-between;gap:8px;margin:26px 0 12px}.section-title h2{font-size:21px;margin:0;letter-spacing:-.03em}.section-title p{color:var(--muted);font-size:12px;margin:2px 0 0}.section-title .minor{font-size:12px;color:var(--blue);font-weight:700}.calendar{display:flex;gap:7px;overflow-x:auto;padding:0 0 8px;scrollbar-width:thin}.day-btn{flex:1 0 69px;min-height:72px;background:#fff;border:1px solid var(--line);border-radius:8px;color:#46555a;padding:8px 4px;text-align:center}.day-btn small{display:block;font-size:10px;font-weight:700;letter-spacing:.08em}.day-btn b{display:block;font-size:19px;line-height:1.25}.day-btn.active{background:#d9f2d8;border-color:var(--green);color:#173e22}.day-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:19px 0 12px}.day-head h2{font-size:23px;line-height:1.3;margin:2px 0}.day-head p{margin:0;color:var(--muted);font-size:13px}.today-btn{min-height:44px;border:0;background:transparent;color:var(--blue);font-weight:700;padding:0 2px;white-space:nowrap}.layout{display:grid;grid-template-columns:1fr;gap:20px}.card{background:white;border:1px solid var(--line);border-radius:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:44px;padding:9px 14px;border-radius:7px;border:1px solid var(--line);background:#fff;text-decoration:none;color:var(--blue);font-weight:750;font-size:13px;text-align:center}.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn-light{background:white;color:#1c5ca2;border-color:white}.btn-ghost{background:transparent;color:inherit;border-color:#ffffff77}.btn-sm{min-height:44px;padding:8px 12px}.notice{background:#e8f5e7;border-left:4px solid var(--green);padding:13px 15px;border-radius:0 8px 8px 0;font-size:14px;margin-top:12px}.notice.warning{background:#fff5df;border-left-color:#e2a129}.notice b{display:block;margin-bottom:2px}.status{display:inline-block;background:#e8f2ed;color:#316345;padding:3px 7px;border-radius:4px;font-size:11px;font-weight:700}.status.pending{background:#fff1d9;color:#805a13}.status.review{background:#fff1d9;color:#805a13}.details{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}.details summary{color:var(--blue);font-size:13px;font-weight:700;cursor:pointer;min-height:36px;display:flex;align-items:center}.details summary:after{content:'＋';margin-left:auto}.details[open] summary:after{content:'−'}.details p{font-size:14px}.detail-address{overflow-wrap:anywhere}.subtle{font-size:12px;color:var(--muted)}.page-intro{padding:30px 0 7px}.page-intro h1{font-size:30px;line-height:1.2;margin:7px 0}.page-intro p{font-size:14px;color:var(--muted);margin:0;max-width:600px}.visit-grid,.info-grid{display:grid;gap:12px}.visit-card,.info-card{padding:18px}.visit-top{display:flex;align-items:flex-start;gap:14px}.visit-number{background:#e9f4ea;color:#2d793a;border-radius:50%;width:42px;height:42px;display:grid;place-items:center;flex-shrink:0;font-size:12px;font-weight:800}.visit-card h2,.info-card h2{font-size:19px;line-height:1.3;margin:0 0 4px}.visit-card p,.info-card p{font-size:14px;color:#526267;margin:6px 0}.visit-card details{margin-top:12px}.visit-card h3,.info-card h3{font-size:14px;margin:17px 0 4px}.chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.chip{font-size:12px;font-weight:700;background:#edf4f3;color:#41615e;padding:5px 9px;border-radius:50px}.address{overflow-wrap:anywhere}.contact-card{padding:17px;display:flex;justify-content:space-between;align-items:center;gap:12px}.contact-card h2{font-size:16px;margin:0}.contact-card p{margin:3px 0;color:var(--muted);font-size:13px}.contact-card .contact-actions{display:flex;flex-wrap:wrap;gap:5px}.footnote{font-size:12px;color:#6d7b7c;margin-top:26px;padding-top:15px;border-top:1px solid var(--line)}.bottom-nav{position:fixed;z-index:5;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);display:flex;justify-content:center;padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -4px 20px #1a41400a}.bottom-nav a{min-width:70px;max-width:140px;flex:1;min-height:64px;text-decoration:none;color:#718184;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;font-weight:700}.bottom-nav a span{font-size:22px;line-height:1.15}.bottom-nav a.active{color:var(--blue)}.toast{position:fixed;bottom:82px;left:50%;transform:translateX(-50%);background:#1d2e31;color:white;border-radius:8px;padding:9px 15px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .15s;z-index:10}.toast.show{opacity:1}.loading,.error{margin:30px 0;padding:20px;background:white;border-radius:10px}.error button{margin-top:10px}.muted-box{background:#f4f7f6;border-radius:8px;padding:12px;margin-top:10px}.link{color:var(--blue)}@media(min-width:800px){.app{padding-left:30px;padding-right:30px}.hero{padding:30px 0}.layout{grid-template-columns:minmax(280px, .85fr) minmax(0,1.15fr);gap:30px}.layout .overview{position:sticky;top:18px;align-self:start}.visit-grid,.info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{padding-left:max(30px,calc((100vw - 1040px)/2));padding-right:max(30px,calc((100vw - 1040px)/2))}.bottom-nav{position:sticky;top:0;bottom:auto;box-shadow:none;order:-1}}

:root:lang(zh-Hant), :root:lang(zh-TW) {
  font-family: Inter, "Noto Sans TC", "Microsoft JhengHei", "PingFang TC", system-ui, sans-serif;
}

.map-warning{display:block;flex-basis:100%;font-size:12px;font-weight:700;color:#825911;line-height:1.4}


@media(max-width:600px){.topbar{min-height:48px;padding-top:6px;padding-bottom:6px}.brand img{width:83px;height:30px}.brand-divider{height:25px}.top-date{font-size:9px}.app{padding-left:16px;padding-right:16px}.hero{padding:12px 0 10px;align-items:center}.hero h1{font-size:21px;margin:3px 0;line-height:1.25}.hero h1 br{display:none}.hero p{font-size:11px}.hero .eyebrow{font-size:9px}.star{font-size:35px}.calendar{gap:5px;padding-bottom:4px}.day-btn{min-height:56px;flex-basis:60px;padding:4px 2px}.day-btn b{font-size:16px}.day-btn small{font-size:9px}.day-head{margin:10px 0 8px;align-items:center}.day-head h2{font-size:17px;line-height:1.3;margin:1px 0}.day-head p{font-size:11px}.day-head .kicker{font-size:9px}.notice{margin-top:8px}}
/* Legible action details on small screens */
.visit-card p,.info-card p,.notice{font-size:16px;line-height:1.55}.map-warning{font-size:14px}
@media(max-width:600px){.notice{font-size:16px}}

.day-focus {
  background: #1b5da6;
  color: #fff;
  border-radius: 12px;
  padding: 16px 18px;
  min-width: 0;
}

.day-focus-label {
  color: #d8ebff;
  font-size: 12px;
  font-weight: 750;
  margin-bottom: 3px;
}

.day-focus h3,
.day-focus h2 {
  margin: 0;
  font-size: clamp(19px, 4.5vw, 24px);
  line-height: 1.32;
  overflow-wrap: anywhere;
}

.layout > section > .section-title {
  margin: 0 0 8px;
}

.home-days {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
  gap: 8px 12px;
}

.home-day {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-height: 56px;
  padding: 10px 14px;
  text-decoration: none;
}

.home-day:hover,
.home-day:focus-visible {
  border-color: var(--blue);
  background: #edf5ff;
}

.home-date {
  color: var(--blue);
  font-size: 15px;
  font-weight: 750;
  font-variant-numeric: tabular-nums;
}

.home-focus {
  min-width: 0;
  font-weight: 700;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.home-arrow {
  color: var(--blue);
  font-size: 18px;
  line-height: 1;
}

#schedule-title {
  margin: 0;
  font-size: 18px;
}

.schedule-list {
  --time-column: 88px;
  --timeline-gap: 24px;
  min-width: 0;
}

.schedule-row {
  position: relative;
  display: grid;
  grid-template-columns: var(--time-column) minmax(0, 1fr);
  align-items: start;
  gap: var(--timeline-gap);
  padding-bottom: 10px;
}

.schedule-row::before,
.schedule-row::after {
  content: '';
  position: absolute;
  top: 21px;
  inset-inline-start: calc(var(--time-column) + var(--timeline-gap) / 2);
  transform: translateX(-50%);
  pointer-events: none;
}

.schedule-row:not(:last-child)::before {
  bottom: -21px;
  width: 1px;
  background: var(--line);
}

.schedule-row::after {
  width: 8px;
  height: 8px;
  margin-top: -4px;
  border-radius: 50%;
  background: var(--blue);
}

.schedule-time {
  min-width: 0;
  padding-top: 12px;
  color: #40555e;
  font-size: 14px;
  font-weight: 750;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}

.schedule-entry {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
  padding: 8px 12px;
  overflow-wrap: anywhere;
}

.schedule-heading {
  min-width: 0;
  padding-block: 5px;
}

.schedule-title {
  min-width: 0;
  margin: 0;
  font-size: 16px;
  font-weight: 750;
  line-height: 1.4;
}

.schedule-subtitle {
  color: var(--muted);
  margin: 3px 0 0;
  font-size: 13px;
  line-height: 1.4;
}

.schedule-actions {
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
}

.schedule-actions .btn {
  min-height: 40px;
  padding: 5px 8px;
  font-size: 12px;
  white-space: nowrap;
}

.schedule-journey {
  position: relative;
  display: grid;
  grid-template-columns: var(--time-column) minmax(0, 1fr);
  align-items: center;
  gap: var(--timeline-gap);
  padding: 1px 0 11px;
  color: var(--muted);
  font-size: 13px;
}

.schedule-journey::before {
  content: '';
  position: absolute;
  inset-block: 0 -21px;
  inset-inline-start: calc(var(--time-column) + var(--timeline-gap) / 2);
  width: 1px;
  transform: translateX(-50%);
  background: var(--line);
  pointer-events: none;
}

.schedule-journey:last-child::before {
  bottom: 11px;
}

.schedule-journey strong {
  justify-self: start;
  border-radius: 5px;
  padding: 3px 8px;
  background: #e9f1f5;
  color: #40555e;
  font-size: inherit;
  font-weight: 700;
  overflow-wrap: anywhere;
}

.detail-page {
  max-width: 720px;
  margin-inline: auto;
  padding-top: 22px;
}

.detail-page .back-link {
  margin-bottom: 12px;
}

.detail-panel,
.preparation-card {
  min-width: 0;
  padding: clamp(16px, 4vw, 24px);
  overflow-wrap: anywhere;
}

.detail-panel h1 {
  margin: 0 0 16px;
  font-size: clamp(23px, 5vw, 31px);
  line-height: 1.25;
}

.detail-panel h2,
.preparation-card h2 {
  margin: 14px 0 5px;
  font-size: 18px;
}

.preparation-card h2:first-child {
  margin-top: 0;
}

.detail-panel p,
.preparation-card p {
  margin: 5px 0 10px;
  color: #46585e;
}

.detail-panel ul,
.preparation-card ul {
  margin: 5px 0 12px;
  padding-inline-start: 1.3em;
}

.detail-panel a:not(.btn),
.preparation-card a:not(.btn) {
  color: var(--blue);
  text-underline-offset: 2px;
}

.preparation-card .preparation-hint {
  font-size: 0.875rem;
  margin-block: 0 16px;
}

.rooming-disclosure summary {
  width: fit-content;
  padding-block: 10px;
  color: var(--blue);
  font-weight: 700;
  cursor: pointer;
}

.rooming-table {
  width: 100%;
  border-collapse: collapse;
  text-align: start;
  font-size: 0.9375rem;
}

.rooming-table th,
.rooming-table td {
  padding: 8px 10px;
  border-block-end: 1px solid var(--line, #d9e4e9);
  text-align: start;
  vertical-align: top;
}

.rooming-table th:first-child { width: 4em; }
.rooming-table thead { background: #e9f1f5; }

.speaker-profile {
  border-block-end: 1px solid var(--line, #d9e4e9);
  padding-block: 10px 14px;
  margin-block-end: 8px;
}

.speaker-profile h3 {
  font-size: 16px;
  margin: 0;
}

@media (max-width: 600px) {
  .day-focus { padding: 13px 14px; }
  .home-day { grid-template-columns: 46px minmax(0, 1fr) auto; gap: 8px; padding-inline: 11px; }
  .home-focus { font-size: 15px; }
  .day-head .today-btn { min-height: 34px; font-size: 12px; }
  .schedule-list { --time-column: 64px; --timeline-gap: 14px; }
  .schedule-time { font-size: 13px; }
  .schedule-entry { padding-inline: 9px; }
  .schedule-title { font-size: 15px; }
  .schedule-actions .btn { padding-inline: 6px; }
  .detail-page { padding-top: 14px; }
}
