*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#080a0f;--border:#1e2530;--text:#e8edf5;--muted:#3d4554;--accent:#00ff87;--accent-glow:rgba(0,255,135,.18)}body,html{height:100%;background:var(--bg);color:var(--text);font-family:Syne,sans-serif;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:48px 48px;opacity:.45;pointer-events:none;z-index:0}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}@keyframes progressIn{0%{width:0}to{width:72%}}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.pwa-banner{position:fixed;bottom:0;left:0;right:0;z-index:9999;justify-content:space-between;padding:14px 20px;background:#0e1117;border-top:1px solid var(--border);box-shadow:0 -4px 24px rgba(0,0,0,.4);animation:slideUp .3s ease-out forwards}.pwa-banner,.pwa-banner-left{display:flex;align-items:center;gap:12px}.pwa-banner-left{min-width:0}.pwa-banner-icon{font-size:1.4rem;flex-shrink:0}.pwa-banner-text{display:flex;flex-direction:column;gap:2px;font-size:.88rem;line-height:1.4}.pwa-banner-text strong:first-child{color:var(--text);font-weight:700}.pwa-banner-text span{color:#7a8499}.pwa-banner-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.pwa-btn-install{background:var(--accent);color:#080a0f;font-family:Syne,sans-serif;font-weight:700;font-size:.85rem;padding:8px 16px;border-radius:8px;border:none;cursor:pointer;transition:background .2s}.pwa-btn-install:hover{background:#00cc6a}.pwa-btn-dismiss{background:transparent;color:#7a8499;font-family:Syne,sans-serif;font-size:.85rem;padding:8px 12px;border-radius:8px;border:1px solid var(--border);cursor:pointer;transition:color .2s,border-color .2s}.pwa-btn-dismiss:hover{color:var(--text);border-color:#7a8499}@media (max-width:480px){.pwa-banner{flex-direction:column;align-items:flex-start;padding:16px}.pwa-banner-actions{width:100%;justify-content:flex-end}}