:root{--tabbar-h:64px}.routeLoadingShell{box-sizing:border-box;min-height:100svh;padding:max(24px, env(safe-area-inset-top)) 20px calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + 24px);background:var(--paper);color:var(--ink)}.routeLoadingShellInner{gap:14px;width:min(100%,28rem);margin:0 auto;display:grid}.routeLoadingShellBar,.routeLoadingShellCard{border-radius:var(--radius-sm,10px);background:color-mix(in srgb, var(--ink) 8%, var(--panel-raised,var(--paper)));animation:1.4s ease-in-out infinite routeLoadingPulse;display:block}.routeLoadingShellBar{width:42%;height:1.1rem}.routeLoadingShellBar--short{opacity:.85;width:28%;height:.85rem;animation-delay:.12s}.routeLoadingShellCard{width:100%;height:5.5rem;animation-delay:.2s}.routeLoadingShellCard+.routeLoadingShellCard{opacity:.9;height:4.25rem;animation-delay:.32s}.routeLoadingShellLabel{font:600 .78rem/1.3 var(--font-body,system-ui);color:var(--ink-soft,var(--muted));letter-spacing:.02em;margin:6px 0 0}@keyframes routeLoadingPulse{0%,to{opacity:.72}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.routeLoadingShellBar,.routeLoadingShellCard{animation:none}}.mobileTabBar{display:none}@keyframes mobileTabDropGlow{0%,to{box-shadow:0 2px 8px color-mix(in srgb, var(--brass) 20%, transparent)}50%{box-shadow:0 2px 13px color-mix(in srgb, var(--brass) 32%, transparent)}}@media (max-width:640px){body{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}.mobileTabBar{z-index:700;background:linear-gradient(to top, color-mix(in srgb, var(--paper) 88%, transparent), transparent);padding:0 12px calc(6px + env(safe-area-inset-bottom,0px));pointer-events:none;transition:opacity var(--duration-base) var(--ease-out), transform var(--duration-base) var(--ease-out);display:block;position:fixed;bottom:0;left:0;right:0}:is(body:has(.appShell.detail-open) .mobileTabBar,body:has(.appShell.planning-open) .mobileTabBar){opacity:0;pointer-events:none;transform:translateY(110%)}.mobileTabList{--tab-count:6;--tab-inset:2px;max-width:420px;padding:var(--tab-inset);border:1px solid color-mix(in srgb, var(--brass) 18%, var(--line));background:var(--panel-raised);box-shadow:0 -3px 12px color-mix(in srgb, var(--ink-deep) 10%, transparent), 0 4px 12px color-mix(in srgb, var(--ink-deep) 8%, transparent);pointer-events:auto;border-radius:16px;justify-content:space-around;align-items:center;gap:0;margin:0 auto;list-style:none;display:flex;position:relative}.mobileTabHighlight{top:var(--tab-inset);bottom:var(--tab-inset);left:var(--tab-inset);width:calc((100% - 2 * var(--tab-inset)) / var(--tab-count));background:color-mix(in srgb, var(--brass) 13%, transparent);transform:translateX(calc(var(--active-index,-1) * 100%));z-index:0;pointer-events:none;border-radius:12px;position:absolute}@media (prefers-reduced-motion:no-preference){.mobileTabHighlight{transition:transform var(--duration-base) var(--ease-out-strong), opacity var(--duration-fast) var(--ease-out-strong)}}.mobileTabItem{z-index:1;flex:1 1 0;min-width:0;display:flex;position:relative}.mobileTab{min-height:44px;color:var(--muted,var(--ink-soft));letter-spacing:0;transition:color var(--duration-base) var(--ease-out), background var(--duration-base) var(--ease-out), transform var(--duration-press) var(--ease-out-strong);touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:12px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1px;padding:4px 2px;font-size:.6875rem;font-weight:700;line-height:1.05;text-decoration:none;display:flex}.mobileTabIcon{color:currentColor;width:20px;height:20px;transition:color var(--duration-base) var(--ease-out), transform var(--duration-press) var(--ease-out-strong), background var(--duration-base) var(--ease-out);place-items:center;display:grid}.mobileTabLabel{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.mobileTab:not(.isActive):not(.mobileTabPrimary) .mobileTabIcon{color:var(--ink-soft)}.mobileTab:focus-visible{color:var(--ink);background:color-mix(in srgb, var(--brass) 8%, transparent);outline:2px solid var(--brass);outline-offset:-2px}}@media (max-width:640px) and (hover:hover) and (pointer:fine){.mobileTab:hover{color:var(--ink);background:color-mix(in srgb, var(--brass) 8%, transparent)}}@media (max-width:640px){.mobileTab.isActive{color:var(--brass);background:color-mix(in srgb, var(--brass) 12%, transparent);box-shadow:none}.mobileTab.isActive .mobileTabIcon{color:var(--brass)}.mobileTabPrimary{color:var(--ink-soft)}.mobileTabPrimary .mobileTabIcon{background:color-mix(in srgb, var(--brass) 92%, var(--panel-raised));width:24px;height:24px;color:var(--color-on-accent,#fdfaf2);box-shadow:0 2px 8px color-mix(in srgb, var(--brass) 20%, transparent);border:1.5px solid color-mix(in srgb, var(--panel-raised) 92%, transparent);border-radius:50%;margin-top:-2px;margin-bottom:-2px}.mobileTabPrimary .mobileTabLabel{color:var(--ink-soft);font-weight:700}.mobileTabPrimary:focus-visible{background:color-mix(in srgb, var(--brass) 8%, transparent);color:var(--brass)}.mobileTabPrimary:focus-visible .mobileTabLabel{color:var(--brass)}.mobileTabPrimary:focus-visible .mobileTabIcon{background:var(--brass-bright,#ff8a5c);transform:translateY(-1px)}.mobileTabPrimary:active .mobileTabIcon{transform:scale(var(--press-scale-firm));box-shadow:0 1px 4px color-mix(in srgb, var(--brass) 26%, transparent);animation-play-state:paused}}@media (max-width:640px) and (prefers-reduced-motion:no-preference){.mobileTabPrimary .mobileTabIcon{animation:mobileTabDropGlow 3.2s var(--ease-in-out-strong) infinite}}@media (max-width:640px) and (hover:hover) and (pointer:fine){.mobileTabPrimary:hover{background:color-mix(in srgb, var(--brass) 8%, transparent);color:var(--brass)}.mobileTabPrimary:hover .mobileTabLabel{color:var(--brass)}.mobileTabPrimary:hover .mobileTabIcon{background:var(--brass-bright,#ff8a5c);transform:translateY(-1px)}}@media (max-width:390px){.mobileTabBar{padding-inline:10px}}@media (max-width:360px){.mobileTabList{--tab-inset:1px;max-width:340px}.mobileTab{min-height:44px;padding:2px 0;font-size:.6875rem}}@media (prefers-reduced-motion:reduce){.mobileTab,.mobileTabIcon,.mobileTabBar{transition:none}}
