:root{
  --safe-top:env(safe-area-inset-top,0px);
  --safe-right:env(safe-area-inset-right,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-left:env(safe-area-inset-left,0px);
  --tabbar-height:68px;
  --font-base:17px;
  --type-caption:.76rem;
  --type-footnote:.86rem;
  --type-body:1rem;
  --type-callout:1.06rem;
  --type-headline:1.18rem;
  --type-title:1.32rem;
  --type-title-2:1.8rem;
  --paper:#f2f3f7;
  --surface:#fff;
  --surface-2:#f5f6f8;
  --surface-3:#e9edf3;
  --ink:#1c1c1e;
  --muted:#656b73;
  --line:#d9dce2;
  --accent:#007aff;
  --accent-2:#005ecb;
  --accent-soft:#e9f2ff;
  --warning:#b45309;
  --focus:#005fcc;
  --scrim:rgba(12,18,28,.38);
  --shadow:0 18px 48px rgba(16,24,40,.2);
  --desktop-left:40vw;
  --map-h:40dvh;
  --f7-theme-color:var(--accent);
  --f7-ios-primary:var(--accent);
  --f7-button-text-color:var(--accent-2);
  color-scheme:light;
}
html[data-text-size="large"]{--font-base:20px}
html[data-text-size="xlarge"]{--font-base:24px}
html[data-effective-theme="dark"]{
  --paper:#111216;
  --surface:#1c1d22;
  --surface-2:#24262d;
  --surface-3:#30343d;
  --ink:#f5f5f7;
  --muted:#b0b4bd;
  --line:#3a3d46;
  --accent:#0a84ff;
  --accent-2:#66aaff;
  --accent-soft:#132b46;
  --warning:#ffb340;
  --focus:#64a9ff;
  --scrim:rgba(0,0,0,.62);
  --shadow:0 22px 56px rgba(0,0,0,.42);
  color-scheme:dark;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{height:100%;font-size:var(--font-base);background:var(--paper);-webkit-text-size-adjust:100%}
body{
  height:100%;margin:0;background:var(--paper);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang TC","Hiragino Sans","Microsoft JhengHei",sans-serif;
  line-height:1.48;-webkit-font-smoothing:antialiased;overscroll-behavior:none;
}
.ios-pwa-status-paint{display:none}
@supports (-webkit-touch-callout:none){
  @media (display-mode:standalone) and (max-width:980px) and (orientation:portrait){
    .ios-pwa-status-paint{
      display:block;position:fixed;inset:0 0 auto;height:11px;z-index:2147483647;
      pointer-events:none;background-color:var(--surface);
      -webkit-background-clip:text;background-clip:text;
    }
  }
}
button,a,input,textarea,select{font:inherit;color:inherit}
button,a,input,select,.toggle,[role="button"],[role="switch"],[role="separator"],summary{touch-action:manipulation}
button,[role="button"],[role="separator"],summary{-webkit-user-select:none;user-select:none}
button{cursor:pointer}
button:disabled{opacity:.48;cursor:not-allowed}
svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
:where(button,a,input,textarea,select,summary,[role="button"],[role="separator"]):focus-visible{outline:3px solid var(--focus);outline-offset:2px}
::selection{background:color-mix(in srgb,var(--accent) 25%,transparent)}
body.sheet-open,body.onboarding-open{overflow:hidden}
#app,.view-main,.view-main>.pages,.view-main .page{width:100%;height:100%;min-height:0}
#app{position:relative;overflow:hidden;background:var(--paper)}
#app .page{display:flex!important;flex-direction:column!important;overflow:hidden;background:var(--paper)}
.page-content.app-page-content{position:relative!important;inset:auto!important;width:100%;height:auto!important;flex:1 1 auto;min-height:0;overflow:hidden;padding:0 0 calc(var(--tabbar-height) + var(--safe-bottom))!important;margin:0!important;background:var(--paper)}
.travel-stage{position:relative;display:block;width:100%;height:100%;min-height:0;overflow:hidden}
.workspace-sheet{position:absolute;z-index:2;top:0;right:0;bottom:auto;left:0;height:var(--workspace-content-height,100%);display:grid;grid-template-rows:minmax(0,1fr);min-width:0;min-height:0;overflow:hidden;border-radius:20px 20px 0 0;background:var(--surface);box-shadow:0 -1px 0 var(--line),0 -12px 32px rgba(16,24,40,.12);transform:translate3d(0,var(--workspace-sheet-y,var(--map-h,40dvh)),0);will-change:transform}
.workspace-material{position:absolute;inset:0;pointer-events:none}
.workspace-material-glass,.workspace-material-solid{display:none}
.map-resize-handle{
  position:absolute;z-index:5;top:0;left:50%;display:grid;place-items:start center;width:96px;height:44px;min-height:44px;
  margin:0;padding:9px 0 0;border:0;border-radius:999px;background:transparent;cursor:ns-resize;touch-action:none;outline:none;transform:translateX(-50%);
}
.map-resize-handle::before{content:"";width:38px;height:5px;border-radius:999px;background:#b8bdc6;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:background .16s ease,box-shadow .16s ease}
.map-resize-handle:hover::before,.map-resize-handle:focus-visible::before,.map-resize-handle.is-workspace-dragging::before{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
body[data-app-tab="itinerary"][data-map-pane-state="map"] .workspace-sheet{background:transparent;box-shadow:none}
body[data-app-tab="itinerary"][data-map-pane-state="map"] .workspace-tabs{visibility:hidden;pointer-events:none}
.workspace-tabs{position:relative!important;inset:auto!important;grid-row:1;grid-column:1;min-width:0;min-height:0;width:100%;height:100%;overflow:hidden;background:var(--surface)}
@media(max-width:699px), (orientation:portrait) and (max-width:980px){
  /* A 44px touch grabber sits over the top of the persistent sheet. Reserve
     enough of that overlap so it never intercepts the DATE button's center.
     The Framework7 tab panels are position:absolute, so padding on their
     parent does NOT move them; offset the actual tab viewport instead. */
  body[data-app-tab="itinerary"] .workspace-tabs>.page-content.tab{
    top:24px!important;height:calc(100% - 24px)!important;
  }
}
.workspace-tabs>.page-content.tab{position:absolute!important;inset:0!important;width:100%;height:100%!important;min-width:0;min-height:0;margin:0!important;padding:0;overflow:hidden;background:var(--surface)}
.workspace-tabs>.page-content.tab.tab-active{display:flex!important;flex-direction:column!important}
.now-content{display:flex;flex:1 1 auto;flex-direction:column;width:100%;height:auto;min-height:0;overflow:hidden}
.now-guide-scroll{flex:1 1 auto;min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:8px 18px 14px;scroll-padding-block:10px}
.now-guide,.now-empty{width:min(100%,46rem);margin:0 auto}
.now-guide-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:8px 0 0}
.now-eyebrow{margin:0 0 5px;color:var(--accent-2);font-size:var(--type-footnote);font-weight:730;letter-spacing:.015em}
.now-guide-heading h1,.now-empty h1{margin:0;font-size:clamp(24px,1.35rem,28px);line-height:1.14;letter-spacing:-.03em;font-weight:760;overflow-wrap:anywhere}
.now-state{flex:none;margin-top:22px;padding:6px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent-2);font-size:var(--type-caption);font-weight:740}
.now-guide-meta{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;margin:12px 0 16px;color:var(--muted);font-size:var(--type-footnote);font-variant-numeric:tabular-nums}
.now-guide-meta time{color:var(--ink);font-size:1.14rem;font-weight:730}
.now-guide-meta span+span{padding-left:12px;border-left:1px solid var(--line)}
.now-guide-status{flex:none;display:grid;justify-items:end;gap:5px;max-width:42%}
.now-return-current{min-height:36px;padding:2px 3px;border:0;background:transparent;color:var(--accent-2);font-size:var(--type-caption);font-weight:650;text-align:right;line-height:1.2}
.now-return-current:disabled{color:var(--muted)}
.activity-transport{display:flex;align-items:baseline;gap:8px;margin:10px 0;color:var(--ink)}
.activity-transport span{color:var(--muted);font-size:var(--type-footnote)}
.activity-transport strong{font-size:var(--type-callout);font-weight:680}
.activity-summary{margin:8px 0 14px;color:var(--muted);font-size:var(--type-body);line-height:1.5}
.activity-summary>p{margin:0 0 8px}.activity-summary>p:last-child{margin-bottom:0}
.activity-summary h1,.activity-summary h2,.activity-summary h3{margin:12px 0 6px;color:var(--ink);font:inherit;font-weight:740}
.activity-summary ul,.activity-summary ol{margin:7px 0;padding-left:22px}.activity-summary li{margin:4px 0}
.activity-summary strong{color:var(--ink);font-weight:740}.activity-summary a{color:var(--accent-2);text-underline-offset:3px}
.activity-summary code{font-size:.92em;background:var(--surface-2);border-radius:4px;padding:2px 4px}
.now-guide-dock{position:relative;z-index:3;flex:none;padding:8px calc(12px + var(--safe-right)) 9px calc(12px + var(--safe-left));border-top:1px solid var(--line);background:var(--surface)}
.now-step-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:8px;min-width:0}
.now-step-row>.button{display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;width:100%;height:auto;min-height:48px;margin:0;padding:8px;border:0;border-radius:14px;background:var(--surface-2);color:var(--ink);font-size:var(--type-footnote);font-weight:650;line-height:1.2;white-space:nowrap;box-shadow:none}
.now-step-row>.now-navigation{background:var(--accent-2);color:var(--paper)}
.now-step-row svg{width:20px;height:20px;flex:none}
.now-step-row small{font:inherit}
.now-step-prev>span{font-size:1.5rem;line-height:1}
.now-step-row>.button:disabled{color:var(--muted);opacity:.48}
.now-secondary-actions{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}
.now-secondary-actions .button{min-height:44px;padding:0 12px;border-radius:12px;color:var(--accent-2);background:transparent;font-size:var(--type-footnote);font-weight:630}
.now-notes{margin:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.now-notes summary{min-height:48px;display:flex;align-items:center;cursor:pointer;color:var(--ink);font-size:var(--type-body);font-weight:670;list-style:none}
.now-notes summary::-webkit-details-marker{display:none}
.now-notes summary::after{content:"⌄";margin-left:auto;color:var(--muted);font-size:1.3rem}
.now-notes[open] summary::after{content:"⌃"}
.now-notes>div{padding:0 0 14px;color:var(--muted);font-size:var(--type-footnote);line-height:1.48;overflow-wrap:anywhere}
.now-notes>div p:first-child{margin-top:0}.now-notes>div p:last-child{margin-bottom:0}.now-notes hr{border:0;border-top:1px solid var(--line);margin:14px 0}
.now-empty{padding:28px 2px}
.now-empty p:not(.now-eyebrow){color:var(--muted);font-size:var(--type-body)}
.now-empty .button{min-height:48px;margin-top:12px;padding:0 15px;border-radius:13px;background:var(--accent-2);color:var(--paper)}

.app-tabbar{--f7-tabbar-icon-size:20px;--f7-toolbar-height:var(--tabbar-height);--f7-tabbar-icons-height:var(--tabbar-height);--f7-tabbar-link-active-color:var(--accent-2);--f7-tabbar-link-inactive-color:var(--muted);--f7-toolbar-bg-color:transparent;--f7-toolbar-border-color:transparent;z-index:100;border:0;background:transparent!important;box-shadow:none!important;pointer-events:none}
.ios .app-tabbar.toolbar-bottom .toolbar-inner{min-height:0;padding:0 max(14px,var(--safe-right)) 0 max(14px,var(--safe-left));align-items:flex-end;background:transparent;pointer-events:none}
.app-tabbar .toolbar-pane{position:relative;isolation:isolate;width:100%;max-width:30rem;height:54px;min-height:54px;margin:0 auto 8px;padding:0;display:flex;align-items:stretch;gap:0;overflow:hidden;border:1px solid var(--travel-control-border,var(--line));border-radius:999px;background:var(--travel-control-fill,var(--surface));box-shadow:var(--travel-control-shadow,var(--f7-glass-shadow));backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);pointer-events:auto}
.app-tabbar .tabbar-icon{width:20px;height:20px;stroke-width:1.8}
.app-tabbar .tab-link{position:relative;z-index:1;flex:1;min-width:0;min-height:44px;flex-direction:row;justify-content:center;gap:6px;padding:0 8px;border-radius:999px;color:var(--muted);font-size:var(--type-footnote);font-weight:620;text-decoration:none}
.app-tabbar .tab-link-active{color:var(--accent-2)}
.app-tabbar .tab-link-highlight{z-index:0;height:100%;top:0;border-radius:999px;background:color-mix(in srgb,var(--accent) 12%,var(--surface));transition:transform .24s cubic-bezier(.2,.8,.2,1),width .24s cubic-bezier(.2,.8,.2,1)}
.trip-mini-player{position:absolute;z-index:18;right:calc(10px + var(--safe-right));bottom:10px;width:min(34rem,calc(100% - 20px - var(--safe-left) - var(--safe-right)));min-height:68px;padding:7px;display:grid;grid-template-columns:minmax(0,1fr) 44px 44px;align-items:center;gap:4px;border:1px solid var(--travel-control-border,var(--line));border-radius:19px;background:var(--travel-control-fill,var(--surface));box-shadow:var(--travel-control-shadow,var(--f7-glass-shadow));backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);touch-action:none;pointer-events:auto}
.trip-mini-swipe-content{min-width:0;overflow:hidden;transform:translate3d(var(--mini-swipe-x,0px),0,0);will-change:transform,opacity}
.trip-mini-player.is-mini-releasing .trip-mini-swipe-content{transition:transform .24s cubic-bezier(.22,1,.36,1),opacity .24s ease-out}
.trip-mini-player.is-mini-dragging .trip-mini-swipe-content{transition:none!important}
.trip-mini-expand,.trip-mini-control{min-width:0;min-height:44px;margin:0;padding:0;border:0;border-radius:12px;background:transparent;color:var(--ink);text-decoration:none;touch-action:pan-y}
.trip-mini-expand{width:100%;display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:9px;overflow:hidden;text-align:left;touch-action:none}
.trip-mini-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent-2)}
.trip-mini-icon svg{width:21px;height:21px}
.trip-mini-copy{display:grid;gap:4px;min-width:0;overflow:hidden}
.trip-mini-title,.trip-mini-copy time{display:block;min-width:0;overflow:hidden;white-space:nowrap;line-height:1.2}
.trip-mini-title{font-size:var(--type-footnote);font-weight:680}
.trip-mini-copy time{color:var(--muted);font-size:var(--type-caption);font-variant-numeric:tabular-nums}
.trip-mini-title>span,.trip-mini-copy time>span{display:inline-block}
.trip-mini-copy .is-overflowing>span{animation:mini-title-scroll var(--mini-title-duration,10s) ease-in-out 2s infinite alternate}
.trip-mini-control{display:grid;place-items:center;width:44px;height:44px}
.trip-mini-control svg{width:22px;height:22px}
.trip-mini-control:disabled{opacity:.35}
.trip-mini-player:is(:hover,:focus-within,.is-touching) .is-overflowing>span{animation-play-state:paused}
.trip-mini-player :is(.trip-mini-expand,.trip-mini-control):active{background:color-mix(in srgb,var(--ink) 8%,transparent)}
.trip-mini-player .trip-mini-navigate{color:var(--accent-2)}
@keyframes mini-title-scroll{0%,20%{transform:translateX(0)}80%,100%{transform:translateX(calc(-1 * var(--mini-title-travel,0px)))}}
@keyframes itinerary-mini-in-next{from{transform:translateX(17px);opacity:.16}to{transform:translateX(0);opacity:1}}
@keyframes itinerary-mini-in-prev{from{transform:translateX(-17px);opacity:.16}to{transform:translateX(0);opacity:1}}
.trip-mini-player.mini-slide-next :is(.trip-mini-icon,.trip-mini-copy){animation:itinerary-mini-in-next .22s cubic-bezier(.2,.75,.2,1) both}
.trip-mini-player.mini-slide-prev :is(.trip-mini-icon,.trip-mini-copy){animation:itinerary-mini-in-prev .22s cubic-bezier(.2,.75,.2,1) both}

