/* iOS 27 layer: loaded after styles.css. Layout under the floating tab bar, glass controls,
   map chrome, checklists and sheets. Older rules in styles.css stay as the base. */
:root{
  --dock:calc(var(--tabbar-height) + var(--safe-bottom));
  --glass-fill:rgba(255,255,255,.72);
  --glass-edge:rgba(255,255,255,.9);
  --glass-shadow:0 1px 1px rgba(0,0,0,.04),0 8px 24px rgba(16,24,40,.14);
  --glass-ink:#1c1c1e;
  --spring:cubic-bezier(.32,.72,0,1);
}
:root[data-effective-theme="dark"]{
  --glass-fill:rgba(44,44,48,.68);
  --glass-edge:rgba(255,255,255,.14);
  --glass-shadow:0 1px 1px rgba(0,0,0,.2),0 10px 28px rgba(0,0,0,.45);
  --glass-ink:#f2f2f7;
}

/* The stage runs under the floating tab bar; each scroller pads for it instead. */
.page-content.app-page-content{padding-bottom:0!important;background:var(--paper)}
.workspace-tabs>.page-content.tab.now-panel.tab-active{display:block!important}
.workspace-tabs>.page-content.tab.now-panel{overflow-x:hidden!important;overflow-y:auto!important;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}
.now-panel{padding-bottom:calc(var(--dock) + 28px)!important}
.workspace-tabs>.page-content.tab.settings-panel{padding-bottom:calc(var(--dock) + 28px)!important}
.map-journey-inner>#contentScroller{padding-bottom:calc(var(--dock) + 20px)!important}
.trip-mini-player{bottom:calc(var(--dock) + 6px)}

/* Sheets keep one layout height; detents are compositor-only translations, so dragging
   never relayouts the content and never exposes an unpainted strip. */
.sheet-modal.sheet-coordinated>.sheet-modal-inner{height:100%}

/* Toasts float above the tab bar, centred, sized to their text. */
.toast.toast-bottom:not(#toast){left:50%!important;right:auto!important;width:max-content!important;max-width:min(calc(100vw - 32px),26rem)!important;
  bottom:calc(var(--dock) + 12px)!important;transform:translate3d(-50%,0,0)!important;margin:0!important;border-radius:18px!important;
  --toast-fill:rgba(246,246,248,.66);--toast-ink:#1c1c1e;--toast-edge:rgba(255,255,255,.7);
  background:var(--toast-fill)!important;color:var(--toast-ink)!important;border:.5px solid var(--toast-edge)!important;
  -webkit-backdrop-filter:blur(28px) saturate(1.8);backdrop-filter:blur(28px) saturate(1.8);
  box-shadow:0 10px 30px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.5)!important}
