*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.6;color:#333;background-color:#f5f5f5;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}#app{display:grid;grid-template-rows:auto 1fr auto;grid-template-areas:"header" "main" "footer";min-height:100vh;min-height:100dvh;max-width:100vw;overflow-x:hidden}.app-header{grid-area:header;background-color:#1a1a1a;color:#fff;padding:1rem;text-align:center;box-shadow:0 2px 4px #0000001a}.header-content{display:flex;align-items:center;justify-content:center;position:relative;max-width:600px;margin:0 auto}.header-content h1{flex:1;text-align:center}.header-content .pwa-install-button{position:absolute;right:0}.app-header h1{font-size:1.25rem;font-weight:600;margin:0}.app-main{grid-area:main;padding:1rem .75rem;display:grid;grid-template-rows:auto auto auto;grid-template-areas:"timeline" "solar" "status";gap:1.5rem;align-content:start;max-width:100%;overflow-x:hidden}.solar-info{grid-area:solar;display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.sunrise-delta,.sunset-delta{background:#fff;border-radius:12px;padding:1.25rem .75rem;text-align:center;box-shadow:0 2px 8px #0000001a;border:1px solid #e0e0e0;display:flex;flex-direction:column;gap:.5rem;min-height:100px;position:relative;transition:all .3s ease}.sunrise-delta:before,.sunset-delta:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;border-radius:12px 12px 0 0;opacity:0;transition:opacity .3s ease}.sunrise-delta:before{background:linear-gradient(90deg,#ff6f00,#ff8f00)}.sunset-delta:before{background:linear-gradient(90deg,#d84315,#ff5722)}.sunrise-delta.fresh:before,.sunset-delta.fresh:before{opacity:1}.sunrise-delta.stale,.sunset-delta.stale{background-color:#fff8e1;border-color:#ffcc02}.sunrise-delta.error,.sunset-delta.error{background-color:#ffebee;border-color:#f44336}.delta-label{font-size:.875rem;color:#424242;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.delta-value{font-size:1rem;color:#1a1a1a;font-weight:600;min-height:2rem;display:flex;align-items:center;justify-content:center;text-align:center;word-break:break-word;hyphens:auto;text-shadow:0 1px 2px rgba(0,0,0,.1)}.sun-timeline{grid-area:timeline;background:#fafafa;border-radius:16px;padding:2rem 1.5rem;box-shadow:0 1px 3px #0000000d;border:1px solid #f0f0f0;position:relative;transition:all .3s ease}.sun-timeline:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,#ffa726,#66bb6a,#ff7043);border-radius:16px 16px 0 0;opacity:0;transition:opacity .3s ease}.sun-timeline.fresh:before{opacity:.6}.timeline-container{position:relative;width:100%}.timeline-track{position:relative;height:60px;background:#f8f9fa;border-radius:30px;border:1px solid #e9ecef;overflow:hidden;margin-bottom:1.5rem;box-shadow:inset 0 1px 2px #00000005}.timeline-progress{position:absolute;top:0;left:0;height:100%;background:linear-gradient(90deg,#ffa72626,#66bb6a26);border-radius:30px;transition:width .5s ease;width:0%}.timeline-marker{position:absolute;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;z-index:10;transition:all .3s ease;cursor:pointer}.timeline-marker:hover{transform:translate(-50%,-50%) scale(1.05)}.marker-icon{font-size:1.5rem;margin-bottom:.25rem;filter:none;transition:transform .2s ease}.timeline-marker:hover .marker-icon{transform:scale(1.1)}.marker-time{font-size:.875rem;font-weight:600;color:#495057;background:#fffffff2;padding:.25rem .5rem;border-radius:4px;border:1px solid #dee2e6;margin-bottom:.25rem;min-width:3rem;text-align:center;box-shadow:0 1px 2px #0000000d}.marker-label{font-size:.75rem;font-weight:500;color:#6c757d;text-transform:uppercase;letter-spacing:.5px}.sunrise-marker{left:20%}.sunrise-marker .marker-icon{color:#ffa726}.sunrise-marker .marker-time{border-color:#ffa726;color:#f57c00}.current-time-marker{left:50%;z-index:15}.current-time-marker .marker-icon{color:#66bb6a;font-size:1.75rem;animation:pulse-glow 3s infinite}.current-time-marker .marker-time{border-color:#66bb6a;color:#388e3c;font-weight:700;font-size:.8rem;background:#fff;box-shadow:0 2px 4px #66bb6a33;min-width:5rem;padding:.3rem .6rem}.current-time-marker .marker-label{color:#66bb6a;font-weight:600;font-size:.8rem}@keyframes pulse-glow{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}}.sunset-marker{left:80%}.sunset-marker .marker-icon{color:#ff7043}.sunset-marker .marker-time{border-color:#ff7043;color:#d84315}.timeline-labels{display:flex;justify-content:space-between;font-size:.75rem;color:#6c757d;font-weight:400}.timeline-start-label,.timeline-end-label{padding:.25rem .5rem;background:#f8f9facc;border-radius:4px;border:1px solid #e9ecef;color:#6c757d}@media (max-width: 360px){.sun-timeline{padding:1.5rem 1rem}.timeline-track{height:50px}.marker-icon{font-size:1.25rem}.current-time-marker .marker-icon{font-size:1.5rem}.marker-time{font-size:.8rem;padding:.2rem .4rem}.current-time-marker .marker-time{font-size:.75rem;min-width:4rem}.marker-label{font-size:.7rem}}@media (min-width: 480px){.sun-timeline{padding:2.5rem 2rem}.timeline-track{height:70px}.marker-icon{font-size:1.75rem}.current-time-marker .marker-icon{font-size:2rem}.marker-time{font-size:.95rem;padding:.3rem .6rem}.current-time-marker .marker-time{font-size:.85rem;min-width:6rem}.marker-label{font-size:.8rem}}@media (prefers-color-scheme: dark){.sun-timeline{background-color:#1a1a1a;border-color:#2d2d2d}.timeline-track{background:#2a2a2a;border-color:#3d3d3d}.timeline-progress{background:linear-gradient(90deg,#ffa72633,#66bb6a33)}.marker-time{background:#1a1a1af2;color:#e0e0e0;border-color:#3d3d3d}.marker-label,.timeline-labels{color:#a0a0a0}.timeline-start-label,.timeline-end-label{background:#1a1a1acc;border-color:#3d3d3d;color:#a0a0a0}}.sun-timeline.error{background-color:#fef7f7;border-color:#fecaca}.sun-timeline.error .timeline-track{background:#fef2f2;border-color:#fecaca}.sun-timeline.error .marker-time{background:#fecaca1a;border-color:#fecaca;color:#dc2626}.sun-timeline.dawn .timeline-track{background:#fefce8}.sun-timeline.day .timeline-track{background:#f0f9ff}.sun-timeline.dusk .timeline-track{background:#fdf2f8}.sun-timeline.night .timeline-track{background:#1e1b4b}.timeline-marker:focus{outline:3px solid #2196f3;outline-offset:2px;border-radius:4px}.timeline-marker:focus .marker-icon{transform:scale(1.3)}@media (prefers-reduced-motion: reduce){.timeline-marker,.timeline-progress,.marker-icon{transition:none}.current-time-marker .marker-icon{animation:none}}.status-info{grid-area:status;background:#fff;border-radius:12px;padding:1rem .75rem;box-shadow:0 2px 8px #0000001a;border-left:4px solid transparent;transition:border-color .3s ease;display:flex;flex-direction:column;gap:.75rem}.status-info.fresh{border-left-color:#4caf50}.status-info.stale{border-left-color:#ff9800;background-color:#fff8e1}.status-info.error{border-left-color:#f44336;background-color:#ffebee}.location-status{display:flex;align-items:center;gap:.75rem;font-size:1rem;color:#333;min-height:44px}.status-indicator{width:12px;height:12px;border-radius:50%;background-color:#ccc;flex-shrink:0;border:2px solid transparent}.status-indicator.available{background-color:#2e7d32;border-color:#2e7d32}.status-indicator.pending{background-color:#f57c00;border-color:#f57c00;animation:pulse 2s infinite}.status-indicator.denied,.status-indicator.error{background-color:#d32f2f;border-color:#d32f2f}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.connection-status{display:flex;align-items:center;gap:.75rem;font-size:.9rem;color:#666;padding:.5rem .75rem;background-color:#f5f5f5;border-radius:8px;border:1px solid #e0e0e0}.connection-indicator{width:10px;height:10px;border-radius:50%;flex-shrink:0}.connection-indicator.online{background-color:#4caf50}.connection-indicator.offline{background-color:#ff9800;animation:pulse 2s infinite}.data-warning{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:#f57c00;padding:.5rem .75rem;background-color:#fff8e1;border-radius:8px;border:1px solid #ffcc02}.warning-icon{font-size:1rem;flex-shrink:0}.warning-time{font-size:.8rem;color:#e65100;margin-left:auto}.error-container{display:flex;flex-direction:column;gap:1rem}.error-message{padding:1.25rem;background-color:#ffebee;border:2px solid #f44336;border-radius:12px;position:relative;animation:slideIn .3s ease-out}.error-message:not(.location-error):not(.calculation-error):not(.general-error){display:flex;flex-direction:column;gap:1rem}.error-message:not(.location-error):not(.calculation-error):not(.general-error):before{content:"⚠️";position:absolute;top:1rem;left:.75rem;font-size:1.2rem;line-height:1}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.error-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.error-icon{font-size:1.5rem;flex-shrink:0}.error-title{font-size:1.1rem;font-weight:600;color:#b71c1c;margin:0}.error-text{color:#d32f2f;font-size:1rem;line-height:1.4;margin:0 0 1rem}.error-message .error-text{color:#b71c1c;font-size:1rem;line-height:1.4;font-weight:500;margin-left:2rem}.error-actions{display:flex;flex-direction:column;gap:.75rem}@media (min-width: 480px){.error-actions{flex-direction:row;gap:1rem}}.location-error{border-color:#2196f3;background-color:#e3f2fd}.location-error .error-title{color:#0d47a1}.location-error .error-text{color:#1565c0}.calculation-error{border-color:#ff9800;background-color:#fff8e1}.calculation-error .error-title{color:#e65100}.calculation-error .error-text{color:#f57c00}.retry-button,.submit-button{background-color:#1a1a1a;color:#fff;border:2px solid #1a1a1a;border-radius:8px;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;cursor:pointer;min-height:48px;min-width:48px;transition:all .2s ease;text-transform:uppercase;letter-spacing:.5px;position:relative;overflow:hidden;flex:1}.retry-button:before,.submit-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s ease}.retry-button:hover:before,.submit-button:hover:before{left:100%}.retry-button:hover,.submit-button:hover{background-color:#333;border-color:#333;transform:translateY(-1px);box-shadow:0 4px 8px #0003}.retry-button:active,.submit-button:active{background-color:#555;border-color:#555;transform:translateY(0);box-shadow:0 2px 4px #0003}.retry-button:focus,.submit-button:focus{outline:3px solid #4caf50;outline-offset:3px;box-shadow:0 0 0 1px #fff,0 0 0 4px #4caf50}.secondary-button,.cancel-button{background-color:transparent;color:#1a1a1a;border:2px solid #1a1a1a;border-radius:8px;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;cursor:pointer;min-height:48px;min-width:48px;transition:all .2s ease;text-transform:uppercase;letter-spacing:.5px;flex:1}.secondary-button:hover,.cancel-button:hover{background-color:#1a1a1a;color:#fff;transform:translateY(-1px);box-shadow:0 4px 8px #0003}.secondary-button:focus,.cancel-button:focus{outline:3px solid #4caf50;outline-offset:3px}.manual-location-form{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 4px 16px #00000026;border:2px solid #2196f3;position:relative;animation:slideIn .3s ease-out}.form-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #e0e0e0}.form-header h3{font-size:1.2rem;font-weight:600;color:#1a1a1a;margin:0}.close-button{background:none;border:none;font-size:1.5rem;color:#666;cursor:pointer;padding:.25rem;min-width:44px;min-height:44px;border-radius:50%;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.close-button:hover{background-color:#f5f5f5;color:#333}.close-button:focus{outline:2px solid #2196f3;outline-offset:2px}.form-group{margin-bottom:1.25rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 480px){.form-row{grid-template-columns:1fr;gap:1rem}}.form-group label{display:block;font-size:1rem;font-weight:600;color:#333;margin-bottom:.5rem}.form-group input{width:100%;padding:.875rem;font-size:1rem;border:2px solid #e0e0e0;border-radius:8px;background-color:#fff;transition:border-color .2s ease;min-height:48px}.form-group input:focus{outline:none;border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a}.form-group input:invalid{border-color:#f44336}.form-group input:invalid:focus{border-color:#f44336;box-shadow:0 0 0 3px #f443361a}.form-help{display:block;font-size:.875rem;color:#666;margin-top:.25rem}.form-actions{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}@media (min-width: 480px){.form-actions{flex-direction:row;gap:1rem}}.form-error{margin-top:1rem;padding:.75rem;background-color:#ffebee;border:1px solid #f44336;border-radius:8px;color:#d32f2f;font-size:.9rem}.location-help{margin-top:1.5rem;padding-top:1rem;border-top:1px solid #e0e0e0;font-size:.9rem;color:#666}.location-help p{margin:0 0 .5rem;font-weight:600}.location-help ul{margin:0;padding-left:1.25rem}.location-help li{margin-bottom:.25rem}.app-footer{grid-area:footer;background-color:#f0f0f0;padding:.75rem;text-align:center;border-top:1px solid #e0e0e0}.last-updated{font-size:.875rem;color:#424242;font-weight:500;display:flex;align-items:center;justify-content:center;gap:.5rem}.last-updated:before{content:"🕒";font-size:1rem}.last-updated.stale{color:#f57c00}.last-updated.stale:before{content:"⚠️"}.last-updated.error{color:#d32f2f}.last-updated.error:before{content:"❌"}@media (min-width: 360px){.app-main{padding:1rem;gap:1.75rem}.solar-info{gap:1rem}.sunrise-delta,.sunset-delta{padding:1.5rem 1rem}.delta-value{font-size:1.1rem}}@media (min-width: 480px){.app-main{max-width:480px;margin:0 auto;padding:2rem 1rem;gap:2rem}.app-header h1{font-size:1.5rem}.delta-label{font-size:.9rem}.delta-value{font-size:1.1rem;min-height:2.5rem}}@media (min-width: 768px){.app-main{max-width:600px;padding:3rem 2rem}.solar-info{gap:2rem}.sunrise-delta,.sunset-delta{padding:2rem 1.5rem}}@media (orientation: landscape) and (max-height: 500px){.app-main{gap:1rem;padding:.75rem}.sunrise-delta,.sunset-delta{padding:1rem .75rem;min-height:80px}.delta-value{font-size:.9rem;min-height:1.5rem}}@media (orientation: landscape) and (max-height: 400px){.app-header{padding:.5rem}.app-header h1{font-size:1.1rem}.app-main{gap:.75rem;padding:.5rem}}@media (prefers-contrast: high){.delta-value{color:#000}.app-header{background-color:#000}.retry-button{background-color:#000;border:2px solid #000}.status-info,.time-display,.sunrise-delta,.sunset-delta{border:1px solid #000}}@media (prefers-reduced-motion: reduce){.status-indicator.pending{animation:none}.retry-button{transition:none}}@media (prefers-color-scheme: dark){body{background-color:#121212;color:#e0e0e0}.time-display,.sunrise-delta,.sunset-delta,.status-info,.manual-location-form{background-color:#1e1e1e;color:#e0e0e0;border-color:#333}.delta-value{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3)}.delta-label,.location-status{color:#b0b0b0}.app-footer{background-color:#1e1e1e;border-top-color:#333}.last-updated{color:#b0b0b0}.error-message{background-color:#2d1b1b;border-color:#d32f2f}.error-text{color:#ff6b6b}.location-error{background-color:#1a2332;border-color:#2196f3}.location-error .error-title{color:#64b5f6}.location-error .error-text{color:#42a5f5}.calculation-error{background-color:#2d2416;border-color:#ff9800}.calculation-error .error-title{color:#ffb74d}.calculation-error .error-text{color:#ffa726}.connection-status{background-color:#2a2a2a;border-color:#444;color:#b0b0b0}.data-warning{background-color:#2d2416;border-color:#f57c00;color:#ffb74d}.warning-time{color:#ff8f00}.form-group input{background-color:#2a2a2a;border-color:#444;color:#e0e0e0}.form-group input:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f333}.form-group label{color:#e0e0e0}.form-help{color:#b0b0b0}.form-error{background-color:#2d1b1b;border-color:#d32f2f;color:#ff6b6b}.location-help{color:#b0b0b0;border-top-color:#444}.close-button{color:#b0b0b0}.close-button:hover{background-color:#333;color:#e0e0e0}.status-info.stale{background-color:#2d2416}.status-info.error{background-color:#2d1b1b}.sunrise-delta.stale,.sunset-delta.stale{background-color:#2d2416;border-color:#f57c00}.sunrise-delta.error,.sunset-delta.error{background-color:#2d1b1b;border-color:#d32f2f}}@supports (padding: max(0px)){.app-header{padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));padding-top:max(1rem,env(safe-area-inset-top))}.app-main{padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right))}.app-footer{padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right));padding-bottom:max(.75rem,env(safe-area-inset-bottom))}}.data-fresh{position:relative}.data-fresh:after{content:"✓";position:absolute;top:.5rem;right:.5rem;color:#2e7d32;font-size:.875rem;font-weight:700;opacity:.7}.data-stale{position:relative}.data-stale:after{content:"⚠";position:absolute;top:.5rem;right:.5rem;color:#f57c00;font-size:.875rem;font-weight:700;opacity:.8}.data-error{position:relative}.data-error:after{content:"✗";position:absolute;top:.5rem;right:.5rem;color:#d32f2f;font-size:.875rem;font-weight:700;opacity:.8}.loading{position:relative;overflow:hidden}.loading:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);animation:loading-shimmer 2s infinite}@keyframes loading-shimmer{0%{left:-100%}to{left:100%}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-40px;left:6px;background:#1a1a1a;color:#fff;padding:8px;text-decoration:none;border-radius:4px;z-index:1000;font-size:1rem;font-weight:600}.skip-link:focus{top:6px}.update-notification{position:fixed;top:0;left:0;right:0;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;z-index:1000;box-shadow:0 2px 8px #0003;transform:translateY(-100%);transition:transform .3s ease-in-out;display:none}.update-notification[style*=block]{display:block!important;transform:translateY(0)}.update-content{display:flex;align-items:center;justify-content:space-between;padding:1rem;max-width:100%;gap:.5rem}.update-icon{font-size:1.2rem;flex-shrink:0}.update-text{flex:1;font-weight:500;font-size:.9rem;min-width:0}.update-button{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:.5rem 1rem;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease;white-space:nowrap;min-height:44px;min-width:44px}.update-button:hover,.update-button:focus{background:#ffffff4d;border-color:#ffffff80;outline:2px solid rgba(255,255,255,.5);outline-offset:2px}.update-button:active{background:#fff6;transform:translateY(1px)}.dismiss-button{background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;padding:.25rem;border-radius:4px;transition:background-color .2s ease;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dismiss-button:hover,.dismiss-button:focus{background:#fff3;outline:2px solid rgba(255,255,255,.5);outline-offset:2px}.dismiss-button:active{background:#ffffff4d}@media (max-width: 480px){.update-content{padding:.75rem;gap:.25rem}.update-text{font-size:.85rem}.update-button{padding:.4rem .8rem;font-size:.8rem}}@media (prefers-contrast: high){.update-notification{background:#000;border-bottom:2px solid #fff}.update-button{background:#fff;color:#000;border-color:#fff}.update-button:hover,.update-button:focus{background:#ccc;border-color:#ccc}}@media (prefers-reduced-motion: reduce){.update-notification{transition:none}.update-button:active{transform:none}}.pwa-install-banner{position:fixed;bottom:0;left:0;right:0;background:linear-gradient(135deg,#1a1a1a,#2d2d2d);color:#fff;z-index:1000;box-shadow:0 -4px 12px #0000004d;transform:translateY(100%);animation:slideUp .3s ease-out forwards}@keyframes slideUp{to{transform:translateY(0)}}.install-banner-content{display:flex;align-items:center;padding:1rem;gap:1rem;max-width:600px;margin:0 auto}.install-banner-icon img{border-radius:8px;box-shadow:0 2px 8px #0000004d}.install-banner-text{flex:1;min-width:0}.install-banner-text h3{font-size:1.1rem;font-weight:600;margin-bottom:.25rem;color:gold}.install-banner-text p{font-size:.9rem;color:#ccc;line-height:1.4}.install-banner-actions{display:flex;align-items:center;gap:.5rem}.install-banner-actions .install-button{background:gold;color:#1a1a1a;border:none;padding:.75rem 1.5rem;border-radius:6px;font-weight:600;font-size:.9rem;cursor:pointer;transition:all .2s ease;min-height:44px}.install-banner-actions .install-button:hover{background:#ffed4e;transform:translateY(-1px)}.install-banner-actions .install-button:active{transform:translateY(0)}.install-banner-actions .dismiss-button{background:transparent;color:#ccc;border:none;padding:.5rem;border-radius:4px;cursor:pointer;font-size:1.5rem;line-height:1;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.install-banner-actions .dismiss-button:hover{background:#ffffff1a;color:#fff}.pwa-install-button{background:#ffd7001a;color:gold;border:1px solid rgba(255,215,0,.3);padding:.5rem 1rem;border-radius:6px;font-size:.9rem;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem;transition:all .2s ease;min-height:44px;margin-left:auto}.pwa-install-button:hover{background:#ffd70033;border-color:#ffd70080;transform:translateY(-1px)}.pwa-install-button .install-icon{font-size:1.1rem}.floating-install-button{position:fixed;bottom:2rem;right:2rem;background:gold;color:#1a1a1a;border:none;padding:1rem;border-radius:50%;box-shadow:0 4px 12px #0000004d;cursor:pointer;z-index:999;transition:all .3s ease;min-width:56px;min-height:56px;display:flex;align-items:center;justify-content:center}.floating-install-button:hover{transform:scale(1.1);box-shadow:0 6px 16px #0006}.floating-install-button .install-text{display:none}.ios-install-prompt{position:fixed;inset:0;background:#000c;z-index:1001;display:flex;align-items:center;justify-content:center;padding:2rem;animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.ios-prompt-content{background:#fff;border-radius:12px;max-width:400px;width:100%;box-shadow:0 8px 24px #0000004d;overflow:hidden}.ios-prompt-header{display:flex;align-items:center;padding:1.5rem;gap:1rem;background:#f8f9fa;border-bottom:1px solid #e9ecef}.ios-prompt-header img{border-radius:8px}.ios-prompt-header h3{flex:1;font-size:1.2rem;font-weight:600;color:#1a1a1a}.ios-prompt-header .close-button{background:transparent;border:none;font-size:1.5rem;color:#666;cursor:pointer;padding:.25rem;border-radius:4px;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.ios-prompt-header .close-button:hover{background:#0000001a}.ios-prompt-instructions{padding:1.5rem}.ios-prompt-instructions p{margin-bottom:1rem;color:#333;font-weight:500}.ios-prompt-instructions ol{list-style:none;counter-reset:step-counter;margin-left:0}.ios-prompt-instructions li{counter-increment:step-counter;margin-bottom:.75rem;padding-left:2rem;position:relative;color:#555;line-height:1.5}.ios-prompt-instructions li:before{content:counter(step-counter);position:absolute;left:0;top:0;background:#007bff;color:#fff;width:1.5rem;height:1.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600}.ios-prompt-instructions .ios-icon{font-size:1.2rem;margin-left:.25rem;color:#007bff}.ios-prompt-actions{padding:1rem 1.5rem 1.5rem;text-align:center}.ios-prompt-actions .dismiss-button{background:#007bff;color:#fff;border:none;padding:.75rem 2rem;border-radius:6px;font-weight:600;cursor:pointer;transition:all .2s ease;min-height:44px}.ios-prompt-actions .dismiss-button:hover{background:#0056b3}.install-success-message{position:fixed;top:2rem;left:50%;transform:translate(-50%);background:#28a745;color:#fff;padding:1rem 1.5rem;border-radius:8px;box-shadow:0 4px 12px #0000004d;z-index:1002;animation:slideDown .3s ease-out}@keyframes slideDown{0%{transform:translate(-50%) translateY(-100%);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.success-content{display:flex;align-items:center;gap:.75rem}.success-icon{font-size:1.2rem}.success-text{font-weight:500}.standalone-mode{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.standalone-mode .app-header{padding-top:calc(env(safe-area-inset-top) + 1rem)}.standalone-mode .pwa-install-banner,.standalone-mode .pwa-install-button,.standalone-mode .ios-install-prompt{display:none!important}.highlighted{animation:highlight-pulse 3s ease-in-out;background-color:#ffd70033;border-radius:8px;padding:8px;margin:-8px;transition:all .3s ease}@keyframes highlight-pulse{0%,to{background-color:transparent;box-shadow:none}50%{background-color:#ffd7004d;box-shadow:0 0 0 4px #ffd70033}}@media (max-width: 480px){.install-banner-content{padding:.75rem;gap:.75rem}.install-banner-text h3{font-size:1rem}.install-banner-text p{font-size:.85rem}.install-banner-actions .install-button{padding:.5rem 1rem;font-size:.85rem}.ios-install-prompt,.ios-prompt-header,.ios-prompt-instructions,.ios-prompt-actions{padding:1rem}.floating-install-button{bottom:1rem;right:1rem;min-width:48px;min-height:48px}}@media (prefers-color-scheme: dark){.ios-prompt-content{background:#2d2d2d;color:#fff}.ios-prompt-header{background:#1a1a1a;border-bottom-color:#444}.ios-prompt-header h3{color:#fff}.ios-prompt-instructions p{color:#ccc}.ios-prompt-instructions li{color:#aaa}}.update-notification{position:fixed;top:0;left:0;right:0;background:linear-gradient(135deg,#007bff,#0056b3);color:#fff;z-index:1000;box-shadow:0 2px 8px #0000004d;transform:translateY(-100%);animation:slideDown .3s ease-out forwards}.update-content{display:flex;align-items:center;padding:1rem;gap:1rem;max-width:600px;margin:0 auto}.update-icon{font-size:1.2rem}.update-text{flex:1;font-weight:500}.update-button{background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-weight:500;transition:all .2s ease;min-height:44px}.update-button:hover{background:#ffffff4d}.update-notification .dismiss-button{background:transparent;color:#fffc;border:none;padding:.5rem;border-radius:4px;cursor:pointer;font-size:1.2rem;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.update-notification .dismiss-button:hover{background:#ffffff1a;color:#fff}
