:root{--ink:#3E3A39;--paper:#FFFCF6;--pink:#F2A497;--yellow:#F6D27A;--blue:#A8D3E6;--green:#B9DAA5;--muted:#716b65;--border:3px solid var(--ink)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans TC",system-ui,sans-serif;line-height:1.8}a{color:inherit}button{color:inherit}::selection{background:var(--yellow)}.wrap{width:min(1080px,calc(100% - 64px));margin-inline:auto}.topbar{position:fixed;z-index:20;inset:0 0 auto;background:var(--paper);border-bottom:var(--border);height:85px;padding:15px max(32px,calc((100vw - 1080px)/2));display:flex;align-items:center;justify-content:space-between}.brand{font-family:"DM Mono",monospace;font-size:21px;font-weight:500;line-height:1;text-decoration:none;letter-spacing:.08em}.brand span{font-size:10px;letter-spacing:.18em}.nav-links{display:flex;gap:29px}.nav-link{text-decoration:none;font-size:14px;font-weight:600}.nav-link:hover{text-decoration:underline;text-decoration-color:var(--pink);text-decoration-thickness:4px;text-underline-offset:7px}.hero{padding:150px 0 65px;overflow:hidden}.hero-grid{width:min(1080px,calc(100% - 64px));margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:35px;align-items:center}.eyebrow,.section-label{font-family:"DM Mono",monospace;font-size:11px;font-weight:500;letter-spacing:.12em}.eyebrow{margin:0 0 20px}.hero h1{font-size:clamp(34px,4.4vw,58px);line-height:1.4;letter-spacing:.01em;margin:0 0 20px;font-weight:700}.title-mark{position:relative;display:inline-block;isolation:isolate}.title-mark:after{content:"";position:absolute;z-index:-1;background:var(--yellow);height:20px;bottom:6px;left:-3px;right:-4px;border-radius:8px;transform:rotate(-3deg)}.lede{font-size:14px;max-width:420px;color:var(--muted)}.hero-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.hero-pills span{border:2px solid var(--ink);border-radius:30px;padding:4px 12px;font-size:12px;background:#F0F6E9}.hero-pills span+span{background:#FBE9E4}.countdown{display:flex;gap:13px;align-items:center;margin-top:26px}.countdown-icon{font-size:36px;color:var(--ink)}.countdown small{display:block;font-size:11px;letter-spacing:.08em}.countdown strong{font-size:20px;display:block;line-height:1.5}.postcard{position:relative;text-align:center}.postcard svg{width:100%;height:auto;display:block;overflow:visible}.art-caption{display:inline-block;font-size:12px;letter-spacing:.1em;transform:rotate(-3deg);margin-top:12px}.art-train{animation:train 5s ease-in-out infinite}.art-cloud{animation:cloud 8s ease-in-out infinite}.art-sun{transform-origin:432px 87px;animation:sun 6s ease-in-out infinite}@keyframes train{50%{transform:translate(8px,-2px)}}@keyframes cloud{50%{transform:translateX(8px)}}@keyframes sun{50%{transform:rotate(8deg)}}.flights{padding:46px 0 40px;border-top:var(--border)}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:24px}.section-label{margin:0 0 8px;color:var(--muted)}h2{font-size:28px;line-height:1.5;letter-spacing:.03em;margin:0}.section-note,.day-theme{font-size:12px;color:var(--muted);margin:0 0 4px}.flight-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.flight-card{border:var(--border);border-radius:26px;overflow:hidden;background:#FBECE7}.inbound{background:#EAF3F7}.flight-heading{display:flex;justify-content:space-between;padding:9px 24px;border-bottom:var(--border);background:var(--pink);font-size:12px}.inbound .flight-heading{background:var(--blue)}.flight-heading strong{font-family:"DM Mono",monospace}.flight-route{display:grid;grid-template-columns:max-content minmax(0,1fr) max-content;column-gap:10px;padding:12px 25px}.flight-route div{display:flex;flex-direction:column}.flight-route strong{font-family:"DM Mono",monospace;font-size:34px;line-height:1.4}.flight-route div:last-child{text-align:right}.flight-route span{font-size:12px}.flight-bottom{margin:0 24px;padding:9px 0 11px;border-top:2px dashed var(--ink);display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px}.flight-bottom span{font-size:11px}.intro{padding:65px 0;display:grid;grid-template-columns:1fr 1fr;gap:12px 60px}.intro .section-label{grid-column:1/-1}.intro h2{font-size:26px}.intro>p:last-child{font-size:14px;color:var(--muted);align-self:center;margin:0}.schedule{padding:42px 0 70px;border-top:var(--border)}button:focus-visible,a:focus-visible,.timeline:focus-visible{outline:3px solid var(--ink);outline-offset:5px}.day-summary{border:var(--border);border-radius:22px;background:#F0F6E9;padding:20px 24px;margin:12px 0 30px;font-size:14px}.timeline{position:relative;display:grid;gap:17px;padding-left:28px}.timeline:before{content:"";position:absolute;top:30px;bottom:30px;left:8px;width:3px;background:var(--ink)}.event{position:relative;display:grid;grid-template-columns:98px 1fr;border:var(--border);border-radius:23px;background:var(--paper)}.event:before{content:"";position:absolute;left:-30px;top:27px;width:13px;height:13px;border:var(--border);border-radius:50%;background:var(--yellow)}.event-time{padding:25px 12px;text-align:center;font:500 15px "DM Mono",monospace;background:#F9F0D9;border-right:var(--border);border-radius:20px 0 0 20px}.event-body{padding:18px 22px}.event-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.event-area,.event-transport,.event-price{font-size:11px;padding:1px 9px;border:2px solid var(--ink);border-radius:9px;background:#FBE9E4}.event-transport{background:var(--blue)}.event-price{background:#F9F0D9}.event h3{font-size:16px;margin:0}.event p{font-size:13px;color:var(--muted);margin:6px 0 0;white-space:pre-line}.day-enter{animation:bounce-in .45s ease-out}@keyframes bounce-in{0%{opacity:0;transform:translateY(10px) scale(.98)}65%{opacity:1;transform:translateY(-4px) scale(1.005)}100%{transform:translateY(0) scale(1)}}.checklist{border:var(--border);border-radius:28px;background:#F9F0D9;padding:32px;display:grid;grid-template-columns:1fr 1.5fr;gap:30px;margin-bottom:65px}.checklist h2{font-size:24px}.checklist ul{font-size:13px;margin:0;padding-left:20px}.checklist li+li{margin-top:9px}footer{border-top:var(--border);padding:23px max(32px,calc((100vw - 1080px)/2));display:flex;justify-content:space-between;font:11px "DM Mono",monospace;background:#F0F6E9}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:760px){.wrap,.hero-grid{width:calc(100% - 36px)}.topbar{height:74px;padding:12px 18px}.brand{font-size:18px}.nav-links{gap:15px}.nav-link{font-size:12px}.hero{padding:115px 0 40px}.hero-grid{grid-template-columns:1fr;gap:14px}.hero h1{font-size:40px;margin-bottom:10px}.postcard{max-width:470px;width:100%;margin:auto}.flight-grid{grid-template-columns:1fr;gap:18px}.section-heading{display:block}.section-note,.day-theme{display:block;margin-top:10px}.intro{grid-template-columns:1fr;gap:15px;padding:45px 0}.event{grid-template-columns:67px 1fr}.event-time{font-size:12px;padding:25px 5px}.event-body{padding:15px 13px}.event h3{font-size:15px}.checklist{grid-template-columns:1fr;padding:25px;gap:18px;margin-bottom:40px}h2{font-size:24px}footer{padding:20px 18px;font-size:9px;gap:12px}.flight-heading,.flight-route{padding-inline:16px}.flight-bottom{margin-inline:16px}.flight-bottom{font-size:11px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

.flights > .section-heading{margin-bottom:32px}

.event-map{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:10px;padding:7px 13px;border:2px solid var(--ink);border-radius:12px;background:#E4F5DF;color:var(--ink);font-size:12px;font-weight:700;text-decoration:none;transition:background .2s}.event-map:hover{background:#CBEABD}.event-map [aria-hidden]{font-size:16px}

.event-maps { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.event-maps .event-map { margin-top: 0; }

.event-body-split {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-template-rows: auto auto 1fr;
  column-gap: 16px;
}
.event-body-split > * { grid-column: 1; }
.event-body-split > .event-side-note {
  grid-area: 1 / 2 / 4 / 3;
  align-self: center;
  margin: 0;
  text-align: right;
  overflow-wrap: anywhere;
}

.day-details{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 18px}
.day-details .day-theme{margin-top:0}
.day-outfit{font-size:12px;color:var(--muted);margin:0 0 4px;text-align:right;white-space:pre-line;overflow-wrap:anywhere}

.flight-route .flight-path {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  align-self: start;
  gap: 6px;
  font-size: 22px;
  line-height: 47.6px;
}

.flight-path::before,
.flight-path::after {
  content: "";
  border-top: 3px dotted currentColor;
}

@media (max-width: 760px) {
  .flight-route .flight-path {
    gap: 8px;
    font-size: 36px;
  }

  .flight-path::before,
  .flight-path::after {
    height: 4px;
    border: 0;
    background: radial-gradient(circle, currentColor 1.5px, transparent 2px)
      center / 13px 4px space no-repeat;
  }
}

.day-tabs {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  overflow-x: auto;
  padding-block: 6px 12px;
}

.day-tabs button {
  position: relative;
  min-width: 0;
  display: grid;
  justify-items: center;
  gap: 2px;
  padding: 2px 0 4px;
  border: 0;
  background: transparent;
  font: 500 15px "DM Mono", monospace;
  cursor: pointer;
}

.day-tabs button::before {
  content: "";
  position: absolute;
  top: 33px;
  inset-inline: 0;
  border-top: 2px solid var(--ink);
}

.day-tabs button:first-child::before { inset-inline-start: 50%; }
.day-tabs button:last-child::before { inset-inline-end: 50%; }

.day-tabs button::after {
  content: "";
  position: absolute;
  top: 29px;
  width: 6px;
  height: 6px;
  border: 2px solid var(--ink);
  border-radius: 50%;
  background: var(--paper);
}

.day-cat {
  z-index: 1;
  width: 46px;
  height: 35px;
  margin-bottom: 2px;
  visibility: hidden;
}

.day-tabs [aria-selected="true"] .day-cat { visibility: visible; }
.day-date { padding: 3px 7px; border-radius: 20px; }
.day-tabs [aria-selected="true"] .day-date { background: var(--pink); }
.day-tabs small { color: var(--muted); font: 12px "Noto Sans TC", system-ui, sans-serif; }
.day-tabs button:focus-visible { outline-offset: -3px; border-radius: 12px; }

@media (max-width: 760px) {
  .day-tabs { grid-auto-columns: max(calc(100% / 6), 48px); }
}

@media (prefers-reduced-motion: no-preference) {
  .day-tabs [aria-selected="true"] .day-cat-step {
    animation: cat-step .36s ease-in-out 4 alternate;
    transform-origin: 50% 72%;
  }
}

@keyframes cat-step {
  from { transform: skewX(-18deg); }
  to { transform: skewX(18deg); }
}

@media (max-width: 760px) {
  :root { --mobile-nav-height: 54px; }
  html { scroll-padding-top: var(--mobile-nav-height); }
  .topbar { height: var(--mobile-nav-height); padding-block: 8px; }

  .flights, .schedule { padding-top: 29px; }
  .schedule { padding-bottom: 16px; }
  .schedule .section-heading { margin-bottom: 2px; }
  .schedule .section-label { margin-bottom: 0; }

  .day-tabs {
    position: sticky;
    top: var(--mobile-nav-height);
    z-index: 5;
    padding-block: 5px 4px;
    background: var(--paper);
  }

  .day-details { margin-bottom: 6px; }
  .day-itinerary { padding: 5px 2px 5px 5px; }

  .timeline { gap: 8px; }
  .event {
    grid-template-columns: max-content minmax(0, 1fr);
    align-items: baseline;
    gap: 4px 10px;
    padding: 8px 10px;
    border-radius: 16px;
  }
  .event::before { top: 14px; }
  .event-time {
    grid-area: 1 / 1;
    padding: 0;
    border: 0;
    background: transparent;
  }

  .event .event-body { display: contents; }
  .event h3 { grid-area: 1 / 2; font-size: 14px; line-height: 1.4; }
  .event .event-meta,
  .event .event-maps,
  .event .event-side-note { grid-area: auto / 1 / auto / -1; }
  .event .event-meta { gap: 4px; margin: 0; }
  .event .event-side-note {
    margin: 0;
    font-size: 12px;
    line-height: 1.5;
    text-align: left;
    overflow-wrap: anywhere;
  }

  .event .event-meta > * {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 26px;
    padding: 2px 6px;
    border-radius: 9px;
    font-size: 11px;
    line-height: 1.2;
  }

  .event .event-map { gap: 3px; margin-top: 0; }
  .event .event-map [aria-hidden] { font-size: inherit; }
  .event .event-map-icon {
    width: 26px;
    padding: 0;
    border-radius: 50%;
  }

  .event-map-icon .event-map-label { display: none; }
}

.event-has-address { cursor: pointer; }
.event-address-toggle {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 2px 8px;
  padding: 0;
  border: 0;
  background: transparent;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.event-address-hint { font-size: 11px; color: var(--muted); white-space: nowrap; }
.event-address-hint span { display: inline-block; }
.event-address-toggle[aria-expanded="true"] .event-address-hint span { transform: rotate(180deg); }
.event-address {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px 10px;
  padding: 4px 8px 4px 12px;
  margin-top: 8px;
  border: 1px solid var(--ink);
  border-radius: 12px;
  background: #F0F6E9;
  cursor: auto;
}
.event-address[hidden], .event-address-status:empty { display: none; }
.event-address-text { font-size: 14px; white-space: pre-line; overflow-wrap: anywhere; }
.event-address-copy {
  display: grid;
  place-items: center;
  min-width: 44px;
  min-height: 44px;
  border: 0;
  background: transparent;
  cursor: pointer;
}
.event-address-copy:hover { color: var(--muted); }
.event-address-status { grid-column: 1 / -1; font-size: 12px; color: var(--muted); }
