.app-container{width:100%;height:calc(100vh - 80px);transition:all var(--transition);display:flex;position:relative;overflow:hidden}.map-container{transition:flex var(--transition);background:#e8eaed;flex:1;min-width:0;position:relative}.view-toggle{z-index:10000;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5;border:1px solid #0000000f;border-radius:40px;gap:4px;padding:4px;display:none;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #0000001f}.view-toggle button{color:var(--text-secondary);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:32px;align-items:center;gap:6px;padding:8px 20px;font-family:inherit;font-size:14px;font-weight:600;display:flex}.view-toggle button i{font-size:16px}.view-toggle button.active{background:var(--primary);color:#fff;box-shadow:0 2px 12px #1a73e84d}.view-toggle button:not(.active):hover{background:#f1f3f4}.route-panel{border-bottom:1px solid var(--border-light);background:var(--bg-light);flex-shrink:0;padding:10px 20px 12px}.route-panel .route-title{color:var(--text-primary);align-items:center;gap:6px;margin-bottom:6px;font-size:12px;font-weight:600;display:flex}.route-panel .route-title i{color:var(--primary)}.route-input-group{flex-direction:column;gap:6px;width:100%;display:flex}.route-row{align-items:center;gap:6px;width:100%;display:flex}.route-row i{color:var(--text-secondary);text-align:center;min-width:14px;font-size:13px}.route-row input{transition:var(--transition);background:var(--bg-white);color:var(--text-primary);border:1px solid #dadce0;border-radius:20px;outline:none;flex:1;padding:6px 12px;font-family:inherit;font-size:12px}.route-row input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #1a73e826}.route-row input::placeholder{color:#9aa0a6}.route-location-btn{color:var(--primary);cursor:pointer;white-space:nowrap;transition:var(--transition);background:#e8f0fe;border:none;border-radius:20px;align-items:center;gap:4px;padding:4px 12px;font-family:inherit;font-size:11px;font-weight:600;display:flex}.route-location-btn:hover{background:#d2e3fc}.route-go-btn{background:var(--primary);color:#fff;cursor:pointer;transition:var(--transition);white-space:nowrap;border:none;border-radius:20px;align-items:center;gap:4px;padding:6px 14px;font-family:inherit;font-size:12px;font-weight:600;display:flex}.route-go-btn:hover{background:var(--primary-dark)}.route-result{background:var(--bg-white);border:1px solid var(--border-light);color:var(--text-primary);border-radius:8px;margin-top:6px;padding:8px 12px;font-size:12px;display:none}.route-result .route-detail{justify-content:space-between;align-items:center;padding:1px 0;display:flex}.route-result .route-detail .label{color:var(--text-secondary);font-weight:500}.route-result .route-detail .value{color:var(--primary);font-weight:600}.route-result .route-detail .value.time{color:#34a853}.route-result .route-dest-name{color:var(--text-primary);margin-bottom:2px;font-size:13px;font-weight:600}.route-result .route-clear-btn{color:var(--text-secondary);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:14px;align-items:center;gap:4px;margin-top:2px;padding:2px 8px;font-family:inherit;font-size:12px;display:flex}.route-result .route-clear-btn:hover{background:#f1f3f4}.btn-gradient{color:#fff;background:linear-gradient(135deg,#1a73e8 0%,#00a0e9 100%);border:none;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 4px 14px #1a73e840,0 1px 3px #0000000f}.btn-gradient:hover{background:linear-gradient(135deg,#1557b0 0%,#0088c7 100%);transform:translateY(-1px);box-shadow:0 6px 20px #1a73e859,0 2px 6px #00000014}.btn-gradient:active{transform:translateY(0);box-shadow:0 2px 8px #1a73e84d}
.custom-icon{background:0 0!important;border:none!important}.leaflet-container{font-family:var(--font-inter), -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;background:#e8eaed}.leaflet-popup-content-wrapper{border-radius:12px;padding:2px;box-shadow:0 1px 3px #00000014,0 12px 28px #00000026}.leaflet-popup-content{color:#111827;margin:12px 16px;font-size:13px;font-weight:500}.leaflet-popup-tip{box-shadow:0 2px 8px #00000014}.leaflet-control-attribution{-webkit-backdrop-filter:blur(8px);border-radius:6px 0 0;background:#ffffffd9!important;padding:2px 8px!important;font-size:10px!important}.hotel-popup-container .leaflet-popup-content-wrapper{border:1px solid #e2e8f099;border-radius:16px;padding:0;overflow:hidden;box-shadow:0 12px 32px -8px #0f172a40,0 4px 8px -2px #0f172a1a}.hotel-popup-container .leaflet-popup-content{margin:0;font-family:inherit;line-height:1.4;width:auto!important}.hotel-popup-container .leaflet-popup-tip{box-shadow:0 2px 8px #0f172a26}.hotel-popup-container .leaflet-popup-close-button{z-index:10;-webkit-backdrop-filter:blur(6px);transition:all .15s;box-shadow:0 2px 8px #0f172a26;color:#475569!important;text-align:center!important;background:#fffffff2!important;border-radius:50%!important;width:30px!important;height:30px!important;padding:0!important;font-size:16px!important;line-height:28px!important;top:10px!important;right:10px!important}.hotel-popup-container .leaflet-popup-close-button:hover{transform:scale(1.08);color:#0f172a!important;background:#fff!important}.hotel-popup-premium{background:#fff;width:280px;font-family:inherit}.hotel-popup-carousel{touch-action:pan-y;-webkit-user-select:none;user-select:none;cursor:grab;background:#e0f2fe;width:100%;height:180px;position:relative;overflow:hidden}.hotel-popup-carousel:active{cursor:grabbing}.hotel-popup-slides{will-change:transform;width:100%;height:100%;display:flex}.hotel-popup-slide{object-fit:cover;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;user-drag:none;flex:0 0 100%;width:100%;height:100%;display:block;position:relative}.hotel-popup-slide.active{pointer-events:auto}.hotel-popup-carousel:after{content:"";pointer-events:none;z-index:2;background:linear-gradient(#0000 0% 55%,#00000073 100%);position:absolute;inset:0}.hotel-popup-arrow{-webkit-backdrop-filter:blur(8px);color:#0f172a;cursor:pointer;z-index:3;opacity:0;background:#ffffffeb;border:none;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;padding:0 0 3px;font-size:18px;font-weight:600;line-height:1;transition:opacity .2s,background .15s,transform .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 2px 8px #0f172a33}.hotel-popup-carousel:hover .hotel-popup-arrow{opacity:1}.hotel-popup-arrow:hover{background:#fff;transform:translateY(-50%)scale(1.08)}.hotel-popup-arrow-prev{left:8px}.hotel-popup-arrow-next{right:8px}@media (hover:none){.hotel-popup-arrow{opacity:.9}}.hotel-popup-counter{-webkit-backdrop-filter:blur(6px);color:#fff;z-index:3;letter-spacing:.02em;font-feature-settings:"tnum" 1;background:#0000008c;border-radius:6px;padding:3px 9px;font-size:10px;font-weight:600;position:absolute;top:10px;right:10px}.hotel-popup-rating-badge{-webkit-backdrop-filter:blur(6px);color:#0f172a;z-index:3;background:#fffffff2;border-radius:6px;align-items:center;gap:4px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-flex;position:absolute;bottom:10px;left:10px}.hotel-popup-rating-badge i{color:#f59e0b;font-size:10px}.hotel-popup-dots{z-index:3;gap:4px;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.hotel-popup-dot{cursor:pointer;background:#ffffff8c;border:none;border-radius:50%;width:5px;height:5px;padding:0;transition:all .2s}.hotel-popup-dot.active{background:#fff;border-radius:3px;width:14px}.hotel-popup-content{padding:14px 16px 16px}.hotel-popup-title{color:#0f172a;letter-spacing:-.01em;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 4px;font-size:15px;font-weight:700;line-height:1.3;display:-webkit-box;overflow:hidden}.hotel-popup-location{color:#64748b;align-items:center;gap:5px;margin:0 0 12px;font-size:11px;line-height:1.3;display:flex}.hotel-popup-location i{color:#0ea5e9;flex-shrink:0;font-size:10px}.hotel-popup-location span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hotel-popup-footer{border-top:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:10px;padding-top:12px;display:flex}.hotel-popup-price{align-items:baseline;gap:2px;font-family:inherit;display:flex}.hotel-popup-price .currency{color:#64748b;font-size:11px;font-weight:600}.hotel-popup-price strong{color:#0f172a;letter-spacing:-.02em;font-feature-settings:"tnum" 1;font-size:17px;font-weight:800;line-height:1}.hotel-popup-price .per-night{color:#94a3b8;margin-left:3px;font-size:10px;font-weight:500}.hotel-popup-btn{color:#fff;white-space:nowrap;background:linear-gradient(135deg,#0ea5e9 0%,#06b6d4 100%);border-radius:8px;align-items:center;gap:4px;padding:8px 14px;font-size:11px;font-weight:700;text-decoration:none;transition:all .15s;display:inline-flex;box-shadow:0 4px 12px -4px #0ea5e980}.hotel-popup-btn:hover{background:linear-gradient(135deg,#0284c7 0%,#0891b2 100%);transform:translateY(-1px);box-shadow:0 6px 16px -4px #0ea5e999}.hotel-popup-btn i{font-size:9px;transition:transform .15s}.hotel-popup-btn:hover i{transform:translate(2px)}@media (max-width:480px){.hotel-popup-premium{width:260px}.hotel-popup-carousel{height:160px}.hotel-popup-content{padding:12px 14px 14px}.hotel-popup-title{font-size:14px}.hotel-popup-price strong{font-size:16px}}
#poi-panel{background:var(--bg-white);z-index:9997;border-left:1px solid var(--border-light);width:380px;max-width:90vw;height:calc(100vh - 60px);transition:right var(--transition);position:fixed;top:60px;right:-380px;overflow:hidden auto;box-shadow:-4px 0 30px #00000014}#poi-panel.open{right:0}.poi-header{border-bottom:1px solid var(--border-light);background:var(--bg-white);z-index:10;align-items:flex-start;gap:14px;padding:20px 22px 16px;display:flex;position:sticky;top:0}.poi-header .poi-icon{background:#f1f3f4;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:46px;height:46px;font-size:20px;display:flex}.poi-header .poi-header-text{flex:1;min-width:0}.poi-header .poi-name{color:var(--text-primary);font-size:18px;font-weight:700;line-height:1.3}.poi-header .poi-type{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.4px;margin-top:3px;font-size:12px;font-weight:500}.poi-header .close-btn{color:var(--text-secondary);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:50%;flex-shrink:0;padding:4px 8px;font-size:20px}.poi-header .close-btn:hover{background:#f1f3f4}.poi-body{padding:18px 22px 30px}.poi-row{color:#3c4043;border-bottom:1px solid #f1f3f4;align-items:flex-start;gap:12px;padding:12px 0;font-size:14px;display:flex}.poi-row i{color:var(--primary);text-align:center;width:18px;margin-top:1px;font-size:15px}.poi-row a{color:var(--primary);font-weight:600;text-decoration:none}.poi-row a:hover{text-decoration:underline}.poi-row.unavailable,.poi-row.unavailable i{color:#9aa0a6}.poi-actions{gap:10px;margin-top:18px;display:flex}.poi-btn{border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);border:none;flex:1;justify-content:center;align-items:center;gap:8px;padding:12px;font-family:inherit;font-size:14px;font-weight:600;text-decoration:none;display:flex}.poi-btn-primary{color:#fff;background:linear-gradient(135deg,#1a73e8 0%,#00a0e9 100%);box-shadow:0 4px 14px #1a73e840}.poi-btn-primary:hover{background:linear-gradient(135deg,#1557b0 0%,#0088c7 100%);transform:scale(1.01);box-shadow:0 6px 20px #1a73e859}.poi-btn-outline{color:var(--text-primary);background:#f1f3f4}.poi-btn-outline:hover{background:#e8eaed}.poi-btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}.poi-route-result{background:var(--bg-light);border-radius:var(--radius-md);align-items:center;gap:20px;margin-top:14px;padding:12px 16px;display:none}.poi-route-result div{color:var(--text-primary);align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.poi-route-result i{color:var(--primary);font-size:13px}.poi-mini-map{border-radius:var(--radius-md);border:1px solid var(--border-light);background:#e8eaed;height:160px;margin-top:18px;overflow:hidden}.poi-mini-map .leaflet-container{width:100%;height:100%}
#wishlist-panel{background:var(--bg-white);z-index:9996;border-left:1px solid var(--border-light);width:420px;max-width:90vw;height:calc(100vh - 60px);transition:right var(--transition);position:fixed;top:60px;right:-420px;overflow:hidden auto;box-shadow:-4px 0 30px #00000014}#wishlist-panel.open{right:0}.wishlist-panel-header{border-bottom:1px solid var(--border-light);background:var(--bg-white);z-index:10;justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex;position:sticky;top:0}.wishlist-panel-header h3{color:var(--text-primary);align-items:center;gap:10px;font-size:20px;font-weight:700;display:flex}.wishlist-panel-header h3 i{color:#ea4335}.wishlist-panel-header .close-btn{color:var(--text-secondary);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:50%;padding:4px 8px;font-size:22px}.wishlist-panel-header .close-btn:hover{background:#f1f3f4}.wishlist-panel-body{padding:16px 20px 40px}.wishlist-empty{text-align:center;color:var(--text-secondary);padding:60px 20px}.wishlist-empty i{color:#dadce0;margin-bottom:16px;font-size:48px}.wishlist-empty h4{color:var(--text-primary);margin-bottom:4px;font-size:18px}.wishlist-empty p{color:var(--text-secondary);font-size:14px}.wishlist-item{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-white);transition:var(--transition);gap:14px;margin-bottom:10px;padding:12px 14px;display:flex}.wishlist-item:hover{box-shadow:0 4px 16px #0000000a}.wishlist-item .thumb{border-radius:var(--radius-sm);width:60px;height:60px;color:var(--primary);background:#e8f0fe;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;display:flex}.wishlist-item .info{flex:1;min-width:0}.wishlist-item .info .name{color:var(--text-primary);font-size:14px;font-weight:600}.wishlist-item .info .price{color:var(--text-secondary);font-size:13px}.wishlist-item .info .price strong{color:var(--text-primary);font-weight:700}.wishlist-item .info .rating{color:#fbbc04;font-size:12px}.wishlist-item .actions{flex-direction:column;justify-content:center;align-items:flex-end;gap:4px;display:flex}.wishlist-item .actions button{cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:16px;padding:4px 10px;font-family:inherit;font-size:13px;font-weight:500}.wishlist-item .actions .view-btn{color:var(--primary)}.wishlist-item .actions .view-btn:hover{background:#e8f0fe}.wishlist-item .actions .remove-btn{color:#ea4335}.wishlist-item .actions .remove-btn:hover{background:#fce8e6}
.booking-overlay,.settings-overlay,.info-overlay{z-index:99999;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#00000073;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.booking-overlay.open,.settings-overlay.open,.info-overlay.open{display:flex}.booking-modal,.settings-modal,.info-modal{background:var(--bg-white);border-radius:var(--radius-lg);width:100%;max-width:480px;max-height:90vh;padding:28px 32px 32px;animation:.3s modalIn;overflow-y:auto;box-shadow:0 24px 80px #00000040}.info-modal{max-width:600px}@keyframes modalIn{0%{opacity:0;transform:scale(.95)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-header{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;display:flex}.modal-header h3{color:var(--text-primary);font-size:20px;font-weight:700}.modal-header h3 i{color:var(--primary);margin-right:8px}.modal-header .close-modal{color:var(--text-secondary);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:50%;padding:4px 8px;font-size:24px}.modal-header .close-modal:hover{background:#f1f3f4}.booking-modal .hotel-name-modal{color:var(--text-secondary);border-bottom:1px solid var(--border-light);margin-bottom:16px;padding-bottom:12px;font-size:14px}.booking-modal .hotel-name-modal strong{color:var(--text-primary)}.booking-modal .form-group{margin-bottom:16px}.booking-modal .form-group label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px;font-size:12px;font-weight:600;display:block}.booking-modal .form-group input{border-radius:var(--radius-md);width:100%;transition:var(--transition);color:var(--text-primary);background:#fafbfc;border:1px solid #dadce0;outline:none;padding:10px 14px;font-family:inherit;font-size:14px}.booking-modal .form-group input:focus{border-color:var(--primary);background:var(--bg-white);box-shadow:0 0 0 3px #1a73e81f}.booking-modal .form-row{gap:12px;display:flex}.booking-modal .form-row .form-group{flex:1}.booking-modal .guest-selector{border-radius:var(--radius-md);background:#fafbfc;border:1px solid #dadce0;align-items:center;gap:12px;padding:4px 12px;display:flex}.booking-modal .guest-selector button{color:var(--primary);cursor:pointer;width:32px;height:32px;transition:var(--transition);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-family:inherit;font-size:18px;font-weight:600;display:flex}.booking-modal .guest-selector button:hover{background:#e8f0fe}.booking-modal .guest-selector .guest-count{color:var(--text-primary);text-align:center;min-width:30px;font-size:16px;font-weight:600}.booking-modal .total-price{text-align:right;color:var(--text-secondary);border-top:1px solid var(--border-light);margin-top:4px;padding-top:12px;font-size:14px}.booking-modal .total-price strong{color:var(--text-primary);font-size:18px}.modal-actions{gap:10px;margin-top:20px;display:flex}.modal-actions button{cursor:pointer;transition:var(--transition);border:none;border-radius:14px;flex:1;padding:12px;font-family:inherit;font-size:14px;font-weight:600}.modal-actions .btn-cancel{color:var(--text-secondary);background:#f1f3f4}.modal-actions .btn-cancel:hover{background:#e8eaed}.modal-actions .btn-confirm,.modal-actions .btn-save{background:var(--primary);color:#fff}.modal-actions .btn-confirm:hover,.modal-actions .btn-save:hover{background:var(--primary-dark);transform:scale(1.01)}.modal-actions .btn-close{color:var(--text-secondary);background:#f1f3f4}.modal-actions .btn-close:hover{background:#e8eaed}.settings-modal .setting-group{margin-bottom:18px}.settings-modal .setting-group label{color:var(--text-primary);margin-bottom:4px;font-size:13px;font-weight:600;display:block}.settings-modal .setting-group .desc{color:var(--text-secondary);margin-bottom:6px;font-size:12px}.settings-modal .setting-group select{border-radius:var(--radius-md);width:100%;transition:var(--transition);color:var(--text-primary);background:#fafbfc;border:1px solid #dadce0;outline:none;padding:8px 14px;font-family:inherit;font-size:14px}.settings-modal .setting-group select:focus{border-color:var(--primary);background:var(--bg-white);box-shadow:0 0 0 3px #1a73e81f}.settings-modal .setting-group .toggle-row{justify-content:space-between;align-items:center;padding:6px 0;display:flex}.settings-modal .setting-group .toggle-row span{color:var(--text-primary);font-size:14px}.settings-modal .setting-group .toggle-switch{cursor:pointer;width:44px;height:24px;transition:var(--transition);background:#dadce0;border-radius:12px;flex-shrink:0;position:relative}.settings-modal .setting-group .toggle-switch.active{background:var(--primary)}.settings-modal .setting-group .toggle-switch .knob{background:var(--bg-white);width:20px;height:20px;transition:var(--transition);border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 4px #00000026}.settings-modal .setting-group .toggle-switch.active .knob{left:22px}.info-body{color:#3c4043;font-size:14px;line-height:1.7}.info-body p{margin-bottom:12px}.info-body ul{margin:8px 0 12px 20px;list-style:outside}.info-body ul li{margin-bottom:4px}.info-body a{color:var(--primary);text-decoration:none}.info-body a:hover{text-decoration:underline}.info-body .highlight{color:var(--primary);background:#e8f0fe;border-radius:12px;padding:2px 8px;font-weight:500}.info-body .social-icons{gap:12px;margin-top:12px;display:flex}.info-body .social-icons a{color:var(--text-secondary);transition:var(--transition);font-size:20px}.info-body .social-icons a:hover{color:var(--primary)}
.calendar-overlay{z-index:99998;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;background:#00000059;justify-content:center;align-items:flex-end;padding:20px;transition:opacity .3s;display:none;position:fixed;inset:0}.calendar-overlay.open{opacity:1;display:flex}.calendar-panel{background:var(--bg-white);border-radius:24px 24px 0 0;width:100%;max-width:560px;max-height:92vh;padding:0 0 20px;animation:.35s slideUp;position:relative;overflow-y:auto;box-shadow:0 -8px 40px #00000026}@keyframes slideUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.calendar-header{border-bottom:1px solid var(--border-light);background:var(--bg-white);z-index:5;border-radius:24px 24px 0 0;justify-content:space-between;align-items:center;padding:18px 24px 12px;display:flex;position:sticky;top:0}.calendar-header h3{color:var(--text-primary);align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.calendar-header h3 i{color:var(--primary)}.calendar-close{color:var(--text-secondary);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:50%;padding:4px 8px;font-size:22px}.calendar-close:hover{background:#f1f3f4}.calendar-nav{justify-content:space-between;align-items:center;padding:12px 20px 8px;display:flex}.calendar-nav .month-year{color:var(--text-primary);font-size:16px;font-weight:600}.calendar-nav .nav-buttons{gap:4px;display:flex}.calendar-nav .nav-buttons button{width:36px;height:36px;color:var(--text-secondary);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:16px;display:flex}.calendar-nav .nav-buttons button:hover{background:#f1f3f4}.calendar-grid{touch-action:pan-y;padding:0 16px 8px}.calendar-grid .weekdays{text-align:center;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;grid-template-columns:repeat(7,1fr);padding:4px 0 8px;font-size:11px;font-weight:600;display:grid}.calendar-grid .days-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.calendar-grid .day-cell{aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);color:var(--text-primary);background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:44px;padding:2px;font-family:inherit;font-size:14px;font-weight:500;display:flex;position:relative}.calendar-grid .day-cell:hover:not(.empty){background:#f1f3f4}.calendar-grid .day-cell.empty{cursor:default;color:#0000}.calendar-grid .day-cell.other-month{color:#dadce0}.calendar-grid .day-cell.today{color:var(--primary);border:2px solid var(--primary);background:#e8f0fe;font-weight:700}.calendar-grid .day-cell.selected{background:var(--primary);color:#fff;font-weight:700;box-shadow:0 2px 12px #1a73e84d}.calendar-grid .day-cell.selected:hover{background:var(--primary-dark)}.calendar-grid .day-cell .moon-icon{margin-top:1px;font-size:10px;line-height:1}.calendar-grid .day-cell .day-number{line-height:1.2}.date-detail{border-top:1px solid var(--border-light);margin-top:4px;padding:12px 20px 20px;display:none}.date-detail.visible{display:block}.date-detail .detail-date{color:var(--text-primary);margin-bottom:8px;font-size:16px;font-weight:700}.date-detail .detail-section{margin-bottom:10px}.date-detail .detail-section .section-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.4px;align-items:center;gap:6px;margin-bottom:4px;font-size:12px;font-weight:600;display:flex}.date-detail .detail-section .section-label i{font-size:14px}.date-detail .detail-section .moon-info{color:var(--text-primary);align-items:center;gap:8px;font-size:14px;display:flex}.date-detail .detail-section .moon-info .icon{font-size:22px}.date-detail .tide-item{color:var(--text-primary);align-items:center;gap:8px;padding:3px 0;font-size:13px;display:flex}.date-detail .tide-item .tide-type{min-width:44px;font-weight:600}.date-detail .tide-item .tide-type.high{color:#1a73e8}.date-detail .tide-item .tide-type.low{color:#34a853}.date-detail .tide-item .tide-time{color:var(--text-secondary)}.date-detail .tide-item .tide-height{margin-left:auto;font-weight:600}.date-detail .no-data{color:var(--text-secondary);font-size:13px;font-style:italic}
