.app-loading{min-height:100dvh;color:var(--moon-200);align-content:center;place-items:center;gap:1rem;display:grid}.app-loading-glow{background:radial-gradient(circle, var(--honey-200) 0%, #ffd98a40 45%, transparent 70%);border-radius:50%;width:72px;height:72px;animation:2.4s ease-in-out infinite app-pulse}@keyframes app-pulse{0%,to{opacity:.7;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}.app-shell{min-height:100dvh;max-width:var(--app-max-width);background:var(--night-900);flex-direction:column;margin:0 auto;display:flex}@media (min-width:600px){body{background:radial-gradient(70% 60% at 50% 40%, #2a2550 0%, var(--night-950) 70%)}.app-shell{box-shadow:0 0 80px #060412b3}}.app-view{padding-bottom:calc(var(--nav-height) + var(--safe-bottom));flex:1;position:relative}.app-view-loading{min-height:60dvh}.bottom-nav{max-width:var(--app-max-width);z-index:20;height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--surface-strong);border-top:1px solid var(--hairline);grid-template-columns:repeat(4,1fr);margin:0 auto;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav-item{color:var(--moon-400);font-size:var(--text-xs);background:0 0;border:none;align-content:center;justify-items:center;gap:2px;min-height:48px;display:grid}.bottom-nav-item.is-active{color:var(--honey-300)}.banners{top:calc(.5rem + var(--safe-top));z-index:40;pointer-events:none;gap:.5rem;display:grid;position:fixed;left:.75rem;right:.75rem}.banner{pointer-events:auto;background:var(--surface-strong);border:1px solid var(--hairline);box-shadow:var(--shadow-soft);font-size:var(--text-sm);border-radius:16px;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.7rem 1rem;display:flex}.banner-offline{border-color:#a197bf80}.banner-error{border-color:#c4566b99;justify-content:space-between}.banner-update .btn{min-height:40px;padding:.4rem 1rem}.screen{padding:calc(1.25rem + var(--safe-top)) 1rem 1.5rem;max-width:640px;margin:0 auto}.screen-title{font-family:var(--font-voice);font-size:var(--text-xl);margin-bottom:.25rem}.screen-sub{color:var(--moon-200);font-size:var(--text-sm);margin:0 0 1.25rem}