.itinerary-panel{min-width:0}
.day-tabs-row{display:flex;align-items:center;gap:10px}
.day-menu-button{width:100%;min-width:0;min-height:52px;padding:7px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2);color:var(--ink);display:grid;grid-template-columns:minmax(0,1fr) 26px;align-items:center;text-align:left}
.day-menu-current{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;column-gap:9px}
.day-menu-current>span{color:var(--accent-2);font-size:var(--type-footnote);font-weight:740;white-space:nowrap;font-variant-numeric:tabular-nums}
.day-menu-current>strong{min-width:0;font-size:var(--type-body);line-height:1.25;font-weight:690;overflow-wrap:anywhere}
.day-menu-chevron{width:19px;height:19px;color:var(--muted);justify-self:center;transition:transform .16s ease}
.day-menu-button[aria-expanded="true"] .day-menu-chevron{transform:rotate(180deg)}
.day-menu{position:fixed;z-index:13500;top:0;left:0;width:min(40rem,calc(100vw - 24px));max-height:min(60dvh,34rem);overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow);padding:6px;opacity:0;transform:translateY(-4px) scale(.985);transition:opacity .14s ease,transform .14s ease}
.day-menu.is-open{opacity:1;transform:translateY(0) scale(1)}.day-menu:not(.is-open){pointer-events:none}
.day-menu-list{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
.day-menu-row{width:100%;min-width:0;min-height:60px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);display:grid;grid-template-columns:auto minmax(0,1fr) 22px;align-items:center;column-gap:12px;text-align:left}
.day-menu-row.active{border-color:color-mix(in srgb,var(--accent) 48%,var(--line));background:var(--accent-soft)}
.day-menu-row.is-disabled{color:var(--muted);opacity:.5}
.day-menu-day{color:var(--accent-2);font-size:var(--type-caption);font-weight:720}.day-menu-date{color:var(--muted);font-size:var(--type-caption);font-variant-numeric:tabular-nums;white-space:nowrap}
.day-menu-title{display:-webkit-box;min-width:0;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:var(--type-caption);line-height:1.25;font-weight:650;overflow-wrap:anywhere}
.content{position:relative!important;flex:1 1 auto;min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:0 16px 24px;scroll-padding-top:10px}
#dayContent{width:min(100%,50rem);margin:0 auto}
.day-page{padding:23px 0 28px;scroll-margin-top:8px}
.day-page+.day-page{border-top:1px solid var(--line)}
.day-header{padding:0 0 16px}
.day-kicker{margin-bottom:5px;color:var(--accent-2);font-size:var(--type-footnote);font-weight:720;letter-spacing:.01em}
.day-header h1{margin:0 0 8px;font-size:clamp(1.55rem,5vw,2.15rem);line-height:1.12;letter-spacing:-.03em;font-weight:760}
.day-header>p{margin:0;color:var(--muted);font-size:var(--type-body);line-height:1.48}
.journey-overview{padding:20px 0 28px}
.journey-overview-header{margin:0 0 15px}.journey-overview-header>p{margin:0 0 4px;color:var(--accent-2);font-size:var(--type-footnote);font-weight:680}
.journey-overview-header h1{margin:0;font-size:var(--type-title-2);line-height:1.14;letter-spacing:-.025em}
.journey-overview-header>span{display:block;margin-top:6px;color:var(--muted);font-size:var(--type-footnote)}
.journey-overview-days{border-top:1px solid var(--line)}
.journey-overview-day{width:100%;min-height:82px;padding:12px 4px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;display:grid;gap:3px}
.journey-overview-day-meta{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.journey-overview-day-meta strong{color:var(--accent-2);font-size:var(--type-caption);font-weight:710}
.journey-overview-day-meta span,.journey-overview-day-route{color:var(--muted);font-size:var(--type-caption);line-height:1.35}
.journey-overview-day-title{font-size:var(--type-body);line-height:1.25;font-weight:690}
.lodging-summary{margin:14px 0 2px;min-height:68px;padding:9px 10px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:9px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.lodging-summary.is-muted{grid-template-columns:42px minmax(0,1fr)}
.lodging-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--surface-3);color:var(--accent-2)}
.lodging-icon svg{width:21px;height:21px}.lodging-copy{min-width:0}.lodging-copy>span{display:block;color:var(--muted);font-size:var(--type-caption);font-weight:650}
.lodging-copy>strong{display:block;margin-top:2px;font-size:var(--type-body);line-height:1.25;font-weight:700;overflow-wrap:anywhere}.lodging-copy>small{display:block;margin-top:3px;color:var(--muted);font-size:var(--type-caption);line-height:1.35;overflow-wrap:anywhere}
.lodging-nav,.stop-nav{min-width:52px;min-height:48px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--accent-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;font-size:var(--type-caption);font-weight:650}
.lodging-nav svg,.stop-nav svg{width:19px;height:19px}
.day-card.card{margin:0;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:0 2px 10px rgba(16,24,40,.06);color:var(--ink)}
.day-card .card-content{padding:15px 14px 13px}
.timeline-time{display:block;width:100%;color:var(--ink);font-size:var(--type-caption);font-weight:680;line-height:1.3;word-break:keep-all;overflow-wrap:anywhere}
.timeline-clock{display:inline-block;white-space:nowrap}
.day-page:has(>.rich-timeline){padding:12px 0 0}
.activity-card .activity-item{padding:0;border:0}
.activity-map-stop{display:block;width:100%;min-height:44px;margin-top:8px;padding:6px 0;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;color:var(--accent-2);font-size:var(--type-caption);line-height:1.3}
.day-header{padding:0 0 5px}
.day-kicker{margin:0 0 4px;color:var(--muted);font-size:var(--type-caption);font-weight:650;font-variant-numeric:tabular-nums}
.day-header h1{margin:0 0 6px;font-size:clamp(1.2rem,1.3rem,1.45rem);line-height:1.18;letter-spacing:-.025em;font-weight:760;overflow-wrap:anywhere}
.day-header>p:not(.day-kicker){margin:0;color:var(--muted);font-size:var(--type-footnote);line-height:1.42}
.activity-map-stop{display:inline-flex;align-items:center;justify-content:center;gap:5px;width:auto;min-height:44px;margin-top:7px;padding:5px 12px;border:1px solid var(--travel-control-border,var(--line));border-radius:12px;background:var(--travel-control-fill,var(--surface-2));box-shadow:none;font-weight:680}
.activity-map-stop>span{font-size:1.04em}
.day-stop-groups{list-style:none;margin:12px 0 0;padding:0;border-top:1px solid var(--line)}
.stop-main{min-width:0;transition:background-color .15s ease;border-radius:12px}
.stop-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px}
.stop-copy{min-width:0;min-height:48px;padding:4px 0;border:0;background:transparent;text-align:left;display:grid;align-content:center}
.stop-title{display:block;font-size:var(--type-footnote);line-height:1.25;font-weight:720;overflow-wrap:anywhere}
.stop-meta{display:block;margin-top:3px;color:var(--muted);font-size:var(--type-caption);line-height:1.25;font-weight:570;font-variant-numeric:tabular-nums}
.stop-sequence{flex:none;display:grid;place-items:center;min-width:52px;min-height:44px;padding:0 8px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--accent-2);font-size:var(--type-caption);font-weight:680}
.stop-sequence>span{display:grid;place-items:center;min-width:26px;height:26px;padding:0 4px;border-radius:9px;background:var(--surface-3);color:var(--accent-2);font-size:var(--type-caption);font-weight:760;font-variant-numeric:tabular-nums}
.stop-sequence:focus-visible>span{box-shadow:0 0 0 2px var(--surface),0 0 0 5px var(--focus)}
.stop-activities{display:grid;min-width:0}
.activity-item{min-width:0;padding:12px 0 10px;border-top:1px solid var(--line)}
.activity-main{min-width:0;padding:0}
.activity-time{margin:0 0 2px;color:var(--muted);font-size:var(--type-caption);line-height:1.25;font-weight:650;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.activity-head{display:flex;align-items:flex-start;justify-content:space-between;gap:5px}
.activity-open{flex:1 1 0%;min-width:0;min-height:44px;padding:4px 0;border:0;background:transparent;text-align:left;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px}
.activity-title{display:block;width:100%;min-width:0;font-size:var(--type-body);line-height:1.3;font-weight:720;overflow-wrap:normal;word-break:normal}
.activity-item.is-route .activity-title{color:var(--accent-2)}
.activity-stay{display:block;max-width:100%;color:var(--muted);font-size:var(--type-caption);line-height:1.25;font-weight:580;overflow-wrap:anywhere}
.activity-info{flex:none;width:auto;min-width:48px;min-height:44px;border:0;border-radius:11px;background:var(--surface-2);padding:0 7px;display:inline-flex;align-items:center;justify-content:center;gap:4px;color:var(--accent-2);font-size:var(--type-caption);font-weight:650;white-space:nowrap}
.activity-info svg{width:18px;height:18px;flex:none}
.activity-task-summary{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;margin:3px 0 5px;color:var(--muted);font-size:var(--type-footnote);line-height:1.42}
.activity-transport-compact{margin:4px 0;color:var(--ink);font-size:var(--type-caption);line-height:1.3;font-weight:620}
.activity-transport-compact span{margin-right:6px;color:var(--muted);font-weight:550}
.activity-plan-summary{position:relative;width:100%;min-height:54px;margin:6px 0;padding:7px 72px 7px 9px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--ink);display:grid;gap:1px;text-align:left}
.activity-plan-summary small{color:var(--muted);font-size:var(--type-caption);line-height:1.2}
.activity-plan-summary strong{font-size:var(--type-footnote);line-height:1.25;font-weight:680;overflow-wrap:anywhere}
.activity-plan-summary>span{color:var(--muted);font-size:var(--type-caption);line-height:1.25;font-variant-numeric:tabular-nums}
.activity-plan-summary .activity-plan-action{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--accent-2);font-size:var(--type-caption);font-weight:700}
.timeline-disclosures.list{margin:7px 0 0}
.timeline-disclosures.list>ul{margin:0;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.timeline-disclosures .accordion-item{overflow:hidden;border:0}
.timeline-disclosures .accordion-item+.accordion-item{border-top:1px solid var(--line)}
.timeline-disclosures .accordion-item-toggle{width:100%;min-height:48px;padding:0 10px;border:0;background:transparent;color:var(--ink);text-align:left}
.timeline-disclosures .item-inner{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;min-height:48px}
.timeline-disclosures .item-title{font-size:var(--type-caption);font-weight:680}
.timeline-disclosures .item-after{min-width:0;max-width:62%;color:var(--muted);font-size:var(--type-caption);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.timeline-disclosures .accordion-item-toggle::after{content:"";flex:none;width:8px;height:8px;margin-left:5px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(135deg);transition:transform .18s ease}
.timeline-disclosures .accordion-item-opened>.accordion-item-toggle::after{transform:rotate(-45deg)}
.timeline-disclosures .accordion-item-content{font-size:var(--type-body)}
.timeline-disclosure-content{padding:2px 10px 12px;border-top:1px solid var(--line)}
.activity-places,.activity-transport,.activity-summary,.activity-fit,.activity-luggage-summary{margin-top:9px}
.activity-place-row.no-navigation{grid-template-columns:minmax(0,1fr)}
.time-range{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 3px;line-height:1.2}.time-dash{color:var(--muted);font-weight:500}.time-single,.time-text{display:block;line-height:1.3;overflow-wrap:anywhere}.time-text{font-size:var(--type-caption)!important}
.activity-place-row{display:grid;grid-template-columns:minmax(0,1fr) 70px;align-items:stretch;margin-top:6px}
.activity-place{min-width:0;min-height:48px;border:1px solid var(--line);border-radius:12px 0 0 12px;background:var(--surface);padding:6px 9px;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:8px;text-align:left}
.activity-place.active{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 48%,var(--line))}.activity-place-name{font-size:var(--type-footnote);font-weight:630;line-height:1.25;overflow-wrap:anywhere}
.stay-index,.place-role{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);color:var(--accent-2);font-size:var(--type-caption);font-weight:700}.place-role.is-route{background:var(--accent-soft)}
.place-nav{min-height:48px;border:1px solid var(--line);border-left:0;border-radius:0 12px 12px 0;background:var(--surface-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;font-size:var(--type-caption);font-weight:640;line-height:1.05}
.place-nav svg{width:18px;height:18px}.route-connector{min-height:22px;display:flex;align-items:center;gap:7px;padding-left:15px;color:var(--muted);font-size:var(--type-caption)}
.route-connector>span{width:1px;height:18px;background:var(--line);position:relative}.route-connector>span::after{content:"";position:absolute;left:-2px;bottom:0;width:5px;height:5px;border-right:1px solid var(--muted);border-bottom:1px solid var(--muted);transform:rotate(45deg)}
.activity-fit{min-height:44px;margin-top:4px;border:0;border-radius:10px;background:transparent;color:var(--accent-2);font-size:var(--type-footnote);font-weight:630;padding:5px 9px;text-align:left}
.transport-schedule{container:transport-schedule / inline-size;margin:10px 0 13px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.transport-schedule-head{display:flex;align-items:baseline;justify-content:space-between;gap:9px;padding:10px 11px;background:var(--surface-2)}
.transport-schedule-head strong{font-size:var(--type-footnote);font-weight:700}.transport-schedule-head small{color:var(--muted);font-size:var(--type-caption);line-height:1.25;text-align:right}
.transport-table-wrap{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.transport-schedule table{width:100%;min-width:490px;border-collapse:collapse;table-layout:fixed;font-size:var(--type-caption);font-variant-numeric:tabular-nums}
.transport-schedule th,.transport-schedule td{padding:8px 7px;border-top:1px solid var(--line);vertical-align:middle;text-align:left}
.transport-schedule thead th{color:var(--muted);font-size:var(--type-caption);font-weight:620;background:var(--surface-2)}
.transport-schedule th:first-child{width:78px}.transport-schedule th:nth-child(2),.transport-schedule th:nth-child(3){width:68px}
.transport-schedule tbody th{font-weight:650}.transport-schedule tbody tr.is-primary{background:var(--accent-soft)}.transport-schedule td:last-child{color:var(--muted);line-height:1.35}
.transport-row-mode{display:block;margin-bottom:3px;color:var(--ink);font-size:var(--type-caption);font-weight:600;line-height:1.3}
.transport-schedule-current,.transport-schedule-status{padding:9px 11px;border-top:1px solid var(--line);font-size:var(--type-caption);line-height:1.4;color:var(--muted)}.transport-schedule-current strong{color:var(--accent-2)}
.transport-schedule-actions{padding:4px 8px;border-top:1px solid var(--line)}.transport-full-schedule{width:100%;min-height:44px;border:0;border-radius:10px;background:transparent;color:var(--accent-2);padding:7px 8px;text-align:left;font-size:var(--type-footnote);font-weight:650}.transport-full-schedule span{color:var(--muted);font-size:var(--type-caption);font-weight:500}
.transport-schedule.is-full{margin:0;border:0;border-radius:0;background:transparent;overflow:visible}
.transport-schedule.is-full .transport-schedule-head{padding:9px 0;background:transparent}
.transport-candidate-list.list{margin:0}
.transport-candidate-list>ul{margin:0;padding:0;border-top:1px solid var(--line)}
.transport-candidate{list-style:none;border-bottom:1px solid var(--line)}
.transport-candidate.is-primary{background:var(--accent-soft)}
.transport-candidate .item-content{min-height:0;padding:0}
.transport-candidate .item-inner{display:block;min-width:0;padding:10px 0}
.transport-candidate .item-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}
.transport-candidate .item-title{min-width:0;color:var(--ink);font-size:var(--type-footnote);line-height:1.3;font-weight:710;white-space:normal;overflow-wrap:anywhere}
.transport-candidate .item-after{flex:none;margin:0;color:var(--muted);font-size:var(--type-caption);line-height:1.25;white-space:normal}
.transport-candidate .item-subtitle{margin-top:4px;color:var(--muted);font-size:var(--type-caption);line-height:1.35;font-variant-numeric:tabular-nums;white-space:normal}
.transport-candidate .item-text{display:block;max-height:none;margin-top:4px;color:var(--muted);font-size:var(--type-caption);line-height:1.4;white-space:normal;overflow:visible}
.transport-candidate .item-text a{color:var(--accent-2);text-underline-offset:2px}
.transport-candidate-actions{display:flex;justify-content:flex-start;margin-top:7px}
.transport-choice{min-width:84px;min-height:44px;padding:6px 12px;border:1px solid var(--accent);border-radius:11px;background:var(--surface);color:var(--accent-2);font-size:var(--type-caption);font-weight:690}
.transport-choice[aria-pressed="true"]{background:var(--accent-2);color:var(--paper)}
.transport-unavailable{align-self:center;color:var(--muted);font-size:var(--type-caption)}
.transport-expired-label,.transport-unavailable{display:block;color:var(--muted);font-size:var(--type-caption);font-weight:600}.transport-schedule.is-selectable table{min-width:540px}.transport-schedule.is-selectable th:last-child{width:68px}
.transport-schedule tbody tr.is-selected{background:var(--accent-soft)}.transport-choice{width:100%;min-width:58px;min-height:44px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);font-size:var(--type-caption);font-weight:650;padding:5px}
.transport-choice[aria-pressed="true"]{background:var(--accent-2);border-color:var(--accent);color:var(--paper)}
.transport-schedule-short-strategies{margin:0;padding:9px 28px;color:var(--muted);font-size:var(--type-caption)}
.branch-control{margin:13px 0;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto);gap:12px;align-items:center}
.branch-copy strong{display:block;font-size:var(--type-footnote);font-weight:690}.branch-copy small{display:block;margin-top:3px;color:var(--muted);font-size:var(--type-caption);line-height:1.4}
.branch-options{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}.branch-options button{min-height:46px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);padding:5px 8px;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:6px;text-align:left;font-size:var(--type-caption);font-weight:640}
.branch-options button.active{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));color:var(--accent-2)}
.option-key{width:25px;height:25px;border-radius:8px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 10%,var(--surface));font-size:var(--type-caption);font-weight:700;font-variant-numeric:tabular-nums}
.option-state{grid-column:2;color:var(--muted);font-size:var(--type-caption);line-height:1;font-weight:600}.branch-option-label{min-width:0;line-height:1.2;overflow-wrap:anywhere}
.choice-control{margin:10px 0 13px}.choice-label{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:6px}.choice-label span{color:var(--muted);font-size:var(--type-caption)}.choice-label strong{color:var(--accent-2);font-size:var(--type-footnote);font-weight:650}
.choice-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.choice-options button{min-height:52px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);padding:8px 10px;text-align:left}
.choice-option-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px}.choice-options button strong{min-width:0;font-size:var(--type-footnote);line-height:1.25;overflow-wrap:anywhere}.choice-options button small{display:block;margin-top:4px;color:var(--muted);font-size:var(--type-caption);line-height:1.35}.choice-options button.active{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}