:root[data-effective-theme="dark"] .toast.toast-bottom:not(#toast){--toast-fill:rgba(58,58,62,.6);--toast-ink:#fff;--toast-edge:rgba(255,255,255,.16);box-shadow:0 10px 30px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.1)!important}
.toast.toast-bottom:not(#toast) .toast-text{color:inherit}
.toast.toast-bottom:not(#toast) .toast-content{padding:10px 16px!important;min-height:0!important}
.toast.toast-bottom:not(#toast) .toast-text{font-size:15px;font-weight:600;line-height:1.35;text-align:center;white-space:normal}
.toast.toast-bottom.modal-in{animation:toast-rise .32s var(--spring) both}
@keyframes toast-rise{from{opacity:0;transform:translate3d(-50%,14px,0) scale(.96)}to{opacity:1;transform:translate3d(-50%,0,0) scale(1)}}

/* MapLibre's attribution toggle is replaced by the credit line in the 圖層 sheet. */
.map-panel .maplibregl-ctrl-attrib-button,.map-panel .maplibregl-ctrl-attrib{display:none!important}

/* Reminder lists inside the detail sheet sit flush with the other cards. */
.reminder-list{padding:0!important;margin-left:0!important}
.reminder-item{grid-template-columns:20px minmax(0,1fr);gap:10px;padding:11px 14px 11px 12px}
.reminder-item .f7-icons{font-size:17px;width:20px;margin-top:1px;text-align:center}

@media (prefers-reduced-motion:reduce){.toast.toast-bottom.modal-in{animation:none}}

/* Mini player hand-off: the pill stays above the rising sheet and dissolves into it. */
body[data-app-tab="map"] .trip-mini-player{touch-action:none}
.trip-mini-player.is-handing-off{z-index:45;opacity:calc(1 - var(--mini-handoff,0));transform:translate3d(0,calc(var(--mini-handoff,0) * -10px),0) scale(calc(1 - var(--mini-handoff,0) * .03));pointer-events:none;will-change:opacity,transform}

/* ── Sheet (native dialog) ─────────────────────────────────────────── */
.ios-sheet{position:fixed;inset:auto 0 0 0;width:100%;max-width:600px;height:auto;max-height:calc(100dvh - var(--safe-top) - 12px);margin:0 auto;padding:0;border:0;
  display:none;flex-direction:column;border-radius:30px 30px 0 0;background:var(--paper);color:var(--ink);overflow:hidden;
  box-shadow:0 -10px 40px rgba(0,0,0,.18);transform:translate3d(0,var(--sheet-drag,0px),0);transition:transform .42s var(--spring);will-change:transform}
.ios-sheet[open]{display:flex}
.ios-sheet.is-tall{height:calc(100dvh - var(--safe-top) - 12px)}
.ios-sheet.is-dragging{transition:none}
.ios-sheet.is-presenting{animation:ios-sheet-in .5s var(--spring) both}
.ios-sheet.is-closing{transform:translate3d(0,calc(100% + 20px),0)!important;transition:transform .26s cubic-bezier(.4,0,.9,.6)!important;animation:none}
.ios-sheet::backdrop{background:rgba(0,0,0,.3);animation:ios-fade-in .3s ease both}
.ios-sheet.is-closing::backdrop{animation:ios-fade-out .26s ease both}
@keyframes ios-sheet-in{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,var(--sheet-drag,0px),0)}}
@keyframes ios-fade-in{from{opacity:0}}
@keyframes ios-fade-out{to{opacity:0}}
.ios-sheet-grabber{position:absolute;z-index:3;top:0;left:0;right:0;height:18px;display:flex;justify-content:center;padding-top:6px;pointer-events:none}
.ios-sheet-grabber span{width:36px;height:5px;border-radius:3px;background:color-mix(in srgb,var(--ink) 22%,transparent)}
.ios-sheet-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:0 16px calc(24px + var(--safe-bottom))}

/* Sheet navigation bar: 取消 · title · 完成 */
.sheet-nav{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin:0 -16px 6px;padding:14px 12px 8px;
  background:color-mix(in srgb,var(--paper) 86%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.6);backdrop-filter:blur(18px) saturate(1.6)}
.sheet-nav h2{margin:0;font-size:17px;font-weight:650;text-align:center;letter-spacing:-.01em}
.sheet-nav-button{justify-self:start;min-width:44px;min-height:40px;padding:0 14px;border:0;border-radius:20px;background:var(--glass-fill);color:var(--ink);font-size:16px;font-weight:500;
  box-shadow:inset 0 0 0 .5px color-mix(in srgb,var(--ink) 10%,transparent)}
.sheet-nav-button.is-primary{justify-self:end;background:var(--accent);color:#fff;font-weight:650;box-shadow:none}
.sheet-nav-button.is-primary:disabled{background:color-mix(in srgb,var(--ink) 12%,transparent);color:color-mix(in srgb,var(--ink) 38%,transparent)}
.sheet-nav-button.is-icon{width:40px;padding:0;display:grid;place-items:center}
.sheet-nav-button .f7-icons{font-size:18px}

/* Inset grouped rows used inside sheets */
.sheet-group{margin:0 0 18px;border-radius:14px;background:var(--surface);overflow:hidden}
.sheet-group-title{margin:0 0 6px;padding:0 16px;color:var(--muted);font-size:13px;font-weight:500;text-transform:none}
.sheet-group-footer{margin:-12px 0 18px;padding:0 16px;color:var(--muted);font-size:13px;line-height:1.4}
.sheet-row{position:relative;display:flex;align-items:center;gap:12px;min-height:46px;padding:6px 16px;font-size:17px}
.sheet-row+.sheet-row::before{content:"";position:absolute;top:0;right:0;left:var(--row-inset,16px);height:.5px;background:var(--line)}
.sheet-row.has-icon{--row-inset:58px}
.sheet-row-icon{flex:none;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:#fff;background:var(--icon-bg,#8e8e93)}
.sheet-row-icon .f7-icons{font-size:17px}
.sheet-row-label{flex:1 1 auto;min-width:0}
.sheet-row-label small{display:block;color:var(--muted);font-size:13px}
.sheet-row-value{flex:none;max-width:60%;color:var(--muted);font-size:16px;text-align:right}
.sheet-row input[type=text],.sheet-row input:not([type]),.sheet-row textarea,.sheet-row input[type=date],.sheet-row input[type=datetime-local],.sheet-row select{
  min-width:0;border:0;background:transparent;color:var(--ink);font:inherit;font-size:17px;outline:none}
.sheet-row>input[type=text],.sheet-row>input:not([type]),.sheet-row>textarea{flex:1 1 auto;width:100%;padding:8px 0}
.sheet-row textarea{resize:none;min-height:64px;line-height:1.4}
.sheet-row select,.sheet-row input[type=date],.sheet-row input[type=datetime-local]{flex:none;max-width:60%;padding:6px 10px;border-radius:8px;background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--accent-2);font-size:16px;text-align:right}
.sheet-destructive{display:block;width:100%;min-height:48px;margin:6px 0 0;border:0;border-radius:14px;background:var(--surface);color:#ff3b30;font-size:17px;font-weight:500}

/* Selection that reads at a glance: filled accent capsule with a check, never colour alone. */
.choice-chips{display:flex;flex-wrap:wrap;gap:8px;padding:10px 16px 12px}
.choice-chip{position:relative;display:inline-flex}
.choice-chip input{position:absolute;opacity:0;pointer-events:none}
.choice-chip span{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 14px;border-radius:18px;background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--ink);font-size:15px;font-weight:500;transition:background .18s ease,color .18s ease,transform .18s var(--spring)}
.choice-chip span .f7-icons{font-size:16px}
.choice-chip input:checked+span{background:var(--accent);color:#fff;font-weight:600}
.choice-chip input:checked+span::before{content:"";width:12px;height:12px;margin-left:-2px;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12.5l5 5L20 6.5' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12.5l5 5L20 6.5' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.choice-chip input:focus-visible+span{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:2px}
.choice-chip input:active+span{transform:scale(.96)}
.choice-chip input:disabled+span{opacity:.45}

/* Check rows (multi-select list): round check on the right, filled when selected. */
.check-row{cursor:pointer}
.check-row input[type=checkbox],.check-row input[type=radio]{position:absolute;opacity:0;pointer-events:none}
.check-mark{flex:none;width:24px;height:24px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ink) 28%,transparent);display:grid;place-items:center;transition:background .18s ease,border-color .18s ease}
.check-mark::after{content:"";width:13px;height:13px;background:#fff;opacity:0;transform:scale(.4);transition:opacity .15s ease,transform .25s var(--spring);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12.5l5 5L20 6.5' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12.5l5 5L20 6.5' fill='none' stroke='black' stroke-width='3.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.check-row:has(input:checked) .check-mark{background:var(--accent);border-color:var(--accent)}
.check-row:has(input:checked) .check-mark::after{opacity:1;transform:none}
.check-row:has(input:focus-visible){outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:-3px}

/* Segmented control */
.ios-segmented{display:grid;grid-auto-columns:1fr;grid-auto-flow:column;gap:2px;padding:2px;border-radius:10px;background:color-mix(in srgb,var(--ink) 8%,transparent)}
.ios-segmented label,.ios-segmented button{position:relative;display:grid;place-items:center;min-height:32px;margin:0;padding:0 10px;border:0;border-radius:8px;background:transparent;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer}
.ios-segmented input{position:absolute;opacity:0;pointer-events:none}
.ios-segmented label:has(input:checked),.ios-segmented button[aria-checked="true"],.ios-segmented button[aria-pressed="true"]{background:var(--surface);font-weight:650;box-shadow:0 1px 3px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04)}
:root[data-effective-theme="dark"] .ios-segmented label:has(input:checked),:root[data-effective-theme="dark"] .ios-segmented button[aria-checked="true"],:root[data-effective-theme="dark"] .ios-segmented button[aria-pressed="true"]{background:#636366}

/* ── Alert / action sheet ──────────────────────────────────────────── */
.ios-dialog{position:fixed;inset:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:16px;border:0;background:transparent;display:none;color:var(--ink)}
.ios-dialog[open]{display:flex}
.ios-dialog::backdrop{background:rgba(0,0,0,.24);animation:ios-fade-in .2s ease both}
.ios-dialog.is-closing::backdrop{animation:ios-fade-out .17s ease both}
.ios-dialog-card{border-radius:30px;background:color-mix(in srgb,var(--surface) 88%,transparent);-webkit-backdrop-filter:blur(30px) saturate(1.8);backdrop-filter:blur(30px) saturate(1.8);box-shadow:0 16px 48px rgba(0,0,0,.24);overflow:hidden}
.ios-dialog-head{padding:20px 20px 4px;text-align:center}
.ios-dialog-head strong{display:block;font-size:17px;font-weight:650;line-height:1.3}
.ios-dialog-head p{margin:6px 0 0;color:var(--muted);font-size:14px;line-height:1.4}
.ios-dialog-actions{display:grid;gap:8px;padding:14px}
.ios-dialog-actions.is-row{grid-template-columns:1fr 1fr}
.ios-dialog-action{min-height:48px;padding:0 14px;border:0;border-radius:24px;background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--ink);font-size:17px;font-weight:500}
.ios-dialog-action.is-default{background:var(--accent);color:#fff;font-weight:650}
.ios-dialog-action.is-destructive{color:#ff3b30;font-weight:600}
.ios-dialog-action.is-cancel{font-weight:600}
.ios-dialog-action:active{filter:brightness(.92)}
.ios-alert{align-items:center;justify-content:center}
.ios-alert .ios-dialog-card{width:min(300px,100%);animation:ios-alert-in .32s var(--spring) both}
.ios-alert.is-closing .ios-dialog-card{animation:ios-fade-out .17s ease both}
@keyframes ios-alert-in{from{opacity:0;transform:scale(1.12)}}
.ios-actionSheet{flex-direction:column;justify-content:flex-end;gap:8px;padding-bottom:calc(10px + var(--safe-bottom))}
.ios-actionSheet .ios-dialog-card{width:min(420px,100%);margin:0 auto;animation:ios-sheet-in .42s var(--spring) both}
.ios-actionSheet .ios-dialog-actions{padding:10px}
.ios-actionSheet .ios-dialog-cancel{padding:10px}
.ios-actionSheet .ios-dialog-cancel .ios-dialog-action{width:100%;background:transparent}
.ios-actionSheet.is-closing .ios-dialog-card{animation:ios-sheet-out .2s ease-in both}
@keyframes ios-sheet-out{to{transform:translate3d(0,120%,0)}}
@media (prefers-reduced-motion:reduce){
  .ios-sheet,.ios-sheet.is-presenting,.ios-sheet::backdrop,.ios-dialog-card,.ios-dialog::backdrop{animation:none!important;transition:none!important}
}

/* ── 記一筆 sheet ──────────────────────────────────────────────────── */
.ios-sheet .ledger-sheet-form{display:block;padding:0}
.ios-sheet .ledger-fieldset{display:block;margin:0;padding:0;border:0;min-width:0}
.ios-sheet .ledger-quick{display:block}
.ios-sheet .ledger-quick .sheet-row>input{flex:1 1 auto}
.ios-sheet .ledger-quick-apply{flex:none;min-height:32px;padding:0 12px;border:0;border-radius:16px;background:color-mix(in srgb,#af52de 14%,transparent);color:#8e3dbd;font-size:15px;font-weight:600}
:root[data-effective-theme="dark"] .ios-sheet .ledger-quick-apply{color:#d68cff}
.ledger-amount-block{display:grid;justify-items:center;gap:12px;margin:10px 0 20px}
.ledger-amount-field{display:flex;align-items:baseline;justify-content:center;gap:4px;max-width:100%}
.ledger-amount-symbol{color:var(--muted);font-size:28px;font-weight:600}
.ios-sheet .ledger-amount{width:7ch;min-height:0;padding:0;border:0;background:transparent;color:var(--ink);font-size:48px;font-weight:700;letter-spacing:-.02em;text-align:center;font-variant-numeric:tabular-nums;field-sizing:content;min-width:2ch}
.ios-sheet .ledger-amount:focus{outline:none}
.ios-sheet .ledger-amount::placeholder{color:color-mix(in srgb,var(--ink) 22%,transparent)}
.ios-sheet .ledger-currency{width:200px}
.person-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:12px 8px}
.person-option{position:relative;display:grid;justify-items:center;gap:6px;padding:4px 0;cursor:pointer}
.person-option input{position:absolute;opacity:0;pointer-events:none}
.member-avatar{position:relative;flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--avatar,#8e8e93);color:#fff;font-size:15px;font-weight:650}
.person-option .member-avatar{width:48px;height:48px;font-size:20px;opacity:.55;filter:saturate(.4);transition:opacity .18s ease,filter .18s ease,transform .25s var(--spring),box-shadow .18s ease}
.person-name{color:var(--muted);font-size:13px;font-weight:500}
.person-option:has(input:checked) .member-avatar{opacity:1;filter:none;transform:scale(1.04);box-shadow:0 0 0 3px var(--surface),0 0 0 5px var(--avatar)}
.person-option:has(input:checked) .member-avatar::after{content:"";position:absolute;right:-4px;bottom:-4px;width:20px;height:20px;border-radius:50%;border:2px solid var(--surface);
  background:var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/12px no-repeat}
.person-option:has(input:checked) .person-name{color:var(--ink);font-weight:650}
.person-option:has(input:focus-visible) .member-avatar{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:5px}
.ledger-split-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ledger-split-head .ledger-split-mode{width:170px}
.ledger-split-row .sheet-row-label small{font-variant-numeric:tabular-nums}
.ledger-split-row:not(:has(input[type=checkbox]:checked)) .sheet-row-label{color:var(--muted)}
.ledger-share-field{display:none;align-items:center;gap:4px;flex:none;padding:0 10px;border-radius:9px;background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--muted)}
.ledger-share-field:focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 55%,transparent)}
.ledger-share-input{width:5.5em;min-height:36px;padding:0!important;border:0!important;background:transparent!important;text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}
form[data-split="exact"] .ledger-split-row .check-mark,form[data-split="exact"] [data-share-for]{display:none}
form[data-split="exact"] .ledger-share-field{display:inline-flex}
.ios-sheet .ledger-split-preview{font-variant-numeric:tabular-nums}
.ios-sheet .ledger-readonly{margin:0 0 14px}
/* Framework7 gives every <button> width:100%; sheet controls size to their label. */
.sheet-nav-button,.ios-sheet .ledger-quick-apply,.sheet-row>button,.ios-segmented button{width:auto}
.ios-dialog-action:focus:not(:focus-visible){outline:none}

/* ── 任務 / 物品 (Reminders-style) ─────────────────────────────────── */
.cl-header{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.cl-header-action{flex:none;width:auto;min-height:34px;margin-bottom:6px;padding:0 14px;border:0;border-radius:17px;background:var(--glass-fill);color:var(--accent-2);font-size:15px;font-weight:600;
  box-shadow:inset 0 0 0 .5px color-mix(in srgb,var(--ink) 10%,transparent)}
.cl-section{margin:0 0 22px}
.cl-section-title{margin:0 0 6px;padding:0 16px;color:var(--muted);font-size:13px;font-weight:600;letter-spacing:.01em}
.cl-list{list-style:none;margin:0;padding:0;border-radius:14px;background:var(--surface);overflow:hidden}
.cl-row{position:relative;display:flex;align-items:flex-start;gap:2px;min-height:52px;padding:0 4px 0 6px;background:var(--surface);
  -webkit-user-select:none;user-select:none;-webkit-touch-callout:none;transition:transform .25s var(--spring),box-shadow .25s ease}
.cl-row+.cl-row::before,.cl-placeholder+.cl-row::before{content:"";position:absolute;top:0;right:0;left:52px;height:.5px;background:var(--line)}
.cl-check{flex:none;width:44px;min-height:52px;padding:0;border:0;background:transparent;display:grid;place-items:center;cursor:pointer}
.cl-ring{position:relative;width:24px;height:24px;border-radius:50%;border:1.6px solid color-mix(in srgb,var(--ink) 30%,transparent);transition:border-color .18s ease,background .18s ease}
.cl-ring::after{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--accent);transform:scale(0);transition:transform .28s var(--spring)}
.cl-row.is-checked .cl-ring{border-color:var(--accent)}
.cl-row.is-checked .cl-ring::after{transform:scale(1)}
.cl-row.just-checked .cl-ring::after{animation:cl-pop .36s var(--spring)}
@keyframes cl-pop{0%{transform:scale(0)}60%{transform:scale(1.22)}100%{transform:scale(1)}}
.cl-body{flex:1 1 auto;min-width:0;display:grid;gap:3px;padding:14px 0 12px;cursor:pointer}
.cl-body strong{font-size:17px;font-weight:500;line-height:1.3;transition:color .2s ease}
.cl-row.is-checked .cl-body strong{color:var(--muted)}
.cl-note{color:var(--muted);font-size:14px;line-height:1.35}
.cl-meta{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
.cl-meta>span{display:inline-flex;align-items:center;gap:3px}
.cl-meta .f7-icons{font-size:13px}
.cl-meta-due.is-overdue{color:#ff3b30;font-weight:600}
.cl-meta-who{color:var(--accent-2)}
.cl-info{flex:none;width:44px;min-height:52px;padding:0;border:0;background:transparent;color:var(--muted);opacity:.7;display:grid;place-items:center}
.cl-info:active,.cl-row.is-editing .cl-info{color:var(--accent);opacity:1}
.cl-info .f7-icons{font-size:20px}
.cl-empty{margin:0;padding:18px 16px;border-radius:14px;background:var(--surface);color:var(--muted);font-size:15px}
.cl-hint{margin:-8px 16px 0;color:var(--muted);font-size:13px;line-height:1.45}
.cl-placeholder{list-style:none;background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
.cl-row.is-lifted{transform:scale(1.03);border-radius:14px;box-shadow:0 14px 34px rgba(0,0,0,.2);transition:transform .2s var(--spring),box-shadow .2s ease}
.cl-row.is-lifted::before{display:none}
.is-reordering{cursor:grabbing}
.cl-mode{margin:0 0 18px}
.cl-fab{position:fixed;z-index:30;right:calc(18px + var(--safe-right));bottom:calc(var(--dock) + 14px);width:56px;height:56px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;
  background:var(--accent);color:#fff;box-shadow:0 8px 22px color-mix(in srgb,var(--accent) 40%,transparent),0 1px 0 rgba(255,255,255,.35) inset;transition:transform .2s var(--spring)}
.cl-fab .f7-icons{font-size:26px;font-weight:600}
.cl-fab:active{transform:scale(.92)}
.now-panel:has(.cl-fab){padding-bottom:calc(var(--dock) + 96px)!important}
/* Hotel mode */
.hotel-out .cl-row{align-items:center}
.hotel-out .cl-ring{border-color:#ff9f0a}
.hotel-out .cl-body{padding:12px 0}
.hotel-all-back{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:50px;margin-top:10px;border:0;border-radius:14px;background:#34c759;color:#fff;font-size:17px;font-weight:650}
.hotel-empty{display:grid;justify-items:center;gap:8px;padding:20px 16px;border-radius:14px;background:var(--surface);text-align:center}
.hotel-empty p{margin:0;color:var(--muted);font-size:15px;line-height:1.5}
.hotel-illustration{width:120px;height:96px}
.hotel-illustration-check{stroke-dasharray:40;stroke-dashoffset:40;animation:hotel-check 1.2s .3s var(--spring) forwards}
@keyframes hotel-check{to{stroke-dashoffset:0}}
.hotel-chips{display:flex;flex-wrap:wrap;gap:8px}
.hotel-chip{width:auto;min-height:40px;padding:0 14px;border:0;border-radius:20px;background:var(--surface);color:var(--ink);font-size:15px;font-weight:500;box-shadow:inset 0 0 0 .5px var(--line)}
.hotel-chip:active{background:color-mix(in srgb,#ff9f0a 18%,var(--surface))}
/* Entry sheet */
.entry-sheet .entry-title{font-size:18px!important;font-weight:600}
.entry-readonly-title strong{font-size:18px;font-weight:650;padding:6px 0}
.person-picker.is-five{grid-template-columns:repeat(5,minmax(0,1fr))}
.person-picker.is-five .member-avatar{width:44px;height:44px;font-size:18px}
@media (prefers-reduced-motion:reduce){.cl-ring::after,.cl-row,.hotel-illustration-check{transition:none!important;animation:none!important;stroke-dashoffset:0}}
.now-out{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:0;border-radius:16px;background:color-mix(in srgb,#ff9f0a 14%,var(--surface));color:var(--ink);text-align:left}
.now-out-icon{flex:none;width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:#ff9f0a;color:#fff}
.now-out-copy{flex:1;min-width:0;display:grid;gap:2px}
.now-out-copy strong{font-size:16px;font-weight:650}
.now-out-copy small{color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.now-out-chevron{color:var(--muted);font-size:14px}
.app-tabbar .tab-link:focus-visible{outline-offset:-4px;outline-width:2px}

/* ── Map chrome: Liquid Glass controls ─────────────────────────────── */
.map-glass,.map-glass-stack{
  background:var(--glass-fill)!important;
  -webkit-backdrop-filter:blur(18px) saturate(1.9);backdrop-filter:blur(18px) saturate(1.9);
  box-shadow:inset 0 1px 0 var(--glass-edge),inset 0 0 0 .5px color-mix(in srgb,var(--glass-ink) 10%,transparent),var(--glass-shadow)!important;
  border:0!important;color:var(--glass-ink)}
.map-panel .map-status{display:none!important}
.map-weather-chip{position:absolute;z-index:12;top:calc(var(--safe-top) + 10px);left:calc(12px + var(--safe-left));display:inline-flex;align-items:center;gap:6px;width:auto;min-height:40px;padding:0 14px 0 10px;border-radius:20px;
  font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;transition:transform .2s var(--spring)}
.map-weather-chip:active{transform:scale(.95)}
.map-weather-chip[hidden]{display:none}
body[data-app-tab="map"] .map-panel .map-controls-row,.map-panel .map-controls-row.map-glass-stack{
  right:calc(12px + var(--safe-right));bottom:calc(var(--map-journey-occlusion,90px) + 12px);flex-direction:column;gap:0;padding:0;border-radius:24px;overflow:hidden}
.map-glass-stack .map-control{width:48px;height:48px;margin:0;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;-webkit-backdrop-filter:none;backdrop-filter:none;color:var(--glass-ink)}
.map-glass-stack .map-control+.map-control{box-shadow:inset 0 .5px 0 color-mix(in srgb,var(--glass-ink) 14%,transparent)!important}
.map-glass-stack .map-control svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.map-glass-stack .map-control:disabled{opacity:.4}
.map-glass-stack .map-control:active{background:color-mix(in srgb,var(--glass-ink) 10%,transparent)!important}
#locateBtn[aria-pressed="true"],#locateBtn.is-active{color:var(--accent)}
.map-panel .map-follow-control{position:absolute;z-index:12;right:calc(72px + var(--safe-right));bottom:calc(var(--map-journey-occlusion,90px) + 12px);width:auto;height:44px;padding:0 14px;border-radius:22px;
  display:inline-flex;align-items:center;gap:6px;font-size:15px;font-weight:600}
.map-panel .map-follow-control[hidden]{display:none}
.map-panel .map-follow-control svg{width:18px;height:18px;fill:currentColor;color:var(--accent)}

/* Stop markers: numbered balloons with a white rim; the focused stop grows and glows. */
.map-stop-stack{background:color-mix(in srgb,var(--surface) 70%,transparent)!important;-webkit-backdrop-filter:blur(12px) saturate(1.8);backdrop-filter:blur(12px) saturate(1.8);
  box-shadow:inset 0 0 0 .5px rgba(0,0,0,.08),0 6px 18px rgba(16,24,40,.18)!important}
.map-stop-stack:not(.is-multi){background:transparent!important;box-shadow:none!important;-webkit-backdrop-filter:none;backdrop-filter:none}
.map-stop-number::before{inset:7px!important;border:2.5px solid #fff!important;background:linear-gradient(180deg,#3a3a3c,#1c1c1e)!important;box-shadow:0 3px 8px rgba(0,0,0,.28)!important}
.map-stop-number{font-weight:700!important;font-size:13px!important}
.map-stop-number.is-active::before{background:linear-gradient(180deg,#ff9f0a,#ff7a00)!important}
.map-stop-number.is-active::after{inset:0!important;border:0!important;border-radius:50%;box-shadow:0 0 0 6px color-mix(in srgb,#ff9500 28%,transparent)!important;animation:marker-halo 2.4s ease-out infinite}
.map-stop-number.is-scroll-focused{transform:scale(1.08)}
@keyframes marker-halo{0%{box-shadow:0 0 0 0 color-mix(in srgb,#ff9500 45%,transparent)}70%,100%{box-shadow:0 0 0 12px transparent}}
.map-stop-range{border:2px solid #fff!important;background:linear-gradient(180deg,#3a3a3c,#1c1c1e)!important;box-shadow:0 4px 12px rgba(0,0,0,.25)!important}
.map-day-origin{width:28px!important;height:28px!important;border:2px solid #fff!important;background:#8e8e93!important;font-size:12px!important}
@media (prefers-reduced-motion:reduce){.map-stop-number.is-active::after{animation:none}}

/* 圖層 sheet */
.map-layer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:4px 0 14px}
.map-layer-option{display:grid;gap:4px;width:100%;padding:8px 8px 12px;border:0;border-radius:18px;background:var(--surface);color:var(--ink);text-align:left;
  box-shadow:inset 0 0 0 .5px var(--line);transition:box-shadow .18s ease,transform .2s var(--spring)}
.map-layer-option:active{transform:scale(.97)}
.map-layer-option[aria-checked="true"]{box-shadow:inset 0 0 0 2.5px var(--accent)}
.map-layer-preview{width:100%;height:auto;aspect-ratio:3/2;border-radius:12px;display:block}
.map-layer-option strong{padding:4px 4px 0;font-size:16px;font-weight:650}
.map-layer-option[aria-checked="true"] strong{color:var(--accent-2)}
.map-layer-option small{padding:0 4px;color:var(--muted);font-size:12.5px;line-height:1.35}
.map-layer-credit{margin:0;color:var(--muted);font-size:12px;text-align:center}
.map-layer-credit a{color:inherit}

/* ── Weather ───────────────────────────────────────────────────────── */
:root{--wx-cloud:#fff;--wx-cloud-back:#d1d5db;--wx-cloud-edge:#9aa3ad}
:root[data-effective-theme="dark"]{--wx-cloud:#e5e5ea;--wx-cloud-back:#8e8e93;--wx-cloud-edge:#c7c7cc}
.wx-symbol{flex:none;display:block;overflow:visible}
#journeyWeather{margin:4px 0 12px}
.wx-glance{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:10px 12px 10px 14px;border:0;border-radius:18px;
  background:linear-gradient(135deg,color-mix(in srgb,#5ac8fa 16%,var(--surface)),color-mix(in srgb,#0a84ff 8%,var(--surface)));color:var(--ink);text-align:left}
.wx-glance:active{filter:brightness(.97)}
.wx-glance-temp{flex:none;display:grid;line-height:1;font-size:26px;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.wx-glance-temp small{margin-top:3px;color:var(--muted);font-size:14px;font-weight:550}
.wx-glance-copy{flex:1;min-width:0;display:grid;gap:2px}
.wx-glance-copy strong{font-size:15px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wx-glance-copy small{color:var(--muted);font-size:13px;line-height:1.3}
.wx-glance-rain{flex:none;display:inline-flex;align-items:center;gap:2px;color:#0a84ff;font-size:14px;font-weight:650;font-variant-numeric:tabular-nums}
.wx-glance-rain svg{width:12px;height:12px}
.wx-chevron{flex:none;color:var(--muted);font-size:14px}
.wx-glance.is-empty{background:var(--surface-2)}
.wx-detail{padding-bottom:8px}
.wx-hero{display:grid;justify-items:center;gap:2px;padding:6px 0 14px;text-align:center}
.wx-hero p{margin:0}
.wx-place{font-size:22px;font-weight:600}
.wx-hero-temp{font-size:76px;font-weight:250;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;padding-left:.25em}
.wx-hero-cond{font-size:18px;font-weight:550;color:var(--muted)}
.wx-hero-range{font-size:15px;font-weight:550;font-variant-numeric:tabular-nums}
.wx-advice{margin:0 0 12px;padding:10px 14px;border-radius:14px;background:color-mix(in srgb,#ff9f0a 14%,var(--surface));font-size:15px;font-weight:550}
.wx-card{margin:0 0 14px;padding:12px 4px;border-radius:18px;background:var(--surface)}
.wx-hours{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;padding:0 8px}
.wx-hours::-webkit-scrollbar{display:none}
.wx-hour{flex:0 0 52px;display:grid;justify-items:center;gap:4px;font-variant-numeric:tabular-nums}
.wx-hour small{color:var(--muted);font-size:13px;font-weight:550}
.wx-hour em{min-height:14px;color:#0a84ff;font-size:11.5px;font-style:normal;font-weight:650}
.wx-hour strong{font-size:17px;font-weight:600}
.wx-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 18px}
.wx-fact{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:var(--surface)}
.wx-fact small{color:var(--muted);font-size:12.5px;font-weight:600}
.wx-fact strong{font-size:19px;font-weight:600;font-variant-numeric:tabular-nums}
.wx-days{padding:4px 0}
.wx-day{display:grid;grid-template-columns:minmax(0,1.5fr) 44px 34px minmax(50px,1fr) 34px;align-items:center;gap:8px;width:100%;min-height:54px;padding:6px 14px;border:0;background:transparent;color:var(--ink);text-align:left;font-variant-numeric:tabular-nums}
.wx-day+.wx-day{box-shadow:inset 0 .5px 0 var(--line)}
.wx-day.is-current{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.wx-day-name{display:grid;min-width:0}
.wx-day-name strong{font-size:15px;font-weight:650}
.wx-day-name small{color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wx-day-symbol{display:grid;justify-items:center}
.wx-day-symbol em{color:#0a84ff;font-size:11px;font-style:normal;font-weight:650}
.wx-day-lo{color:var(--muted);font-size:15px;text-align:right}
.wx-day-hi{font-size:15px;font-weight:600}
.wx-day-na{grid-column:3/-1;color:var(--muted);font-size:13px}
.wx-range{position:relative;height:5px;border-radius:3px;background:color-mix(in srgb,var(--ink) 10%,transparent)}
.wx-range span{position:absolute;top:0;bottom:0;border-radius:3px;background:linear-gradient(90deg,#5ac8fa,#ffcc00,#ff9500)}
.wx-credit{margin:0;color:var(--muted);font-size:12px;line-height:1.5;text-align:center}
.wx-credit a{color:inherit}
.wx-empty{margin:24px 0;color:var(--muted);text-align:center}
/* Sub-pages pushed from 更多 */
.subpage-header{display:grid;gap:4px}
.subpage-back{justify-self:start;display:inline-flex;align-items:center;gap:2px;width:auto;min-height:40px;margin-left:-8px;padding:0 10px 0 4px;border:0;border-radius:20px;background:transparent;color:var(--accent-2);font-size:17px}
.subpage-back .f7-icons{font-size:22px}

/* 行程搜尋 */
.map-journey-head .sheet-search-icon{margin-left:auto}
.search-nav{grid-template-columns:minmax(0,1fr) auto}
.search-field{display:flex;align-items:center;gap:6px;min-height:40px;padding:0 12px;border-radius:20px;background:color-mix(in srgb,var(--ink) 8%,transparent)}
.search-field .f7-icons{color:var(--muted);font-size:17px}
.search-field input{flex:1;min-width:0;border:0;background:transparent;color:var(--ink);font-size:17px;outline:none}
.search-field input::-webkit-search-cancel-button{-webkit-appearance:none}
.search-result{width:100%;border:0;background:transparent;color:var(--ink);text-align:left;align-items:flex-start;padding-top:10px;padding-bottom:10px}
.search-result+.search-result::before{left:16px}
.search-time{flex:none;width:3.4em;padding-top:1px;color:var(--accent-2);font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.search-result .sheet-row-label strong{display:block;font-size:16px;font-weight:600;line-height:1.35}
.search-result .sheet-row-label small{margin-top:2px;line-height:1.4}
.search-result mark{background:color-mix(in srgb,#ffcc00 45%,transparent);color:inherit;border-radius:3px;padding:0 1px}
.search-empty{margin:28px 16px;color:var(--muted);text-align:center;line-height:1.5}
.search-suggestions{padding:0;margin-bottom:12px}

/* ── 操作說明 ──────────────────────────────────────────────────────── */
.ob-tabs{list-style:none;display:grid;gap:16px;margin:18px 0 0;padding:0}
.ob-tabs li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:14px;align-items:start;opacity:0;transform:translateY(10px);animation:ob-rise .5s var(--spring) forwards}
.ob-tabs li:nth-child(2){animation-delay:.07s}.ob-tabs li:nth-child(3){animation-delay:.14s}.ob-tabs li:nth-child(4){animation-delay:.21s}.ob-tabs li:nth-child(5){animation-delay:.28s}
@keyframes ob-rise{to{opacity:1;transform:none}}
.ob-tab-icon{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--tint);color:#fff;box-shadow:0 4px 12px color-mix(in srgb,var(--tint) 35%,transparent)}
.ob-tab-icon .f7-icons{font-size:24px}
.ob-tabs strong{display:block;font-size:17px;font-weight:650}
.ob-tabs p{margin:2px 0 0!important;color:var(--muted);font-size:15px;line-height:1.45}
.ob-demo-card{text-align:left}
.ob-demo{display:block;width:min(46vw,170px);height:auto;margin:14px auto 8px;overflow:visible}
.ob-demo-frame{fill:var(--surface);stroke:color-mix(in srgb,var(--ink) 18%,transparent);stroke-width:3}
.ob-demo-surface{fill:var(--surface);filter:drop-shadow(0 -2px 6px rgba(0,0,0,.12))}
.ob-demo-ink{fill:color-mix(in srgb,var(--ink) 70%,transparent)}
.ob-demo-muted{fill:color-mix(in srgb,var(--ink) 28%,transparent)}
.ob-demo-row-bg{fill:color-mix(in srgb,var(--ink) 5%,transparent)}
.ob-demo-sheet{animation:ob-sheet 7s var(--spring) infinite}
.ob-demo-row-2 .ob-demo-row-bg{animation:ob-row 7s ease infinite}
.ob-demo-nav{transform-box:fill-box;transform-origin:center;animation:ob-nav 7s ease infinite}
.ob-demo-finger{fill:rgba(10,132,255,.28);stroke:rgba(10,132,255,.7);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:ob-finger 7s var(--spring) infinite}
@keyframes ob-sheet{0%,12%{transform:translateY(0)}30%,90%{transform:translateY(-110px)}100%{transform:translateY(0)}}
@keyframes ob-row{0%,44%{fill:color-mix(in srgb,var(--ink) 5%,transparent)}50%,90%{fill:color-mix(in srgb,#0a84ff 18%,transparent)}100%{fill:color-mix(in srgb,var(--ink) 5%,transparent)}}
@keyframes ob-nav{0%,52%{opacity:0;transform:translateY(-6px) scale(.9)}60%{opacity:1;transform:none}74%{transform:scale(1)}78%{transform:scale(.9)}82%,90%{opacity:1;transform:scale(1.04)}100%{opacity:0}}
@keyframes ob-finger{
  0%{transform:translate(0,0);opacity:0}6%{opacity:1;transform:translate(0,0)}12%{transform:translate(0,0) scale(.85)}
  30%{transform:translate(0,-110px) scale(.85)}36%{transform:translate(0,-110px) scale(1)}
  44%{transform:translate(-14px,-45px) scale(1)}48%{transform:translate(-14px,-45px) scale(.8)}52%{transform:translate(-14px,-45px) scale(1)}
  70%{transform:translate(-27px,-9px) scale(1)}76%{transform:translate(-27px,-9px) scale(.8)}82%{transform:translate(-27px,-9px) scale(1);opacity:1}92%,100%{opacity:0;transform:translate(-27px,-9px)}}
.ob-steps{display:grid;gap:8px;margin:6px 0 10px;padding:0;list-style:none;counter-reset:ob}
.ob-steps li{display:flex;align-items:baseline;gap:8px;font-size:16px;line-height:1.4;counter-increment:ob}
.ob-steps li::before{content:counter(ob);flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;font-size:13px;font-weight:700;transform:translateY(-1px)}
.ob-steps strong{font-weight:650;margin-right:2px}
@media (prefers-reduced-motion:reduce){
  .ob-tabs li{opacity:1;transform:none;animation:none}
  .ob-demo-sheet,.ob-demo-row-2 .ob-demo-row-bg,.ob-demo-nav,.ob-demo-finger{animation:none}
  .ob-demo-sheet{transform:translateY(-110px)}.ob-demo-nav{opacity:1}.ob-demo-finger{display:none}
}

/* ── Navigation stack (更多 → 帳本 / 天氣) ─────────────────────────── */
.workspace-tabs>.page-content.tab.is-page-leaving{display:block!important}
.workspace-tabs>.page-content.tab.tab-active.is-page-push-in,.workspace-tabs>.page-content.tab.is-page-pop-out{z-index:3;box-shadow:-10px 0 30px rgba(0,0,0,.12)}
.workspace-tabs>.page-content.tab.tab-active.is-page-push-in{animation:page-push-in .38s var(--spring) both!important}
.workspace-tabs>.page-content.tab.is-page-push-out{z-index:1;animation:page-push-out .38s var(--spring) both!important}
.workspace-tabs>.page-content.tab.tab-active.is-page-pop-in{z-index:1;animation:page-pop-in .38s var(--spring) both!important}
.workspace-tabs>.page-content.tab.is-page-pop-out{animation:page-pop-out .38s var(--spring) both!important}
@keyframes page-push-in{from{transform:translate3d(100%,0,0)}to{transform:none}}
@keyframes page-push-out{from{transform:none;filter:none}to{transform:translate3d(-30%,0,0);filter:brightness(.9)}}
@keyframes page-pop-in{from{transform:translate3d(-30%,0,0);filter:brightness(.9)}to{transform:none;filter:none}}
@keyframes page-pop-out{from{transform:none}to{transform:translate3d(100%,0,0)}}
.workspace-tabs>.page-content.tab.is-page-dragging,.workspace-tabs>.page-content.tab.tab-active.is-page-settling{z-index:3;transform:translate3d(var(--page-x,0px),0,0);box-shadow:-10px 0 30px rgba(0,0,0,.12);animation:none!important}
.workspace-tabs>.page-content.tab.is-page-under{z-index:1;transform:translate3d(calc((var(--page-progress,0) - 1) * 30%),0,0);filter:brightness(calc(.9 + var(--page-progress,0) * .1));animation:none!important}
.workspace-tabs>.page-content.tab.is-page-settling{transition:transform .28s var(--spring),filter .28s ease}
@media (prefers-reduced-motion:reduce){.workspace-tabs>.page-content.tab[class*="is-page-"]{animation:none!important;transition:none!important}}

/* Lists show the headline; the detail sheet holds the full text. */
.stop-expand-brief{display:-webkit-box!important;-webkit-box-orient:vertical;-webkit-line-clamp:1!important;overflow:hidden}
.stop-card-brief{-webkit-line-clamp:1!important}
#profileRequirement{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* One selected style for the tab bar: a single soft capsule, no second layer. */
.app-tabbar .tab-link,.app-tabbar .tab-link-active,.app-tabbar .tab-link:active{background:transparent!important;box-shadow:none!important;outline:0}
.app-tabbar .tab-link-highlight{top:4px!important;height:calc(100% - 8px)!important;border-radius:24px!important;border:0!important;box-shadow:none!important;background:color-mix(in srgb,var(--ink) 8%,transparent)!important}
.app-tabbar .tab-link-highlight::before,.app-tabbar .tab-link-highlight::after{content:none!important;display:none!important}
.app-tabbar .tab-link-active{color:var(--accent-2)}

/* The 更多 sheet already reserves the status bar; sub-pages must not add it a second time. */
.workspace-sheet:has(>.workspace-tabs>.now-panel.tab-active){padding-top:0!important}
.workspace-tabs>.now-panel{padding-top:calc(var(--safe-top) + 4px)!important}
.now-header{padding-top:4px}

/* Every sheet closes with the same circular glass X in the top-right corner. */
.sheet-close-x,.sheet-nav-button.is-icon{flex:none;width:36px!important;height:36px;min-width:36px;min-height:36px;padding:0!important;border:0;border-radius:50%!important;display:inline-grid;place-items:center;
  background:color-mix(in srgb,var(--ink) 8%,var(--surface))!important;color:var(--ink)!important;box-shadow:inset 0 0 0 .5px color-mix(in srgb,var(--ink) 12%,transparent)!important;
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.sheet-close-x .f7-icons,.sheet-nav-button.is-icon .f7-icons{font-size:16px;font-weight:700}
.sheet-close-x:active,.sheet-nav-button.is-icon:active{transform:scale(.92)}

/* Stacked sheets: the sheet underneath recedes (smaller, dimmer, nudged up) so only two
   layers ever read — the current one and the one behind it. */
.sheet-modal[data-stack-depth="1"]{transform-origin:50% 0;scale:.93;translate:0 -10px;filter:brightness(.88);border-radius:22px 22px 0 0;
  transition:scale .42s var(--spring),translate .42s var(--spring),filter .3s ease}
.sheet-modal[data-stack-depth="2"],.sheet-modal[data-stack-depth="3"]{scale:.88;translate:0 -18px;opacity:0;pointer-events:none}
.sheet-modal[data-stack-depth="0"]{transition:scale .42s var(--spring),translate .42s var(--spring),filter .3s ease}
@media (prefers-reduced-motion:reduce){.sheet-modal[data-stack-depth]{transition:none}}

/* Settings segmented controls and the profile picker follow the iOS control language. */
.settings-segmented.segmented{display:flex;gap:0;padding:2px;border-radius:10px;background:color-mix(in srgb,var(--ink) 9%,transparent);box-shadow:none;--f7-button-height:32px}
.settings-segmented.segmented::before,.settings-segmented.segmented::after,.settings-segmented .button::before,.settings-segmented .button::after{content:none!important;display:none!important}
.settings-segmented .button{flex:1;min-height:32px!important;height:auto;padding:4px 6px!important;border:0!important;border-radius:8px!important;background:transparent!important;color:var(--ink)!important;
  font-size:13px;font-weight:600;line-height:1.2;box-shadow:none;transition:background .2s ease,box-shadow .2s ease}
.settings-segmented .button.button-active,.settings-segmented .button[aria-pressed="true"]{background:var(--surface)!important;box-shadow:0 2px 6px rgba(0,0,0,.14),0 0 0 .5px rgba(0,0,0,.05)!important}
:root[data-effective-theme="dark"] .settings-segmented .button.button-active,:root[data-effective-theme="dark"] .settings-segmented .button[aria-pressed="true"]{background:#636366!important}
#settingsProfileSelect{appearance:none;-webkit-appearance:none;width:auto;max-width:100%;min-height:36px;padding:0 30px 0 12px;border:0;border-radius:10px;
  background:color-mix(in srgb,var(--ink) 8%,transparent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='16' viewBox='0 0 12 16'%3E%3Cpath d='M2 6l4-4 4 4M2 10l4 4 4-4' fill='none' stroke='%238e8e93' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
  color:var(--ink);font-size:16px;font-weight:600}

/* Pull to refresh */
.ptr-indicator{position:absolute;z-index:3;left:50%;top:calc(var(--safe-top) - 6px);width:30px;height:30px;margin-left:-15px;pointer-events:none;opacity:calc(var(--ptr-progress,0)*1.4);
  transform:translateY(calc(var(--ptr,0px) - 34px)) scale(calc(.6 + var(--ptr-progress,0)*.4));transform-origin:center}
.ptr-indicator svg{width:100%;height:100%;transform:rotate(-90deg)}
.ptr-track,.ptr-arc{fill:none;stroke-width:2.4;stroke-linecap:round}
.ptr-track{stroke:color-mix(in srgb,var(--ink) 14%,transparent)}
.ptr-arc{stroke:var(--muted);stroke-dasharray:0 100}
.ptr-loading .ptr-indicator{opacity:1}
.ptr-loading .ptr-indicator svg{animation:ptr-spin .8s linear infinite}
.ptr-loading .ptr-arc{stroke-dasharray:70 100!important}
@keyframes ptr-spin{to{transform:rotate(270deg)}}
.ptr-active>:not(.ptr-indicator):not(.visually-hidden),.ptr-loading>:not(.ptr-indicator):not(.visually-hidden){transform:translateY(var(--ptr,0px))}
.ptr-settling>:not(.ptr-indicator){transition:transform .36s var(--spring)}
.ptr-settling .ptr-indicator{transition:opacity .25s ease,transform .36s var(--spring)}
.ptr-active,.ptr-loading{overscroll-behavior-y:none}
.workspace-tabs>.now-panel{position:relative}
@media (prefers-reduced-motion:reduce){.ptr-loading .ptr-indicator svg{animation-duration:1.6s}}

/* Ledger rows: swipe to delete, long-press to select */
.ledger-item{position:relative;overflow:hidden;background:var(--surface)}
.ledger-item .ledger-row{position:relative;z-index:1;background:var(--surface);will-change:transform}
.ledger-swipe-delete{position:absolute;z-index:0;inset:0 0 0 auto;width:88px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;border-radius:0;background:#ff3b30;color:#fff;font-size:12px;font-weight:600;
  opacity:calc(.4 + var(--swipe-progress,0)*.6)}
.ledger-item.is-swiped .ledger-swipe-delete,.ledger-item.is-swiping .ledger-swipe-delete{opacity:1}
.ledger-swipe-delete .f7-icons{font-size:20px}
.ledger-pick{flex:none;width:24px;height:24px;margin-right:2px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--ink) 28%,transparent);display:grid;place-items:center;transition:background .18s ease,border-color .18s ease}
.ledger-pick.is-locked{opacity:.35}
.ledger-item.is-selected .ledger-pick{background:var(--accent);border-color:var(--accent)}
.ledger-item.is-selected .ledger-pick::after{content:"";width:12px;height:12px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12.5l5 5L20 6.5' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12.5l5 5L20 6.5' fill='none' stroke='black' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat}
.ledger-item.is-selected .ledger-row{background:color-mix(in srgb,var(--accent) 8%,var(--surface))}
.ledger-header.is-selecting h1{font-size:1.1rem}
.ledger-icon-button.is-danger{color:#ff3b30}
.ledger-icon-button.is-danger:disabled{opacity:.35}

/* Receipts */
.receipt-group{padding:12px 14px}
.receipt-strip{display:flex;gap:10px;flex-wrap:wrap}
.receipt-strip:empty{display:none}
.receipt-thumb{position:relative;width:76px;height:76px;border-radius:12px;background:color-mix(in srgb,var(--ink) 6%,transparent);overflow:visible}
.receipt-thumb.is-loading{animation:receipt-pulse 1.1s ease-in-out infinite}
@keyframes receipt-pulse{50%{opacity:.45}}
.receipt-open{width:100%;height:100%;padding:0;border:0;border-radius:12px;overflow:hidden;background:transparent;display:grid;place-items:center;color:var(--muted)}
.receipt-open img{width:100%;height:100%;object-fit:cover}
.receipt-remove{position:absolute;top:-6px;right:-6px;width:22px;height:22px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:#636366;color:#fff;box-shadow:0 0 0 2px var(--surface)}
.receipt-remove .f7-icons{font-size:11px;font-weight:700}
.receipt-actions{display:flex;gap:10px;margin-top:10px}
.receipt-strip:empty+.receipt-actions{margin-top:0}
.receipt-add{flex:1;min-height:44px;border:0;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-size:16px;font-weight:600;width:auto}
.receipt-viewer{margin:0;padding:0;border:0;width:100%;max-width:none;height:100%;max-height:none;background:#000}
.receipt-viewer::backdrop{background:#000}
.receipt-viewer .sheet-close-x{position:absolute;top:calc(env(safe-area-inset-top) + 10px);right:14px;z-index:2;background:rgba(255,255,255,.2)!important;color:#fff!important}
.receipt-viewer-scroll{width:100%;height:100%;overflow:auto;display:grid;place-items:center;touch-action:pan-x pan-y pinch-zoom}
.receipt-viewer img{max-width:100%;max-height:100%;object-fit:contain}
.ledger-row-icon.is-draft{background:color-mix(in srgb,var(--muted) 20%,transparent);color:var(--muted)}

/* ---- Checklists v3: nested rows, in-place editing, indent swipe, lists ---- */
.cl-row{padding-left:calc(6px + var(--depth,0)*26px);flex-wrap:wrap;transition:padding-left .28s var(--spring)}
.cl-row+.cl-row::before{left:calc(52px + var(--depth,0)*26px)}
.cl-row[data-depth]:not([data-depth="0"])::after{content:"";position:absolute;left:calc(6px + var(--depth,0)*26px - 13px);top:12px;bottom:12px;width:1.5px;border-radius:1px;background:color-mix(in srgb,var(--ink) 10%,transparent)}
.cl-body{cursor:default}
.cl-body strong,.cl-title{display:block;font-size:17px;font-weight:500;line-height:1.3;transition:color .2s ease;min-height:1.3em;outline:0;word-break:break-word}
.cl-row.is-checked .cl-title{color:var(--muted)}
.cl-row[data-editable="true"] .cl-title{cursor:text}
.cl-title[contenteditable]{caret-color:var(--accent);-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.cl-row.is-editing{background:color-mix(in srgb,var(--accent) 5%,var(--surface))}
.cl-row.is-draft .cl-title:empty::before{content:"新項目";color:color-mix(in srgb,var(--ink) 30%,transparent)}
.cl-row.is-draft .cl-check .cl-ring{border-style:dashed}
.cl-mynote{display:flex;align-items:flex-start;gap:4px;color:#8e6a00}
.cl-mynote .f7-icons{font-size:12px;margin-top:3px}
.cl-meta-due{position:relative;display:inline-flex;align-items:center;gap:3px;padding:2px 8px 2px 6px;margin-left:-6px;border-radius:10px;overflow:hidden}
.cl-meta-due.is-empty{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}
.cl-date-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px}
.cl-edit-bar{flex:0 0 100%;display:flex;gap:6px;padding:0 8px 10px 52px;max-height:0;opacity:0;overflow:hidden;transition:max-height .26s var(--spring),opacity .2s ease}
.cl-row.is-editing .cl-edit-bar{max-height:56px;opacity:1}
.cl-bar-button{width:auto;min-width:44px;min-height:36px;padding:0 12px;border:0;border-radius:10px;display:inline-grid;place-items:center;background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--ink)}
.cl-bar-button .f7-icons{font-size:18px}
.cl-bar-button.is-danger{margin-left:auto;color:#ff3b30}
.cl-row.is-draft .cl-info{visibility:hidden}

/* Indent swipe: the row follows the finger, with a hint of what will happen */
.cl-row{--swipe-x:0px}
.cl-row>.cl-check,.cl-row>.cl-body,.cl-row>.cl-info{transform:translate3d(var(--swipe-x),0,0)}
.cl-row.is-indent-swiping>*{transition:none}
.cl-row.is-indent-settling>.cl-check,.cl-row.is-indent-settling>.cl-body,.cl-row.is-indent-settling>.cl-info{transition:transform .32s var(--spring)}
.cl-row.is-indent-swiping[data-swipe-dir="right"]{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 14%,var(--surface)),var(--surface) 55%)}
.cl-row.is-indent-swiping[data-swipe-dir="left"]{background:linear-gradient(270deg,color-mix(in srgb,#ff9f0a 16%,var(--surface)),var(--surface) 55%)}
.cl-row.is-indent-swiping[data-swipe-hint]{box-shadow:inset 3px 0 0 var(--accent)}
.cl-row.is-denied{animation:cl-shake .36s ease}
@keyframes cl-shake{20%{transform:translateX(-6px)}45%{transform:translateX(5px)}70%{transform:translateX(-3px)}}

/* Lists */
.cl-list-bar{display:flex;gap:8px;margin:0 -16px 14px;padding:2px 16px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.cl-list-bar::-webkit-scrollbar{display:none}
.cl-list-chip{flex:none;width:auto;min-height:36px;padding:0 14px;border:0;border-radius:18px;display:inline-flex;align-items:center;gap:6px;background:var(--surface);color:var(--ink);font-size:15px;font-weight:600;
  box-shadow:inset 0 0 0 .5px color-mix(in srgb,var(--ink) 10%,transparent);white-space:nowrap}
.cl-list-chip small{color:var(--muted);font-size:12px;font-weight:600}
.cl-list-chip[aria-selected="true"]{background:var(--accent);color:#fff;box-shadow:none}
.cl-list-chip[aria-selected="true"] small{color:rgba(255,255,255,.8)}
.cl-list-chip.is-add{padding:0 12px;color:var(--accent)}
.cl-list-tools{margin:-6px 0 12px}
.cl-list-manage{width:auto;min-height:30px;padding:0 4px;border:0;background:transparent;color:var(--accent-2);font-size:14px;font-weight:600;display:inline-flex;align-items:center;gap:4px}
@media (prefers-reduced-motion:reduce){.cl-row,.cl-edit-bar,.cl-row.is-denied{transition:none!important;animation:none!important}}

/* Rows linked into stop / activity details */
.linked-checklist .cl-list{background:transparent;border-radius:0}
.linked-checklist .cl-row{background:transparent;min-height:44px;padding-left:0}
.linked-checklist .cl-check{width:40px;min-height:44px}
.linked-checklist .cl-body{padding:10px 0}
.linked-checklist .cl-title{font-size:15px}
.linked-checklist .cl-row+.cl-row::before{left:40px}
.linked-checklist .cl-row.is-editing{background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:10px}

/* Rows are a three-column grid: circle · text · (i); the edit bar spans the full width below. */
.cl-row{display:grid!important;grid-template-columns:44px minmax(0,1fr) 44px;flex-wrap:nowrap}
.cl-row>.cl-check{grid-column:1}
.cl-row>.cl-body{grid-column:2}
.cl-row>.cl-info{grid-column:3}
.cl-row>.cl-edit-bar{grid-column:2/-1;padding-left:0}
.hotel-out .cl-row{grid-template-columns:44px minmax(0,1fr)}
.linked-checklist .cl-row{grid-template-columns:40px minmax(0,1fr)}
.cl-row:not(.is-editing) .cl-meta-due.is-empty{display:none}
.cl-row:not(.is-editing) .cl-meta:not(:has(>:not(.is-empty))){display:none}

/* Landscape: keep content out of the sensor housing / home-indicator side insets. */
.workspace-tabs>.now-panel{padding-left:calc(16px + var(--safe-left))!important;padding-right:calc(16px + var(--safe-right))!important}
.cl-list-bar{margin-left:calc(-16px - var(--safe-left));margin-right:calc(-16px - var(--safe-right));padding-left:calc(16px + var(--safe-left));padding-right:calc(16px + var(--safe-right))}
.ledger-fab{right:calc(16px + var(--safe-right))}
.map-glass-stack{right:calc(12px + var(--safe-right))}

/* Transit service detail */
.transit-detail{padding-bottom:24px}
.transit-head{display:flex;align-items:center;gap:12px;padding:0 4px 8px}
.transit-head strong{display:block;font-size:20px;font-weight:700;line-height:1.25}
.transit-head small{display:block;margin-top:2px;color:var(--muted);font-size:15px}
.transit-badge{flex:none;padding:6px 10px;border-radius:9px;background:#e8590c;color:#fff;font-size:15px;font-weight:700;letter-spacing:.02em}
.transit-detail[data-mode="ferry"] .transit-badge{background:#0a84ff}
.transit-detail[data-mode="bus"] .transit-badge{background:#30b158}
.transit-detail[data-mode="tram"] .transit-badge{background:#af52de}
.transit-detail[data-mode="train"] .transit-badge{background:#5e5ce6}
.transit-detail{--line:#e8590c}
.transit-detail[data-mode="ferry"]{--line:#0a84ff}
.transit-detail[data-mode="bus"]{--line:#30b158}
.transit-detail[data-mode="tram"]{--line:#af52de}
.transit-detail[data-mode="train"]{--line:#5e5ce6}
.transit-section-head h3{margin:14px 4px 8px;font-size:19px;font-weight:700}
.transit-chips{display:flex;gap:8px;margin:0 -16px;padding:2px 16px;overflow-x:auto;scrollbar-width:none}
.transit-chips::-webkit-scrollbar{display:none}
.transit-chip{flex:none;width:auto;min-width:78px;padding:10px 12px;border:0;border-radius:12px;display:grid;gap:1px;text-align:center;background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--ink)}
.transit-chip strong{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}
.transit-chip small{color:var(--muted);font-size:13px}
.transit-chip.is-selected{background:var(--surface);box-shadow:0 1px 4px rgba(0,0,0,.14),inset 0 0 0 1.5px var(--line)}
.transit-chip.is-past{opacity:.45}
.transit-stops{list-style:none;margin:0;padding:6px 14px;border-radius:16px;background:var(--surface)}
.transit-stop{position:relative;display:grid;grid-template-columns:26px minmax(0,1fr) auto;align-items:center;min-height:50px;gap:8px}
.transit-rail{position:relative;align-self:stretch;display:block}
.transit-rail::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:4px;margin-left:-2px;background:var(--line)}
.transit-stop:first-child .transit-rail::before{top:50%}
.transit-stop:last-child .transit-rail::before{bottom:50%}
.transit-stop.is-outside .transit-rail::before{background:color-mix(in srgb,var(--ink) 22%,transparent)}
.transit-stop.is-gap .transit-rail::before{background:repeating-linear-gradient(to bottom,color-mix(in srgb,var(--ink) 30%,transparent) 0 3px,transparent 3px 8px)}
.transit-node{position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--surface);border:2.5px solid var(--line)}
.transit-stop.is-outside .transit-node{border-color:color-mix(in srgb,var(--ink) 35%,transparent)}
.transit-stop.is-board .transit-node,.transit-stop.is-alight .transit-node{width:18px;height:18px;margin:-9px 0 0 -9px;border-width:4px}
.transit-stop.is-passed .transit-stop-name,.transit-stop.is-passed time{color:var(--muted)}
.transit-stop.is-outside .transit-stop-name,.transit-stop.is-outside time{color:var(--muted)}
.transit-stop.is-board .transit-stop-name,.transit-stop.is-alight .transit-stop-name{font-weight:700;color:var(--ink)}
.transit-stop-name{font-size:17px;line-height:1.3}
.transit-stop-name small{margin-left:8px;padding:1px 7px;border-radius:6px;background:color-mix(in srgb,var(--line) 14%,transparent);color:var(--line);font-size:12px;font-weight:700;vertical-align:1px}
.transit-stop time{font-size:17px;font-variant-numeric:tabular-nums}
.transit-note,.transit-source{margin:12px 4px 0;color:var(--muted);font-size:13px;line-height:1.5}
.sheet-nav-button.is-icon{justify-self:end}

/* 現在 skeleton: same blocks as the real page, so the first paint does not jump */
.now-skeleton{display:grid;gap:14px;padding-top:6px}
.now-skeleton .skeleton{display:block;border-radius:10px}
.sk-date{width:38%;height:16px}.sk-title{width:30%;height:38px;border-radius:12px!important}
.sk-card{display:grid;gap:12px;padding:18px;border-radius:20px;background:var(--surface)}
.sk-pill{width:34%;height:24px;border-radius:12px!important}.sk-h{width:90%;height:52px}.sk-line{width:60%;height:16px}.sk-btns{width:100%;height:48px;border-radius:14px!important}
.sk-label{width:22%;height:14px}.sk-row{width:100%;height:64px;border-radius:14px!important}
.now-section .linked-checklist.is-now{margin:0;padding:0;border-radius:14px;background:var(--surface);overflow:hidden}
.now-section .linked-checklist.is-now .cl-row{padding-left:2px}

/* Menu hint in breadcrumbs: up/down chevrons (a picker), distinct from the sheet's ∨ collapse button */
.breadcrumbs-item-link{display:inline-flex;align-items:center;gap:5px}
.breadcrumb-chevron{flex:none;width:9px;height:12px;margin-top:1px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;color:var(--accent-2);opacity:.9}
#mapJourneyBreadcrumbs .breadcrumb-chevron{color:var(--accent-2)}

/* Place picker */
.place-days{display:flex;gap:8px;margin:0 -16px 12px;padding:2px 16px;overflow-x:auto;scrollbar-width:none}
.place-days .cl-list-chip[aria-pressed="true"]{background:var(--accent);color:#fff;box-shadow:none}
.place-results{display:grid;border-radius:14px;background:var(--surface);overflow:hidden}
.place-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:48px;padding:0 16px;border:0;border-bottom:.5px solid var(--line);background:transparent;color:var(--ink);font-size:17px;text-align:left}
.place-row small{color:var(--muted);font-size:13px;flex:none}
.place-row[aria-current="true"]{color:var(--accent);font-weight:600}
.sheet-row-button{width:100%;border:0;background:transparent;text-align:left}
.sheet-row-button .sheet-row-value{margin-left:auto;color:var(--muted)}

/* 航班報到 / 旅行指南 / 私人資料 */
.travel-page{display:grid;gap:14px;padding-bottom:24px}
.travel-footnote{margin:0 4px;color:var(--muted);font-size:13px;line-height:1.5}
.flight-card{padding:16px;border-radius:18px;background:var(--surface);display:grid;gap:10px}
.flight-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.flight-card h2{margin:2px 0 0;font-size:24px;letter-spacing:-.01em}
.flight-card small{color:var(--muted);font-size:13px}
.flight-times{display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums}
.flight-times strong{font-size:20px}
.flight-route,.flight-travelers{margin:0;font-size:15px}
.flight-travelers{color:var(--muted)}
.flight-windows{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.flight-window{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--ink) 5%,transparent)}
.flight-window span{display:grid;gap:2px}
.flight-window em{font-style:normal;font-size:13px;font-weight:700;align-self:center}
.flight-window.is-open em{color:#30b158}.flight-window.is-closed em{color:var(--muted)}.flight-window.is-soon em{color:#ff9f0a}
.flight-unconfirmed{grid-column:1/-1;color:#b86e00!important}
.flight-links{display:grid;gap:8px}
.flight-link{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;padding:12px;border-radius:12px;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-2);text-decoration:none;font-weight:600}
.flight-link small{grid-column:2;color:var(--muted);font-weight:400}
.flight-codes h3{margin:4px 0 6px;font-size:14px;color:var(--muted);font-weight:600}
.flight-code{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;border-top:.5px solid var(--line)}
.code-chip{width:auto;display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 12px;border:0;border-radius:10px;background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--ink);font:600 17px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em}
.flight-empty{margin:0;color:var(--muted);font-size:14px}
.guide-card{border-radius:16px;background:var(--surface);overflow:hidden}
.guide-card summary{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;list-style:none}
.guide-card summary::-webkit-details-marker{display:none}
.guide-card summary .f7-icons{font-size:24px;color:var(--accent)}
.guide-card summary strong{display:block;font-size:17px}
.guide-card summary small{color:var(--muted);font-size:13px}
.guide-body{padding:0 16px 16px}
.guide-body h3{margin:14px 0 6px;font-size:15px}
.guide-body ul,.guide-body ol{margin:0;padding-left:1.2em;display:grid;gap:6px;font-size:15px;line-height:1.5}
.guide-status{margin:12px 0 0;color:#b86e00;font-size:13px}
.guide-sources{margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.6}
.private-section h3{display:flex;align-items:center;gap:6px;margin:6px 4px 8px;font-size:15px;color:var(--muted)}
.private-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:4px;padding:10px 6px 10px 16px;background:var(--surface);border-bottom:.5px solid var(--line)}
.private-main{display:grid;gap:2px;min-width:0}
.private-main small{color:var(--muted);font-size:12px}
.private-value{font:600 16px ui-monospace,Menlo,monospace;letter-spacing:.06em;word-break:break-all}
.private-reveal,.private-edit{width:44px;min-height:44px;border:0;background:transparent;color:var(--accent)}
.private-add{width:auto;min-height:44px;margin-top:6px;padding:0 4px;border:0;background:transparent;color:var(--accent-2);font-size:16px;font-weight:600;display:inline-flex;align-items:center;gap:6px}

.private-value{white-space:pre-line}
/* Photo viewer inside dialogs */
.photo-viewer-dialog{margin:0;padding:0;border:0;width:100%;max-width:none;height:100%;max-height:none;background:#000;color:#fff;overflow:hidden}
.photo-viewer-dialog::backdrop{background:#000}
.photo-viewer-dialog .sheet-close-x{position:absolute;top:calc(env(safe-area-inset-top) + 10px);right:14px;z-index:2;background:rgba(255,255,255,.2)!important;color:#fff!important}
.photo-viewer-track{display:flex;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.photo-viewer-track::-webkit-scrollbar{display:none}
.photo-viewer-track figure{flex:0 0 100%;height:100%;margin:0;display:grid;place-items:center;scroll-snap-align:center;overflow:auto;touch-action:pan-x pan-y pinch-zoom}
.photo-viewer-track img{max-width:100%;max-height:100%;object-fit:contain}
.photo-viewer-count{position:absolute;left:0;right:0;bottom:calc(env(safe-area-inset-bottom) + 14px);margin:0;text-align:center;font-size:14px;font-variant-numeric:tabular-nums;text-shadow:0 1px 3px #000}
.flight-note{margin:0;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--ink) 5%,transparent);font-size:14px;line-height:1.5}

/* iPhone landscape: the itinerary is a floating side panel over a full-bleed map. */
@media (orientation:landscape) and (max-height:520px){
  :root{--land-sheet-w:min(380px,46vw)}
  body .map-journey-sheet.sheet-modal{
    left:calc(var(--safe-left) + 10px)!important;right:auto!important;
    width:var(--land-sheet-w)!important;
    top:calc(var(--safe-top) + 10px)!important;bottom:calc(var(--dock) + 10px)!important;
    height:auto!important;max-height:none!important;border-radius:22px!important;overflow:hidden;
    background:color-mix(in srgb,var(--surface) 82%,transparent)!important;
    -webkit-backdrop-filter:blur(28px) saturate(1.8);backdrop-filter:blur(28px) saturate(1.8);
    box-shadow:0 12px 40px rgba(0,0,0,.22),inset 0 0 0 .5px color-mix(in srgb,var(--ink) 12%,transparent)!important}
  body .map-journey-sheet .map-journey-inner,body .map-journey-inner>#contentScroller{background:transparent}
  body .map-journey-inner>#contentScroller{padding-bottom:16px!important}
  /* Sheet grabber and collapse stay, but there is no half detent to hint at. */
  body .map-weather-chip{left:calc(var(--safe-left) + 12px)}
  body:not([data-map-sheet-state="collapsed"]) .map-weather-chip{left:calc(var(--safe-left) + var(--land-sheet-w) + 22px)}
  body:not([data-map-sheet-state="collapsed"]) .map-follow-control{right:calc(72px + var(--safe-right))}
  body .trip-mini-player{left:calc(var(--safe-left) + 10px);right:auto;width:min(420px,calc(100vw - var(--safe-left) - var(--safe-right) - 20px))}
}
@media (orientation:landscape) and (max-height:520px){
  body .map-panel .map-controls-row.map-glass-stack{bottom:calc(var(--safe-bottom) + 18px + var(--map-journey-occlusion,0px))}
}

/* Anchored glass callout (dropped pin and POI) */
.map-dropped-pin{width:36px!important;height:48px!important;padding:0;border:0;background:transparent;overflow:visible;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25));animation:pin-drop .38s var(--spring) both}
.map-dropped-pin svg{display:block;width:36px;height:48px}
@keyframes pin-drop{from{opacity:0;translate:0 -18px}to{opacity:1;translate:0 0}}
.map-pin-actions.map-callout,.map-poi-card.map-callout{position:absolute;z-index:15;right:auto;bottom:auto;width:min(300px,calc(100% - 20px));margin:0}
.map-poi-card{display:none}
.map-poi-card.map-callout{display:grid}
.map-pin-actions.map-callout,.map-poi-card{--callout-fill:rgba(250,250,252,.72);--callout-ink:#1c1c1e;
  padding:12px;gap:10px;border-radius:20px;color:var(--callout-ink);background:var(--callout-fill)!important;
  -webkit-backdrop-filter:blur(28px) saturate(1.8);backdrop-filter:blur(28px) saturate(1.8);
  border:.5px solid rgba(255,255,255,.7)!important;box-shadow:0 12px 36px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.55)!important}
:root[data-effective-theme="dark"] .map-pin-actions.map-callout,:root[data-effective-theme="dark"] .map-poi-card{--callout-fill:rgba(44,44,48,.7);--callout-ink:#fff;border-color:rgba(255,255,255,.14)!important}
.map-callout::after{content:"";position:absolute;left:var(--callout-arrow-x,50%);bottom:-7px;width:16px;height:16px;margin-left:-8px;border-radius:0 0 4px 0;transform:rotate(45deg);
  background:var(--callout-fill);-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);border:.5px solid rgba(255,255,255,.5);border-top:0;border-left:0}
.map-callout.is-below::after{bottom:auto;top:-7px;border-radius:4px 0 0 0;transform:rotate(45deg);border:.5px solid rgba(255,255,255,.5);border-bottom:0;border-right:0}
.map-poi-card strong{display:block;font-size:17px;line-height:1.3}
.map-poi-card small{display:block;color:var(--muted);font-size:13px}
.map-poi-meta{margin:0;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}
.map-poi-card .map-pin-action-row{display:flex;gap:8px}
.map-poi-card .map-pin-action{flex:1}

/* Sticky 分類 bar + section headers */
.cl-list-bar{position:sticky;top:0;z-index:8;margin:0 -16px 12px;padding:calc(var(--safe-top) + 8px) 16px 8px;
  background:color-mix(in srgb,var(--paper) 78%,transparent);-webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6)}
.cl-section{scroll-margin-top:calc(var(--safe-top) + 64px)}
.cl-section-title{display:flex;align-items:center;justify-content:space-between}
.cl-section-manage{width:44px;min-height:32px;margin:-6px 0;border:0;background:transparent;color:var(--accent-2);display:grid;place-items:center}
.cl-section-manage .f7-icons{font-size:20px}
.workspace-tabs>.now-panel{overflow-anchor:none}

/* Root viewing another member: clear banner, no editing affordances */
.view-as-banner{position:fixed;z-index:200;left:calc(var(--safe-left) + 10px);right:calc(var(--safe-right) + 10px);top:calc(var(--safe-top) + 6px);
  display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 8px 8px 14px;border-radius:18px;font-size:14px;
  background:color-mix(in srgb,#ff9f0a 26%,var(--surface));color:var(--ink);box-shadow:0 6px 22px rgba(0,0,0,.16),inset 0 0 0 .5px rgba(255,159,10,.5);
  -webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6)}
.view-as-banner[hidden]{display:none}
.view-as-banner button{width:auto;min-height:34px;padding:0 12px;border:0;border-radius:17px;background:var(--ink);color:var(--surface);font-size:14px;font-weight:600;flex:none}
body[data-view-as] .cl-fab,body[data-view-as] .ledger-fab,body[data-view-as] .now-fab,body[data-view-as] .cl-check,body[data-view-as] .cl-title,
body[data-view-as] .cl-edit-bar,body[data-view-as] .cl-date-input,body[data-view-as] .hotel-chip,body[data-view-as] [data-action="cl-putback"],
body[data-view-as] .ledger-swipe-delete{pointer-events:none}
body[data-view-as] .cl-fab,body[data-view-as] .ledger-fab,body[data-view-as] .now-fab{opacity:.35}
body[data-view-as] .workspace-tabs>.now-panel{padding-top:calc(var(--safe-top) + 52px)!important}
.choice-chip-add{width:auto;border:1px dashed color-mix(in srgb,var(--accent) 50%,transparent);background:transparent;color:var(--accent);display:inline-flex;align-items:center;gap:4px}

/* Form wrappers: never wider than the card, no overflow from long labels or native controls */
.item-input-wrap{box-sizing:border-box;width:100%;min-width:0;max-width:100%;margin:0}
.item-input-wrap>input,.item-input-wrap>select,.item-input-wrap>textarea{box-sizing:border-box;max-width:100%;min-width:0}
.item-inner{min-width:0}
.item-title.item-label{white-space:normal;overflow-wrap:anywhere}
.settings-segmented .button{min-width:0;overflow-wrap:anywhere}
.settings-section .item-content,.setting-section .item-content{padding-left:max(16px,var(--safe-left));padding-right:max(16px,var(--safe-right))}

/* Keep sheets above the on-screen keyboard and inside the visible viewport */
.ios-sheet{bottom:var(--kb-gap,0px);max-height:calc(var(--vv-h,100dvh) - var(--safe-top) - 12px)}
.ios-sheet.is-tall{height:calc(var(--vv-h,100dvh) - var(--safe-top) - 12px)}
.ios-sheet .ios-sheet-scroll{scroll-padding-bottom:24px}

/* Update prompt: a glass capsule that drops in under the status bar (not a map control). */
.app-update-banner{position:fixed;z-index:9000;left:50%;top:calc(var(--safe-top) + 8px);width:min(calc(100vw - 24px),420px);
  display:flex;align-items:center;gap:10px;padding:8px 8px 8px 10px;border-radius:26px;color:var(--ink);
  background:color-mix(in srgb,var(--surface) 72%,transparent);
  -webkit-backdrop-filter:blur(28px) saturate(1.8);backdrop-filter:blur(28px) saturate(1.8);
  box-shadow:0 10px 34px rgba(0,0,0,.2),inset 0 0 0 .5px color-mix(in srgb,var(--ink) 14%,transparent),inset 0 1px 0 rgba(255,255,255,.4);
  transform:translate3d(-50%,-140%,0);opacity:0;transition:transform .5s var(--spring),opacity .25s ease}
.app-update-banner.is-visible{transform:translate3d(-50%,0,0);opacity:1}
.app-update-banner[hidden]{display:none}
.app-update-icon{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff}
.app-update-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.app-update-copy{flex:1;min-width:0;display:grid;line-height:1.25}
.app-update-copy strong{font-size:15px}
.app-update-copy small{color:var(--muted);font-size:13px}
.app-update-reload{flex:none;width:auto;min-height:36px;padding:0 16px;border:0;border-radius:18px;background:var(--accent);color:#fff;font-size:15px;font-weight:650}
.app-update-dismiss{flex:none;width:32px;height:32px;padding:0;border:0;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--muted)}
.app-update-dismiss svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.app-tabbar .tab-link.has-update .tabbar-icon{position:relative}
.app-tabbar .tab-link.has-update::after{content:"";position:absolute;top:8px;left:calc(50% + 8px);width:9px;height:9px;border-radius:50%;background:#ff3b30;box-shadow:0 0 0 2px var(--surface)}
@media (prefers-reduced-motion:reduce){.app-update-banner{transition:opacity .2s ease}}
@media (orientation:landscape) and (max-height:520px){.app-update-banner{top:calc(var(--safe-top) + 6px)}}

/* Drag between 分類 */
.cl-section.is-drop-target{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:4px;border-radius:16px;background:color-mix(in srgb,var(--accent) 6%,transparent);transition:background .15s ease}
.cl-list.is-empty{background:transparent;border:1.5px dashed color-mix(in srgb,var(--ink) 16%,transparent)}
.cl-empty-slot{list-style:none;padding:18px 16px;color:var(--muted);font-size:15px}

/* Search fields: the whole row is the tap target, the input fills it */
.sheet-row.search-row,.search-field{display:flex;align-items:center;gap:8px;cursor:text}
.sheet-row.search-row .f7-icons,.search-field .f7-icons{flex:none;color:var(--muted);font-size:18px}
.sheet-row input[type=search],.search-field input[type=search],.search-field input{flex:1 1 auto;width:100%;min-width:0;min-height:36px;padding:0;border:0;background:transparent;color:var(--ink);font-size:17px;outline:0;-webkit-appearance:none;appearance:none}
.sheet-row input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}

/* 現在 card swipe */
.now-hero{touch-action:pan-y;transition:transform .3s var(--spring),opacity .2s ease}
.now-hero.is-swiping{transition:none}
.now-hero-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.now-hero-back{width:auto;min-height:30px;padding:0 12px;border:0;border-radius:15px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-2);font-size:14px;font-weight:600}
.now-hero-dots{display:flex;justify-content:center;gap:5px;margin-top:12px}
.now-hero-dots i{width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,var(--ink) 18%,transparent);transition:background .2s ease,transform .2s var(--spring)}
.now-hero-dots i.is-on{background:var(--accent);transform:scale(1.25)}
.now-hero.is-entering-next{animation:now-hero-in-next .36s var(--spring) both}
.now-hero.is-entering-prev{animation:now-hero-in-prev .36s var(--spring) both}
@keyframes now-hero-in-next{from{opacity:0;transform:translate3d(36px,0,0)}to{opacity:1;transform:none}}
@keyframes now-hero-in-prev{from{opacity:0;transform:translate3d(-36px,0,0)}to{opacity:1;transform:none}}
.now-hero.is-bumped{animation:now-hero-bump .3s ease}
@keyframes now-hero-bump{40%{transform:translate3d(-8px,0,0)}70%{transform:translate3d(5px,0,0)}}
@media (prefers-reduced-motion:reduce){.now-hero,.now-hero-dots i{transition:none!important;animation:none!important}}

/* Ledger: what I spent, by day */
.ledger-hero-sub{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px;color:var(--muted);font-size:14px}
.ledger-budget{display:grid;gap:6px;width:100%;margin-top:14px;padding:10px 12px;border:0;border-radius:12px;background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink);text-align:left}
.ledger-budget.is-empty{color:var(--accent-2);font-size:14px;font-weight:600;text-align:center}
.ledger-budget-top{display:flex;justify-content:space-between;gap:10px}
.ledger-budget small{font-size:13px;color:var(--muted)}
.ledger-budget small.is-over{color:#ff3b30;font-weight:600}
.ledger-budget-track{height:6px;border-radius:3px;background:color-mix(in srgb,var(--ink) 10%,transparent);overflow:hidden}
.ledger-budget-track i{display:block;height:100%;border-radius:3px;background:var(--accent);transition:width .4s var(--spring)}
.ledger-budget-track i.is-over{background:#ff3b30}
.ledger-chart{display:grid;gap:12px;margin:0 0 18px}
.ledger-chart-block{padding:14px 12px 10px;border-radius:16px;background:var(--surface)}
.ledger-chart-block h3{margin:0 4px 10px;color:var(--muted);font-size:13px;font-weight:600}
.ledger-bars{display:grid;grid-template-columns:repeat(9,1fr);gap:4px;align-items:end}
.ledger-bar-col{display:grid;grid-template-rows:14px 88px auto;justify-items:center;gap:4px;width:100%;min-width:0;padding:2px 0;border:0;border-radius:10px;background:transparent;color:var(--ink)}
.ledger-bar-col small{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.ledger-bar-track{display:flex;align-items:flex-end;width:100%;max-width:26px;height:88px;border-radius:7px;background:color-mix(in srgb,var(--ink) 6%,transparent);overflow:hidden}
.ledger-bar-track i{display:block;width:100%;border-radius:7px;background:color-mix(in srgb,var(--accent) 70%,transparent);transition:height .45s var(--spring)}
.ledger-bar-col b{font-size:12px;font-weight:600;color:var(--muted)}
.ledger-bar-col.is-today b{color:var(--accent-2)}
.ledger-bar-col.is-selected{background:color-mix(in srgb,var(--accent) 12%,transparent)}
.ledger-bar-col.is-selected .ledger-bar-track i{background:var(--accent)}
.ledger-filter{display:flex;gap:8px;align-items:center;margin:0 0 10px}
.ledger-filter .search-field{flex:1}
.ledger-filter-clear{flex:none;width:auto;min-height:36px;padding:0 12px;border:0;border-radius:18px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-2);font-size:14px;font-weight:600}
.ledger-row-amount.is-refund{color:#30b158}
.ledger-row-icon.is-refund{background:color-mix(in srgb,#30b158 18%,transparent);color:#30b158}

/* Map sheet levels: 'day' is the timeline, 'stop' is one place's detail (pushed on selection). */
.map-journey-sheet[data-level="stop"] .map-journey-body.page-content{display:block!important;flex:1 1 auto;padding-bottom:calc(var(--tabbar-height) + var(--safe-bottom) + 24px)!important;background:transparent}
.map-journey-sheet[data-level="stop"] .map-journey-inner>#contentScroller{display:none!important}
.map-journey-sheet[data-level="stop"] #mapJourneyBreadcrumbs,.map-journey-sheet[data-level="stop"] #mapJourneySearchBtn{display:none}
.map-journey-back{display:none;align-items:center;gap:2px;min-height:44px;margin-left:-8px;padding:0 10px 0 4px;border:0;background:transparent;color:var(--accent-2);font:inherit;font-size:var(--type-body);font-weight:600;flex:1 1 auto;min-width:0;justify-content:flex-start;text-align:left}
.map-journey-back .icon{font-size:22px;flex:none}
.map-journey-back span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-journey-sheet[data-level="stop"] .map-journey-back{display:inline-flex}
.map-journey-sheet[data-level="stop"] .map-journey-back[hidden]{display:inline-flex}
.map-journey-sheet[data-level="stop"] .map-journey-body.page-content{display:flex!important;flex-direction:column}
.map-journey-sheet[data-level="stop"] #mapFullscreenContext{order:0}
.map-journey-sheet[data-level="stop"] #nowContent{order:1}
.map-journey-sheet[data-level="stop"] .map-journey-activities{order:2}
.map-journey-sheet[data-level="stop"] .map-fullscreen-copy small:has(>span:not([hidden])){display:none}
.map-stop-sub{display:none;margin-top:4px;font-size:15px;line-height:1.35;color:var(--muted);font-variant-numeric:tabular-nums}
.map-journey-sheet[data-level="stop"] .map-stop-sub{display:block}
.map-journey-sheet[data-level="stop"] .map-fullscreen-actions{margin-top:2px}
.map-journey-sheet[data-level="stop"] #mapFullscreenNav{min-height:46px;border-radius:14px;font-weight:650}
.map-journey-sheet[data-level="stop"] #mapFullscreenTitle{font-size:22px;line-height:1.25;letter-spacing:-.01em}
.map-journey-sheet[data-level="stop"] #mapFullscreenSummary{font-size:var(--type-body)}

/* One colour for "the stop in focus": the orange marker and the mini player's number agree. */
.trip-mini-seq{background:linear-gradient(180deg,#ff9f0a,#ff7a00)!important;color:#fff!important;box-shadow:0 0 0 3px color-mix(in srgb,#ff9500 24%,transparent)}

/* Place callouts: Liquid Glass, large title, no coordinates; a tap outside dismisses. */
.map-pin-actions.map-callout,.map-poi-card.map-callout{
  --callout-fill:rgba(255,255,255,.34);--callout-ink:#111114;
  width:min(320px,calc(100% - 28px));padding:16px 16px 14px;gap:14px;border-radius:26px;
  background:linear-gradient(180deg,rgba(255,255,255,.52),rgba(255,255,255,.26))!important;
  -webkit-backdrop-filter:blur(34px) saturate(200%) brightness(1.04);backdrop-filter:blur(34px) saturate(200%) brightness(1.04);
  border:.5px solid rgba(255,255,255,.75)!important;
  box-shadow:0 18px 48px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.85),inset 0 -1px 0 rgba(255,255,255,.18)!important;
  animation:callout-in .22s cubic-bezier(.2,.8,.2,1) both}
:root[data-effective-theme="dark"] .map-pin-actions.map-callout,:root[data-effective-theme="dark"] .map-poi-card.map-callout{
  --callout-fill:rgba(40,40,46,.42);--callout-ink:#fff;
  background:linear-gradient(180deg,rgba(70,70,78,.55),rgba(36,36,42,.4))!important;
  border-color:rgba(255,255,255,.2)!important;
  box-shadow:0 18px 48px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.22)!important}
.map-callout-head{display:grid;gap:3px;min-width:0}
.map-callout-head strong{display:block;font-size:22px;line-height:1.22;font-weight:700;letter-spacing:-.015em;overflow-wrap:anywhere}
.map-callout-head small{display:block;font-size:15px;line-height:1.35;color:color-mix(in srgb,var(--callout-ink) 62%,transparent);overflow-wrap:anywhere}
.map-poi-card .map-pin-action-row,.map-pin-actions .map-pin-action-row{display:flex;gap:10px}
.map-poi-card .map-pin-action,.map-pin-actions.map-callout .map-pin-action{flex:1;min-height:46px;border-radius:15px;font-size:16px;font-weight:650;
  border:.5px solid rgba(255,255,255,.55);background:rgba(255,255,255,.4);color:var(--callout-ink);box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}
.map-poi-card .map-pin-action.primary,.map-pin-actions.map-callout .map-pin-action.primary{background:var(--accent-2);border-color:transparent;color:#fff;box-shadow:0 4px 14px color-mix(in srgb,var(--accent-2) 45%,transparent)}
:root[data-effective-theme="dark"] .map-poi-card .map-pin-action:not(.primary),:root[data-effective-theme="dark"] .map-pin-actions.map-callout .map-pin-action:not(.primary){background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.2)}
@keyframes callout-in{from{opacity:0;scale:.94}to{opacity:1;scale:1}}
@media (prefers-reduced-motion:reduce){.map-pin-actions.map-callout,.map-poi-card.map-callout{animation:none}}
.map-journey-sheet[data-level="stop"] #mapFullscreenDetailBtn{min-height:0;padding:0}
.map-journey-sheet[data-level="stop"] .map-fullscreen-context{gap:10px}
.map-journey-sheet[data-level="stop"] .map-journey-activities>.block-title{margin-top:18px}

/* 分類 ring chart: tap a slice or a legend row to filter the records below */
.ledger-pie{display:grid;grid-template-columns:132px minmax(0,1fr);gap:16px;align-items:center;padding:14px;border-radius:18px;background:var(--surface-2,var(--surface))}
.ledger-donut{position:relative;width:132px;height:132px}
.ledger-donut svg{width:100%;height:100%;display:block;overflow:visible}
.ledger-slice{cursor:pointer;transition:stroke-width .2s var(--spring,ease),opacity .2s;outline:0}
.ledger-slice.is-dim{opacity:.28}
.ledger-slice:focus-visible{stroke-opacity:.7}
.ledger-donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center;pointer-events:none}
.ledger-donut-center strong{font-size:24px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.ledger-donut-center small{font-size:12px;color:var(--muted)}
.ledger-legend{display:grid;gap:2px;margin:0;padding:0;list-style:none}
.ledger-legend-row{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:44px;padding:4px 8px;border:0;border-radius:11px;background:transparent;color:var(--ink);text-align:left}
.ledger-legend-row.is-selected{background:color-mix(in srgb,var(--accent) 14%,transparent)}
.ledger-swatch{width:12px;height:12px;border-radius:4px}
.ledger-legend .ledger-category-label{display:grid;gap:1px;min-width:0}
.ledger-legend .ledger-category-label strong{font-size:15px}
.ledger-legend .ledger-category-label small{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.ledger-percent{font-size:15px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.ledger-footnote{margin:8px 4px 0;font-size:12px;color:var(--muted)}
.ledger-chips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px}
.ledger-chip{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 10px 0 12px;border:0;border-radius:999px;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent-2);font-size:14px;font-weight:600}
.ledger-chip .icon{font-size:12px}
@media (max-width:360px){.ledger-pie{grid-template-columns:1fr;justify-items:center}.ledger-legend{width:100%}}
.ledger-slice{stroke-linecap:butt}
.ledger-legend li{display:block;margin:0;padding:0;border:0;background:transparent;box-shadow:none}

/* 更多: iOS Settings-style rows with a coloured glyph tile */
.settings-icon{--tile:#8e8e93;display:grid;place-items:center;flex:none;width:30px;height:30px;margin-inline-end:12px;border-radius:8px;background:var(--tile);box-shadow:inset 0 0 0 .5px rgba(0,0,0,.08)}
.settings-icon::before{content:"";width:19px;height:19px;background:#fff;-webkit-mask:var(--glyph) center/contain no-repeat;mask:var(--glyph) center/contain no-repeat}
.settings-icon[data-glyph="ledger"]{--tile:#34c759;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%223%22 y=%226.5%22 width=%2218%22 height=%2211%22 rx=%222.5%22/%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%222.6%22/%3E%3Cpath d=%22M6.5 12h.01M17.5 12h.01%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="note"]{--tile:#ff9500;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M7 3h7l4 4v14H7z%22/%3E%3Cpath d=%22M14 3v4h4M10 12h5M10 16h5%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="weather"]{--tile:#32ade6;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M7.5 18.5a4 4 0 0 1-.4-7.98A5.5 5.5 0 0 1 17.6 10a4.2 4.2 0 0 1-.6 8.5z%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="flight"]{--tile:#ff3b30;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath fill=%22%23000%22 stroke=%22none%22 d=%22M21.5 15.8 13.5 11V5.6a1.5 1.5 0 0 0-3 0V11l-8 4.8v1.9l8-2.3V20l-2 1.5V23l3.5-.9 3.5.9v-1.5L13.5 20v-4.6l8 2.3z%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="guide"]{--tile:#5856d6;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M5 4.5h10.5A2.5 2.5 0 0 1 18 7v13H7.5A2.5 2.5 0 0 1 5 17.5z%22/%3E%3Cpath d=%22M5 17.5A2.5 2.5 0 0 1 7.5 15H18%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="private"]{--tile:#636366;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%225%22 y=%2211%22 width=%2214%22 height=%2210%22 rx=%222.5%22/%3E%3Cpath d=%22M8 11V8a4 4 0 0 1 8 0v3%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="help"]{--tile:#af52de;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%229%22/%3E%3Cpath d=%22M9.6 9.6a2.5 2.5 0 1 1 3.4 2.3c-.7.4-1 .9-1 1.6M12 17h.01%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="update"]{--tile:#0a84ff;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%229%22/%3E%3Cpath d=%22M12 7.5v8M8.5 12.5l3.5 3.5 3.5-3.5%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="people"]{--tile:#0a84ff;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%229%22 cy=%228.5%22 r=%223%22/%3E%3Cpath d=%22M3 19a6 6 0 0 1 12 0%22/%3E%3Ccircle cx=%2217%22 cy=%228%22 r=%222.4%22/%3E%3Cpath d=%22M16.5 14a4.6 4.6 0 0 1 4.5 5%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="calendar"]{--tile:#ff9500;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%224%22 y=%225%22 width=%2216%22 height=%2215%22 rx=%223%22/%3E%3Cpath d=%22M4 10h16M8 3v4M16 3v4%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="textsize"]{--tile:#0a84ff;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3.5 18 8 6l4.5 12M5.2 14h5.6M14.5 18l3-8 3 8M15.7 16h3.6%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="theme"]{--tile:#5856d6;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%228%22/%3E%3Cpath fill=%22%23000%22 stroke=%22none%22 d=%22M12 4a8 8 0 0 1 0 16z%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="nav"]{--tile:#0a84ff;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M20 4 4.6 10.6l6.6 2.2 2.2 6.6z%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="sliders"]{--tile:#8e8e93;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 8h9M17 8h3M4 16h3M11 16h9%22/%3E%3Ccircle cx=%2215%22 cy=%228%22 r=%222%22/%3E%3Ccircle cx=%229%22 cy=%2216%22 r=%222%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="pin"]{--tile:#ff3b30;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 21s7-6.2 7-11a7 7 0 0 0-14 0c0 4.8 7 11 7 11z%22/%3E%3Ccircle cx=%2212%22 cy=%2210%22 r=%222.5%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="bell"]{--tile:#ff3b30;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M6 16.5V11a6 6 0 0 1 12 0v5.5l1.5 2h-15z%22/%3E%3Cpath d=%22M10 21a2 2 0 0 0 4 0%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="offline"]{--tile:#34c759;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%227%22 y=%223%22 width=%2210%22 height=%2218%22 rx=%222.5%22/%3E%3Cpath d=%22M11 18h2%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="storage"]{--tile:#8e8e93;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%223%22 y=%2213%22 width=%2218%22 height=%227%22 rx=%222.5%22/%3E%3Cpath d=%22M5 13l2-7h10l2 7M17 16.5h.01%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="link"]{--tile:#34c759;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1%22/%3E%3C/svg%3E")}

.settings-list .item-media{margin:0}
.settings-list .item-media+.item-inner{padding-inline-start:0}
.settings-list .item-after{max-width:58%;text-align:right;color:var(--muted)}
.settings-heading h1{font-size:34px;font-weight:700;letter-spacing:-.02em}
.settings-account-card{border-radius:20px;padding:14px 16px;box-shadow:none}
.settings-section-title{text-transform:none;font-size:13px;letter-spacing:0;color:var(--muted);padding-inline:16px}
.ledger-chip{width:auto;flex:none}
.settings-list .item-content>.settings-icon{align-self:center}
.settings-list .settings-segmented-row>.settings-icon,.settings-list .settings-profile-row>.settings-icon{align-self:flex-start;margin-top:11px}
.settings-list .settings-segmented-row .item-inner,.settings-list .settings-profile-row .item-inner{padding-top:8px}
.settings-list .item-media.settings-icon{display:grid!important;place-items:center;padding:0!important;min-width:30px}
.settings-list .settings-profile-row .item-inner{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:12px;padding-top:0;min-height:52px}
.settings-list .settings-profile-row .item-label{position:static;width:auto;margin:0;font-size:var(--type-body);color:var(--ink);transform:none}
.settings-list .settings-profile-row .item-input-wrap{width:auto;flex:none;margin:0}
.settings-list .settings-profile-row select{width:auto;max-width:56vw;min-height:44px;padding:0 4px;border:0;background:transparent;color:var(--muted);text-align:right;text-align-last:right;font-size:var(--type-body)}
.settings-list .settings-profile-row>.settings-icon{align-self:center;margin-top:0}
.settings-list .settings-segmented-row>.settings-icon{align-self:flex-start;margin-top:12px}

/* ── Journey sheet: day overview (timeline) ───────────────────────────────── */
.jr-head{padding:4px 0 6px}
.jr-head h1{margin:0 0 12px;font-size:28px;line-height:1.15;letter-spacing:-.02em;font-weight:760;overflow-wrap:anywhere}
.jr-highlight{margin:0 0 10px;border-radius:16px;background:color-mix(in srgb,var(--accent) 9%,var(--surface));overflow:hidden}
.jr-highlight>summary{display:grid;gap:3px;padding:12px 14px;list-style:none;cursor:pointer;position:relative}
.jr-highlight>summary::-webkit-details-marker{display:none}
.jr-highlight>summary::after{content:"";position:absolute;right:14px;top:16px;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .2s}
.jr-highlight[open]>summary::after{transform:rotate(-135deg);top:20px}
.jr-highlight-label{font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--accent-2)}
.jr-highlight-text{padding-right:22px;font-size:15px;line-height:1.45;color:var(--ink);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.jr-highlight[open] .jr-highlight-text{display:none}
.jr-highlight-body{padding:0 14px 12px;font-size:15px;line-height:1.55}
.jr-highlight-body p{margin:0 0 8px}
.jr-stay .lodging-summary{margin:0 0 10px;border:0;border-radius:16px;background:var(--surface-2)}
.jr-timeline{list-style:none;margin:6px 0 0;padding:0}
.jr-stop{position:relative;display:grid;grid-template-columns:46px 34px minmax(0,1fr);column-gap:10px;align-items:start;padding:0 0 4px}
.jr-time{padding-top:9px;text-align:right;font-variant-numeric:tabular-nums;line-height:1.15}
.jr-time b{display:block;font-size:15px;font-weight:700;letter-spacing:-.01em}
.jr-time b.is-unknown{color:var(--muted);font-weight:500}
.jr-time small{display:block;margin-top:2px;font-size:12px;color:var(--muted)}
.jr-rail{position:relative;align-self:stretch;display:flex;justify-content:center}
.jr-rail::before{content:"";position:absolute;top:0;bottom:-4px;left:50%;width:2px;margin-left:-1px;background:color-mix(in srgb,var(--ink) 12%,transparent)}
.jr-stop:first-child .jr-rail::before{top:20px}
.jr-stop.is-last .jr-rail::before{bottom:calc(100% - 38px)}
.jr-node{position:relative;z-index:1;margin-top:4px;width:34px;height:34px;border-radius:50%;background:var(--node,#8e8e93);box-shadow:0 0 0 4px var(--surface-page,var(--paper,#fff))}
.jr-node::before{content:"";position:absolute;inset:0;margin:auto;width:18px;height:18px;background:#fff;-webkit-mask:var(--glyph) center/contain no-repeat;mask:var(--glyph) center/contain no-repeat}
.jr-seq{position:absolute;z-index:2;top:0;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--ink);color:var(--paper,#fff);font-size:10px;font-weight:700;line-height:16px;text-align:center;font-variant-numeric:tabular-nums}
.jr-card{display:grid;gap:3px;width:100%;margin:0 0 10px;padding:10px 14px;border:0;border-radius:16px;background:var(--surface-2);color:var(--ink);text-align:left;font:inherit;transition:background .15s,transform .15s}
.jr-card:active{transform:scale(.985);background:color-mix(in srgb,var(--ink) 9%,var(--surface-2))}
.jr-title{font-size:17px;font-weight:650;line-height:1.3;letter-spacing:-.01em;overflow-wrap:anywhere}
.jr-brief{font-size:14px;line-height:1.4;color:var(--muted);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.jr-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:3px}
.jr-chip{padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--ink) 8%,transparent);font-size:12px;font-weight:600;color:var(--muted)}
.jr-stop.is-selected-activity .jr-card{background:color-mix(in srgb,#ff9500 14%,var(--surface));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,#ff9500 55%,transparent)}
.jr-stop.is-selected-activity .jr-node{background:linear-gradient(180deg,#ff9f0a,#ff7a00)}
.jr-stop.is-selected-activity .jr-time b{color:#c45a00}
.jr-stop .state-badge{margin-inline-start:8px;padding:2px 8px;border-radius:999px;background:#ff9500;color:#fff;font-size:12px;font-weight:700;vertical-align:2px}
.jr-stop.is-scroll-focus .jr-card{background:color-mix(in srgb,var(--ink) 11%,var(--surface-2))}
@media (prefers-reduced-motion:reduce){.jr-card{transition:none}}
.jr-node[data-kind="flight"]{--node:#5e5ce6;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath fill=%22%23000%22 stroke=%22none%22 d=%22M21.5 15.8 13.5 11V5.6a1.5 1.5 0 0 0-3 0V11l-8 4.8v1.9l8-2.3V20l-2 1.5V23l3.5-.9 3.5.9v-1.5L13.5 20v-4.6l8 2.3z%22/%3E%3C/svg%3E")}
.jr-node[data-kind="train"]{--node:#0a84ff;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%225%22 y=%223%22 width=%2214%22 height=%2214%22 rx=%223%22/%3E%3Cpath d=%22M5 11h14M9 21l2-4M15 21l-2-4M9 14h.01M15 14h.01%22/%3E%3C/svg%3E")}
.jr-node[data-kind="bus"]{--node:#0a84ff;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%224%22 y=%224%22 width=%2216%22 height=%2213%22 rx=%223%22/%3E%3Cpath d=%22M4 11h16M7 17v3M17 17v3M8 14h.01M16 14h.01%22/%3E%3C/svg%3E")}
.jr-node[data-kind="ferry"]{--node:#32ade6;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 15l2 4h14l2-4zM6 15V9h12v6M10 9V5h4v4M3 21c2 0 2-1 4.5-1s2.5 1 4.5 1 2.5-1 4.5-1 2.5 1 4.5 1%22/%3E%3C/svg%3E")}
.jr-node[data-kind="walk"]{--node:#8e8e93;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2213%22 cy=%224.5%22 r=%221.8%22/%3E%3Cpath d=%22M11 21l1.5-6-2.5-2.5 1-5 3 1.5 2.5 2M9 12l-2 3M12.5 15l3 2.5%22/%3E%3C/svg%3E")}
.jr-node[data-kind="transit"]{--node:#0a84ff;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 12h13M13 7l5 5-5 5%22/%3E%3C/svg%3E")}
.jr-node[data-kind="meal"]{--node:#ff375f;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M7 3v8a2 2 0 0 0 2 2v8M5 3v6M9 3v6M17 21V3c-2 1.5-3 4-3 7s1 4 3 4%22/%3E%3C/svg%3E")}
.jr-node[data-kind="stay"]{--node:#bf5af2;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 18V7M21 18v-5a3 3 0 0 0-3-3h-8v8M3 15h18M6.5 12a1.8 1.8 0 1 0 0-.01%22/%3E%3C/svg%3E")}
.jr-node[data-kind="shop"]{--node:#30b158;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M6 8h12l1 12H5zM9 8V6.5a3 3 0 0 1 6 0V8%22/%3E%3C/svg%3E")}
.jr-node[data-kind="sight"]{--node:#00a79d;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 20h18M5 20V10l7-6 7 6v10M10 20v-5h4v5%22/%3E%3C/svg%3E")}
.jr-node[data-kind="place"]{--node:#8e8e93;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 21s7-6.2 7-11a7 7 0 0 0-14 0c0 4.8 7 11 7 11z%22/%3E%3Ccircle cx=%2212%22 cy=%2210%22 r=%222.5%22/%3E%3C/svg%3E")}
.journey-weather:empty{display:none}
.map-journey-inner>#contentScroller .journey-weather{margin:0;border:0}
.map-journey-inner>#contentScroller .journey-weather:not(:empty){margin:0 0 12px}
.day-page .day-header.jr-head>h1{position:static!important;width:auto!important;height:auto!important;margin:4px 0 12px!important;clip:auto!important;overflow:visible!important;white-space:normal!important}
.jr-head h1{font-size:26px}

/* ── Journey sheet: stop level ────────────────────────────────────────────── */
.map-journey-sheet #mapStopNode{display:none}
.map-journey-sheet[data-level="stop"] .map-fullscreen-header{display:grid!important;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px}
.map-journey-sheet[data-level="stop"] #mapStopNode{display:block;width:48px;height:48px;margin:0;box-shadow:none}
.map-journey-sheet[data-level="stop"] #mapStopNode::before{width:25px;height:25px}
.map-journey-sheet[data-level="stop"] #mapFullscreenDetailMeta{display:none!important}
.map-journey-sheet[data-level="stop"] #mapFullscreenTitle{font-size:22px;font-weight:700;line-height:1.22;letter-spacing:-.015em}
.map-journey-sheet[data-level="stop"] .map-fullscreen-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.map-journey-sheet[data-level="stop"] .map-fullscreen-actions>#mapFullscreenNav:not([hidden]){grid-column:1/-1;order:-1;min-height:50px;border-radius:16px;font-size:17px;font-weight:650;background:var(--accent-2);color:#fff;border:0;box-shadow:0 6px 18px color-mix(in srgb,var(--accent-2) 32%,transparent)}
.map-journey-sheet[data-level="stop"] .map-fullscreen-step{min-height:46px;border-radius:14px;border:0;background:var(--surface-2);box-shadow:none;color:var(--ink);font-weight:600}
.map-journey-sheet[data-level="stop"] .map-fullscreen-step:disabled{opacity:.4}

.map-journey-sheet .detail-section{margin:22px 0 0}
.map-journey-sheet .detail-section-title{margin:0 0 8px;padding:0 4px;font-size:13px;font-weight:600;letter-spacing:.01em;color:var(--muted);text-transform:none}
.map-journey-sheet .activity-detail-description{margin:6px 0 0;padding:14px 16px;border-radius:16px;background:var(--surface-2);font-size:16px;line-height:1.55}
.map-journey-sheet .activity-detail-description p{margin:0}
.map-journey-sheet .activity-places{display:grid;border-radius:16px;background:var(--surface-2);overflow:hidden}
.map-journey-sheet .activity-place-row{display:flex;align-items:center;gap:8px;min-height:52px;padding:0 6px 0 14px;border:0}
.map-journey-sheet .activity-place{flex:1;display:flex;align-items:center;gap:12px;min-width:0;min-height:52px;padding:0;border:0;background:transparent;text-align:left;font:inherit;color:var(--ink)}
.map-journey-sheet .place-role{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:50%;background:color-mix(in srgb,var(--accent-2) 14%,transparent);color:var(--accent-2);font-size:12px;font-weight:700}
.map-journey-sheet .activity-place-name{font-size:16px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}
.map-journey-sheet .place-nav{display:inline-flex;align-items:center;gap:4px;flex:none;min-height:36px;margin:0 6px;padding:0 12px;border:0;border-radius:999px;background:color-mix(in srgb,var(--accent-2) 12%,transparent);color:var(--accent-2);font-size:14px;font-weight:650}
.map-journey-sheet .place-nav svg{width:14px;height:14px}
.map-journey-sheet .route-connector{display:flex;align-items:center;gap:8px;margin:-4px 0;padding-left:26px;color:var(--muted);font-size:12px}
.map-journey-sheet .route-connector span{width:2px;height:16px;margin-left:5px;background:repeating-linear-gradient(to bottom,var(--muted) 0 3px,transparent 3px 6px);opacity:.6}
.map-journey-sheet .activity-fit{margin:8px 0 0;padding:6px 4px;border:0;background:transparent;color:var(--accent-2);font-size:15px;font-weight:600}
.map-journey-sheet .activity-detail-transport{display:inline-block;margin:8px 0 0;padding:3px 10px;border-radius:999px;background:color-mix(in srgb,var(--ink) 8%,transparent);font-size:13px;font-weight:600;color:var(--muted)}
.map-journey-sheet .activity-detail-reminder-stack{margin-top:22px}
.map-journey-sheet .activity-detail-reminder.card{margin:0 0 10px;border:0;border-radius:16px;background:var(--surface-2);box-shadow:none}
.map-journey-sheet .activity-detail-reminder .card-header{min-height:0;padding:12px 16px 0;font-size:15px;font-weight:700;color:var(--ink)}
.map-journey-sheet .activity-detail-reminder .card-content{padding:6px 16px 14px;font-size:15px;line-height:1.55}
.map-journey-sheet .activity-detail-reminder h1,.map-journey-sheet .activity-detail-reminder h2,.map-journey-sheet .activity-detail-reminder h3{margin:12px 0 4px;font-size:15px;font-weight:700}
.map-journey-sheet .activity-detail-reminder p{margin:0 0 8px}
.map-journey-sheet .activity-procedure-card.card{margin:0 0 10px;border:0;border-radius:16px;background:var(--surface-2);box-shadow:none}
.map-journey-sheet .activity-procedure-card .card-header{padding:12px 16px 0;font-size:15px;font-weight:700}
.map-journey-sheet .activity-procedure-steps{margin:0;padding-left:20px;font-size:15px;line-height:1.55}
.map-journey-sheet .reminder-list{list-style:none;margin:0;padding:0;border-radius:16px;background:var(--surface-2);overflow:hidden}
.map-journey-sheet .reminder-item{display:flex;gap:12px;padding:12px 16px;font-size:15px;line-height:1.5}
.map-journey-sheet .reminder-item+.reminder-item{border-top:.5px solid var(--line)}
.map-journey-sheet .accordion-item.progressive,.map-journey-sheet .progressive-accordion{border-radius:16px;background:var(--surface-2);border:0}
.map-journey-sheet .map-journey-activities .list{margin:0}
.map-journey-sheet .map-related-activity{border-radius:0}
#mapJourneySheet[data-level="stop"] .map-fullscreen-context{grid-template-rows:auto auto!important;gap:14px}
#mapJourneySheet[data-level="stop"] .map-fullscreen-header{grid-template-columns:auto minmax(0,1fr)}
#mapJourneySheet[data-level="stop"] .map-fullscreen-actions{height:auto;min-height:0}
.map-journey-sheet .place-nav{flex-direction:row;white-space:nowrap}
.map-journey-sheet .place-nav span{white-space:nowrap}
#mapJourneySheet[data-level="stop"] .map-fullscreen-context{height:auto!important;min-height:0!important}
.map-journey-sheet[data-level="stop"] .map-journey-body>*{flex:none}
#nowContent{border-top:0;padding-top:0}

/* ── Transport options: a plain list of departures ────────────────────────── */
.tr-options{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.tr-option{display:grid;gap:10px;padding:14px 16px;border-radius:16px;background:var(--surface-2)}
.tr-option.is-current,.tr-option.is-selected{background:color-mix(in srgb,var(--accent) 12%,var(--surface));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 50%,transparent)}
.tr-option.is-expired{opacity:.5}
.tr-option.is-risky .tr-state{color:#c93400;background:color-mix(in srgb,#ff9500 18%,transparent)}
.tr-times{display:flex;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums}
.tr-times b{font-size:26px;font-weight:700;letter-spacing:-.02em}
.tr-times i{font-style:normal;color:var(--muted);font-size:18px}
.tr-times small{margin-left:auto;font-size:14px;color:var(--muted)}
.tr-copy{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.tr-copy strong{font-size:16px;font-weight:650}
.tr-copy small{flex-basis:100%;font-size:14px;color:var(--muted);line-height:1.4}
.tr-state{padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent-2);font-size:12px;font-weight:700}
.tr-actions{display:flex;flex-wrap:wrap;gap:8px}
.tr-actions .transport-choice{min-height:40px;padding:0 14px;border:0;border-radius:12px;background:var(--accent-2);color:#fff;font-size:15px;font-weight:600}
.tr-actions .transport-choice.transport-route-link{background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--ink)}
.tr-actions .transport-choice[aria-pressed="true"]{background:color-mix(in srgb,#30b158 85%,#000)}
.map-journey-sheet .transport-schedule{margin:0}
.map-journey-sheet .transport-schedule-head{display:grid;gap:2px;padding:0 4px 10px;border:0;background:transparent}
.map-journey-sheet .transport-schedule-head strong{font-size:17px;font-weight:700}
.map-journey-sheet .transport-schedule-head small{font-size:13px;color:var(--muted)}
.map-journey-sheet .transport-selected-service-timeline{margin-top:14px;padding:14px 16px;border-radius:16px;background:var(--surface-2)}
.map-journey-sheet .transport-selected-service-timeline h3{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--muted)}
.map-journey-sheet .transport-departure-disclaimer{margin:10px 4px 0;font-size:12px;color:var(--muted)}
.map-journey-sheet .transport-full-schedule{display:block;width:100%;margin-top:10px;padding:12px;border:0;border-radius:14px;background:transparent;color:var(--accent-2);font-size:16px;font-weight:600;text-align:center}
.map-journey-sheet .transport-schedule{border:0;background:transparent;padding:0;box-shadow:none}
.settings-list .settings-profile-row select{background:transparent!important;font-weight:500!important;color:var(--muted)!important;box-shadow:none!important}

/* ── Day overview v2: brief card, luggage, quiet legs ───────────────────── */
.jr-head h1{margin:2px 0 14px;font-size:26px}
.jr-brief-card{margin:0 0 12px;padding:14px 16px 12px;border-radius:18px;background:color-mix(in srgb,#ff9500 11%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,#ff9500 22%,transparent)}
.jr-brief-card h2{margin:0 0 8px;font-size:13px;font-weight:700;letter-spacing:.02em;color:#b45300}
.jr-brief-card ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.jr-brief-card li{position:relative;padding-left:16px;font-size:16px;line-height:1.45}
.jr-brief-card li::before{content:"";position:absolute;left:2px;top:.62em;width:6px;height:6px;border-radius:50%;background:#ff9500}
.jr-brief-card li strong{font-weight:700}
.jr-brief-more{margin-top:10px}
.jr-brief-more>summary{list-style:none;font-size:14px;font-weight:600;color:var(--accent-2);cursor:pointer}
.jr-brief-more>summary::-webkit-details-marker{display:none}
.jr-brief-more ul{margin-top:9px}
.jr-luggage{display:flex;align-items:flex-start;gap:12px;width:100%;margin:0 0 12px;padding:12px 14px;border:0;border-radius:16px;background:var(--surface-2);color:var(--ink);font:inherit;text-align:left}
button.jr-luggage:active{background:color-mix(in srgb,var(--ink) 9%,var(--surface-2))}
.jr-luggage-icon{flex:none;width:34px;height:34px;border-radius:10px;background:#8e6a3a;position:relative}
.jr-luggage-icon::before{content:"";position:absolute;inset:0;margin:auto;width:20px;height:20px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%225%22 y=%227%22 width=%2214%22 height=%2213%22 rx=%223%22/%3E%3Cpath d=%22M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M9 11v5M15 11v5%22/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%225%22 y=%227%22 width=%2214%22 height=%2213%22 rx=%223%22/%3E%3Cpath d=%22M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2M9 11v5M15 11v5%22/%3E%3C/svg%3E") center/contain no-repeat}
.jr-luggage-copy{display:grid;gap:2px;min-width:0}
.jr-luggage-copy strong{font-size:13px;font-weight:700;color:var(--muted)}
.jr-luggage-copy span:last-child{font-size:15px;line-height:1.4;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.jr-section-title{margin:18px 2px 8px;font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--muted)}
.jr-chip.is-alert{background:color-mix(in srgb,#ff9500 20%,transparent);color:#a64a00}
/* A leg between places is a quiet line, not a card. */
.jr-stop.is-leg .jr-card{background:transparent;padding:6px 0 8px;margin-bottom:2px}
.jr-stop.is-leg .jr-title{font-size:15px;font-weight:600;color:var(--muted)}
.jr-stop.is-leg .jr-brief{font-size:13px;-webkit-line-clamp:1}
.jr-stop.is-leg .jr-node{width:26px;height:26px;margin:6px 4px 0;box-shadow:0 0 0 3px var(--surface-page,var(--paper,#fff))}
.jr-stop.is-leg .jr-node::before{width:14px;height:14px}
.jr-stop.is-leg .jr-seq{display:none}
.jr-stop.is-leg .jr-time{padding-top:10px}
.jr-stop.is-leg .jr-time b{font-size:13px;font-weight:600;color:var(--muted)}
.jr-stop.is-leg .jr-time small{display:none}
.jr-stop.is-leg.is-selected-activity .jr-card{background:color-mix(in srgb,#ff9500 14%,var(--surface));padding:8px 12px;border-radius:14px}
.jr-stop.is-leg.is-selected-activity .jr-title{color:var(--ink)}
/* Weather: one slim line above the day. */
.journey-weather .wx-glance{min-height:0;padding:8px 12px;border-radius:14px;gap:10px;margin-bottom:10px}
.journey-weather .wx-glance .wx-glance-temp{font-size:20px}
.journey-weather .wx-glance svg{width:28px;height:28px}

/* ── Stop level v2: one action row, steps in order ─────────────────────── */
.map-journey-sheet[data-level="stop"] .map-fullscreen-actions{grid-template-columns:minmax(0,1fr) 52px 52px;gap:8px}
.map-journey-sheet[data-level="stop"] .map-fullscreen-actions>#mapFullscreenNav:not([hidden]){grid-column:auto;order:-1;min-height:52px}
.map-journey-sheet[data-level="stop"] .map-fullscreen-actions>#mapFullscreenNav[hidden]{display:none}
.map-journey-sheet[data-level="stop"] .map-fullscreen-step{min-height:52px;padding:0;justify-content:center;border-radius:16px}
.map-journey-sheet[data-level="stop"] .map-fullscreen-step span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.map-journey-sheet[data-level="stop"] .map-fullscreen-step svg{width:22px;height:22px}
.st-steps{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:10px}
.st-step{border-radius:18px;background:var(--surface-2);overflow:hidden}
.st-step.is-current{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,#ff9500 55%,transparent)}
.st-step>summary{display:grid;grid-template-columns:48px minmax(0,1fr) auto auto;align-items:start;gap:10px;padding:13px 14px;list-style:none;cursor:pointer}
.st-step>summary::-webkit-details-marker{display:none}
.st-time{padding-top:2px;font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink)}
.st-copy{display:grid;gap:2px;min-width:0}
.st-copy strong{font-size:16px;font-weight:650;line-height:1.35;overflow-wrap:anywhere}
.st-copy small{font-size:14px;line-height:1.4;color:var(--muted);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.st-step[open]>summary .st-copy small{display:none}
.st-flag{width:8px;height:8px;margin-top:8px;border-radius:50%;background:#ff9500}
.st-chev{width:9px;height:9px;margin-top:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .2s}
.st-step[open]>summary .st-chev{transform:rotate(-135deg);margin-top:11px}
.st-body{padding:0 14px 14px}
.st-body .detail-section:first-child{margin-top:0}
.st-body .activity-detail-description{margin-top:0}
/* Inside a step the content is flat: no card-in-card. */
.st-body .card{margin:0;background:transparent;box-shadow:none;border-radius:0}
.st-body .card-header{padding:0;min-height:0;font-size:15px;font-weight:650;background:none}
.st-body .card-content,.st-body .card-content-padding{padding:0}
.st-body .card-header+.card-content{margin-top:4px}
.st-body .activity-detail-reminder{margin:0 0 10px;padding:2px 0 2px 12px;border-left:3px solid #ff9500}
.st-body .activity-detail-reminder-stack>.detail-section-title,.st-body .detail-section-title{margin:16px 0 8px;font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--muted)}
.st-body .detail-section{margin:0}
.st-body .activity-detail-description{margin:0 0 6px;font-size:15px;line-height:1.55}
.st-body .activity-detail-description p{margin:0 0 8px}
.st-body .accordion-item{margin:10px 0 0;border-radius:14px;background:color-mix(in srgb,var(--ink) 5%,transparent)}
.st-body .activity-places{background:transparent}
.st-body .activity-places .activity-place-row,.st-body .activity-places>*{background:transparent}
.st-where{font-style:normal;font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.01em}
.st-steps+.accordion-item,#nowContent>.accordion-item{margin-top:10px}
.rm-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.rm-item{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--ink) 5%,transparent)}
.rm-item[data-level="must"]{background:color-mix(in srgb,#ff9500 14%,transparent)}
.rm-item .icon{font-size:18px;color:var(--muted);margin-top:1px}
.rm-item[data-level="must"] .icon{color:#c45a00}
.rm-item strong{display:block;font-size:14px;font-weight:700;margin-bottom:2px}
.rm-item p{margin:0;font-size:15px;line-height:1.5}
.rm-item div>*:last-child{margin-bottom:0}
.st-body .activity-transport{display:none}
.st-body .activity-places .activity-fit,.st-body .activity-fit{margin-top:8px}
/* Full schedule */
.ft-head{margin:0 0 16px}
.ft-head h2{margin:0 0 4px;font-size:22px;line-height:1.25;letter-spacing:-.01em}
.ft-head p{margin:0;font-size:14px;color:var(--muted)}
.ft-group{margin:0 0 18px}
.ft-group>h3{margin:0 0 8px;font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--muted)}
.ft-group.is-risky>h3{color:#c45a00}
.ft-past,.ft-others{margin:0 0 14px;border-radius:14px;background:var(--surface-2)}
.ft-past>summary,.ft-others>summary{padding:13px 14px;font-size:15px;font-weight:600;list-style:none;cursor:pointer}
.ft-past>summary span,.ft-others>summary span{margin-left:6px;color:var(--muted);font-weight:500}
.ft-past .tr-options{padding:0 10px 10px}
.ft-others ul{list-style:none;margin:0;padding:0 14px 12px;display:grid;gap:12px}
.ft-others li{display:grid;gap:2px}
.ft-others small{color:var(--muted);font-size:14px;line-height:1.4}
.ft-foot{margin:6px 2px 0;font-size:13px;line-height:1.5;color:var(--muted)}
.tr-note{display:block}
.jr-brief-card li{font-size:15px}
.ft .tr-options,.ft-past .tr-options{margin:0;padding:0 0 0 0!important;list-style:none}
.ft .tr-option{margin:0}
.ft-past .tr-options{padding:0 10px 10px!important}

/* Arrival brief: the few things that matter, before the long text. */
.bf{margin:0 0 12px}
.bf-do{margin:0 0 10px;font-size:18px;font-weight:700;line-height:1.35;letter-spacing:-.01em}
.bf-do small{margin-left:8px;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--ink) 9%,transparent);font-size:12px;font-weight:600;color:var(--muted);vertical-align:2px}
.bf-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.bf-list li{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:baseline;gap:8px;font-size:15px;line-height:1.4}
.bf-list span{font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--muted)}
.bf-list strong{font-weight:600}
.bf-cue strong{color:#b45300}
.bf-bring em{display:inline-block;margin:0 6px 4px 0;padding:2px 10px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-2);font-style:normal;font-size:14px;font-weight:600}
.bf-backup strong{font-weight:500;color:var(--ink)}
.st-more{margin-top:12px;border-top:1px solid color-mix(in srgb,var(--ink) 9%,transparent);padding-top:4px}
.st-more>summary{padding:10px 0;list-style:none;cursor:pointer;font-size:15px;font-weight:600;color:var(--accent-2)}
.st-more>summary::-webkit-details-marker{display:none}
.st-more[open]>summary{color:var(--muted)}
.jr-brief-card li{font-size:16px}

/* ── Arrival facts: tiles, not paragraphs ───────────────────────────────── */
.fx-grid{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.fx-tile{display:grid;grid-template-columns:20px minmax(0,1fr);column-gap:8px;align-items:center;padding:10px 12px;border-radius:14px;background:color-mix(in srgb,var(--ink) 5%,transparent)}
.fx-tile .icon{grid-row:1/3;font-size:18px;color:var(--accent-2)}
.fx-label{font-size:12px;font-weight:600;color:var(--muted)}
.fx-value{font-size:16px;font-weight:700;line-height:1.25;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.fx-tile.is-alert{background:color-mix(in srgb,#ff9500 16%,transparent)}
.fx-tile.is-alert .icon,.fx-tile.is-alert .fx-label{color:#b45300}
.st-deadline{align-self:start;margin-top:2px;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,#ff9500 20%,transparent);color:#a64a00;font-size:12px;font-weight:700;white-space:nowrap}
.st-more{margin:12px 0 0;border-radius:12px;background:color-mix(in srgb,var(--ink) 5%,transparent)}
.st-more>summary{padding:11px 14px;font-size:15px;font-weight:600;color:var(--accent-2);list-style:none;cursor:pointer}
.st-more>summary::-webkit-details-marker{display:none}
.st-more>div{padding:0 14px 12px}
.st-more .detail-section:first-child{margin-top:0}
/* Arrival card: tiles instead of label/value rows */
.bf-tiles{margin:0 0 4px}
.bf-tiles .fx-tile.is-bring,.bf-tiles .fx-tile.is-backup{grid-column:1/-1}
.bf-tiles .fx-value{font-weight:600;font-size:15px}
.bf-tiles .is-alert .fx-value{font-weight:700;font-size:16px;color:#a64a00}
.bf-tiles em{display:inline-block;margin:2px 6px 2px 0;padding:2px 10px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-2);font-style:normal;font-size:14px;font-weight:600}
.bf-tiles .is-backup .icon{color:#8e6a00}
.rm-more{margin-top:10px}
.rm-more>summary{list-style:none;font-size:14px;font-weight:600;color:var(--accent-2);cursor:pointer;padding:4px 2px}
.rm-more>summary::-webkit-details-marker{display:none}
.rm-more .rm-list{margin-top:8px}
.bf-tiles{grid-template-columns:minmax(0,1fr)}

/* ── 班次資訊 v2: interval, choose button, other options, door on the stop card ─ */
.transit-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.transit-section-head span{margin:0 4px;color:var(--muted);font-size:15px}
.transit-choose{display:block;width:100%;min-height:50px;margin:16px 0 0;border:0;border-radius:14px;background:var(--accent-2);color:#fff;font:inherit;font-size:17px;font-weight:650}
.transit-choose.is-selected{background:color-mix(in srgb,#30b158 88%,#000)}
.transit-choose:disabled{background:color-mix(in srgb,var(--ink) 10%,transparent);color:var(--muted)}
.transit-options{list-style:none;margin:0;padding:6px 14px;border-radius:16px;background:var(--surface)}
.transit-options li{display:grid;gap:3px;padding:12px 0}
.transit-options li+li{border-top:.5px solid color-mix(in srgb,var(--ink) 14%,transparent)}
.transit-options strong{font-size:16px;font-weight:650}
.transit-options span{font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums}
.transit-options small{font-size:14px;line-height:1.45;color:var(--muted)}
.transit-options a{font-size:14px}
.transport-schedule-actions .transport-full-schedule{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;margin-top:10px;padding:0 16px;border:0;border-radius:14px;background:var(--surface-2);color:var(--accent-2);font:inherit;font-size:16px;font-weight:600;text-align:left}
.transport-schedule-actions .transport-full-schedule i{font-size:16px;color:var(--muted)}

/* 班次資訊：全程轉乘 */
.transit-legs{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:6px}
.transit-legs li{display:grid;gap:2px;padding:10px 12px;border-radius:12px;background:var(--ios-fill,rgba(120,120,128,.12))}
.transit-legs strong{font-size:15px}
.transit-legs span{font-size:13px;opacity:.75;font-variant-numeric:tabular-nums}

/* 行程卡：下一班時間 chips（點開班次資訊） */
.transport-next{display:flex;gap:8px;overflow-x:auto;padding:2px 0 6px;scrollbar-width:none}
.transport-next::-webkit-scrollbar{display:none}
.transport-next .transit-chip{flex:0 0 auto;min-width:92px;text-align:left;align-items:flex-start}
.transport-next .transit-chip-arrive{font-size:12px;opacity:.7;font-variant-numeric:tabular-nums}
.transport-next .transit-chip.is-risky{opacity:.65}

/* Photo Browser opened from inside a modal <dialog>: its own full-screen top-layer dialog. */
dialog.photo-layer{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;overflow:hidden}
dialog.photo-layer::backdrop{background:transparent}
dialog.photo-layer .photo-browser-popup{position:fixed;inset:0;width:100%;height:100%;z-index:1}

/* 操作說明：第一頁沒有「上一步」，但保留它的位置，「下一步」才不會跑到中間。 */

/* 物品／任務／帳本：資料載入前的骨架 */
.sk-chips{width:70%;height:34px;border-radius:17px!important}
.list-skeleton .sk-row{height:56px}
/* 照片瀏覽：黑底，右上角是一顆 44pt 高的玻璃膠囊（下載＋✕），不是整條導覽列高度。 */
.photo-browser-popup,.photo-browser-popup .photo-browser-swiper-container,.photo-browser-popup .photo-browser-page{background:#000}
.photo-browser-popup .navbar{background:linear-gradient(#000a,transparent);--f7-navbar-bg-color:transparent}
.photo-browser-popup .navbar .navbar-inner{height:auto;min-height:0;padding:max(env(safe-area-inset-top),12px) 12px 8px}
.photo-browser-popup .navbar .navbar-inner .right{display:flex;align-items:center;gap:0;height:44px;margin:0 0 0 auto;padding:0 2px;border-radius:22px;background:rgba(40,40,44,.72);backdrop-filter:blur(16px) saturate(1.6);-webkit-backdrop-filter:blur(16px) saturate(1.6);box-shadow:none;color:#fff}
.photo-browser-popup .navbar .navbar-inner .right .link{min-width:44px;height:44px;min-height:44px;padding:0;margin:0;display:grid;place-items:center;color:#fff;background:none;box-shadow:none;border-radius:22px}
.photo-browser-popup .navbar .navbar-inner .right .link .icon{font-size:20px}
.photo-browser-popup .navbar .title{color:#fff}

/* 物品／任務：空清單 */
.cl-empty-state{display:grid;justify-items:center;gap:8px;padding:56px 28px 24px;text-align:center}
.cl-empty-glyph{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
.cl-empty-glyph .f7-icons{font-size:32px}
.cl-empty-state h2{margin:8px 0 0;font-size:22px;font-weight:700;letter-spacing:-.02em}
.cl-empty-state p{margin:0;max-width:19rem;color:var(--muted);font-size:15px;line-height:1.5}
.cl-empty-action{margin-top:14px;min-height:48px;padding:0 24px;border:0;border-radius:14px;background:var(--accent);color:#fff;font-size:17px;font-weight:650}

.now-hero-count{margin-top:12px;text-align:center;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.now-hero-count span{color:var(--ink);font-weight:600}

.cl-overdue-count{color:#ff3b30;font-weight:600}
.cl-overdue-count{background:none;border:0;padding:0;font:inherit;cursor:pointer}
.cl-row.is-flash{animation:cl-flash 1.2s ease}
@keyframes cl-flash{0%,60%{background:rgba(255,59,48,.14)}100%{background:transparent}}
.cl-header-actions{display:flex;gap:8px;align-items:center}
.cl-header-actions{flex:none;max-width:100%}
.cl-header-actions .cl-header-action{padding:0 12px;font-size:14px;white-space:nowrap}
.cl-header>div:first-child{min-width:0}
.cl-overdue-count{display:inline;width:auto;min-height:0;margin:0;white-space:nowrap}

/* Long reference URLs must never push a detail card wider than the screen. */
.sheet-modal a.external{overflow-wrap:anywhere;word-break:break-word}

/* 現在: the floating add button sits over the 接下來 list on first paint; keep row text
   (not the chevron) clear of its 56pt footprint so titles never run underneath it. */
.now-next>li>button{padding-right:calc(14px + 30px)}
.now-next>li>button .chevron,.now-next>li>button>:last-child:not(:only-child){flex:none}

/* The collapsed edit bar must not add height: single-line rows were 12px taller than their content. */
.cl-row:not(.is-editing){row-gap:0}
.cl-row:not(.is-editing)>.cl-edit-bar{padding-top:0;padding-bottom:0}
.cl-body{padding:12px 0}

/* Departure chips bleed to the card edge (-16px margin); keep the first chip aligned with the text column. */
.transit-chips.transport-next{padding:2px 16px 6px;scroll-padding-inline:16px}

.now-hero h2 .now-title-sub{display:block;margin-top:4px;font-size:.55em;font-weight:600;line-height:1.3;color:var(--muted)}

/* 左滑刪除: the red action sits behind the row and is revealed as the row slides */
.cl-swipe-delete{position:absolute;top:0;right:0;bottom:0;z-index:0;display:none;width:88px;padding:0;border:0;border-radius:0;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  background:#ff3b30;color:#fff;font-size:12px;font-weight:600}
.cl-swipe-delete .f7-icons{font-size:20px}
.cl-row[data-swipe-dir="left"] .cl-swipe-delete,.cl-row.is-swipe-open .cl-swipe-delete{display:flex}
.cl-row.is-indent-swiping[data-swipe-dir="left"]{background:var(--surface)}
.cl-row.is-indent-swiping[data-swipe-hint="delete"] .cl-swipe-delete{width:140px}
.cl-row{overflow:hidden}
.cl-row.is-lifted{overflow:visible}
.cl-row.is-swipe-open>.cl-check,.cl-row.is-swipe-open>.cl-body,.cl-row.is-swipe-open>.cl-info{transition:transform .28s var(--spring)}
.cl-row>.cl-check,.cl-row>.cl-body,.cl-row>.cl-info{position:relative;z-index:1}
.cl-row[data-swipe-dir="left"]>.cl-check,.cl-row[data-swipe-dir="left"]>.cl-body,.cl-row[data-swipe-dir="left"]>.cl-info,.cl-row.is-swipe-open>.cl-check,.cl-row.is-swipe-open>.cl-body,.cl-row.is-swipe-open>.cl-info{background:var(--surface)}

/* 選取 */
.cl-header-action.is-strong{font-weight:700}
.cl-row.is-selectable{cursor:pointer}
.cl-row.is-selectable .cl-title{pointer-events:none}
.cl-row.is-selectable.is-checked .cl-ring{border-color:color-mix(in srgb,var(--ink) 30%,transparent)}
.cl-row.is-selectable.is-checked .cl-ring::after{transform:scale(0)}
.cl-row.is-selectable.is-selected{background:color-mix(in srgb,var(--accent) 7%,var(--surface))}
.cl-row.is-selectable.is-selected>.cl-check,.cl-row.is-selectable.is-selected>.cl-body,.cl-row.is-selectable.is-selected>.cl-info{background:transparent}
.cl-row.is-selectable.is-selected .cl-ring{border-color:var(--accent)}
.cl-row.is-selectable.is-selected .cl-ring::after{transform:scale(1)}
.cl-select-bar{position:fixed;z-index:30;left:max(16px,var(--safe-left));right:max(16px,var(--safe-right));bottom:calc(var(--dock) + 10px);display:flex;gap:4px;padding:6px;border-radius:22px;
  background:color-mix(in srgb,var(--surface) 86%,transparent);-webkit-backdrop-filter:saturate(180%) blur(22px);backdrop-filter:saturate(180%) blur(22px);
  box-shadow:0 8px 28px rgba(0,0,0,.16),inset 0 0 0 .5px var(--line)}
.cl-select-bar button{flex:1;width:auto;min-height:48px;padding:0 6px;border:0;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:transparent;color:var(--accent);font-size:11px;font-weight:600}
.cl-select-bar button .f7-icons{font-size:22px}
.cl-select-bar button.is-danger{color:#ff3b30}
.cl-select-bar button:disabled{opacity:.35}
.cl-select-bar button:not(:disabled):active{background:color-mix(in srgb,var(--ink) 8%,transparent)}
.now-panel:has(.cl-select-bar){padding-bottom:calc(var(--dock) + 96px)!important}

/* 行李位置 */
.cl-section-progress{margin-left:8px;color:var(--muted);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.bags-tip{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:12px 12px 12px 14px;border-radius:16px;background:var(--surface);box-shadow:inset 0 0 0 .5px var(--line)}
.bags-tip-glyph{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.bags-tip strong{display:block;font-size:15px}
.bags-tip p{margin:2px 0 0;color:var(--muted);font-size:13px;line-height:1.35}
.bags-tip>button{flex:none;width:auto;min-height:36px;padding:0 16px;border:0;border-radius:18px;background:var(--accent);color:#fff;font-size:15px;font-weight:600}

/* 拿出來的: search + larger targets */
.hotel-search{position:relative;display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:0 12px;min-height:40px;border-radius:12px;background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--muted)}
.hotel-search input{flex:1;min-width:0;width:auto;height:40px;border:0;background:transparent;color:var(--ink);font-size:16px;outline:none}
.hotel-chip{min-height:44px}
.hotel-no-match{margin:24px 0;text-align:center;color:var(--muted)}
.hotel-pick[hidden],.hotel-chip[hidden]{display:none}
.hotel-out .cl-note{display:block;margin-top:1px}

.cl-section .cl-list.is-empty .cl-empty-slot{padding:10px 16px;font-size:14px}
.hotel-empty{grid-template-columns:auto 1fr;justify-items:start;align-items:center;gap:14px;padding:12px 16px;text-align:left}
.hotel-empty svg{width:56px;height:auto}
.hotel-empty p{font-size:14px;line-height:1.45}

/* 設定頁分段控制：32px 對手指偏小（長輩、單手操作），拉高到 40px 觸控區 */
.settings-segmented.segmented{--f7-button-height:40px}
.settings-segmented .button{min-height:40px!important}

/* 私人資料：沒有內容的類別收成一列（標題＋新增），不再各佔一個空白區塊 */
.private-section.is-empty{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:.5px solid var(--hairline,rgba(60,60,67,.18))}
.private-section.is-empty h3{margin:0 4px}
.private-section.is-empty .private-add{margin-top:0;flex:none}

/* 物品／任務：標題列固定在頂端，捲到哪裡「選取／隱藏已完成」都點得到。
   header 約 92px，往上收掉日期那一行（40px），只留標題與按鈕。 */
.now-page>.cl-header{position:sticky;top:calc(var(--safe-top) - 40px);z-index:9;margin:0 -16px;padding:8px 20px 12px;
  background:color-mix(in srgb,var(--paper) 78%,transparent);-webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6)}
.now-page>.cl-header::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:calc(var(--safe-top) + 40px);
  background:inherit;-webkit-backdrop-filter:inherit;backdrop-filter:inherit}
.now-page>.cl-header .cl-header-action{margin-bottom:0}
.now-page .cl-list-bar{top:calc(var(--safe-top) - 40px + var(--cl-head-h,96px) - 1px);padding-top:8px}

/* 任務標題列：三顆按鈕收窄，讓「N 件待辦・N 件逾期」維持一行，固定後高度和物品頁一致 */
#taskPanel .cl-header-actions{gap:6px}
#taskPanel .cl-header-actions .cl-header-action{padding:0 9px;font-size:13px}
#taskPanel .cl-header .now-date{white-space:nowrap}

/* 分類列右側的下拉：一次看到全部分類 */
.cl-list-all{flex:none;position:sticky;right:0;width:44px;min-height:36px;margin-left:auto;padding:0;border:0;display:grid;place-items:center;color:var(--accent);
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--paper) 92%,transparent) 40%);}
.cl-list-all .f7-icons{font-size:18px}
.cl-all-cats{max-height:min(60vh,520px);overflow-y:auto}
.cl-all-cat{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;border:0;background:transparent;text-align:left;font-size:17px}
.cl-all-cat small{color:var(--muted);font-size:15px}
.cl-all-cat[aria-selected="true"]{color:var(--accent);font-weight:600}

.ios-dialog-head p{white-space:pre-line}
.cl-all-tools{margin-top:12px}
.ledger-archived .ledger-row{display:flex;align-items:center;gap:12px;padding:10px 16px;min-height:56px}
.ledger-archived .ledger-row .button{flex:none;min-height:36px;padding:0 14px}
.ledger-archived>.button{width:100%;min-height:44px}

/* 分類折疊 */
.cl-section-fold{display:inline-flex;align-items:center;gap:6px;min-height:32px;margin:-6px 0;padding:0;border:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;text-align:left;flex:1;min-width:0}
.cl-section-fold .f7-icons{font-size:13px;transition:transform .2s ease}
.cl-section.is-collapsed .cl-section-fold .f7-icons{transform:rotate(-90deg)}
.cl-section.is-collapsed>.cl-list{display:none}
.cl-section.is-collapsed{margin-bottom:8px}
.cl-meta-photos{display:inline-flex;align-items:center;gap:3px}
@media (prefers-reduced-motion:reduce){.cl-section-fold .f7-icons{transition:none}}

/* 代購 */
.settings-icon[data-glyph="errand"]{--tile:#ff6482;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M5 8h14l-1 12H6L5 8z%22/%3E%3Cpath d=%22M9 8V7a3 3 0 0 1 6 0v1%22/%3E%3C/svg%3E")}
.er-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;border-radius:16px;overflow:hidden;background:var(--line);margin:0 16px}
.er-stat{display:grid;gap:2px;padding:12px 14px;background:var(--surface)}
.er-stat span{color:var(--muted);font-size:13px}
.er-stat strong{font-size:20px;font-variant-numeric:tabular-nums}
.er-stat.is-warn strong{color:var(--accent-2)}
.er-note{grid-column:1/-1;margin:0;padding:10px 14px;background:var(--surface);color:var(--muted);font-size:13px}
.er-filters{display:flex;gap:8px;padding:0 16px;overflow-x:auto;scrollbar-width:none}
.er-group{display:grid;gap:4px}
.er-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px 12px 10px 16px}
.er-main{display:grid;gap:2px;min-width:0;padding:0;border:0;background:transparent;color:inherit;text-align:left;font:inherit}
.er-title{font-size:16px;font-weight:600;overflow-wrap:anywhere}
.er-row.is-done .er-title{color:var(--muted)}
.er-meta,.er-money{color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.er-money{font-variant-numeric:tabular-nums}
.er-money em{font-style:normal;color:var(--accent-2)}
.er-thumb{width:44px;height:44px;border:0;border-radius:10px;background:var(--surface-2,rgba(120,120,128,.16));display:grid;place-items:center;color:var(--muted)}
.er-thumb img{width:44px;height:44px;border-radius:10px;object-fit:cover}
.er-chips{grid-column:2/-1;display:flex;gap:8px}
.er-chip{min-height:32px;padding:0 12px;border:0;border-radius:16px;background:rgba(120,120,128,.16);color:var(--text);font-size:14px;font-weight:600}
.er-chip.is-on{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent-2)}

/* eSIM */
.settings-icon[data-glyph="esim"]{--tile:#34aadc;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M7 3h7l4 4v14H7z%22/%3E%3Cpath d=%22M10 12h5v6h-5z%22/%3E%3C/svg%3E")}
.settings-icon[data-glyph="offers"]{--tile:#30b0c7;--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%223%22 y=%225%22 width=%2218%22 height=%2214%22 rx=%222.5%22/%3E%3Cpath d=%22M3 10h18M7 15h4%22/%3E%3C/svg%3E")}
.es-banner{display:grid;gap:8px;margin:calc(var(--safe-top) + 8px) 16px 0}
.es-banner[hidden]{display:none}
.es-banner-row{display:grid;gap:6px;padding:12px 14px;width:100%;border:0;border-radius:14px;background:var(--surface);color:var(--text);text-align:left;font:inherit}
.es-banner-row.is-expiring{background:color-mix(in srgb,#ff9500 18%,var(--surface))}
.es-banner-row.is-expired{background:color-mix(in srgb,#ff3b30 14%,var(--surface))}
.es-banner-text{display:grid;gap:1px;min-width:0}
.es-banner-text small{color:var(--muted);font-size:12px}
.es-banner-head{display:flex;align-items:center;gap:8px;min-width:0}
.es-banner-head small{margin-left:auto;color:var(--muted);font-size:12px}
.es-banner-count{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.es-banner-row.is-expiring .es-banner-count{color:#c93400}
.es-bar{display:block;height:6px;border-radius:3px;background:rgba(120,120,128,.2);overflow:hidden}
.es-bar i{display:block;height:100%;border-radius:3px;background:var(--accent-2,#007aff)}
.es-banner-note{color:var(--muted);font-size:12px}
.es-install-actions{display:grid;gap:10px;margin:8px 16px}
.es-primary,.es-secondary{min-height:50px;border:0;border-radius:14px;font:inherit;font-weight:600}
.es-primary{background:var(--accent-2,#007aff);color:#fff}
.es-secondary{background:rgba(120,120,128,.16);color:var(--accent-2,#007aff)}
.es-copy-row{width:100%;border:0;background:transparent;font:inherit;color:inherit}
.es-share-list[hidden]{display:none}
.es-list{list-style:none;margin:0 16px;padding:0;border-radius:16px;overflow:hidden;background:var(--surface)}
.es-row{display:grid;gap:8px;padding:12px 14px;border-top:.5px solid var(--line)}
.es-row:first-child{border-top:0}
.es-main{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;padding:0;border:0;background:transparent;color:inherit;text-align:left;font:inherit}
.es-serial{min-width:40px;padding:6px 8px;border-radius:10px;background:rgba(120,120,128,.16);text-align:center;font-weight:700;font-variant-numeric:tabular-nums}
.es-body{display:grid;gap:2px;min-width:0}
.es-title{font-weight:600;overflow-wrap:anywhere}
.es-meta,.es-status{color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.es-status.is-live{color:#248a3d}
.es-status.is-warn{color:#c93400;font-weight:600}
.es-status.is-expired{color:#d70015}
.es-actions{display:flex;gap:8px;padding-left:52px;flex-wrap:wrap}
.es-actions a.er-chip{display:inline-flex;align-items:center;text-decoration:none}
.es-archived-toggle{margin:0 16px;padding:8px 0;border:0;background:transparent;color:var(--muted);font:inherit;display:flex;gap:6px;align-items:center}
.es-preview{margin:0;padding:0 16px 10px;color:var(--muted);font-size:13px}
.es-serial-static,.es-code{margin-left:auto;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;text-align:right;user-select:all}
.es-buy{display:grid;gap:1px;margin:0 16px;border-radius:16px;overflow:hidden;background:var(--line)}
.es-buy-link,.es-coupon{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;border:0;background:var(--surface);color:var(--text);text-decoration:none;text-align:left;font:inherit}
.es-coupon{grid-template-columns:1fr auto}
.es-buy-text{display:grid;gap:1px}
.es-buy-text small{color:var(--muted);font-size:12px}
.es-coupon strong{font-size:18px;letter-spacing:.06em;font-variant-numeric:tabular-nums}
.es-copy{color:var(--accent-2);font-size:14px;font-weight:600}

.po-filters{display:grid;gap:10px;margin:0 16px}
.po-search{display:flex;align-items:center;gap:8px;padding:0 12px;min-height:40px;border-radius:12px;background:rgba(120,120,128,.16);color:var(--muted)}
.po-search input{flex:1;min-width:0;border:0;background:transparent;color:var(--text);font:inherit;outline:0}
.po-chips{display:flex;gap:8px;flex-wrap:wrap}
.po-list{list-style:none;margin:0 16px;padding:0;border-radius:16px;overflow:hidden;background:var(--surface)}
.po-offer{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:12px 14px;border-top:.5px solid var(--line)}
.po-offer:first-child{border-top:0}
.po-body{display:grid;gap:3px;min-width:0}
.po-body small{color:var(--muted);font-size:13px;line-height:1.4;overflow-wrap:anywhere}
.po-link{color:var(--accent-2,#007aff);font-size:14px;text-decoration:none;font-weight:600}
.po-badge{display:inline-block;align-self:start;padding:3px 8px;border-radius:8px;font-size:12px;font-weight:700;white-space:nowrap;background:rgba(120,120,128,.16)}
.po-badge.is-green{background:color-mix(in srgb,#34c759 22%,transparent);color:#1f7a3a}
.po-badge.is-blue{background:color-mix(in srgb,#007aff 18%,transparent);color:#0a5bc4}
.po-badge.is-orange{background:color-mix(in srgb,#ff9500 22%,transparent);color:#b25e00}
.po-notes{margin:0 16px;border-radius:16px;overflow:hidden;background:var(--surface)}
.po-notes details{padding:12px 14px;border-top:.5px solid var(--line)}
.po-notes details:first-child{border-top:0}
.po-notes summary{display:flex;gap:8px;align-items:center;cursor:pointer}
.po-notes ul{margin:8px 0 0;padding-left:20px;color:var(--muted);font-size:13px;line-height:1.5}

.cl-search{margin:0 16px 12px}
.cl-no-match{margin:0 16px}
.is-searching .cl-list-bar,.is-searching .cl-hint,.is-searching .bags-tip,.is-searching .cl-section-fold small{display:none}
.is-searching .cl-section.is-collapsed .cl-list{display:block}
.cl-row[hidden]{display:none}
.cl-section[hidden]{display:none}

.es-guide-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;width:calc(100% - 32px);margin:0 16px 12px;padding:12px 14px;border:0;border-radius:16px;background:var(--surface);color:var(--text);text-align:left;font:inherit}
.es-guide{--es-bg:#f2f2f7;--es-row:#fff;--es-ink:#1c1c1e;--es-sub:#8e8e93;--es-line:#c6c6c8}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .es-guide{--es-bg:#000;--es-row:#1c1c1e;--es-ink:#fff;--es-line:#38383a}}
:root[data-theme="dark"] .es-guide{--es-bg:#000;--es-row:#1c1c1e;--es-ink:#fff;--es-line:#38383a}
.es-step{margin:0 16px 20px}
.es-step h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:17px}
.es-step-no{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent-2,#007aff);color:#fff;font-size:13px}
.es-step p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.5}
.es-anim{display:block;width:100%;height:auto;border-radius:14px}
.es-finger{transform:translate(var(--fx),var(--fy));animation:es-finger 6s ease-in-out infinite}
.es-tap{transform-box:fill-box;transform-origin:center;animation:es-tap 6s ease-out infinite}
.es-knob-off{animation:es-off 6s ease-in-out infinite}
.es-knob-on{animation:es-on 6s ease-in-out infinite}
.es-knob-static{transform:translateX(14px)}
.es-track-off{animation:es-track-off 6s ease-in-out infinite}
.es-track-on{opacity:0;animation:es-track-on 6s ease-in-out infinite}
.es-swap-a{animation:es-swap-a 6s infinite}
.es-swap-b{animation:es-swap-b 6s infinite}
.es-waves{animation:es-waves 6s infinite}
@keyframes es-finger{0%,22%{transform:translate(calc(var(--fx) + 70px),calc(var(--fy) + 60px));opacity:0}34%{opacity:1}40%,92%{transform:translate(var(--fx),var(--fy));opacity:1}100%{transform:translate(calc(var(--fx) + 70px),calc(var(--fy) + 60px));opacity:0}}
@keyframes es-tap{0%,40%{transform:scale(.6);opacity:0}46%{transform:scale(.8);opacity:1}58%,100%{transform:scale(1.7);opacity:0}}
@keyframes es-off{0%,44%{transform:translateX(14px)}52%,92%{transform:translateX(0)}100%{transform:translateX(14px)}}
@keyframes es-on{0%,44%{transform:translateX(0)}52%,92%{transform:translateX(14px)}100%{transform:translateX(0)}}
@keyframes es-track-on{0%,44%{opacity:0}52%,92%{opacity:1}100%{opacity:0}}
@keyframes es-track-off{0%,44%{opacity:1}52%,92%{opacity:0}100%{opacity:1}}
@keyframes es-swap-a{0%,44%{opacity:1}52%,92%{opacity:0}100%{opacity:1}}
@keyframes es-swap-b{0%,44%{opacity:0}52%,92%{opacity:1}100%{opacity:0}}
@keyframes es-waves{0%,48%{opacity:0}58%,92%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.es-finger,.es-tap,.es-knob-off,.es-knob-on,.es-track-off,.es-track-on,.es-swap-a,.es-swap-b,.es-waves{animation:none}.es-swap-a,.es-tap{opacity:0}.es-finger{opacity:0}}
.es-anim text,.es-anim rect{stroke:none}

/* iOS Safari centers <button> text by default and focuses <dialog> with a ring */
button.sheet-row{text-align:left;font-family:inherit;color:var(--ink)}
.ios-sheet:focus,.ios-sheet:focus-visible{outline:none}
.es-copy-row:has(.es-code) .sheet-row-label{flex:none;max-width:45%}
.es-copy-row .es-code{flex:1 1 auto;min-width:0}
.es-copy-row .es-copy{margin-left:auto}

/* Ledger note: multi-line + itemized receipt hint */
.ledger-note-row textarea{min-height:72px;white-space:pre-wrap}
.ledger-items-hint{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 16px 0;padding:10px 14px;border-radius:12px;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--ink);font-size:14px;font-variant-numeric:tabular-nums}
.ledger-items-hint[hidden]{display:none}
.ledger-items-hint button{flex:none;border:0;background:transparent;color:var(--accent-2);font:inherit;font-weight:600}
