@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@500;600;700;800&family=Noto+Sans+TC:wght@400;500;600;700;800&display=swap');
:root{font-family:'DM Sans','Noto Sans TC',system-ui,sans-serif;color:#202321;background:#f6f3ed;font-synthesis:none;text-rendering:optimizeLegibility;--ink:#202321;--muted:#4f5e62;--line:#c8d5d9;--blue:#7895a3;--blue-dark:#304a57;--paper:#fcfaf6;--wash:#f1f5f5;--sight:#527d91;--food:#b95447;--hotel:#735c98;--transit:#356b7a;--meeting:#ae3434;--shop:#946319;--radius:18px}
*{box-sizing:border-box}
body{margin:0;min-width:320px;background:linear-gradient(180deg,#dce7ea 0,#f6f3ed 250px,#f6f3ed 100%);color:var(--ink);font-size:17px;line-height:1.45}
button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}button:focus-visible,a:focus-visible{outline:3px solid #bd6b36;outline-offset:3px}
.app-shell{max-width:1240px;margin:0 auto;padding:12px 16px 24px}
.topbar{min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);min-height:48px}
.brand-mark{width:42px;height:42px;border-radius:13px;background:var(--blue-dark);color:#fff;display:grid;place-items:center;font-size:17px;font-weight:800}
.brand b,.brand small{display:block}.brand b{font-size:16px;line-height:1.1}.brand small{margin-top:3px;color:var(--muted);font-size:16px;font-weight:600;letter-spacing:.04em}
.share-button,.icon-button{border:0;cursor:pointer}.share-button{min-height:48px;display:flex;align-items:center;justify-content:center;gap:8px;background:var(--blue-dark);color:#fff;border-radius:999px;padding:8px 16px;font-weight:700;font-size:17px;box-shadow:0 5px 16px #102f3821}.share-button span{font-size:24px}
.trip-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 1px 10px}
.trip-heading h1{font-size:30px;letter-spacing:-.03em;margin:0 0 3px;line-height:1.18}.trip-meta{font-size:17px;color:var(--muted);margin:0}.updated-at{font-size:16px;color:#344b55;font-weight:700;margin:3px 0 0}
.live-label{flex:0 0 auto;border:1px solid #b8cbd1;background:#edf3f4;color:var(--blue-dark);padding:8px 11px;border-radius:999px;font-size:16px;font-weight:700;white-space:nowrap}
.day-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:0 0 10px}
.day-tab{border:1px solid var(--line);border-radius:13px;background:var(--paper);text-align:center;padding:5px 3px;min-height:56px;cursor:pointer;color:var(--ink);transition:background .16s,border-color .16s;touch-action:manipulation}
.day-tab:hover{border-color:var(--blue);background:#fff}.day-tab.active{background:var(--blue-dark);border-color:var(--blue-dark);color:#fff;box-shadow:0 4px 12px #304a5730}.day-tab b{display:block;font-size:18px;line-height:1.2}.day-tab span{display:block;font-size:17px;margin-top:1px;line-height:1.2;opacity:.9}
.meeting-summary{min-height:64px;display:flex;align-items:center;gap:12px;background:#fff;border:2px solid #b95349;border-left-width:7px;border-radius:14px;padding:8px 13px;margin:0 0 10px;color:#352b2a}
.meeting-icon{width:46px;height:46px;flex:0 0 46px;display:grid;place-items:center;border-radius:12px;background:#fae9e7;font-size:27px}.meeting-summary b{display:block;font-size:17px;color:#71342f}.meeting-summary p{font-size:19px;font-weight:800;margin:0;line-height:1.25}
.workspace{display:flex;flex-direction:column;gap:10px;min-height:0}.map-panel,.schedule-panel{background:var(--paper);border:1px solid #d5e0e2;border-radius:var(--radius);box-shadow:0 8px 28px #1a43360b}.map-panel{padding:12px;display:flex;flex-direction:column;min-width:0}.map-heading,.schedule-heading{display:flex;justify-content:space-between;align-items:center;padding:0 2px 9px}.map-heading h2,.schedule-heading h2{font-size:22px;letter-spacing:-.02em;margin:0;line-height:1.25}.icon-button{width:48px;height:48px;flex:0 0 48px;border-radius:14px;background:#dce7ea;color:var(--blue-dark);font-size:28px;display:grid;place-items:center}.icon-button:hover{background:#c9dce1}
#map{height:260px;min-height:240px;border-radius:14px;overflow:hidden;background:#dce7ea;z-index:0}.map-legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:10px 1px 2px;color:#34474c;font-size:16px}.map-legend span{display:flex;align-items:center;gap:6px;white-space:nowrap}.map-footnote{margin:6px 1px 0;color:#4f5e62;font-size:16px;line-height:1.45}
.schedule-panel{padding:13px;display:flex;flex-direction:column;min-width:0}.schedule-heading{padding-bottom:9px}.schedule-heading .eyebrow{font-size:16px;color:#526f7b;font-weight:700}.schedule-heading h2{font-size:22px}.count-pill{font-size:16px;color:#34474c;background:#e6edef;padding:7px 10px;border-radius:999px;white-space:nowrap}
.notice{font-size:16px;line-height:1.5;color:#603d1a;border:1px solid #e3c38e;background:#fff7e9;padding:11px 12px;border-radius:12px;margin:0 0 10px}
.timeline{position:relative;padding:1px 0 0;flex:1}.timeline:before{content:"";position:absolute;top:14px;bottom:20px;left:81px;width:2px;background:#dce7ea}.event-row{position:relative;display:grid;grid-template-columns:70px minmax(0,1fr);gap:14px;padding:0 0 9px}.event-time{font-variant-numeric:tabular-nums;text-align:right;padding-top:12px;color:#304a57;font-size:21px;font-weight:800;line-height:1.2}.event-time small{display:block;margin-top:3px;color:#79441f;font-size:16px;font-weight:700;line-height:1.2}.event-card{position:relative;text-align:left;border:1px solid #dbe3e3;background:#fff;border-radius:13px;padding:10px 12px;color:var(--ink);cursor:pointer;min-width:0;min-height:62px;transition:background .16s,border-color .16s;touch-action:manipulation}.event-card:before{content:"";position:absolute;left:-22px;top:20px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid var(--blue);z-index:1}.event-card:hover,.event-card.selected{background:#f1f6f7;border-color:#9ab6c0}.event-title{display:block;font-size:18px;line-height:1.38;font-weight:700}.event-sub{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:5px;color:#46575b;font-size:16px;line-height:1.35}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-height:28px;border-radius:999px;padding:3px 9px;font-size:16px;font-weight:700;white-space:nowrap}.status-badge.confirmed{background:#e0eee8;color:#245b48}.status-badge.temp{background:#fff0df;color:#7a4617}.status-badge.pending{background:#e8edef;color:#384c52}
.hotel-summary{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:10px;align-items:center;border-top:1px solid var(--line);margin-top:6px;padding:12px 1px 1px}.hotel-icon{width:48px;height:48px;border-radius:13px;display:grid;place-items:center;background:#eee9f5;font-size:27px;color:var(--hotel)}.hotel-summary small{display:block;color:#4f5e62;font-size:16px}.hotel-summary b{display:block;font-size:18px;margin-top:1px}.hotel-summary p{margin:0;font-size:16px}
.page-footer{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:14px 2px 0;color:#4f5e62;font-size:16px}
.event-dialog{width:min(520px,calc(100vw - 24px));max-height:min(90dvh,780px);border:1px solid #d3dfe2;border-radius:22px;padding:22px;background:#fcfaf6;color:var(--ink);box-shadow:0 24px 80px #142c3955;overflow:auto}.event-dialog::backdrop{background:#0b232c85;backdrop-filter:blur(3px)}.event-dialog form{position:absolute;right:12px;top:12px}.close-button{border:0;background:#e6edef;color:#304a57;width:48px;height:48px;border-radius:50%;font-size:30px;cursor:pointer}.dialog-category{font-size:30px;margin-bottom:12px}.event-dialog h2{font-size:24px;line-height:1.35;margin:4px 50px 8px 0}.dialog-status{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.dialog-address{color:#34474c;font-size:18px;line-height:1.5;margin:12px 0}.detail-facts{display:grid;grid-template-columns:100px minmax(0,1fr);gap:10px 12px;margin:16px 0}.detail-facts dt{color:#4f5e62;font-size:16px}.detail-facts dd{margin:0;color:#263b40;font-size:17px;line-height:1.5}.dialog-note{font-size:17px;line-height:1.55;color:#34474c;background:#edf3f4;border-radius:12px;padding:12px;margin:14px 0}.dialog-actions{display:grid;grid-template-columns:1fr;gap:10px;margin-top:15px}.primary-link,.secondary-button{display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;text-align:center;border-radius:13px;min-height:52px;padding:10px 14px;font-size:17px;font-weight:800;cursor:pointer}.primary-link{background:var(--blue-dark);color:#fff}.secondary-button{background:#e6edef;border:1px solid #cbdadd;color:#304a57}.toast{position:fixed;z-index:5000;left:50%;bottom:20px;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#304a57;color:white;border-radius:999px;padding:12px 18px;font-size:16px;box-shadow:0 7px 25px #0a293a38;transition:.2s;white-space:nowrap}.toast.show{opacity:1;transform:translate(-50%,0)}.noscript{padding:20px;text-align:center;font-size:17px}
.custom-marker{position:relative;display:grid;place-items:center;width:48px;height:48px;border:3px solid #fff;border-radius:50% 50% 50% 14%;transform:rotate(-45deg);color:#fff;box-shadow:0 4px 12px #19343d66;cursor:pointer}.custom-marker .marker-emoji{font-size:24px;line-height:1;transform:rotate(45deg)}.custom-marker .marker-order{position:absolute;top:-7px;right:-7px;min-width:24px;height:24px;border:2px solid #fff;border-radius:999px;background:#202321;color:#fff;font-size:16px;font-weight:800;line-height:20px;text-align:center;transform:rotate(45deg);box-shadow:0 2px 5px #0005}.custom-marker.cat-airport{background:#345d75}.custom-marker.cat-sight{background:var(--sight)}.custom-marker.cat-restaurant{background:var(--food)}.custom-marker.cat-hotel{background:var(--hotel)}.custom-marker.cat-transit{background:var(--transit)}.custom-marker.cat-meeting{width:56px;height:56px;background:var(--meeting);border-width:4px}.custom-marker.cat-shopping{background:var(--shop)}.map-unavailable{display:grid;place-items:center;height:100%;padding:24px;text-align:center;color:#304a57;background:#dce7ea;line-height:1.6;font-size:17px}
@media(min-width:851px){.app-shell{padding:18px 26px 24px}.trip-heading{padding:10px 2px 14px}.workspace{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(380px,.88fr);align-items:stretch;gap:14px;min-height:600px}.map-panel{padding:16px}.schedule-panel{padding:16px}.map-panel{order:0}.schedule-panel{order:1}#map{height:470px}.meeting-summary{margin-bottom:14px}.event-row{grid-template-columns:72px minmax(0,1fr);gap:16px}}
@media(max-width:430px){.app-shell{padding:8px 11px 20px}.topbar{min-height:48px}.brand-mark{width:40px;height:40px}.brand b{font-size:16px}.brand small{font-size:16px}.share-button{font-size:18px;padding:7px 12px}.trip-heading{padding:6px 1px 8px;align-items:flex-start}.trip-heading h1{font-size:28px}.trip-meta{font-size:16px}.updated-at{font-size:16px}.live-label{font-size:16px;padding:6px 8px}.day-tabs{gap:4px;margin-bottom:8px}.day-tab{min-height:54px;padding:4px 1px;border-radius:11px}.day-tab b{font-size:18px}.day-tab span{font-size:17px}.meeting-summary{min-height:60px;padding:7px 10px;margin-bottom:8px}.meeting-summary p{font-size:20px}.meeting-icon{width:44px;height:44px;flex-basis:44px;font-size:26px}.map-panel,.schedule-panel{border-radius:15px}.map-panel{padding:10px}.map-heading h2,.schedule-heading h2{font-size:21px}.icon-button{width:48px;height:48px}.map-legend{grid-template-columns:repeat(2,minmax(0,1fr));font-size:16px;gap:6px}.map-footnote{font-size:16px}.schedule-panel{padding:11px}.schedule-heading .eyebrow{font-size:16px}.event-row{grid-template-columns:68px minmax(0,1fr);gap:12px}.timeline:before{left:76px}.event-card:before{left:-19px}.event-time{font-size:20px}.event-title{font-size:18px}.event-sub{font-size:16px;gap:6px}.event-dialog{padding:20px}.dialog-actions{gap:10px}.primary-link{font-size:18px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