.map-panel{position:absolute;z-index:1;inset:0;isolation:isolate;min-width:0;min-height:0;overflow:hidden;background:#dce5ee}
.map{position:absolute;inset:0}
.map-status{position:absolute;z-index:10;top:calc(10px + var(--safe-top));left:calc(10px + var(--safe-left));max-width:min(72%,22rem);min-height:40px;padding:7px 12px;display:flex;align-items:center;gap:8px;color:#1c1c1e;background:rgba(255,255,255,.88);border:1px solid rgba(255,255,255,.82);border-radius:999px;box-shadow:0 4px 14px rgba(16,24,40,.16);backdrop-filter:blur(18px) saturate(150%)}
.map-status svg{width:18px;height:18px;flex:0 0 auto;color:var(--accent-2)}.map-status span{min-width:0;font-size:var(--type-caption);font-weight:640;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-update-mobile{position:absolute;z-index:12;top:calc(8px + var(--safe-top));right:calc(10px + var(--safe-right));display:flex;align-items:center;gap:5px;min-height:44px;padding:0 12px;background:var(--f7-glass-bg-color);box-shadow:var(--f7-glass-shadow);backdrop-filter:saturate(180%) blur(16px);font-size:var(--type-caption)}.app-update-mobile svg{width:18px;height:18px}
.map-status.is-loading::after{content:"";width:15px;height:15px;flex:none;margin-left:2px;border:2px solid rgba(0,122,255,.22);border-top-color:#007aff;border-radius:50%;animation:map-status-spin .8s linear infinite}
@keyframes map-status-spin{to{transform:rotate(360deg)}}
.map-controls-row{position:absolute;z-index:12;right:calc(10px + var(--safe-right));bottom:calc(10px + var(--safe-bottom));display:flex;align-items:center;gap:8px}
.map-control{width:48px;height:48px;border:1px solid rgba(255,255,255,.82);border-radius:15px;display:grid;place-items:center;background:rgba(255,255,255,.92);color:#1c1c1e;box-shadow:0 4px 14px rgba(16,24,40,.17);backdrop-filter:blur(18px) saturate(140%)}
.map-control svg{width:22px;height:22px;color:var(--accent)}.map-follow-control{width:auto;min-width:132px;padding:0 13px;grid-auto-flow:column;grid-template-columns:auto auto;gap:7px;font-size:var(--type-caption);font-weight:650;white-space:nowrap}.map-follow-control svg{width:19px;height:19px}
.map-panel .maplibregl-ctrl-bottom-left{left:var(--safe-left);bottom:var(--safe-bottom)}
.map-panel .maplibregl-ctrl-attrib{margin:4px!important;border-radius:7px!important;background:rgba(255,255,255,.9)!important;color:#242830!important;font-size:11px!important;line-height:1.25!important;box-shadow:0 2px 8px rgba(16,24,40,.14);backdrop-filter:blur(10px)}
.map-panel .maplibregl-ctrl-attrib a{color:inherit;text-underline-offset:2px}
.map-panel .maplibregl-ctrl-attrib.maplibregl-compact{min-height:44px;padding:0 44px 0 0;max-width:calc(100vw - 20px - var(--safe-left) - var(--safe-right));box-sizing:border-box}
.map-panel .maplibregl-ctrl-attrib .maplibregl-ctrl-attrib-button{width:44px;height:44px;background-size:24px;background-repeat:no-repeat;background-position:center}
.map-panel .maplibregl-ctrl-attrib.maplibregl-compact-show{bottom:56px;max-width:min(18rem,calc(100vw - 20px - var(--safe-left) - var(--safe-right)));padding:12px 12px 12px 48px}
.map-panel .maplibregl-ctrl-attrib-inner{max-height:10rem;overflow:auto;white-space:normal;overflow-wrap:anywhere}
.map-pin-actions{position:absolute;z-index:14;left:calc(10px + var(--safe-left));bottom:calc(10px + var(--safe-bottom));width:min(320px,calc(100% - 86px - var(--safe-left) - var(--safe-right)));padding:9px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--surface) 94%,transparent);color:var(--ink);box-shadow:var(--shadow);backdrop-filter:blur(20px)}
.map-pin-actions-head{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:6px}.map-pin-actions-head strong{display:block;font-size:var(--type-footnote);line-height:1.25}.map-pin-actions-head small{display:block;margin-top:2px;color:var(--muted);font-size:var(--type-caption);font-variant-numeric:tabular-nums}
.map-pin-close{width:44px;height:44px;border:0;border-radius:12px;background:transparent;display:grid;place-items:center;color:var(--muted)}.map-pin-close svg{width:19px;height:19px}
.map-pin-action-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:5px}.map-pin-action{min-width:0;min-height:44px;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--accent-2);text-decoration:none;display:flex;align-items:center;justify-content:center;gap:6px;font-size:var(--type-caption);font-weight:650;line-height:1.2}
.map-pin-action.primary{background:var(--accent-2);border-color:var(--accent);color:var(--paper)}.map-pin-action svg{width:18px;height:18px;flex:none}.map-pin-action span{min-width:0;overflow-wrap:anywhere;text-align:center}
.map-dropped-pin{position:relative;width:60px;height:74px;padding:0;border:0;background:transparent;cursor:pointer;overflow:visible;filter:drop-shadow(0 5px 7px rgba(16,24,40,.22))}
.map-dropped-pin-badge{position:absolute;left:4px;top:0;width:52px;height:52px;border:3px solid #fff;border-radius:50%;display:grid;place-items:center;background:linear-gradient(180deg,#ff6682,#e33452);box-shadow:0 4px 11px rgba(96,24,45,.24);pointer-events:none;z-index:2}
.map-dropped-pin-glyph{position:relative;width:18px;height:27px;display:block}.map-dropped-pin-glyph::before{content:"";position:absolute;left:50%;top:1px;width:13px;height:13px;border-radius:50%;background:#fff;transform:translateX(-50%)}.map-dropped-pin-glyph::after{content:"";position:absolute;left:50%;top:12px;width:5px;height:15px;border-radius:999px;background:#fff;transform:translateX(-50%)}
.map-dropped-pin-tip{position:absolute;left:50%;bottom:0;width:18px;height:28px;transform:translateX(-50%);pointer-events:none;z-index:1}.map-dropped-pin-tip::before,.map-dropped-pin-tip::after{content:"";position:absolute;clip-path:polygon(0 0,100% 0,50% 100%)}.map-dropped-pin-tip::before{inset:0;background:#fff}.map-dropped-pin-tip::after{left:3px;right:3px;top:2px;bottom:2px;background:#e33452}
.map-dropped-pin:focus-visible{outline:0}.map-dropped-pin:focus-visible .map-dropped-pin-badge{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--focus)}
.map-user-location{position:relative;width:76px;height:76px;pointer-events:none;isolation:isolate}.map-user-location-heading{position:absolute;left:50%;top:50%;width:68px;height:54px;opacity:0;transform:translate(-50%,-100%) rotate(var(--user-heading-deg,0deg));transform-origin:50% 100%;clip-path:polygon(50% 100%,8% 0,92% 0);background:linear-gradient(180deg,rgba(10,132,255,.04),rgba(10,132,255,.3));transition:opacity 140ms ease;z-index:0}.map-user-location.is-heading-visible .map-user-location-heading{opacity:1}
.map-user-location-pulse{position:absolute;left:50%;top:50%;width:34px;height:34px;border-radius:50%;background:rgba(10,132,255,.22);transform:translate(-50%,-50%);animation:map-user-location-pulse 2.2s ease-out infinite;z-index:1}.map-user-location-dot{position:absolute;left:50%;top:50%;width:20px;height:20px;border:3px solid #fff;border-radius:50%;background:#0a84ff;box-shadow:0 2px 7px rgba(0,72,160,.38);transform:translate(-50%,-50%);z-index:2}
@keyframes map-user-location-pulse{0%{transform:translate(-50%,-50%) scale(.58);opacity:.72}68%,100%{transform:translate(-50%,-50%) scale(1.08);opacity:0}}
.map-stop-stack{position:absolute;display:flex;width:max-content;align-items:center;gap:3px;padding:3px;border-radius:999px;background:rgba(255,255,255,.94);box-shadow:0 5px 16px rgba(16,24,40,.2)}.map-stop-stack.is-multi{gap:9px;padding-inline:5px}
.map-stop-stack .map-stop-shared-label{position:absolute;left:50%;bottom:calc(100% + 4px);transform:translateX(-50%);pointer-events:none;white-space:nowrap;padding:3px 8px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font-size:var(--type-caption);line-height:1.25;font-weight:650;box-shadow:0 2px 7px rgba(16,24,40,.15)}
.map-stop-number{position:relative;isolation:isolate;width:44px;height:44px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:transparent;color:#fff;font:750 var(--type-caption)/1 -apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",sans-serif;font-variant-numeric:tabular-nums;cursor:pointer;transition:transform 120ms ease-out}
.map-stop-number::before{content:"";position:absolute;inset:6px;z-index:-1;border:2px solid rgba(255,255,255,.98);border-radius:50%;background:#1c1c1e;box-shadow:0 2px 7px rgba(16,24,40,.22)}.map-stop-number::after{content:"";position:absolute;inset:2px;border:2px solid transparent;border-radius:50%;pointer-events:none}
.map-stop-number:hover,.map-stop-number:focus-visible{transform:scale(1.06);outline:0}.map-stop-number:focus-visible::before{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--focus)}.map-stop-number.is-scroll-focused{transform:scale(1.14);z-index:4}.map-stop-number.is-scroll-focused::before{background:var(--accent);box-shadow:0 0 0 3px #fff,0 0 0 6px color-mix(in srgb,var(--accent) 45%,transparent)}
.map-stop-number.is-active{transform:scale(1.08);z-index:2}.map-stop-number.is-active::before{background:var(--warning)}.map-stop-number.is-active::after{border-color:#fff;box-shadow:0 0 0 2px var(--warning)}
.map-stop-range{min-width:54px;height:40px;padding:0 10px;border:2px solid #fff;border-radius:999px;display:grid;place-items:center;background:#1c1c1e;color:#fff;box-shadow:0 3px 10px rgba(16,24,40,.24);font-size:var(--type-caption);font-weight:700;font-variant-numeric:tabular-nums;grid-auto-flow:column}.map-stop-range::after{content:"";width:6px;height:6px;margin-left:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-1px)}.map-stop-range.is-scroll-focused{background:var(--accent-2);color:var(--paper);box-shadow:0 0 0 3px #fff,0 0 0 6px color-mix(in srgb,var(--accent) 42%,transparent)}.map-stop-range.is-active{background:var(--warning);color:var(--paper);outline:2px solid #fff;outline-offset:2px}
.map-day-origin{width:34px;height:34px;border:2px solid #fff;border-radius:50%;display:grid;place-items:center;background:#5e6570;color:#fff;box-shadow:0 4px 12px rgba(16,24,40,.18);font-size:var(--type-caption);font-weight:700;pointer-events:none}
.map-error{position:absolute;inset:0;z-index:30;display:none;place-items:center;padding:22px;background:rgba(247,248,250,.94);text-align:center;color:#1c1c1e;backdrop-filter:blur(8px)}.map-error.show{display:grid}.map-error strong{display:block;font-size:var(--type-headline);font-weight:700}.map-error p{max-width:38ch;color:#626a74;font-size:var(--type-footnote)}
/* The fallback must remain readable at x-large text on a 320px iPhone.
   Prevent intrinsic button/copy width from enlarging the grid's only child. */
.map-error>div{box-sizing:border-box;min-width:0;width:min(100%,32rem)}
.map-error :is(strong,p){overflow-wrap:anywhere}
/* Map failure must leave a touchable recovery surface above the floating
   Activity bar, even in short landscape and at x-large Dynamic Type. */
body[data-map-pane-state="map"] .map-panel:not(.is-fullscreen) .map-error.show{
  bottom:min(calc(96px + var(--safe-bottom)),30%);
  overflow-y:auto;
  overscroll-behavior:contain;
  align-content:start;
  justify-items:center;
  padding:calc(12px + var(--safe-top)) 12px 18px;
}
.map-error-actions{display:flex;min-width:0;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.map-error-actions .secondary-action{min-width:44px;max-width:100%;min-height:44px;white-space:normal}.map-error-global-action{display:none}
.map-fullscreen-context{display:none}
.map-panel.is-fullscreen{position:fixed!important;inset:0!important;z-index:1000!important;width:100vw!important;height:100dvh!important;border:0!important}
.map-panel.is-fullscreen .map-error{padding:calc(4.5rem + var(--safe-top)) 16px calc(8.5rem + var(--safe-bottom))}
.map-panel.is-fullscreen .map-error-global-action{display:inline-flex}.map-panel.is-fullscreen .map-status{top:calc(10px + var(--safe-top));right:calc(10px + var(--safe-right));left:auto;max-width:min(70vw,24rem)}
.map-panel.is-fullscreen .map-controls-row{right:calc(10px + var(--safe-right));bottom:calc(8rem + var(--safe-bottom));flex-direction:column;gap:9px}
.map-panel.is-fullscreen:has(.map-error.show) .map-controls-row{z-index:31;pointer-events:none}.map-panel.is-fullscreen:has(.map-error.show) #locateBtn,.map-panel.is-fullscreen:has(.map-error.show) #fitDayBtn{visibility:hidden}
body.map-fullscreen-active .map-resize-handle{display:none!important}
.map-fullscreen-context{--map-card-x:0px;position:absolute;z-index:16;left:calc(10px + var(--safe-left));right:calc(10px + var(--safe-right));bottom:calc(10px + var(--safe-bottom));min-height:118px;padding:8px;border-radius:20px;background:rgba(255,255,255,.93);border:1px solid rgba(255,255,255,.82);box-shadow:0 14px 36px rgba(16,24,40,.2);backdrop-filter:blur(22px) saturate(160%);transform:translate3d(var(--map-card-x),0,0);will-change:transform,opacity}
.map-panel.is-fullscreen .map-fullscreen-context{display:grid;z-index:31;grid-template-rows:auto 44px;gap:8px}.map-fullscreen-header{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}.map-fullscreen-swipe{min-width:0;touch-action:pan-y;user-select:none;-webkit-user-select:none}.map-fullscreen-swipe.is-dragging{cursor:grabbing}
body[data-app-tab="map"] .map-panel .map-fullscreen-context{display:grid;z-index:31;grid-template-rows:auto 44px;gap:8px;bottom:10px}
body[data-app-tab="map"] .map-panel .map-controls-row{bottom:calc(20px + var(--map-context-height,118px));flex-direction:row}
.map-fullscreen-step{width:auto;height:auto;min-width:0;min-height:44px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--ink);display:flex;align-items:center;justify-content:center;gap:5px;padding:5px 7px;transition:transform 100ms ease-out,opacity 140ms ease}.map-fullscreen-step:disabled{opacity:.24}.map-fullscreen-step svg{width:18px;height:18px;flex:none}.map-fullscreen-step span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-fullscreen-copy{min-width:0;text-align:left}
.map-activity-detail-trigger{appearance:none;-webkit-appearance:none;width:100%;min-width:0;min-height:44px;margin:0;padding:0;border:0;border-radius:7px;background:transparent;box-shadow:none;color:var(--ink);font:inherit;line-height:1.25;text-align:left;display:grid;justify-items:stretch;gap:2px}.map-activity-detail-trigger:disabled{opacity:1;color:var(--ink);cursor:default}.map-activity-detail-meta:not([hidden]){display:-webkit-box;min-width:0;max-width:100%;overflow:hidden;margin-top:1px;color:var(--muted);font-size:var(--type-caption);font-weight:560;line-height:1.25;text-align:left;white-space:normal;overflow-wrap:anywhere;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}
.map-fullscreen-copy small{display:flex;align-items:center;gap:4px;margin-bottom:3px;color:var(--muted);font-size:var(--type-caption);font-weight:620;white-space:nowrap;overflow:hidden}.map-fullscreen-focus-state{flex:none;padding:2px 6px;border-radius:999px;background:var(--surface-3);color:var(--ink)}.map-fullscreen-context.is-now-focus .map-fullscreen-focus-state{background:var(--accent-2);color:var(--paper)}
#mapFullscreenKicker{min-width:0;overflow:hidden;text-overflow:ellipsis}.map-fullscreen-position{font-variant-numeric:tabular-nums}.map-fullscreen-copy strong{display:block;color:var(--ink);font-size:var(--type-body);line-height:1.25;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-fullscreen-summary{display:block;margin-top:3px;color:var(--muted);font-size:var(--type-caption);font-weight:570;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-fullscreen-swipe-hint{display:block;margin-top:2px;color:var(--muted);font-size:var(--type-caption);font-weight:520}
.map-fullscreen-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.map-fullscreen-secondary-actions{display:flex;align-items:center;gap:4px}.map-fullscreen-action{min-width:0;min-height:44px;padding:5px 7px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--ink);text-decoration:none;display:flex;align-items:center;justify-content:center;gap:5px;font-size:var(--type-caption);font-weight:640;line-height:1}.map-fullscreen-action.primary{background:var(--accent-2);color:var(--paper);border-color:var(--accent)}.map-fullscreen-action svg{width:18px;height:18px;flex:none}.map-fullscreen-action span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-fullscreen-action:disabled{opacity:.42}#mapFullscreenNav{min-height:44px;padding:5px 7px}#mapFullscreenNav[hidden]{display:flex!important;visibility:hidden}#mapFullscreenNav span{white-space:nowrap;text-align:center;line-height:1.15}
body[data-app-tab="map"] .workspace-sheet,body[data-app-tab="map"] .map-resize-handle{display:none!important}

.workspace-tabs>.page-content.tab.settings-panel{
  overflow:auto!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  padding:0 calc(16px + var(--safe-right)) 24px calc(16px + var(--safe-left))!important;
  background:var(--paper);
}
.settings-sheet{width:min(100%,42rem);margin:0 auto;padding-top:20px}
.settings-heading{padding:0 4px 8px}.settings-heading>p{display:none}
.settings-heading h1{margin:0;font-size:var(--type-title-2);line-height:1.15;letter-spacing:-.025em}
.settings-body{padding-bottom:8px}.setting-section{margin:0 0 24px}
.settings-section-title.block-title{margin:12px 16px 8px;font-size:var(--type-footnote);line-height:1.3;color:var(--muted);font-weight:500;white-space:normal}
.settings-list.list,.settings-accordion.list{margin:0;--f7-list-inset-side-margin:0px;--f7-list-item-title-font-size:var(--type-body);--f7-list-font-size:var(--type-body);--f7-list-item-after-font-size:var(--type-caption);--f7-list-bg-color:var(--surface)}
.settings-list .item-inner,.settings-sublist .item-inner{min-width:0}
.settings-list .item-title,.settings-list .item-after,.settings-sublist .item-title{white-space:normal;overflow-wrap:anywhere}
.settings-list .item-label{font-size:var(--type-footnote);line-height:1.3;color:var(--ink)}
.settings-list select{font-size:max(16px,var(--type-body));min-height:44px;color:var(--accent-2)}
.settings-segmented-row .item-inner{padding-block:12px}
.settings-segmented{margin-top:6px}
.segmented{--f7-button-font-size:var(--type-caption);--f7-button-height:44px}
.segmented .button{min-width:0;min-height:44px;padding:5px;line-height:1.2;white-space:normal}
.settings-accordion-toggle,.settings-list-action{width:100%;border:0;background:transparent;text-align:left;min-height:52px}
.settings-accordion-toggle .item-after{max-width:45%;font-size:var(--type-caption)}
.settings-sublist.list{margin:0;--f7-list-bg-color:var(--surface-2)}
.settings-help{margin:8px 16px 0;color:var(--muted);font-size:var(--type-caption);line-height:1.4}
.settings-map-row,.settings-provider-key{padding:12px 16px}
.settings-map-heading{font-size:var(--type-footnote);line-height:1.4}.settings-map-heading span{display:block;color:var(--muted);font-size:var(--type-caption)}
.settings-permission-row .item-title,.settings-offline-row .item-title{flex:1;min-width:0}
.settings-permission-row .item-header,.settings-offline-row .item-header,.settings-switch-row .item-header{font-size:var(--type-body)}
.settings-permission-row .item-text,.settings-offline-row .item-text,.settings-switch-row .item-text{font-size:var(--type-caption);line-height:1.4;color:var(--muted);white-space:normal}
.settings-offline-row .item-inner{flex-wrap:wrap;gap:6px}
.settings-offline-row .item-after{margin:0}
.toggle input[type=checkbox]{display:block;position:absolute;z-index:2;top:calc((var(--f7-toggle-height) - 44px)/2);left:0;width:100%;height:44px;margin:0;opacity:0;cursor:pointer}
.toggle:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:4px}
.setting-toggle-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.setting-toggle-row>div{min-width:0}.setting-toggle-row strong{display:block;font-size:var(--type-body);line-height:1.3;font-weight:660}.setting-toggle-row small{display:block;margin-top:4px;color:var(--muted);font-size:var(--type-caption);line-height:1.4}
.map-style-list{display:grid;grid-template-columns:minmax(0,1fr);gap:0;margin-top:5px}.map-style-list.compact{grid-template-columns:repeat(2,minmax(0,1fr))}
.map-style-choice{min-width:0;min-height:62px;border:0;border-bottom:1px solid var(--line);background:transparent;display:grid;grid-template-columns:30px minmax(0,1fr);gap:9px;align-items:center;padding:9px 7px;text-align:left}
.map-style-choice.active{background:var(--accent-soft)}.map-style-choice:disabled{opacity:.54}.map-style-icon{width:28px;height:28px;display:grid;place-items:center;color:var(--muted)}.map-style-icon svg{width:19px;height:19px}.map-style-choice strong{display:block;font-size:var(--type-footnote);line-height:1.2;font-weight:650}.map-style-choice small{display:block;margin-top:3px;color:var(--muted);font-size:var(--type-caption);line-height:1.25}
.provider-key{margin-top:10px;padding:10px 0;border-top:1px solid var(--line)}.provider-key summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-size:var(--type-footnote);font-weight:650}.provider-key p{margin:5px 0 10px!important;color:var(--muted);font-size:var(--type-caption)!important;line-height:1.4}.provider-key a{color:var(--accent-2)}
.provider-key-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.provider-key-row input{min-width:0;min-height:48px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:8px 11px;font-size:max(16px,var(--type-body))}
.setting-stack{display:grid;border-top:1px solid var(--line)}.primary-action,.secondary-action,.wide-action{min-height:48px;border-radius:12px;padding:7px 12px;font-size:var(--type-footnote);font-weight:650}
.primary-action{border:1px solid var(--accent);background:var(--accent-2);color:var(--paper)}.secondary-action,.wide-action{border:1px solid var(--line);background:var(--surface-2);color:var(--ink)}.wide-action{width:100%;margin-top:8px;text-align:left}
.setting-hint{display:block;margin-top:7px;color:var(--muted);font-size:var(--type-caption);line-height:1.42}.setting-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:7px}
.permission-row{min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px solid var(--line)}.permission-row>div{min-width:0}.permission-row strong{display:block;font-size:var(--type-body);font-weight:660}.permission-row small{display:block;color:var(--muted);font-size:var(--type-caption);line-height:1.35}
.setting-advanced{margin:0 0 20px;border-bottom:1px solid var(--line)}.setting-advanced>summary{min-height:56px;padding:7px 0;cursor:pointer;list-style:none}.setting-advanced>summary::-webkit-details-marker{display:none}.setting-advanced>summary strong{display:block;font-size:var(--type-body);line-height:1.25;font-weight:660}.setting-advanced>summary small{display:block;margin-top:3px;color:var(--muted);font-size:var(--type-caption);line-height:1.35}.setting-advanced-body{padding:0 0 14px}.setting-advanced-body h2{font-size:var(--type-footnote);line-height:1.3;margin:3px 0 5px}.setting-advanced-body>p{margin:0 0 8px;color:var(--muted);font-size:var(--type-caption)}
.diagnostics-report{width:100%;min-height:150px;margin-top:10px;resize:vertical;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--ink);padding:10px;font:500 var(--type-caption)/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;white-space:pre;overflow:auto;-webkit-user-select:text;user-select:text}

.sheet-modal.note-sheet,.sheet-modal.stop-detail-sheet,.sheet-modal.activity-detail-sheet{--f7-sheet-bg-color:var(--surface);height:100dvh;max-height:100dvh;border-radius:24px 24px 0 0;background:var(--surface);color:var(--ink);box-shadow:0 -12px 44px rgba(16,24,40,.18)}
.sheet-modal-inner{display:flex;flex-direction:column;min-height:0;height:100%;overflow:hidden;border-radius:inherit;background:var(--surface)}
.sheet-modal.modal-in-breakpoint>.sheet-modal-inner{height:calc(100% - var(--f7-sheet-breakpoint,0px))}
.sheet-grabber{position:relative;z-index:2;display:grid;flex:none;place-items:center;width:76px;height:20px;min-height:20px;margin:0 auto;padding:0;border:0;background:transparent;touch-action:none}
.sheet-grabber::before{content:"";width:36px;height:4px;border-radius:999px;background:#b8bdc6}
/* Keep a 44px touch area while the visible strip occupies only 20px. */
.sheet-grabber::after{content:"";position:absolute;inset:-12px 0}
.sheet-grabber:hover::before,.sheet-grabber:focus-visible::before{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.sheet-head{position:relative;flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:68px;padding:10px 18px 9px;border-bottom:1px solid var(--line);background:var(--surface)}
.button-fill{--f7-button-fill-bg-color:var(--accent-2);--f7-button-fill-text-color:var(--paper)}
.sheet-head>div:first-child{min-width:0}.sheet-head small{display:block;color:var(--muted);font-size:var(--type-caption);line-height:1.2}.sheet-head strong{display:block;margin-top:3px;font-size:var(--type-headline);line-height:1.2;font-weight:700;overflow-wrap:anywhere}
.sheet-close.button{flex:none;width:auto;min-width:64px;min-height:44px;padding:0 13px;border:0;border-radius:999px;background:var(--accent-2);color:var(--paper);font-size:var(--type-footnote);font-weight:660}
#noteCloseBtn,#stopDetailCloseBtn,#activityDetailCloseBtn{flex:none;width:auto;height:auto!important;min-height:44px!important}
.activity-detail-head-actions{display:flex;align-items:center;gap:7px}.activity-detail-back{min-height:44px;border:0;border-radius:11px;background:transparent;color:var(--accent-2);display:flex;align-items:center;gap:5px;padding:0 7px;font-size:var(--type-caption);font-weight:630}.activity-detail-back svg{width:18px;height:18px}
.sheet-modal .page-content.markdown-body{position:relative!important;inset:auto!important;flex:1 1 auto;width:100%;height:auto!important;min-height:0;overflow:auto!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;margin:0!important;padding:18px 20px calc(24px + var(--safe-bottom))!important;background:var(--surface);color:var(--ink);font-size:var(--type-body);line-height:1.52}
.markdown-body h1,.markdown-body h2,.markdown-body h3{margin:1.05em 0 .42em;font-size:1.12em;line-height:1.25;font-weight:700}.markdown-body p{margin:.55em 0}.markdown-body ul,.markdown-body ol{padding-left:1.35em}.markdown-body li{margin:.28em 0}.markdown-body a{color:var(--accent-2);text-underline-offset:3px;overflow-wrap:anywhere;word-break:break-word}.markdown-body strong{font-weight:720}.markdown-body hr{border:0;border-top:1px solid var(--line);margin:1em 0}
.activity-detail-body{touch-action:pan-y}.activity-detail-context{margin:0 0 11px;color:var(--muted);font-size:var(--type-footnote)}.activity-detail-activity-select{display:grid;gap:6px;margin:8px 0 13px;color:var(--muted);font-size:var(--type-caption);font-weight:620}.activity-detail-activity-select select{width:100%;min-height:48px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);padding:7px 10px;font:inherit;font-size:max(16px,var(--type-body))}
.activity-detail-overview{display:grid;gap:7px;margin:0 0 14px}
.activity-detail-overview .activity-detail-time{font-size:var(--type-footnote);font-weight:670}
.activity-detail-place{margin:0;color:var(--ink);font-size:var(--type-headline);line-height:1.25;font-weight:700;overflow-wrap:anywhere}
.activity-detail-transport{margin:0;color:var(--muted);font-size:var(--type-footnote)}
.activity-detail-description{line-height:1.5;overflow-wrap:anywhere}
.activity-detail-reminder{padding:8px 0;border-top:1px solid var(--line)}
.activity-detail-reminder h2{margin:0 0 5px;font-size:var(--type-footnote);font-weight:680}
.activity-detail-reminder>div{font-size:var(--type-footnote);line-height:1.45}
.activity-detail-card{display:grid;grid-template-columns:90px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.activity-detail-time{color:var(--muted);font-variant-numeric:tabular-nums}.activity-readonly-notes{margin:15px 0;padding:12px 0;border-top:1px solid var(--line);font-size:var(--type-footnote);line-height:1.5}.activity-readonly-notes h2{margin:0 0 7px;font-size:var(--type-body);font-weight:700}.activity-readonly-notes p:first-child{margin-top:0}.activity-readonly-notes p:last-child{margin-bottom:0}.activity-safety-details{margin-top:9px;border-top:1px solid var(--line)}.activity-safety-details summary{min-height:44px;padding:8px 0;display:flex;align-items:center;cursor:pointer;color:var(--accent-2);font-weight:650}.activity-safety-details>div{padding:0 0 7px}.day-shared-note{margin:12px 0;border-top:1px solid var(--line)}.day-shared-note summary{min-height:48px;padding:7px 0;display:flex;align-items:center;cursor:pointer;font-size:var(--type-footnote);font-weight:650}.day-shared-note>div{padding:0 0 10px;font-size:var(--type-footnote);line-height:1.5}
.activity-detail-empty{margin:5px 0;color:var(--muted)}.full-timetable-scope{color:var(--muted);font-size:var(--type-footnote);line-height:1.45}

.onboarding{position:fixed;inset:0;z-index:14000;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:var(--paper);opacity:0;transform:scale(1.004);transition:opacity .18s ease,transform .2s ease;overflow:hidden}.onboarding.is-open{opacity:1;transform:scale(1)}
.onboarding-top{padding:calc(12px + var(--safe-top)) calc(14px + var(--safe-right)) 10px calc(14px + var(--safe-left));display:flex;align-items:center;gap:11px;background:var(--surface);box-shadow:0 1px 0 var(--line)}
.onboarding-mark{width:42px;height:42px;flex:none;border-radius:13px;overflow:hidden;background:var(--surface-2)}.onboarding-mark img{display:block;width:100%;height:100%;object-fit:cover}.onboarding-heading{min-width:0;flex:1 1 0}.onboarding-top p{margin:0 0 3px;color:var(--accent-2);font-size:var(--type-caption);font-weight:670}.onboarding-top h1{margin:0;font-size:var(--type-body);line-height:1.2;font-weight:710}.onboarding-skip{margin-left:auto;width:auto;min-height:44px;flex:none;white-space:nowrap;border:0;border-radius:10px;background:transparent;color:var(--accent-2);font-size:var(--type-caption);font-weight:630;padding:5px 8px}
.onboarding-viewport{min-height:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}.onboarding-viewport::-webkit-scrollbar{display:none}.onboarding-track{display:flex;height:100%;width:max-content}
.onboarding-card{flex:0 0 100vw;width:100vw;height:100%;overflow-y:auto;scroll-snap-align:start;scroll-snap-stop:always;padding:22px max(calc(18px + var(--safe-right)),calc((100vw - 42rem)/2)) calc(28px + var(--safe-bottom)) max(calc(18px + var(--safe-left)),calc((100vw - 42rem)/2));overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}
.card-step{color:var(--accent-2);font-size:var(--type-footnote);font-weight:700;letter-spacing:.02em;margin-bottom:8px}.onboarding-card>h2{margin:0 0 9px;font-size:var(--type-title-2);line-height:1.1;letter-spacing:-.025em;font-weight:740}.onboarding-card>p{margin:0 0 16px;color:var(--muted);font-size:var(--type-body);line-height:1.5;max-width:40rem}.card-footnote{margin-top:12px!important;font-size:var(--type-footnote)!important;line-height:1.45!important}
.profile-list{display:grid;gap:9px}.profile-requirement{margin:10px 0 0!important;font-size:var(--type-footnote)!important;color:var(--muted)!important}.profile-requirement.is-valid{color:var(--accent-2)!important}
.profile-choice{width:100%;min-height:72px;border:1px solid var(--line);background:var(--surface);border-radius:15px;display:grid;grid-template-columns:34px minmax(0,1fr);gap:11px;align-items:center;padding:11px 13px;text-align:left}.profile-choice.active{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 42%,var(--line))}.profile-check{width:29px;height:29px;border:1.5px solid var(--line);border-radius:50%;display:grid;place-items:center;color:var(--accent-2)}.profile-choice.active .profile-check{border-color:var(--accent);background:var(--surface)}.profile-check svg{width:19px;height:19px}.profile-choice strong{display:block;font-size:var(--type-body);font-weight:680}.profile-choice small{display:block;margin-top:3px;color:var(--muted);font-size:var(--type-footnote);line-height:1.4}
.onboarding-control{margin-top:16px}.onboarding-control>strong{display:block;font-size:var(--type-body);margin-bottom:6px}.onboarding-toggle{margin-top:0}
.install-home-button{width:100%;min-height:52px;border:1px solid var(--line);background:var(--surface);border-radius:14px;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:670;font-size:var(--type-body)}.install-home-button svg{width:20px;height:20px}.install-help-panel{margin-top:10px;padding:12px 14px;background:var(--surface);border-radius:14px;font-size:var(--type-footnote);color:var(--muted)}.install-help-panel ol{margin:2px 0 10px;padding-left:22px}.install-help-panel li{margin:6px 0}.install-help-panel p{margin:0}
.onboarding-offline{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:11px;align-items:center;margin-top:12px;padding:11px 12px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.onboarding-offline>div{min-width:0}.onboarding-offline strong{display:block;font-size:var(--type-body)}.onboarding-offline small{display:block;margin-top:3px;color:var(--muted);font-size:var(--type-footnote);line-height:1.4}.onboarding-offline .secondary-action{min-width:112px}
.permission-card-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:70px;padding:10px 11px;margin:8px 0;background:var(--surface);border:1px solid var(--line);border-radius:14px}.permission-card-row>div{display:grid;grid-template-columns:28px minmax(0,1fr);gap:8px;align-items:center;min-width:0}.permission-card-row svg{width:22px;height:22px;color:var(--accent-2)}.permission-card-row strong{display:block;font-size:var(--type-body)}.permission-card-row small{display:block;color:var(--muted);font-size:var(--type-footnote);line-height:1.4}.permission-card-row button{min-width:92px;min-height:44px;border:0;border-radius:12px;background:var(--accent-2);color:var(--paper);font-size:var(--type-caption);font-weight:650}.permission-card-row button:disabled{opacity:.72;background:var(--surface-3);color:var(--muted);border:1px solid var(--line)}
.usage-guide,.gesture-guide{display:grid;gap:8px}.usage-guide article,.gesture-guide article{display:grid;grid-template-columns:36px minmax(0,1fr);gap:11px;align-items:start;padding:12px 13px;background:var(--surface);border-bottom:1px solid var(--line)}.usage-guide svg{width:22px;height:22px;color:var(--accent-2);margin:3px auto}.usage-guide strong,.gesture-guide strong{display:block;font-size:var(--type-body);font-weight:680}.usage-guide p,.gesture-guide p{margin:3px 0 0;color:var(--muted);font-size:var(--type-footnote);line-height:1.45}
.gesture-visual{position:relative;width:36px;height:36px}.gesture-visual span{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.gesture-visual.pinch span:first-child{left:3px;top:13px}.gesture-visual.pinch span:last-child{right:3px;top:13px}.gesture-visual.pitch span:first-child{left:6px;top:5px}.gesture-visual.pitch span:last-child{right:6px;bottom:5px}.gesture-visual.double span{left:13px;top:13px}.gesture-visual.double::after{content:"↕";position:absolute;right:-1px;top:5px;color:var(--muted);font-size:16px}
.onboarding-footer{min-height:calc(68px + var(--safe-bottom));padding:8px calc(14px + var(--safe-right)) calc(8px + var(--safe-bottom)) calc(14px + var(--safe-left));display:grid;grid-template-columns:minmax(92px,auto) 1fr minmax(92px,auto);gap:9px;align-items:center;background:var(--surface);box-shadow:0 -1px 0 var(--line)}
.onboarding-nav{min-height:48px;border-radius:13px;padding:7px 12px;font-size:var(--type-footnote);font-weight:660}.onboarding-nav.secondary{border:1px solid var(--line);background:var(--surface-2)}.onboarding-nav.primary{border:1px solid var(--accent);background:var(--accent-2);color:var(--paper)}.onboarding-dots{display:flex;gap:6px;align-items:center;justify-content:center}.onboarding-dots span{width:6px;height:6px;border-radius:50%;background:#b8bdc6;transition:transform .16s ease,background .16s ease}.onboarding-dots span.active{background:var(--accent);transform:scale(1.35)}
#toast{position:fixed;z-index:15000;left:50%;bottom:calc(14px + var(--safe-bottom));transform:translate(-50%,8px);max-width:min(88vw,28rem);background:#242830;color:#fff;border-radius:14px;padding:10px 14px;font-size:var(--type-footnote);font-weight:580;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;box-shadow:var(--shadow)}#toast.show{opacity:1;transform:translate(-50%,0)}body.map-fullscreen-active #toast{top:calc(70px + var(--safe-top));bottom:auto}
.toast:not(#toast){left:50%!important;width:max-content!important;min-width:0!important;max-width:min(88vw,28rem)!important;bottom:calc(74px + var(--safe-bottom))!important;pointer-events:none!important}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

@container transport-schedule (max-width:30rem){
  .transport-table-wrap{overflow-x:visible}.transport-schedule table{display:block;min-width:0;width:100%;table-layout:auto}
  .transport-schedule thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .transport-schedule tbody{display:grid}.transport-schedule tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:7px 9px;border-top:1px solid var(--line)}.transport-schedule tbody tr:first-child{border-top:0}
  .transport-schedule th,.transport-schedule td{min-width:0;padding:4px 2px;border-top:0}.transport-schedule th:first-child{width:auto}.transport-schedule tbody th{grid-column:1/-1;font-size:var(--type-footnote)}
  .transport-schedule td{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:5px;font-size:var(--type-caption);overflow-wrap:anywhere}.transport-schedule td::before{content:attr(data-label);color:var(--muted);font-size:var(--type-caption);font-weight:580}
  .transport-schedule td[data-label="備註"],.transport-schedule td[data-label="搭乘"]{grid-column:1/-1}.transport-schedule td[data-label="備註"]{display:block;padding-top:6px}.transport-schedule td[data-label="備註"]::before{display:block;margin-bottom:3px}.transport-schedule td[data-label="搭乘"]{display:block;padding-top:6px}.transport-schedule td[data-label="搭乘"]::before{display:none}
  .transport-schedule.is-selectable table{min-width:0}.transport-schedule.is-selectable th:last-child{width:auto}
}
@media(max-width:380px){
  .now-guide-scroll{padding-inline:14px}.now-guide-heading{gap:7px}.now-state{padding:5px 7px;font-size:.7rem}
  .now-guide-dock{gap:5px;padding-inline:calc(8px + var(--safe-left)) calc(8px + var(--safe-right))}.now-step-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.button.now-step{padding-inline:4px;font-size:var(--type-caption)}.button.now-step-next{padding-inline:4px}.now-step-title{font-size:var(--type-caption)}.now-guide-meta{gap:5px 9px}.day-tabs{padding-inline:12px}.day-menu{left:12px;right:12px}.day-menu-row{min-height:78px;padding:7px;gap:3px}.content{padding-inline:10px}
  .rich-timeline .timeline-item-date{flex-basis:3.2rem;width:3.2rem}.rich-timeline .timeline-item-divider{margin-right:7px;margin-left:0}.day-card .card-content{padding:12px 10px 11px}.activity-place-row{grid-template-columns:minmax(0,1fr) 60px}.place-nav{font-size:.7rem}
  .branch-control{grid-template-columns:1fr;gap:8px}.branch-options{justify-content:stretch}.branch-options button{flex:1 1 120px}.choice-options{grid-template-columns:1fr}
  .map-style-list,.map-style-list.compact{grid-template-columns:1fr}.provider-key-row{grid-template-columns:1fr}.onboarding-offline{grid-template-columns:1fr}.onboarding-offline .secondary-action{width:100%}
}
@media(min-width:700px){
  .now-guide-scroll{padding:18px 22px 16px}.workspace-tabs>.page-content.tab.settings-panel{padding-inline:22px!important}.day-tabs{padding-inline:20px}.content{padding-inline:20px}.rich-timeline .timeline-item-date{flex-basis:3.2rem;width:3.2rem}.rich-timeline .timeline-item-divider{margin-right:12px}.day-card .card-content{padding:19px 20px 17px}
}
@media(min-width:981px), (orientation:landscape) and (min-width:700px){
  .travel-stage{display:grid;grid-template-columns:minmax(260px,var(--desktop-left,40vw)) minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
  .map-panel{position:relative;inset:auto;grid-column:2;grid-row:1;height:auto;min-height:0}
  .workspace-sheet{position:relative;inset:auto;height:100%;grid-column:1;grid-row:1;overflow:visible;box-shadow:none;border-radius:0;border-right:1px solid var(--line);transform:none!important;clip-path:none!important;will-change:auto}
  .map-resize-handle{top:0;right:-22px;bottom:0;left:auto;width:44px;height:100%;min-height:100%;cursor:ew-resize;transform:none}
  .map-resize-handle::before{width:5px;height:36px}
  .now-guide-scroll{padding:18px 22px 16px}.workspace-tabs>.page-content.tab.settings-panel{padding-inline:22px!important}.day-tabs{padding-inline:20px}.content{padding-inline:20px}
  body[data-app-tab="map"] .travel-stage{grid-template-columns:minmax(0,1fr)}
  body[data-app-tab="map"] .map-panel{grid-column:1/-1}
}
@media(min-width:981px), (orientation:landscape) and (min-width:700px){
  .now-guide-scroll{padding-inline:30px}.workspace-tabs>.page-content.tab.settings-panel{padding-inline:30px!important}
  .sheet-modal.note-sheet,.sheet-modal.stop-detail-sheet,.sheet-modal.activity-detail-sheet{top:0!important;right:0!important;bottom:0!important;left:auto!important;width:min(36rem,56vw);height:100dvh;max-height:100dvh;border-radius:22px 0 0 22px}
  .sheet-modal-inner{height:100%;border-radius:inherit}.sheet-modal.modal-in-breakpoint>.sheet-modal-inner{height:calc(100% - var(--f7-sheet-breakpoint,0px))}.sheet-modal .page-content.markdown-body{padding:22px 28px calc(24px + var(--safe-bottom))!important}
}
@media(max-width:360px){
  .onboarding-top{flex-wrap:wrap;row-gap:5px}.onboarding-heading{flex:1 1 calc(100% - 56px)}.onboarding-skip{flex:1 0 100%;margin-left:0;text-align:right;padding:4px}.onboarding-footer{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px 8px}.onboarding-dots{grid-column:1/-1;grid-row:1}.onboarding-nav.secondary{grid-column:1;grid-row:2}.onboarding-nav.primary{grid-column:2;grid-row:2}
}
@media(max-width:980px){
  body[data-app-tab="more"] .map-panel{visibility:hidden;pointer-events:none}
  body[data-app-tab="more"] .workspace-sheet{height:100%!important;border-radius:0;box-shadow:none;transform:none!important;clip-path:none!important;will-change:auto}
  body[data-app-tab="more"] .map-resize-handle{display:none}
}
@media(min-width:981px), (orientation:landscape) and (min-width:700px){
  body[data-app-tab="more"] .travel-stage{grid-template-columns:minmax(0,1fr)}
  body[data-app-tab="more"] .map-panel{visibility:hidden;pointer-events:none}
  body[data-app-tab="more"] .workspace-sheet{height:100%;grid-column:1/-1}
  body[data-app-tab="more"] .map-resize-handle{display:none}
  body[data-app-tab="itinerary"][data-map-pane-state="itinerary"] .map-panel{visibility:hidden;pointer-events:none}
  body[data-app-tab="itinerary"][data-map-pane-state="itinerary"] .map-resize-handle,
  body[data-app-tab="itinerary"][data-map-pane-state="map"] .map-resize-handle{display:grid!important;visibility:visible!important;right:0}
  body[data-app-tab="itinerary"][data-map-pane-state="itinerary"] .workspace-sheet{grid-column:1/-1}
  body[data-app-tab="itinerary"][data-map-pane-state="map"] .map-panel{grid-column:1/-1}
}
@media(orientation:landscape) and (max-width:980px){
  .toast:not(#toast){bottom:calc(68px + var(--safe-bottom))!important}
}
@media(orientation:landscape) and (min-width:700px) and (max-width:980px){
  /* Do not spend scarce landscape height on tall portrait date controls. */
  .day-tabs{padding:4px 11px}
  .day-grid{gap:3px}
  .day-grid-button{padding:2px 6px;border-radius:8px;column-gap:4px}
  .day-grid-button .day-menu-day,.day-grid-date{font-size:11px}
  .day-menu-button{min-height:50px;padding:6px 10px}
  .day-menu-current>span{font-size:var(--type-caption)}
  .day-menu-current>strong{-webkit-line-clamp:1;line-height:1.25}
  .now-guide-scroll{padding:10px 13px}
  .now-guide-dock{padding:6px 9px}
  .content{padding-inline:12px}
  .day-card .card-content{padding:10px 12px}
  .map-resize-handle{visibility:visible!important}
  body[data-app-tab="itinerary"] .workspace-sheet{border-radius:0}
}
@media(max-width:980px){
  .day-menu-button{min-height:64px}
  .day-menu-current{grid-template-columns:minmax(0,1fr);gap:2px}
  .day-menu-current>span{font-size:var(--type-caption);line-height:1.12}
  .day-menu-current>strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;line-height:1.2}
  .day-page .day-header>.day-kicker,.day-page .day-header>h1{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
}
html[data-solid-surfaces="true"] .app-tabbar .toolbar-pane,
html[data-solid-surfaces="true"] .app-update-mobile,
html[data-solid-surfaces="true"] .map-status,
html[data-solid-surfaces="true"] .map-control,
html[data-solid-surfaces="true"] .map-pin-actions,
html[data-solid-surfaces="true"] .map-fullscreen-context,
html[data-solid-surfaces="true"] .map-panel .maplibregl-ctrl-attrib{background:var(--surface)!important;backdrop-filter:none!important}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .onboarding{transform:none!important}.map-user-location-pulse{animation:none;transform:translate(-50%,-50%) scale(.9);opacity:.28}.map-user-location-heading{transition:none}
}
@media(prefers-reduced-transparency:reduce){
  .app-tabbar .toolbar-pane,.app-update-mobile,.stop-head,.map-status,.map-control,.map-pin-actions,.map-panel .maplibregl-ctrl-attrib,.map-fullscreen-context,.onboarding-top,.onboarding-footer{backdrop-filter:none!important;background:var(--surface)!important}
  .sheet-modal.note-sheet,.sheet-modal.stop-detail-sheet,.sheet-modal.activity-detail-sheet{backdrop-filter:none!important}
}
@media(prefers-contrast:more){
  .app-tabbar,.map-control,.map-pin-actions,.day-menu-button,.day-menu,.setting-subcontrol,.sheet-head{border-color:currentColor!important}
  .map-panel .maplibregl-ctrl-attrib{background:var(--surface)!important;box-shadow:0 0 0 1px currentColor!important}.map-resize-handle::before{background:currentColor!important}
}

@media(max-width:400px){
  html[data-text-size="xlarge"] .activity-card .activity-info{width:44px;min-width:44px;padding:0}
  html[data-text-size="xlarge"] .activity-card .activity-info span{display:none}
}

@media(max-width:980px){
  body[data-app-tab="more"] .workspace-sheet{padding-top:var(--safe-top)}
}
@media(display-mode:standalone){
  .map-panel::before{content:"";position:absolute;z-index:9;top:0;left:0;right:0;height:var(--safe-top);background:linear-gradient(rgba(0,0,0,.24),transparent);pointer-events:none}
}

.settings-map-panel{padding:0 16px 12px}
.settings-map-options.list{margin:0;--f7-list-bg-color:transparent}
.settings-map-options .map-style-choice{display:flex;width:100%;padding:0 16px;min-height:60px;border:0;background:transparent}
.settings-map-options .map-style-choice.active{color:var(--accent-2)}
.settings-map-options .item-text{font-size:var(--type-caption);line-height:1.35;white-space:normal;color:var(--muted)}
.settings-map-options .map-style-icon{width:22px;color:var(--accent-2)}

/* Unified iOS-inspired controls: glass is reserved for navigation and floating
   tools, while actual trip reading stays on a stable, opaque surface. */
:root{
  --travel-control-fill:color-mix(in srgb,var(--surface) 91%,transparent);
  --travel-control-border:color-mix(in srgb,var(--line) 74%,transparent);
  --travel-control-shadow:0 5px 18px rgba(18,34,58,.16);
  --travel-control-radius:17px;
}
html[data-effective-theme="dark"]{
  --travel-control-fill:color-mix(in srgb,var(--surface) 88%,transparent);
  --travel-control-shadow:0 5px 20px rgba(0,0,0,.42);
}
.map-control:active,
.trip-mini-control:active,.day-menu-button:active{transform:scale(.96)}
.map-control,.map-fullscreen-action,.day-menu-button,
.map-pin-actions,.app-update-mobile{
  border-color:var(--travel-control-border);
  background:var(--travel-control-fill);
  color:var(--ink);box-shadow:var(--travel-control-shadow);
  backdrop-filter:saturate(160%) blur(22px);
  -webkit-backdrop-filter:saturate(160%) blur(22px);
}
.map-control{border-radius:var(--travel-control-radius)}
.map-controls-row{
  padding:3px;gap:2px;border:1px solid var(--travel-control-border);
  border-radius:18px;background:var(--travel-control-fill);box-shadow:var(--travel-control-shadow);
  backdrop-filter:saturate(160%) blur(22px);-webkit-backdrop-filter:saturate(160%) blur(22px);
}
.map-controls-row>.map-control{
  width:44px;height:44px;min-width:44px;border:0;border-radius:13px;
  background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
}
.map-controls-row>.map-control:not(:disabled):active{background:color-mix(in srgb,var(--ink) 9%,transparent)}
.map-controls-row>.map-follow-control{width:auto;gap:6px;padding:0 9px}
.map-controls-row>.map-follow-control[hidden]{display:none!important}
.map-follow-control{border-radius:999px}
.day-menu-button{box-shadow:none}
.rich-timeline>.timeline-item.is-selected-activity .day-card.card{
  border-color:color-mix(in srgb,var(--accent) 45%,var(--line));
  background:color-mix(in srgb,var(--accent-soft) 38%,var(--surface));
  box-shadow:0 3px 16px rgba(0,85,175,.09);
}
.content{overflow-anchor:none}
.content.is-sheet-gesture-active{overscroll-behavior:none;scroll-behavior:auto!important}

@media(prefers-reduced-motion:reduce){
  .trip-mini-copy .is-overflowing>span{animation:none!important}
  .trip-mini-title,.trip-mini-copy time{overflow:auto}
  .trip-mini-player.mini-slide-next :is(.trip-mini-icon,.trip-mini-copy),
  .trip-mini-player.mini-slide-prev :is(.trip-mini-icon,.trip-mini-copy){animation:none!important}
  .trip-mini-player.is-mini-releasing .trip-mini-swipe-content{transition:none!important}
}
@media(prefers-reduced-transparency:reduce){
  .app-tabbar .toolbar-pane,.map-control,.map-fullscreen-action,.map-pin-actions,
  .day-menu-button,.app-update-mobile{background:var(--surface)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
}
@media(orientation:landscape) and (min-width:700px) and (max-width:980px){
  /* Preserve the compact date picker after the shared mobile rules above. */
  .day-menu-button{min-height:50px}
}

/* Operational summaries first; technical details are still present on demand. */
.now-guide-scroll{padding-top:14px}
.now-guide-meta{margin:8px 0 12px}
.now-key-instruction{
  margin:10px 0 16px;padding:0;color:var(--ink);
  font-size:var(--type-body);font-weight:580;line-height:1.55;
  overflow-wrap:anywhere;
}
.now-extra,.now-notes{
  margin:10px 0;border:1px solid var(--line);border-radius:16px;
  background:var(--surface);overflow:hidden;
}
.now-extra>summary,.now-notes>summary{
  display:flex;align-items:center;gap:10px;min-height:48px;
  padding:10px 13px;cursor:pointer;list-style:none;
  font-size:var(--type-footnote);font-weight:680;color:var(--accent-2);
}
.now-extra>summary::-webkit-details-marker,.now-notes>summary::-webkit-details-marker{display:none}
.now-extra>summary::after,.now-notes>summary::after{
  content:"";margin-left:auto;flex:none;width:9px;height:9px;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg);transition:transform .18s ease;
}
.now-extra[open]>summary::after,.now-notes[open]>summary::after{transform:rotate(225deg)}
.now-extra-body,.now-notes>div{
  padding:0 13px 12px;color:var(--muted);
  font-size:var(--type-footnote);line-height:1.5;
}
.now-extra-body>.activity-summary{margin:6px 0 14px}
.now-extra .transport-schedule{margin:8px 0 4px}
.activity-task-summary{-webkit-line-clamp:2;margin-top:4px;margin-bottom:3px}
.activity-info{border:1px solid var(--travel-control-border);border-radius:13px}
.activity-plan-summary{border-radius:13px}
.day-card.card{box-shadow:0 2px 10px rgba(16,24,40,.035)}

body .map-panel:has(.map-error.show) .map-fullscreen-context{display:none}

/* Independent reading tab and the persistent Framework7 map sheet. */
.travel-stage{display:block!important}
.workspace-sheet{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;border:0;border-radius:0!important;background:var(--paper)!important;box-shadow:none!important;transform:none!important;clip-path:none!important;will-change:auto}
body[data-app-tab="itinerary"] .workspace-tabs{visibility:visible!important;pointer-events:auto!important}
body[data-app-tab="itinerary"] .workspace-tabs>.page-content.tab{top:0!important;height:100%!important}
body[data-app-tab="itinerary"] .itinerary-panel{padding-top:var(--safe-top)!important}
body[data-app-tab="map"] .map-panel{position:absolute!important;inset:0!important;width:100%;height:100%}
body:not([data-app-tab="map"]) .map-panel{visibility:hidden;pointer-events:none}
#contentScroller{overflow-anchor:none}
.journey-breadcrumbs{flex:none;margin:0;padding:6px 16px 0;min-height:32px;color:var(--muted)}
.breadcrumbs{display:flex;align-items:center;flex-wrap:nowrap;overflow-x:auto;gap:5px;font-size:var(--type-caption);scrollbar-width:none;white-space:nowrap}
.breadcrumbs-item{flex:none;max-width:14em;overflow:hidden;text-overflow:ellipsis}
.breadcrumbs-item-link{border:0;background:transparent;color:var(--accent-2);padding:0 4px;min-height:44px;text-align:left}
.breadcrumb-menu-trigger{display:inline-flex;align-items:center;gap:4px;border-radius:9px}
.breadcrumb-chevron{font-size:1.1em;line-height:1;color:var(--muted)}
.detail-breadcrumbs{flex:none;min-height:40px;padding:0 18px;background:var(--surface);border-bottom:1px solid var(--line)}
.map-journey-sheet.sheet-modal{position:absolute!important;right:0;bottom:0;left:0;top:auto!important;width:100%;height:calc(100% - var(--safe-top) - 12px);max-height:100%;z-index:40;border-radius:24px 24px 0 0;background:var(--surface);color:var(--ink);box-shadow:0 -8px 28px rgba(16,24,40,.16)}
.map-journey-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex:none;padding:0 16px 5px;min-height:44px}
.map-journey-head .breadcrumbs{flex:1 1 auto;min-width:0}
.map-journey-head .button{width:auto;min-width:44px;min-height:44px;flex:none;color:var(--accent-2);padding:0 9px}
.map-journey-body.page-content{position:relative!important;inset:auto!important;flex:1 1 auto;min-height:0;width:100%;height:auto!important;overflow:auto!important;margin:0!important;padding:4px 16px 24px!important;background:var(--surface);overscroll-behavior:contain}
#mapJourneySheet .map-fullscreen-context{position:relative!important;inset:auto!important;display:grid!important;grid-template-rows:auto auto;gap:12px;padding:0 0 14px;border:0;border-radius:0;background:transparent;backdrop-filter:none;box-shadow:none;width:100%}
#mapJourneySheet .map-fullscreen-header{grid-template-columns:minmax(0,1fr);gap:8px}
#mapJourneySheet .map-fullscreen-copy small{display:none}
#mapJourneySheet .map-fullscreen-copy small:has(>span:not([hidden])){display:flex}
#mapJourneySheet .map-fullscreen-action{font-size:14px;gap:3px;padding-inline:4px}
#mapJourneySheet .map-fullscreen-action svg{width:16px;height:16px}
#mapJourneySheet .map-fullscreen-summary{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical}
#mapJourneySheet .map-fullscreen-secondary-actions{justify-content:flex-end}
#mapJourneySheet .map-fullscreen-swipe-hint{display:none}
#mapJourneySheet .map-fullscreen-summary{font-size:var(--type-footnote);line-height:1.5;-webkit-line-clamp:3}
#mapJourneySheet .map-journey-activities>.block-title{margin:10px 0 6px;padding:0;font-size:var(--type-footnote)}
#mapJourneyActivities .list{margin:0 0 16px}
.map-related-activity{border:0;background:var(--surface-2);width:100%;text-align:left;min-height:56px}
.map-related-activity .item-inner{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;padding:10px 34px 10px 0}
.map-related-activity .item-title{white-space:normal;font-size:var(--type-body)}
.map-related-activity .item-after{margin:0;font-size:var(--type-caption);white-space:normal;color:var(--muted)}
.map-related-activity[aria-current="step"]{color:var(--accent-2);background:var(--accent-soft)}
#nowContent{display:block;flex:none;height:auto;overflow:visible;border-top:1px solid var(--line);padding-top:12px}
body[data-map-sheet-state="medium"] #nowContent .activity-detail-description{display:none}
body[data-map-sheet-state="large"] #mapFullscreenSummary{display:none}
body[data-map-sheet-state="large"] .map-controls-row{visibility:hidden;pointer-events:none}
body[data-app-tab="map"] .map-panel .map-controls-row{bottom:calc(var(--map-journey-occlusion,76px) + 12px);flex-direction:row}
body[data-app-tab="map"] .map-panel .maplibregl-ctrl-bottom-left{bottom:calc(var(--map-journey-occlusion,76px) + 6px)}
body[data-app-tab="map"] .trip-mini-player{display:block;min-height:64px;padding:8px 14px;grid-template-columns:1fr;z-index:35}
.trip-mini-expand{display:block;width:100%;min-height:48px}
.trip-mini-copy{display:grid;gap:2px;min-width:0}
.trip-mini-copy time{color:var(--muted);font-size:var(--type-caption)}
.app-tabbar .f7-icons{font-size:20px;line-height:20px}
.landing-page{z-index:2000}
.journey-weather{margin:12px 0 0;padding:0;border-bottom:1px solid var(--line)}
.journey-weather-details>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;list-style:none;cursor:pointer;font-size:var(--type-footnote)}
.journey-weather-details>summary::-webkit-details-marker{display:none}
.journey-weather-summary{flex:none;color:var(--muted)}
.journey-weather-details>div{padding:0 0 14px}
.journey-weather-reading{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.journey-weather-reading .f7-icons{font-size:26px;color:var(--accent-2)}
.journey-weather-reading strong{font-size:var(--type-title-2)}
.journey-weather-details p,.journey-weather-details small{font-size:var(--type-caption);color:var(--muted)}
.journey-weather-details .button{min-height:44px;padding:0 12px;width:auto;display:inline-flex}
.journey-weather-credit a{color:var(--accent-2)}
.transport-departure-track{display:block;width:100%;min-width:0;overflow:hidden;margin:12px 0}
.transport-departure-track::part(container){overflow:visible}
.transport-departure-slide{width:min(82%,19rem);height:auto;min-width:0;box-sizing:border-box}
.transport-departure-card.card{height:100%;margin:0;background:var(--surface-2);color:var(--ink);border:1px solid var(--line);border-radius:18px;box-shadow:none;overflow:hidden}
.transport-departure-card.is-selected{border-color:var(--accent-2);background:var(--accent-soft)}
.transport-departure-card-head{align-items:flex-start;gap:8px;flex-direction:column;font-size:var(--type-footnote);padding:12px 14px 0}
.transport-departure-state{font-size:var(--type-caption);color:var(--accent-2)}
.transport-departure-card .card-content-padding{padding:10px 14px 14px}
.transport-departure-status{font-size:var(--type-body);font-weight:700;margin:0 0 4px}
.transport-departure-mode{font-size:var(--type-caption);color:var(--muted);margin:0 0 10px}
.transport-departure-times{display:grid;grid-template-columns:minmax(0,1fr) 14px minmax(0,1fr);gap:4px;align-items:center}
.transport-departure-time{min-width:0;display:flex;flex-direction:column;gap:2px;font-size:var(--type-caption)}
.transport-departure-time strong{font-size:var(--type-headline);font-variant-numeric:tabular-nums}
.transport-departure-time small{font-size:var(--type-caption);color:var(--muted);overflow-wrap:anywhere}
.transport-departure-actions{margin-top:12px}
.transport-selected-service-timeline{margin:20px 0 10px;padding:0}
.transport-selected-service-timeline h3{font-size:var(--type-headline);margin:0 0 14px}
.transport-station-timeline{list-style:none!important;margin:0!important;padding:0!important;background:var(--surface-2);border-radius:18px}
.transport-station{display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;position:relative;padding:12px 14px!important;margin:0!important}
.transport-station:not(:last-child)::after{content:"";position:absolute;left:24px;top:25px;bottom:-14px;width:2px;background:var(--accent-2)}
.transport-station-marker{position:relative;z-index:1;width:12px;height:12px;margin:6px 0 0 5px;border:2px solid var(--accent-2);border-radius:50%;background:var(--surface-2)}
.transport-station-copy{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;min-width:0}
.transport-station-copy strong{grid-column:1;font-size:var(--type-body);overflow-wrap:anywhere}
.transport-station-role{grid-column:1/-1;font-size:var(--type-caption);color:var(--muted)}
.transport-station-copy time{font-size:var(--type-footnote);font-variant-numeric:tabular-nums}
.transport-station-copy time small{display:block;color:var(--muted);font-size:var(--type-caption)}
.transport-departure-disclaimer{font-size:var(--type-caption);color:var(--muted);line-height:1.5}
.activity-procedure-card.card,.activity-detail-reminder.card,.activity-detail-original-card.card,.note-content-card.card{margin:10px 0;background:var(--surface-2);color:var(--ink);border-radius:16px;box-shadow:none}
.activity-procedure-steps{padding-left:24px;margin:0}
.activity-procedure-steps>li{padding-left:3px;margin:8px 0}
@media(max-width:360px){.transport-station-copy{grid-template-columns:minmax(0,1fr)}.transport-station-copy time{grid-column:1}.map-journey-head{padding-inline:12px}}
@media(prefers-reduced-motion:reduce){.toolbar{transition:none!important}}

.sheet-modal.sheet-coordinated{transform:translate3d(0,100%,0)!important;transition:none!important}
.sheet-modal.sheet-coordinated:not(.map-journey-sheet)>.sheet-modal-inner{padding-top:max(0px,calc(var(--safe-top) - var(--sheet-gesture-offset,0px)))}
.sheet-modal.is-sheet-dragging{user-select:none;-webkit-user-select:none}

.onboarding.quick-start .onboarding-nav.primary{grid-column:1/-1}.onboarding.quick-start .onboarding-dots{display:none}
.activity-detail-reminder-stack>h2{margin:16px 0 8px;font-size:var(--type-footnote);color:var(--muted);font-weight:650}

.breadcrumbs>.breadcrumbs-item:last-child{flex:0 1 auto;min-width:0}

@media(prefers-reduced-motion:reduce){.stop-expand,.stop-card-chevron{transition:none}}


.day-menu-row .day-menu-day{min-width:3.4em;font-size:var(--type-footnote);font-weight:760;white-space:nowrap}
.day-menu-main{display:grid;gap:2px;min-width:0}
.day-menu-main .day-menu-title{font-size:var(--type-body);font-weight:680;line-height:1.3;overflow-wrap:anywhere}
.day-menu-main .day-menu-date{white-space:normal;font-size:var(--type-caption)}
.day-menu-check{width:20px;height:20px;color:var(--accent-2)}
.day-menu-check svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
/* Timeline: the clock lives inside the card so the card gets the full width. */

/* iOS 26.1/27 Home Screen web apps ignore theme-color and the status-bar meta, and blur the top
   of the page. A solid fixed band at the very top (>=6px, >=80% width, within 4px of the top)
   is the one thing that makes iOS paint an opaque, blur-free status bar in the page colour. */
.status-bar-scrim{display:none}
@media(display-mode:standalone){
  .status-bar-scrim{display:block;position:fixed;top:0;left:0;right:0;height:max(env(safe-area-inset-top,0px),6px);z-index:20000;background:var(--paper);pointer-events:none}
}

/* Activity rows inside an expanded stop are tappable. */
/* Detail v2 */
.detail-hero{display:grid;gap:6px;margin-bottom:14px}
.detail-hero .activity-detail-time{font-size:var(--type-title-2);font-weight:760;font-variant-numeric:tabular-nums}
.detail-hero .activity-detail-place{margin:0;color:var(--muted)}
.detail-primary-action{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border-radius:14px;margin-top:6px}
.detail-primary-action svg{width:20px;height:20px}
.detail-section{margin-top:22px}
.detail-section-title{margin:0 0 8px;color:var(--muted);font-size:var(--type-footnote);font-weight:700;letter-spacing:.02em}
.detail-primary-action,.detail-primary-action span{color:var(--paper)!important}
.detail-primary-action svg{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.detail-primary-action span{font-weight:700}
.detail-hero .activity-detail-time{color:var(--ink)}

/* Skeleton placeholders shown until the first itinerary render replaces #dayContent. */
.skeleton-list{display:grid;gap:14px;padding:18px 16px}
.skeleton-card{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:17px;background:var(--surface)}
.skeleton{display:block;border-radius:8px;background:linear-gradient(90deg,var(--surface-2) 25%,color-mix(in srgb,var(--surface-2) 55%,var(--surface)) 50%,var(--surface-2) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.3s ease-in-out infinite}
.skeleton-line{height:16px}.skeleton-line.short{width:32%}.skeleton-line.medium{width:68%}
@keyframes skeleton-shimmer{from{background-position:200% 0}to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}

/* Unified itinerary + map: the day timeline is the content of the map sheet. */
.map-journey-inner{display:flex;flex-direction:column;min-height:0}
.map-journey-body.page-content{display:none!important}
.map-journey-inner>#contentScroller{position:relative!important;inset:auto!important;flex:1 1 auto;min-height:0;width:100%;height:auto!important;overflow:auto;overscroll-behavior:contain;margin:0!important;padding:4px 16px calc(var(--tabbar-height) + var(--safe-bottom) + 24px)!important;background:var(--surface)}

/* Half-height sheet: keep only weather and the timeline; highlights and lodging return when fully open. */
.map-journey-sheet[data-state="medium"] .day-intro-details,.map-journey-sheet[data-state="medium"] .day-stay-details{display:none}

/* Mini player: one-tap navigation on the right, like a play button. */
body[data-app-tab="map"] .trip-mini-player{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}
.trip-mini-nav{width:44px;height:44px;flex:none;display:grid;place-items:center;border-radius:50%;background:var(--accent-2);color:var(--paper)}
.trip-mini-nav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.trip-mini-nav:active{transform:scale(.94)}

.map-journey-head .sheet-collapse-icon{width:44px;height:44px;padding:0;display:grid;place-items:center}
.sheet-collapse-icon .f7-icons{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:var(--surface-2);color:var(--muted);font-size:15px;font-weight:700}

.trip-mini-seq{background:var(--accent-2);color:var(--paper);font-size:var(--type-footnote);font-weight:760;font-variant-numeric:tabular-nums}
.trip-mini-icon svg{fill:none;stroke:currentColor;stroke-width:2}
body[data-app-tab="map"] .trip-mini-player .trip-mini-expand{display:grid!important;grid-template-columns:36px minmax(0,1fr);gap:12px;align-items:center}

/* v6 typed reminders */
.reminder-list{list-style:none;margin:0;padding:0;border-radius:16px;background:var(--surface-2);overflow:hidden}
.reminder-item{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;padding:12px 14px;align-items:start}
.reminder-item+.reminder-item{border-top:1px solid var(--line)}
.reminder-item .f7-icons{font-size:20px;color:var(--accent-2);margin-top:2px}
.reminder-item[data-level="must"] .f7-icons{color:#d93025}
.reminder-item[data-type="money"] .f7-icons{color:#1e8e3e}
.reminder-item strong{display:block;font-size:var(--type-footnote);margin-bottom:2px}
.reminder-item p{margin:0;font-size:var(--type-footnote);line-height:1.45;color:var(--ink)}
.detail-steps{margin:0;padding:0 0 0 0;list-style:none;counter-reset:step;display:grid;gap:8px}
.detail-steps li{counter-increment:step;display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;align-items:center;font-size:var(--type-body)}
.detail-steps li::before{content:counter(step);width:26px;height:26px;display:grid;place-items:center;border-radius:50%;background:var(--accent-soft);color:var(--accent-2);font-size:var(--type-caption);font-weight:760}
/* Day context as iOS inset-grouped rows: weather, today's focus, lodging. */
.journey-weather{border:0!important;margin:4px 0 0;padding:0!important}
.journey-weather-details,.day-intro-details,.day-stay-details{margin:6px 0;padding:0 14px;border:0;border-radius:14px;background:var(--surface-2)}
.day-header{padding-bottom:10px}

/* 現在 */
.now-panel{padding:calc(var(--safe-top) + 8px) 16px calc(var(--tabbar-height) + var(--safe-bottom) + 24px)!important;background:var(--paper)}
.now-header{padding:8px 4px 12px}
.now-date{margin:0;color:var(--muted);font-size:var(--type-footnote);font-weight:650}
.now-header h1{margin:2px 0 0;font-size:2.1rem;font-weight:800;letter-spacing:-.03em}
.now-hero{display:grid;gap:8px;padding:20px;border-radius:22px;background:var(--surface);box-shadow:0 1px 0 var(--line),0 8px 24px rgba(16,24,40,.06)}
.now-badge{justify-self:start;padding:4px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent-2);font-size:var(--type-caption);font-weight:750}
.now-badge[data-state="now"]{background:color-mix(in srgb,#1e8e3e 16%,var(--surface));color:#1e8e3e}
.now-hero h2{margin:4px 0 0;font-size:var(--type-title-2);line-height:1.25;font-weight:780}
.now-meta{margin:0;color:var(--muted);font-size:var(--type-body);font-variant-numeric:tabular-nums}
.now-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:10px;margin-top:10px}
.now-actions .button{min-height:50px;border-radius:14px;font-weight:700}
.now-action-primary{display:inline-flex;align-items:center;justify-content:center;gap:8px;color:var(--paper)!important}
.now-action-primary svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.now-action-secondary{background:var(--accent-soft);color:var(--accent-2)}
.now-section{margin-top:24px}
.now-section h3{margin:0 0 8px 4px;color:var(--muted);font-size:var(--type-footnote);font-weight:700}
.now-next{list-style:none;margin:0;padding:0;border-radius:16px;background:var(--surface);overflow:hidden}
.now-next li+li{border-top:1px solid var(--line)}
.now-next button{width:100%;display:grid;grid-template-columns:4.2em minmax(0,1fr) 12px;gap:10px;align-items:center;min-height:56px;padding:10px 14px;border:0;background:transparent;color:var(--ink);text-align:left}
.now-next-time{color:var(--accent-2);font-weight:720;font-variant-numeric:tabular-nums;font-size:var(--type-footnote)}
.now-next-main{display:grid;gap:2px;min-width:0}
.now-next-main strong{font-size:var(--type-body);font-weight:650}
.now-next-main small{color:var(--muted);font-size:var(--type-caption)}
.now-empty{padding:40px 16px;color:var(--muted);text-align:center}

/* 物品 */
.packing-progress{height:6px;margin-top:10px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.packing-progress span{display:block;height:100%;border-radius:inherit;background:#34c759;transition:width .3s ease}
.packing-list{list-style:none;margin:0;padding:0;border-radius:16px;background:var(--surface);overflow:hidden}
.packing-item{display:flex;align-items:center}
.packing-item+.packing-item{border-top:1px solid var(--line)}
.packing-toggle{flex:1;min-width:0;display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:12px;align-items:center;min-height:56px;padding:10px 14px;border:0;background:transparent;color:var(--ink);text-align:left}
.packing-check{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;border:2px solid var(--line);color:#fff;transition:background .18s ease,border-color .18s ease,transform .18s ease}
.packing-check svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.is-packed .packing-check{background:#34c759;border-color:#34c759;transform:scale(1.04)}
.is-packed .packing-copy strong{color:var(--muted);text-decoration:line-through}
.packing-copy{display:grid;gap:2px;min-width:0}
.packing-copy strong{font-size:var(--type-body);font-weight:600}
.packing-copy small{color:var(--muted);font-size:var(--type-caption)}
.packing-tag{padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:var(--type-caption)}
.packing-delete{width:44px;height:44px;flex:none;margin-right:6px;border:0;background:transparent;color:var(--muted)}
.packing-add{margin-top:24px}
.packing-add h3{margin:0 0 8px 4px;color:var(--muted);font-size:var(--type-footnote);font-weight:700}
.packing-add-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px}
.packing-add-row input,.packing-add-row select{min-height:48px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font-size:16px}
.packing-add-row .button{min-height:48px;border-radius:12px;padding:0 16px}
@media(prefers-reduced-motion:reduce){.packing-check,.packing-progress span{transition:none}}

.packing-tag.is-overdue{background:color-mix(in srgb,#d93025 14%,var(--surface));color:#d93025}
.packing-add-row input[type="date"]{min-width:0;width:9.5em}
/* Five tabs: tighter labels so 物品｜任務｜現在｜行程｜更多 fit one-handed widths. */

/* Linked 物品／任務 inside a stop or activity */
.linked-checklist{margin:10px 12px 0;padding:10px 12px;border-radius:14px;background:var(--surface-2)}
.linked-checklist h4{margin:0 0 6px;color:var(--muted);font-size:var(--type-caption);font-weight:700}
.linked-checklist ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.linked-check{width:100%;display:grid;grid-template-columns:26px 18px minmax(0,1fr);gap:10px;align-items:center;min-height:44px;padding:4px 0;border:0;background:transparent;color:var(--ink);text-align:left;font-size:var(--type-footnote)}
.linked-check .f7-icons{font-size:16px;color:var(--muted)}
.linked-check.is-checked .packing-check{background:#34c759;border-color:#34c759}
.linked-check.is-checked span:last-child{color:var(--muted);text-decoration:line-through}
.activity-detail-overview+.linked-checklist,.detail-section+.linked-checklist{margin-inline:0}
.entry-use{display:flex!important;align-items:center;gap:4px;color:var(--accent-2)!important}
.entry-use .f7-icons{font-size:13px}

/* iOS compact tab bar: icon above a one-word label, taller floating glass capsule. */
:root{--tabbar-height:76px}
.app-tabbar .toolbar-pane{height:64px;min-height:64px;padding:4px;border-radius:32px;backdrop-filter:blur(24px) saturate(1.6);-webkit-backdrop-filter:blur(24px) saturate(1.6)}
.app-tabbar .tab-link{flex-direction:column;gap:2px;padding:0 2px;border-radius:26px;font-size:10.5px;font-weight:600;letter-spacing:.01em}
.app-tabbar .f7-icons,.app-tabbar .tabbar-icon{font-size:24px;line-height:24px;width:26px;height:24px}
.app-tabbar .tabbar-label{font-size:10.5px;line-height:1.1}
.app-tabbar .tab-link-highlight{border-radius:26px;background:color-mix(in srgb,var(--accent) 10%,transparent)}
/* HIG list rows: one grouped container, hairline separators, sequence badge as the leading
   accessory, title first, one-line summary; expansion is indented under the title. */
/* HIG sheets: a quiet header with a text Done button; no breadcrumb strip inside the sheet. */
.detail-breadcrumbs{display:none!important}
.stop-detail-sheet .sheet-head,.activity-detail-sheet .sheet-head{border-bottom:0;min-height:60px;padding:14px 20px 6px;background:var(--surface)}
.stop-detail-sheet .sheet-head small,.activity-detail-sheet .sheet-head small{color:var(--muted);font-size:var(--type-caption);font-weight:600}
.stop-detail-sheet .sheet-head strong,.activity-detail-sheet .sheet-head strong{font-size:1.3rem;line-height:1.25;font-weight:780;letter-spacing:-.01em}
#stopDetailCloseBtn,#activityDetailCloseBtn{min-width:0;height:36px;padding:0 4px;border-radius:0;background:transparent!important;color:var(--accent-2)!important;font-size:var(--type-body);font-weight:700;box-shadow:none}
.activity-detail-body,.stop-detail-body{padding-top:4px!important}
.detail-hero .activity-detail-time,.detail-hero .activity-detail-time *{font-size:1.15rem!important;font-weight:760;color:var(--ink)}
.detail-hero .activity-detail-place{font-size:var(--type-footnote)!important;font-weight:500!important;color:var(--muted)!important;margin:0}
/* Map sheet header reads as a navigation-bar title: the day, tappable to switch days. */
#mapJourneyBreadcrumbs .breadcrumbs-item-link,#mapJourneyBreadcrumbs .breadcrumb-menu-trigger{font-size:1.2rem;font-weight:780;color:var(--ink);padding-left:0}
#mapJourneyBreadcrumbs .breadcrumb-chevron{color:var(--accent-2)}
.rich-timeline.stop-timeline{padding:0!important}.rich-timeline.stop-timeline::before{display:none}

.packing-add-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}
.packing-add-row input[type="text"]{grid-column:1/-1}
.packing-add-row select,.packing-add-row input[type="date"]{width:100%;min-width:0}

/* 帳本 */
.ledger-back{display:inline-flex;align-items:center;gap:2px;min-height:44px;margin-left:-8px;padding:0 8px;border:0;background:transparent;color:var(--accent-2);font-size:var(--type-body);font-weight:600}
.ledger-back .f7-icons{font-size:20px}
.ledger-summary{padding:16px 18px;border-radius:18px;background:var(--surface)}
.ledger-summary small{display:block;color:var(--muted);font-size:var(--type-caption)}
.ledger-summary strong{font-size:1.5rem;font-weight:780;font-variant-numeric:tabular-nums}
.ledger-empty{margin:0;padding:14px 16px;border-radius:16px;background:var(--surface);color:var(--muted);font-size:var(--type-footnote)}
.ledger-settle{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 14px;min-height:56px}
.ledger-settle-copy{display:grid;gap:2px}.ledger-settle-copy small{color:var(--muted);font-variant-numeric:tabular-nums}
.ledger-settle .button{min-height:40px;padding:0 14px;border-radius:12px;background:var(--accent-soft);color:var(--accent-2);font-weight:700}
.ledger-entry{display:grid;grid-template-columns:3.4em minmax(0,1fr) 44px;align-items:center;gap:8px;padding:6px 6px 6px 14px;min-height:56px}
.ledger-form{display:grid;gap:12px;padding:16px;border-radius:18px;background:var(--surface)}
.ledger-form h3{margin:0}
.ledger-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.ledger-grid input[type="text"]{grid-column:1/-1}
.ledger-grid input,.ledger-grid select{width:100%;min-height:48px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);font-size:16px}
.ledger-currency{display:grid;grid-template-columns:1fr 1fr;padding:3px;border-radius:12px;background:var(--surface-2)}
.ledger-currency label{position:relative}
.ledger-currency input{position:absolute;opacity:0;inset:0}
.ledger-currency span{display:grid;place-items:center;min-height:42px;border-radius:10px;font-weight:650}
.ledger-currency input:checked+span{background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.ledger-field{display:grid;gap:4px}.ledger-field span{color:var(--muted);font-size:var(--type-caption)}
.ledger-members{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;border:0}
.ledger-members legend{width:100%;margin-bottom:6px;color:var(--muted);font-size:var(--type-caption)}
.ledger-chip{position:relative}
.ledger-chip input{position:absolute;opacity:0}
.ledger-chip span{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-weight:600}
.ledger-chip input:checked+span{background:var(--accent-2);color:var(--paper)}
.ledger-chip input:focus-visible+span,.ledger-currency input:focus-visible+span{outline:3px solid var(--focus)}
.ledger-submit{min-height:50px;border-radius:14px}

/* How-to guides inside activity detail: kept whole, inset grouped like iOS. */
.detail-guide-body{padding:12px 14px;border-radius:14px;background:var(--surface);border:1px solid var(--line);line-height:1.5}
.detail-guide-body>:first-child{margin-top:0}.detail-guide-body>:last-child{margin-bottom:0}
.detail-guide-body ol,.detail-guide-body ul{padding-left:1.3em;margin:6px 0;display:grid;gap:6px}
.md-table-wrap{margin:8px -14px;overflow-x:auto}
.md-table{width:100%;border-collapse:collapse;font-size:var(--type-subheadline,15px)}
.md-table thead{display:none}
.md-table td{padding:9px 14px;border-top:1px solid var(--line);vertical-align:top}
.md-table-key{color:var(--muted);width:38%;font-size:var(--type-footnote)}
@media(max-width:420px){
  .md-table tr{display:grid;padding:9px 14px;border-top:1px solid var(--line);gap:2px}
  .md-table td{padding:0;border:0;width:auto}
}

/* Ledger v2: grouped records, category bars, floating add, entry sheet. */
.ledger-header{display:grid;grid-template-columns:auto 1fr auto;align-items:end;column-gap:8px}
.ledger-header .ledger-back{grid-column:1/-1;justify-self:start}
.ledger-header h1{grid-column:1/3}
.ledger-icon-button{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:var(--surface);color:var(--accent-2)}
.ledger-icon-button .f7-icons{font-size:20px}
.ledger-scope{display:grid;grid-template-columns:1fr 1fr;padding:3px;margin:0 0 14px;border-radius:12px;background:var(--surface-2)}
.ledger-scope button{min-height:36px;border:0;border-radius:9px;background:transparent;color:var(--ink);font-weight:600;font-size:var(--type-subheadline,15px)}
.ledger-scope button[aria-checked="true"]{background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.14)}
.ledger-hero{display:grid;gap:4px;padding:16px 18px;border-radius:18px;background:var(--surface)}
.ledger-hero small{color:var(--muted);font-size:var(--type-footnote)}
.ledger-hero-amounts{display:flex;flex-wrap:wrap;gap:4px 16px}
.ledger-hero-amounts strong{font-size:1.9rem;font-weight:780;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.ledger-list .ledger-row{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:12px;align-items:center;width:100%;min-height:60px;padding:10px 14px;border:0;background:transparent;color:var(--ink);text-align:left}
.ledger-list .ledger-row:active{background:var(--surface-2)}
.ledger-row-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--surface-2);color:var(--accent-2)}
.ledger-row-icon .f7-icons{font-size:18px}
.ledger-row-icon[data-category="餐飲"]{background:#fff1e6;color:#c45a00}
.ledger-row-icon[data-category="交通"]{background:#e6f0ff;color:#0057c2}
.ledger-row-icon[data-category="住宿"]{background:#efe9ff;color:#5b3cc4}
.ledger-row-icon[data-category="購物"]{background:#ffe8f0;color:#b8245a}
.ledger-row-icon[data-category="門票"]{background:#e5f7ec;color:#16803c}
.ledger-row-icon.is-repay{background:#e8f6f5;color:#0b7a72}
.ledger-row-main{display:grid;gap:2px;min-width:0}
.ledger-row-main strong{font-weight:620;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ledger-row-main small{color:var(--muted);font-size:var(--type-footnote)}
.ledger-row-amount{display:grid;justify-items:end;font-weight:650;font-variant-numeric:tabular-nums}
.ledger-row-amount small{color:var(--muted);font-weight:500;font-size:var(--type-caption)}
.ledger-day+.ledger-day{margin-top:14px}
.ledger-day h4{display:flex;justify-content:space-between;align-items:baseline;margin:0 4px 6px;font-size:var(--type-footnote);font-weight:700}
.ledger-day h4 small{color:var(--muted);font-weight:600;font-variant-numeric:tabular-nums}
.ledger-categories{list-style:none;margin:0;padding:6px 14px;border-radius:16px;background:var(--surface);display:grid}
.ledger-categories li{display:grid;grid-template-columns:36px minmax(0,1fr);gap:12px;align-items:center;min-height:52px}
.ledger-categories li+li{border-top:1px solid var(--line)}
.ledger-category-main{display:grid;gap:6px}
.ledger-category-label{display:flex;justify-content:space-between;gap:8px}
.ledger-category-label small{color:var(--muted);font-variant-numeric:tabular-nums}
.ledger-bar{display:block;height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.ledger-bar span{display:block;height:100%;border-radius:3px;background:var(--accent-2)}
.ledger-records{padding-bottom:96px}
.ledger-fab{position:fixed;left:auto;right:16px;width:auto;max-width:calc(100% - 32px);bottom:calc(var(--tabbar-height,76px) + env(safe-area-inset-bottom) + 14px);z-index:30;display:inline-flex;align-items:center;gap:6px;min-height:52px;padding:0 20px 0 16px;border:0;border-radius:26px;background:var(--accent-2);color:#fff;font-weight:700;font-size:var(--type-body);box-shadow:0 8px 24px rgba(0,60,140,.28)}
.ledger-fab .f7-icons{font-size:20px;color:#fff}
.ledger-fab:active{transform:scale(.97)}

/* Entry sheet: native <dialog> in the top layer, styled as an iOS bottom sheet. */
.ledger-sheet{position:fixed;inset:auto 0 0 0;width:100%;max-width:560px;max-height:min(92dvh,900px);margin:0 auto;padding:0;border:0;border-radius:22px 22px 0 0;background:var(--paper);color:var(--ink);overflow:auto;overscroll-behavior:contain;box-shadow:0 -8px 40px rgba(0,0,0,.25);animation:ledger-sheet-in .28s cubic-bezier(.2,.9,.25,1)}
.ledger-sheet::backdrop{background:rgba(0,0,0,.32);animation:ledger-fade .2s ease}
.ledger-sheet.is-closing{animation:ledger-sheet-out .18s ease-in forwards}
@keyframes ledger-sheet-in{from{transform:translateY(100%)}to{transform:none}}
@keyframes ledger-sheet-out{to{transform:translateY(100%)}}
@keyframes ledger-fade{from{opacity:0}}
@media(prefers-reduced-motion:reduce){.ledger-sheet,.ledger-sheet::backdrop,.ledger-sheet.is-closing{animation:none}}
.ledger-sheet-form{display:grid;gap:14px;padding:0 16px calc(20px + env(safe-area-inset-bottom))}
.ledger-sheet-head{position:sticky;top:0;z-index:1;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;margin:0 -16px;padding:10px 8px;background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.ledger-sheet-head h2{margin:0;font-size:var(--type-body);font-weight:700}
.ledger-sheet-link{justify-self:start;min-height:44px;padding:0 10px;border:0;background:transparent;color:var(--accent-2);font-size:var(--type-body)}
.ledger-sheet-link.is-strong{justify-self:end;font-weight:700}
.ledger-fieldset{display:grid;gap:14px;margin:0;padding:0;border:0;min-width:0}
.ledger-input{width:100%;min-height:46px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font-size:16px}
.ledger-quick{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.ledger-quick-apply{min-height:46px;padding:0 14px;border:0;border-radius:12px;background:var(--accent-soft);color:var(--accent-2);font-weight:700}
.ledger-quick-hint{margin:-6px 4px 0;color:var(--muted);font-size:var(--type-footnote)}
.ledger-amount-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.ledger-amount{width:100%;min-height:60px;padding:0 4px;border:0;border-bottom:2px solid var(--line);background:transparent;color:var(--ink);font-size:2.2rem;font-weight:780;font-variant-numeric:tabular-nums}
.ledger-amount:focus{outline:none;border-bottom-color:var(--accent-2)}
.ledger-sheet .ledger-currency{min-width:180px}
.ledger-group{display:grid;gap:8px}
.ledger-label{color:var(--muted);font-size:var(--type-footnote);font-weight:600}
.ledger-chips{display:flex;flex-wrap:wrap;gap:8px}
.ledger-chip span{gap:4px}
.ledger-chip .f7-icons{font-size:15px}
.ledger-split-head{display:flex;justify-content:space-between;align-items:center}
.ledger-split-mode{display:inline-grid;grid-template-columns:1fr 1fr;padding:2px;border-radius:9px;background:var(--surface-2)}
.ledger-split-mode button{min-height:30px;padding:0 10px;border:0;border-radius:7px;background:transparent;color:var(--ink);font-size:var(--type-footnote);font-weight:600}
.ledger-split-mode button[aria-checked="true"]{background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.14)}
.ledger-split-exact{display:none;list-style:none;margin:0;padding:0;gap:8px}
.ledger-split-exact li{display:grid;grid-template-columns:2.4em minmax(0,1fr);align-items:center;gap:8px;font-weight:650}
form[data-split="exact"] .ledger-split-exact{display:grid}
form[data-split="exact"] .ledger-split-equal{display:none}
.ledger-split-preview{margin:0 4px;color:var(--muted);font-size:var(--type-footnote);font-variant-numeric:tabular-nums}
.ledger-meta,.ledger-readonly{margin:0 4px;color:var(--muted);font-size:var(--type-footnote)}
.ledger-delete{display:inline-flex;justify-content:center;align-items:center;gap:6px;min-height:48px;border:0;border-radius:12px;background:var(--surface);color:#d70015;font-weight:650}
html[data-effective-theme="dark"] .ledger-row-icon[data-category]{background:color-mix(in srgb,currentColor 18%,transparent)}
html[data-effective-theme="dark"] .ledger-row-icon[data-category="餐飲"]{color:#ff9f4a}
html[data-effective-theme="dark"] .ledger-row-icon[data-category="交通"]{color:#66aaff}
html[data-effective-theme="dark"] .ledger-row-icon[data-category="住宿"]{color:#a78bfa}
html[data-effective-theme="dark"] .ledger-row-icon[data-category="購物"]{color:#ff6b9a}
html[data-effective-theme="dark"] .ledger-row-icon[data-category="門票"]{color:#4ade80}
html[data-effective-theme="dark"] .ledger-delete{color:#ff453a}
.now-ledger{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:stretch}
.now-ledger-summary{display:grid;gap:2px;justify-items:start;padding:12px 16px;border:0;border-radius:16px;background:var(--surface);color:var(--ink);text-align:left}
.now-ledger-summary small{color:var(--muted);font-size:var(--type-footnote)}
.now-ledger-summary strong{font-size:1.35rem;font-weight:760;font-variant-numeric:tabular-nums}
.now-ledger-add{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:auto;min-height:56px;padding:0 18px;border-radius:16px;font-weight:700}
.now-ledger-add .f7-icons{font-size:18px}

/* 更多: account card and consistent navigation rows. */
.settings-heading h1{font-size:2.1rem;font-weight:800;letter-spacing:-.03em}
.settings-account-card{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;border-radius:16px;background:var(--surface)}
.settings-avatar{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:linear-gradient(145deg,var(--accent-2),#5ac8fa);color:#fff;font-size:1.35rem;font-weight:760}
.settings-account-copy{display:grid;gap:2px;min-width:0}
.settings-account-copy strong{font-size:var(--type-body);font-weight:700}
.settings-account-copy small{color:var(--muted);font-size:var(--type-footnote);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.settings-signout{min-height:40px;padding:0 14px;border:0;border-radius:12px;background:var(--surface-2);color:#d70015;font-weight:650}
html[data-effective-theme="dark"] .settings-signout{color:#ff453a}
.settings-list .settings-list-action{appearance:none;-webkit-appearance:none;border:0!important;box-shadow:none;background:transparent;color:var(--ink);font:inherit}
.settings-list .settings-list-action:active{background:var(--surface-2)}
#settingsLedgerSummary{color:var(--muted);font-variant-numeric:tabular-nums}
.settings-advanced-list .setting-advanced{margin:0;border:0;padding:0 16px}
.settings-advanced-list .setting-advanced>summary{display:grid;align-content:center;padding:10px 0}
.packing-tag.is-mine{background:var(--accent-soft);color:var(--accent-2)}
.now-section h3.is-overdue{color:#d93025}
.checklist-done>summary{list-style:none;cursor:pointer}
.checklist-done>summary::-webkit-details-marker{display:none}
.checklist-done>summary h3{display:inline-flex;align-items:center;gap:6px}
.checklist-done>summary h3::after{content:'›';font-size:1.1em;transition:transform .2s}
.checklist-done[open]>summary h3::after{transform:rotate(90deg)}
.packing-add-main{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.packing-add-main input{min-height:48px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font-size:16px}
.packing-add-main .button{min-height:48px;border-radius:12px;padding:0 18px}
.packing-add-more{margin-top:8px}
.packing-add-more>summary{display:inline-flex;align-items:center;min-height:36px;padding:0 4px;color:var(--accent-2);font-size:var(--type-footnote);font-weight:600;cursor:pointer;list-style:none}
.packing-add-more>summary::-webkit-details-marker{display:none}
.packing-add-more .packing-add-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);margin-top:6px}
/* Grouped-list pages sit on the iOS grouped background so their cards read as cards. */
.workspace-tabs>.page-content.tab.now-panel{background:var(--paper)}
/* One chevron per disclosure: hide Framework7's own item-link chevron where we draw ours. */
.timeline-disclosures .item-link .item-inner::before,.timeline-disclosures .item-link .item-inner:before{display:none!important;content:none!important}

/* Motion: quiet page fade on tab switch (not the map), tick pop on checklists. */
@keyframes tab-page-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes check-pop{0%{transform:scale(.6)}60%{transform:scale(1.15)}100%{transform:scale(1)}}
.workspace-tabs>.page-content.tab.now-panel.tab-active,.workspace-tabs>.page-content.tab.settings-panel.tab-active{animation:tab-page-in .22s cubic-bezier(.2,.8,.2,1)}
.packing-item.is-packed.just-checked .packing-check svg{animation:check-pop .26s cubic-bezier(.2,.9,.3,1.2)}
.packing-item .packing-copy strong{transition:color .2s}
@media(prefers-reduced-motion:reduce){
  .workspace-tabs>.page-content.tab.now-panel.tab-active,.workspace-tabs>.page-content.tab.settings-panel.tab-active,.packing-item.is-packed.just-checked .packing-check svg{animation:none}
}
