.timeline-container{background:linear-gradient(135deg,#000c,#0009);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:12px 16px;margin:0;box-shadow:0 4px 20px #00000080;transition:all .3s ease;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.timeline-container:hover{box-shadow:0 12px 48px #00000026}.timeline-container.loading{display:flex;align-items:center;justify-content:center;gap:8px;height:60px;color:#fffc;font-size:12px}.loading-icon{animation:spin 2s linear infinite}.timeline-controls{display:flex;gap:4px;align-items:center}.control-btn{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;padding:4px 8px;color:#fff;font-size:10px;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px}.control-btn:hover{background:#fff3;border-color:#ffffff4d;transform:translateY(-1px)}.control-btn.active{background:#60a5fa4d;border-color:#60a5fa80;color:#60a5fa}.preset-btn{font-size:11px;font-weight:600;letter-spacing:.5px}.date-pickers{background:#0000004d;border-radius:8px;padding:12px;margin-bottom:8px;border:1px solid rgba(255,255,255,.1)}.date-picker-group{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.date-picker-group label{color:#fffc;font-size:12px;font-weight:500}.date-picker-group input[type=date]{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:8px 12px;color:#fff;font-size:14px;transition:all .2s ease}.date-picker-group input[type=date]:focus{outline:none;border-color:#60a5fa;box-shadow:0 0 0 3px #60a5fa33}.date-picker-group input[type=date]::-webkit-calendar-picker-indicator{filter:invert(1);cursor:pointer}.date-picker-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.apply-btn,.cancel-btn{padding:8px 16px;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease;border:1px solid}.apply-btn{background:#10b981;border-color:#10b981;color:#fff}.apply-btn:hover{background:#059669;border-color:#059669}.cancel-btn{background:transparent;border-color:#ffffff4d;color:#fffc}.cancel-btn:hover{background:#ffffff1a;border-color:#fff6}.timeline-main{position:relative}.timeline-markers{position:relative;height:16px;margin-bottom:4px}.year-marker{position:absolute;display:flex;flex-direction:column;align-items:center;transform:translate(-50%)}.year-tick{width:1px;height:8px;background:#ffffff4d}.year-label{margin-top:2px;font-size:8px;color:#fff9;font-weight:500;white-space:nowrap}.timeline-track{position:relative;height:6px;background:#ffffff1a;border-radius:3px;cursor:pointer;margin:12px 0;border:1px solid rgba(255,255,255,.05)}.timeline-range{position:absolute;top:0;height:100%;background:linear-gradient(90deg,#60a5fa,#3b82f6);border-radius:3px;transition:all .2s ease;box-shadow:0 1px 4px #60a5fa4d}.timeline-handle{position:absolute;top:50%;width:16px;height:16px;background:#fff;border:2px solid #3b82f6;border-radius:50%;transform:translate(-50%,-50%);cursor:grab;transition:all .2s ease;box-shadow:0 1px 4px #0003;z-index:10}.timeline-handle:hover{transform:translate(-50%,-50%) scale(1.2);box-shadow:0 4px 16px #3b82f666}.timeline-handle.dragging{cursor:grabbing;transform:translate(-50%,-50%) scale(1.3);box-shadow:0 6px 24px #3b82f699}.timeline-handle.start-handle{border-color:#10b981}.timeline-handle.end-handle{border-color:#f59e0b}.handle-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:#000000e6;color:#fff;padding:6px 10px;border-radius:6px;font-size:11px;font-weight:500;white-space:nowrap;margin-bottom:8px;opacity:0;transition:opacity .2s ease;pointer-events:none;box-shadow:0 2px 8px #0000004d}.timeline-handle:hover .handle-tooltip,.timeline-handle.dragging .handle-tooltip{opacity:1}.handle-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:#000000e6}.timeline-info{margin-top:8px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}.range-display{display:flex;align-items:center;gap:6px;color:#fff;font-size:11px;font-weight:500}.range-start{color:#10b981}.range-end{color:#fff}.range-end .date-text{color:#f59e0b}.range-end .stats-text{color:#ffffffe6}.range-arrow{color:#fff6;width:12px;height:12px}.range-stats{color:#ffffffb3;font-size:10px;text-align:right}.range-percentage{color:#ffffff80;margin-left:4px}@media (max-width: 768px){.timeline-container{padding:16px;margin:0 8px}.timeline-header{flex-direction:column;gap:12px;align-items:flex-start}.timeline-title{font-size:16px}.timeline-controls{width:100%;justify-content:space-between}.date-pickers{padding:12px}.date-picker-actions{flex-direction:column;gap:8px}.apply-btn,.cancel-btn{width:100%;padding:12px}.timeline-info{flex-direction:column;align-items:flex-start;gap:8px}.range-stats{text-align:left}}@media (max-width: 480px){.timeline-handle{width:24px;height:24px}.year-label{font-size:9px}.control-btn{min-width:32px;height:32px;padding:6px 8px}}.map-container{height:100vh;width:100%;position:relative;display:flex;flex-direction:column}.timeline-wrapper{position:absolute;bottom:12px;left:20px;right:200px;z-index:1001;padding:0}@media (max-width: 768px){.timeline-wrapper{left:8px;right:8px;bottom:8px}}@media (max-width: 1024px){.timeline-wrapper{left:20px;right:160px}}.map-container .leaflet-container{height:100vh!important}.leaflet-tile-pane .leaflet-layer{transition:opacity .3s ease-in-out}.explored-hex{transition:opacity .2s ease-in-out,fill-opacity .2s ease-in-out}.import-progress-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .3s ease-in}.import-progress-modal{background:linear-gradient(135deg,#1e3a8a,#3b82f6);color:#fff;padding:2rem;border-radius:16px;box-shadow:0 25px 50px #00000080;min-width:400px;max-width:500px;text-align:center;border:1px solid rgba(255,255,255,.2)}.import-progress-header{margin-bottom:1.5rem}.import-progress-header h3{margin:0 0 1rem;font-size:1.5rem;font-weight:600}.import-progress-stats{display:flex;justify-content:space-between;align-items:center}.progress-percentage{font-size:2rem;font-weight:700;color:#22d3ee}.progress-time{font-size:1rem;color:#fffc}.import-progress-stages{margin:1.5rem 0}.progress-stage{margin-bottom:1rem}.progress-stage:last-child{margin-bottom:0}.stage-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.9rem}.stage-label{font-weight:500;color:#ffffffe6}.stage-percentage{font-weight:600;color:#fffffff2;font-family:Monaco,Consolas,monospace}.import-progress-bar{width:100%;height:8px;background-color:#fff3;border-radius:6px;overflow:hidden;position:relative}.import-progress-fill{height:100%;border-radius:6px;transition:width .3s ease;position:relative;overflow:hidden}.import-progress-fill.processing{background:linear-gradient(90deg,#3b82f6,#1d4ed8,#1e40af)}.import-progress-fill.database{background:linear-gradient(90deg,#10b981,#059669,#047857)}.import-progress-fill.overall{background:linear-gradient(90deg,#8b5cf6,#7c3aed,#6d28d9)}.import-progress-fill:after{content:"";position:absolute;top:0;left:0;bottom:0;right:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);animation:shimmer 2s infinite}.progress-stage.overall{border-top:1px solid rgba(255,255,255,.2);padding-top:1rem;margin-top:1.5rem}.import-progress-details{margin-bottom:1.5rem}.progress-message{font-size:1rem;margin-bottom:.5rem;color:#ffffffe6}.progress-counts{font-size:.9rem;color:#ffffffb3;font-family:Monaco,Consolas,monospace}.progress-stage-info{margin-top:.5rem;font-size:.9rem;color:#fffc}.progress-error{color:#fca5a5;font-size:.9rem;margin-top:.5rem;padding:.5rem;background-color:#ef444433;border-radius:6px}.import-progress-info{border-top:1px solid rgba(255,255,255,.2);padding-top:1rem;margin-top:1rem}.import-progress-info p{margin:.5rem 0;font-size:.85rem;color:#ffffffb3;line-height:1.4}@keyframes fadeIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (max-width: 480px){.import-progress-modal{min-width:90vw;padding:1.5rem}.progress-percentage{font-size:1.5rem}.import-progress-header h3{font-size:1.3rem}}.login-container{height:100vh;width:100vw;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e293b,#334155,#1e293b);background-attachment:fixed;padding:20px;box-sizing:border-box}.login-card{background:linear-gradient(135deg,#ffffff1a,#ffffff0d);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.2);border-radius:20px;padding:40px;width:100%;max-width:420px;box-shadow:0 20px 60px #0000004d;transition:transform .2s ease,box-shadow .2s ease;will-change:transform}.login-card:hover{transform:translateY(-2px);box-shadow:0 25px 80px #0006}.login-header{text-align:center;margin-bottom:32px}.login-icon{display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);border-radius:50%;margin-bottom:20px;box-shadow:0 10px 30px #3b82f64d}.mail-icon{width:40px;height:40px;color:#fff}.login-header h1{color:#fff;font-size:28px;font-weight:700;margin:0 0 8px;background:linear-gradient(135deg,#fff,#e2e8f0);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.login-header p{color:#ffffffb3;font-size:14px;margin:0;line-height:1.5}.login-form{margin-bottom:24px}.form-group{margin-bottom:20px}.form-group label{display:block;color:#fff;font-size:14px;font-weight:600;margin-bottom:8px}.input-wrapper{position:relative}.input-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:#ffffff80;pointer-events:none}.form-group input{width:100%;padding:16px 16px 16px 50px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:12px;color:#fff;font-size:16px;transition:all .3s ease;box-sizing:border-box}.form-group input::placeholder{color:#ffffff80}.form-group input:focus{outline:none;border-color:#3b82f6;background:#ffffff26;box-shadow:0 0 0 3px #3b82f633}.form-group input:disabled{opacity:.6;cursor:not-allowed}.error-message{background:#ef444433;border:1px solid rgba(239,68,68,.3);color:#fca5a5;padding:12px 16px;border-radius:8px;font-size:14px;margin-bottom:20px;display:flex;align-items:center;gap:8px}.login-button{width:100%;padding:16px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);border:none;border-radius:12px;color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 4px 20px #3b82f64d}.login-button:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1e40af);transform:translateY(-2px);box-shadow:0 6px 25px #3b82f666}.login-button:active{transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:0 4px 20px #3b82f633}.google-login-button{background:#fff;color:#1f2937;box-shadow:0 4px 20px #00000026}.google-login-button:hover:not(:disabled){background:#f9fafb;box-shadow:0 6px 25px #0003}.google-icon{width:24px;height:24px;flex-shrink:0}.button-icon{width:20px;height:20px}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.login-footer{text-align:center;margin-top:20px}.login-footer p{color:#fff9;font-size:12px;margin:0}@media (max-width: 480px){.login-container{padding:16px}.login-card{padding:30px 20px}.login-header h1{font-size:24px}.login-icon{width:60px;height:60px}.mail-icon{width:30px;height:30px}}.app{height:100vh;width:100vw;position:relative;display:flex;flex-direction:column}.controls{position:absolute;top:10px;left:10px;z-index:1000;background:linear-gradient(135deg,#000c,#0009);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:15px;border-radius:12px;border:1px solid rgba(255,255,255,.2);box-shadow:0 8px 32px #00000080;max-width:300px;display:flex;flex-direction:column;gap:10px}.user-info{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;background:#0009;border:1px solid rgba(255,255,255,.15);border-radius:8px}.user-email{font-size:14px;font-weight:600;color:#fff;flex:1;text-shadow:0 1px 2px rgba(0,0,0,.5)}.logout-btn{background:#dc3545;border:none;border-radius:4px;color:#fff;padding:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.logout-btn:hover{background:#c82333}.upload-control{display:flex;flex-direction:column;gap:5px}.upload-control label{font-weight:600;font-size:14px;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.1)}.upload-control input{padding:8px;border:1px solid rgba(255,255,255,.3);border-radius:4px;font-size:14px;background:#000000b3;color:#ffffffe6;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.upload-control input:focus{outline:none;border-color:#007bffb3;box-shadow:0 0 0 2px #007bff4d}.upload-control input[type=file]{padding:8px 12px;border:2px solid rgba(255,255,255,.3);border-radius:8px;background:#000000b3;color:#fff;font-size:14px;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);outline:none}.upload-control input[type=file]:hover{background:#000c;border-color:#ffffff80;transform:translateY(-1px)}.upload-control input[type=file]:focus{border-color:#3b82f6b3;box-shadow:0 0 0 3px #3b82f64d}.upload-control input[type=file]::file-selector-button{background:#3b82f6cc;color:#fff;border:none;padding:6px 12px;border-radius:4px;margin-right:8px;cursor:pointer;transition:all .2s ease;font-weight:500}.upload-control input[type=file]::file-selector-button:hover{background:#3b82f6;transform:scale(1.05)}.upload-control input:disabled{background-color:#000000b3;color:#ffffff80;cursor:not-allowed}.status{padding:10px;border-radius:4px;font-size:14px;position:relative;display:flex;align-items:center;justify-content:space-between}.status.success{background-color:#10b98133;color:#fff;border:1px solid rgba(16,185,129,.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.status.error{background-color:#ef444433;color:#fff;border:1px solid rgba(239,68,68,.5);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.close-status{background:none;border:none;font-size:18px;cursor:pointer;color:inherit;padding:0;margin-left:10px;line-height:1}.close-status:hover{opacity:.7}.map-container{flex:1;position:relative}.legend{position:absolute;bottom:12px;right:20px;background:linear-gradient(135deg,#000c,#0009);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);padding:12px;border-radius:12px;box-shadow:0 4px 20px #00000080;z-index:1000;min-width:150px}.legend h4{margin:0 0 8px;font-size:12px;font-weight:600;color:#fff}.legend-item{display:flex;align-items:center;margin-bottom:4px;font-size:10px;color:#ffffffe6}.legend-color{width:16px;height:12px;margin-right:6px;border-radius:2px}.leaflet-popup-content{margin:10px 15px;line-height:1.4}.popup-content h4{margin:0 0 8px;font-size:14px;color:#333}.popup-content p{margin:4px 0;font-size:12px;color:#666}.popup-content strong{color:#333}.explored-hex{filter:drop-shadow(0 0 3px rgba(255,255,255,.3));transition:all .2s ease}.explored-hex:hover{filter:drop-shadow(0 0 8px rgba(255,255,255,.6)) brightness(1.1)}.map-controls{position:absolute;top:20px;right:20px;z-index:1000;display:flex;flex-direction:column;gap:12px}.mode-switcher,.extrapolated-toggle{display:flex;gap:8px}.mode-button{padding:8px 12px;border:2px solid rgba(255,255,255,.3);border-radius:6px;background-color:#000000b3;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.mode-button:hover{background-color:#000000b3;border-color:#ffffff80;transform:translateY(-1px)}.mode-button.active{background-color:#000c;border-color:#ffffffb3;box-shadow:0 0 10px #ffffff4d}.toggle-button{padding:8px 12px;border:2px solid rgba(255,255,255,.3);border-radius:6px;background-color:#000000b3;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.toggle-button:hover{background-color:#000000b3;border-color:#ffffff80;transform:translateY(-1px)}.toggle-button.active{background-color:#22c55e4d;border-color:#22c55eb3;box-shadow:0 0 10px #22c55e4d}.toggle-button.small{padding:6px 8px;font-size:12px;min-width:36px;min-height:32px}.toggle-button.small.active{background-color:#3b82f64d;border-color:#3b82f6b3;box-shadow:0 0 10px #3b82f64d}.delete-btn,.logout-btn{padding:8px;border:1px solid rgba(255,255,255,.3);border-radius:6px;background-color:#000000b3;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;color:#ffffffe6}.delete-btn:hover{background-color:#ef444433;border-color:#ef444480;color:#fff;transform:translateY(-1px)}.logout-btn:hover{background-color:#000c;border-color:#ffffff80;color:#fff;transform:translateY(-1px)}.delete-btn:active,.logout-btn:active{transform:translateY(1px)}
