.header{color:var(--text-base-content)}.header>div{align-items:center;display:flex;flex-direction:column;flex-wrap:wrap;margin:0 auto;max-width:64rem;padding:var(--sp-3)}@media(min-width:768px){.header>div{flex-direction:row}}.header>div>a{align-items:center;color:var(--text-base-content);display:flex;font-weight:500;margin-bottom:var(--sp-2)}@media(min-width:768px){.header>div>a{margin-bottom:0}}.header>div>a img{border:2px solid var(--primary);border-radius:50%;color:var(--white);height:2.5rem;transition:box-shadow .2s ease-in-out;width:2.5rem}.header>div>a img:hover{box-shadow:0 0 5px var(--primary)}.header>div>a span{font-size:1.5rem;line-height:1.75rem;margin-left:var(--sp-2)}.header>div>nav{display:flex;flex-wrap:wrap;font-size:1rem;gap:var(--sp-3);justify-content:center;line-height:1.5rem}@media(min-width:768px){.header>div>nav{margin-left:auto}}.header>div>nav>a.navitem{color:var(--text-base-content)}.header>div>nav>a.navitem:hover{color:var(--header-link-hover);text-decoration:underline}.header>div>nav>a.router-link-active{text-decoration:underline}.header>div>nav a#theme{cursor:pointer;padding-top:0}.header>div>nav a#theme,.header>div>nav a#theme svg{height:1.5rem;width:1.5rem}section.container{color:var(--text);overflow:hidden}section.container>div{margin:0 auto;max-width:64rem;padding:var(--sp-8) var(--sp-3)}.pwa-banner{bottom:var(--sp-2);left:var(--sp-2);margin:0 auto;max-width:28rem;position:fixed;right:var(--sp-2);z-index:1000}.banner-content{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:var(--bg);border:1px solid var(--border);border-radius:var(--sp-1);box-shadow:0 4px 12px #00000026;display:flex;gap:var(--sp-2);justify-content:space-between;padding:var(--sp-2);position:relative}.banner-content:before{background:var(--primary);border-radius:var(--sp-1) var(--sp-1) 0 0;content:"";height:3px;left:0;position:absolute;right:0;top:0}.banner-info{flex:1;gap:var(--sp-2);min-width:0}.banner-icon,.banner-info{align-items:center;display:flex}.banner-icon{background:var(--primary);border-radius:50%;color:var(--white);flex-shrink:0;height:2rem;justify-content:center;width:2rem}.banner-icon svg{height:1rem;width:1rem}.banner-text{flex:1;min-width:0}.banner-text h4{color:var(--text-base-content);font-size:.875rem;font-weight:600;line-height:1.3;margin:0 0 var(--sp-05) 0}.banner-text p{color:var(--text-secodary-content);font-size:.75rem;line-height:1.3;margin:0}.banner-actions{align-items:center;display:flex;flex-shrink:0;gap:var(--sp-1)}.install-btn{background:var(--primary);border:none;border-radius:var(--sp-05);color:var(--white);cursor:pointer;font-size:.75rem;font-weight:500;padding:var(--sp-05) var(--sp-2);transition:all .2s ease;white-space:nowrap}.install-btn:hover{opacity:.9;transform:translateY(-1px)}.install-btn:active{transform:translateY(0)}.ios-hint{align-items:center;color:var(--text-secodary-content);display:flex;font-size:.7rem;gap:var(--sp-05);max-width:4rem;text-align:center}.ios-hint span{white-space:nowrap}.ios-hint svg{color:var(--primary);flex-shrink:0;height:.75rem;width:.75rem}.dismiss-btn{align-items:center;background:none;border:none;border-radius:50%;color:var(--text-secodary-content);cursor:pointer;display:flex;font-size:.875rem;height:1.5rem;justify-content:center;line-height:1;padding:var(--sp-05);transition:all .2s ease;width:1.5rem}.dismiss-btn:hover{background:var(--bg-neutral);color:var(--text-base-content)}.banner-enter-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}.banner-leave-active{transition:all .3s cubic-bezier(.4,0,1,1)}.banner-enter-from{opacity:0;transform:translateY(100%) scale(.9)}.banner-leave-to{opacity:0;transform:translateY(50px) scale(.95)}.banner-enter-to,.banner-leave-from{opacity:1;transform:translateY(0) scale(1)}@media(max-width:640px){.pwa-banner{bottom:var(--sp-1);left:var(--sp-1);right:var(--sp-1)}.banner-content{gap:var(--sp-1);padding:var(--sp-1) var(--sp-2)}.banner-info{gap:var(--sp-1)}.banner-icon{height:1.5rem;width:1.5rem}.banner-icon svg{height:.875rem;width:.875rem}.banner-text h4{font-size:.8rem}.banner-text p,.install-btn{font-size:.7rem}.install-btn{padding:var(--sp-05) var(--sp-1)}.ios-hint{font-size:.65rem;max-width:3rem}.dismiss-btn{font-size:.75rem;height:1.25rem;width:1.25rem}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.banner-icon{animation:pulse 3s ease-in-out infinite}
