:root{--main-bg-color:#ffffff;--text-color:#3f5c72;--header-text-color:var(--text-color);--link-color:var(--text-color);--highlight-color:#f05d2b;--future-border:#dee2e6;--future-bg-color:#eee;--body-font-size-desktop:16px;--body-font-size-mobile:12px;--header-font-size-desktop:72px;--header-font-size-mobile:36px}@font-face{font-family:redhatdisplay-medium;src:url(/fonts/RedHatDisplay-Medium.ttf);unicode-range:U+0-24F,U+131,U+152-153,U+259,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+1E??,U+2000-206F,U+2074,U+20A0-20BF,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:redhatdisplay-xtrabold;src:url(/fonts/RedHatDisplay-ExtraBold.ttf);unicode-range:U+0-24F,U+131,U+152-153,U+259,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+1E??,U+2000-206F,U+2074,U+20A0-20BF,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:after,:before{box-sizing:border-box;background-color:var(--main-bg-color);color:inherit;margin:0;padding:0;scroll-padding-top:70px}@media only screen and (max-width:768px){*,:after,:before{scroll-padding-top:62px}}body{font-family:redhatdisplay-medium,serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-optical-sizing:auto;font-weight:500;font-size:var(--body-font-size-desktop);font-style:normal;line-height:1.5;color:var(--text-color);background-color:inherit}@media only screen and (max-width:768px){body{font-size:var(--body-font-size-mobile)}}h1{font-family:redhatdisplay-xtrabold,serif;font-weight:800;font-size:var(--header-font-size-desktop);margin:0;color:var(--header-text-color);transition:all .25s}@media only screen and (max-width:768px){h1{font-size:var(--header-font-size-mobile)}}h1.tiny{font-size:var(--header-font-size-mobile);transition:all .25s}h1 a,h1 a:hover{border:none}a{color:var(--link-color);border-bottom:dotted var(--link-color)1px;text-decoration:none}a:hover{color:var(--highlight-color);text-decoration:none;border-bottom:solid var(--highlight-color)1px}.life-in-weeks{border-radius:5px;margin:0 20% 40%}.life-in-weeks .future-date{background-color:var(--future-bg-color)!important;border-color:var(--future-border)!important}.life-in-weeks .week,.life-in-weeks .anniversary{height:2em;max-height:2em;padding:2px 5px;margin:2px 1px;flex-grow:1}.life-in-weeks .anniversary-style{border:2.5px solid #e6a8d7!important;background-color:#ff69b4!important;color:#fff!important}.life-in-weeks .current-week{border:2.5px solid #ff4500!important;background-color:#ffe0b2!important;position:relative}.life-in-weeks .current-week-marker{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;height:2em;margin:2px 8px;padding:0 2px;font-size:.7em;font-weight:700;color:#ff4500;letter-spacing:-.5px;user-select:none}.life-in-weeks .current-week-marker .marker-line{width:2px;flex-grow:1;background-color:#ff4500}.life-in-weeks .current-week-marker .marker-label{white-space:nowrap;background-color:inherit}.life-in-weeks .progress-container{width:100%;height:12px;background-color:var(--future-bg-color);border-radius:6px;overflow:hidden}.life-in-weeks .progress-bar-custom{height:100%;width:0%;background:linear-gradient(90deg,#FF69B4,#FF8C00);border-radius:6px;transition:width 1s ease-out}.life-in-weeks .progress-label{text-align:center;font-size:var(--bs-btn-font-size,var(--body-font-size-desktop));color:var(--text-color);opacity:.7;margin-top:4px}.life-in-weeks .progress-highlight{color:var(--highlight-color);font-weight:700;background-color:inherit}.life-in-weeks .week:empty{flex-basis:1.5em}.life-in-weeks .btn{--bs-btn-color:var(--text-color);--bs-btn-font-size:var(--body-font-size-desktop)}.life-in-weeks blockquote{margin-top:50px}@media only screen and (max-width:768px){.life-in-weeks{margin:0 2%}.life-in-weeks .btn{--bs-btn-font-size:var(--body-font-size-mobile)}}.life-in-weeks li{list-style-type:none}.life-in-weeks li a{color:var(--link-color);text-decoration:none}.life-in-weeks li a:hover{color:var(--highlight-color);text-decoration:none;border:none}@keyframes fadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.life-in-weeks .navbar{--bs-navbar-padding-y:0;margin-bottom:2em;display:none;opacity:0;animation:fadeIn .5s ease-out forwards}.life-in-weeks .navbar .nav-pills{--bs-nav-pills-border-radius:0;--bs-nav-pills-link-active-bg:var(--main-bg-color);--bs-nav-link-padding-x:0.5rem;--bs-nav-link-padding-y:0;--bs-nav-link-color:var(--highlight-color);--bs-nav-pills-link-active-color:var(--highlight-color);border-bottom:solid var(--highlight-color)1px}@media only screen and (max-width:768px){.life-in-weeks .navbar .nav-pills{--bs-nav-link-padding-x:0.35rem}}.custom-tooltip{--bs-tooltip-bg:var(--highlight-color);--bs-tooltip-color:var(--bs-white)}.btn-auth{background:0 0;border:none;cursor:pointer;font-size:inherit;padding:0;line-height:1;opacity:.7}.btn-auth:hover{opacity:1}.private-event{display:none}#authModal .modal-content{background-color:var(--main-bg-color);border:1px solid var(--future-border)}#authModal .modal-title{font-size:1rem;color:var(--text-color);background-color:var(--main-bg-color)}#authModal .form-control{background-color:var(--main-bg-color);color:var(--text-color);border-color:var(--future-border);font-size:.9rem}#authModal .form-control:focus{border-color:var(--highlight-color);box-shadow:0 0 0 .15rem rgba(240,93,43,.25)}#authModal .auth-submit-btn{background-color:var(--highlight-color);color:#fff;border:none}#authModal .auth-submit-btn:hover{opacity:.85}#authModal .auth-logout-btn{background-color:var(--main-bg-color);color:var(--text-color);border:1px solid var(--future-border)}#authModal .auth-logout-btn:hover{border-color:var(--highlight-color);color:var(--highlight-color)}.page-tabs{display:flex;align-items:center;gap:.35rem;padding:.35rem 0 .5rem;background-color:var(--main-bg-color)}.page-tabs .page-tab{border:1px solid var(--future-border);border-radius:999px;padding:.15rem .75rem;font-size:.9rem;color:var(--text-color);text-decoration:none;white-space:nowrap}.page-tabs .page-tab:hover{border-color:var(--highlight-color);color:var(--highlight-color)}.page-tabs .page-tab.active{border-color:var(--highlight-color);color:var(--highlight-color);font-weight:700}.page-tabs .page-tab-tools{margin-left:auto;display:flex;align-items:center;gap:.4rem;background-color:var(--main-bg-color)}.btn-icon{background-color:var(--main-bg-color);border:1px solid transparent;border-radius:999px;cursor:pointer;font-family:inherit;font-size:.9rem;line-height:1.4;padding:.15rem .5rem;color:var(--text-color);opacity:.75}.btn-icon:hover{opacity:1;border-color:var(--future-border)}.lang-switch{position:relative;background-color:var(--main-bg-color)}.lang-switch #lang-current{background-color:inherit;font-size:.8rem}.lang-switch .lang-menu{display:none;position:absolute;right:0;top:calc(100% + .3rem);z-index:1080;min-width:8.5rem;padding:.25rem;border:1px solid var(--future-border);border-radius:8px;background-color:var(--main-bg-color);box-shadow:0 4px 16px rgba(63,92,114,.14)}.lang-switch .lang-menu.open{display:block}.lang-switch .lang-menu button{display:block;width:100%;text-align:left;border:none;border-radius:6px;background-color:var(--main-bg-color);color:var(--text-color);font-family:inherit;font-size:.85rem;padding:.3rem .6rem;cursor:pointer;white-space:nowrap}.lang-switch .lang-menu button:hover{background-color:#fff2ec;color:var(--highlight-color)}.lang-switch .lang-menu button.active{color:var(--highlight-color);font-weight:700}body.lang-loading .life-in-weeks{opacity:.55;transition:opacity .15s}.linked-week{animation:linkedWeekPulse 2.4s ease-out 1;position:relative;z-index:2}@keyframes linkedWeekPulse{0%,100%{box-shadow:0 0 rgba(240,93,43,0)}15%{box-shadow:0 0 0 4px rgba(240,93,43,.55)}70%{box-shadow:0 0 0 4px rgba(240,93,43,.35)}}.photo-wall-page{margin:0 8% 6%}@media only screen and (max-width:768px){.photo-wall-page{margin:0 2% 8%}}.photo-wall-locked{text-align:center;padding:3rem 1rem;border:1px dashed var(--future-border);border-radius:12px}.photo-wall-locked p{margin-bottom:1rem}.photo-wall-locked .photo-wall-login{background-color:var(--highlight-color);color:#fff;border:none;border-radius:999px;padding:.3rem 1.2rem;font-family:inherit;cursor:pointer}.photo-wall-locked .photo-wall-login:hover{opacity:.85}.photo-wall-empty{text-align:center;opacity:.6;padding:2rem 0}.photo-year{margin-bottom:2.5rem}.photo-year .photo-year-title{font-size:1.4rem;font-weight:700;color:var(--text-color);border-bottom:2px solid var(--highlight-color);padding-bottom:.35rem;margin:1.5rem 0 1rem;display:flex;align-items:baseline;gap:.6rem}.photo-year .photo-year-count{font-size:.85rem;font-weight:400;opacity:.6}.photo-grid{--row-h:240px;display:flex;flex-wrap:wrap;gap:14px}@media only screen and (max-width:768px){.photo-grid{--row-h:150px;gap:8px}}.photo-grid::after{content:"";flex-grow:1000}.photo-card{min-width:0;margin:0;border-radius:10px;overflow:hidden;background-color:#fff;box-shadow:0 1px 4px rgba(0,0,0,8%)}.photo-card img{display:block;width:100%;height:auto;cursor:zoom-in;background-color:var(--future-bg-color);transition:opacity .2s}.photo-card img:hover{opacity:.92}.photo-card figcaption{display:flex;flex-direction:column;gap:.1rem;padding:.45rem .7rem .55rem;font-size:.85rem;line-height:1.4}.photo-card .photo-card-meta{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.photo-card .photo-card-date{font-size:.75rem;opacity:.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}@media only screen and (max-width:768px){.photo-card figcaption{padding:.35rem .45rem .45rem}.photo-card .photo-card-date{font-size:.65rem}}.photo-card .photo-card-link{border-bottom:none;text-decoration:none;color:var(--highlight-color);font-size:1rem;line-height:1;padding:0 .1rem}.photo-card .photo-card-link:hover{opacity:.7}.photo-card .photo-card-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-page{margin:0 8% 6%}@media only screen and (max-width:768px){.map-page{margin:0 2% 8%}}.map-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem}.map-toolbar .map-btn{border:1px solid var(--future-border);border-radius:999px;background-color:var(--main-bg-color);color:var(--text-color);font-family:inherit;font-size:.85rem;padding:.15rem .7rem;cursor:pointer}.map-toolbar .map-btn:hover{border-color:var(--highlight-color);color:var(--highlight-color)}.map-toolbar .map-hint{margin-left:auto;font-size:.78rem;opacity:.55;background-color:var(--main-bg-color)}@media only screen and (max-width:768px){.map-toolbar .map-hint{margin-left:0}}#xpty-map{font-family:redhatdisplay-medium,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Heiti SC,Noto Sans CJK SC,Source Han Sans SC,sans-serif;height:68vh;min-height:360px;max-height:680px;border:1px solid var(--future-border);border-radius:8px;background-color:#aad3df}#xpty-map *,#xpty-map *::before,#xpty-map *::after{background-color:transparent}#xpty-map .leaflet-bar a,#xpty-map .leaflet-control-attribution{background-color:rgba(255,255,255,.9)}#xpty-map .leaflet-popup-content-wrapper,#xpty-map .leaflet-popup-tip{background-color:#fff}#xpty-map .map-error{padding:2rem;text-align:center;opacity:.6}@media only screen and (max-width:768px){#xpty-map{height:62vh}}.photo-cluster-icon{background:0 0!important;border:none!important}.photo-cluster{position:relative;width:52px;height:52px}.photo-cluster img{width:52px;height:52px;object-fit:cover;border-radius:8px;border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.28);display:block}.photo-cluster::after{content:"";position:absolute;bottom:-9px;left:50%;transform:translateX(-50%);border-left:7px solid transparent;border-right:7px solid transparent;border-top:9px solid #fff;background-color:transparent;filter:drop-shadow(0 2px 2px rgba(0,0,0,.18))}.photo-cluster-count{position:absolute;top:-7px;right:-7px;min-width:19px;height:19px;padding:0 4px;border-radius:10px;font-size:.6rem;font-weight:700;line-height:19px;text-align:center;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.2)}#xpty-map .photo-cluster-count{background-color:var(--highlight-color);color:#fff}.xpty-popup .leaflet-popup-content{margin:0;width:290px!important}@media only screen and (max-width:480px){.xpty-popup .leaflet-popup-content{width:240px!important}}.xpty-popup .leaflet-popup-content-wrapper{border-radius:8px;padding:0;overflow:hidden}.map-pop{font-family:redhatdisplay-medium,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Heiti SC,Noto Sans CJK SC,Source Han Sans SC,sans-serif;color:var(--text-color);background-color:#fff}.map-pop .map-pop-head{display:flex;align-items:center;gap:.4rem;padding:.5rem .75rem;font-weight:700;font-size:.95rem;border-bottom:2px solid var(--future-border);background-color:#fff}.map-pop .map-pop-dot{width:.7em;height:.7em;border-radius:50%;display:inline-block;flex:none}.map-pop .map-pop-count{margin-left:auto;font-weight:500;font-size:.8rem;opacity:.6;background-color:#fff}.map-pop .map-pop-photos{display:flex;gap:3px;padding:6px 8px;overflow-x:auto;overflow-y:hidden;background-color:#f6f7f8;border-bottom:1px solid #f1f3f5;flex-wrap:nowrap}.map-pop .map-pop-photos::-webkit-scrollbar{height:3px}.map-pop .map-pop-photos::-webkit-scrollbar-thumb{background:#ddd;border-radius:2px}.map-pop .map-pop-photos .map-pop-photo{width:56px;height:56px;object-fit:cover;border-radius:4px;cursor:pointer;flex:none;background-color:#ddd;transition:opacity .15s}.map-pop .map-pop-photos .map-pop-photo:hover{opacity:.78}.map-pop .map-pop-body{max-height:260px;overflow-y:auto;background-color:#fff}.map-pop .map-pop-row{display:flex;gap:.5rem;align-items:baseline;width:100%;padding:.35rem .75rem;border:none;border-bottom:1px solid #f1f3f5;text-decoration:none;color:var(--text-color);background-color:#fff}.map-pop .map-pop-row:hover{background-color:#fff5f1;color:var(--highlight-color);border-bottom:1px solid #f1f3f5}.map-pop .map-pop-row.is-private{background-color:#fffdf3}.map-pop .map-pop-date{flex:0 0 5.2em;font-size:.72rem;opacity:.55;font-variant-numeric:tabular-nums;background-color:inherit}.map-pop .map-pop-title{flex:auto;min-width:0;font-size:.85rem;line-height:1.35;background-color:inherit}.xpty-tip{font-family:redhatdisplay-medium,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Heiti SC,Noto Sans CJK SC,Source Han Sans SC,sans-serif;font-size:.8rem}#photo-hover-card{position:fixed;z-index:1500;width:220px;border-radius:6px;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.22);pointer-events:none}#photo-hover-card .photo-hover-desc{background-color:var(--highlight-color);color:#fff;padding:5px 8px;font-size:.78rem;line-height:1.4}#photo-hover-card .photo-hover-img{display:block;width:100%;max-height:180px;object-fit:cover;background-color:#222}#photoModal .modal-content{background-color:var(--main-bg-color);border:1px solid var(--future-border)}#photoModal .modal-header{background-color:var(--main-bg-color)}#photoModal .modal-title{font-size:.9rem;color:var(--text-color);background-color:inherit;max-width:80%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#photoModal #photo-modal-body{background-color:#111}#photoModal #photoCarousel,#photoModal .carousel-inner,#photoModal .carousel-item{background-color:#111}#photoModal .photo-modal-img{width:100%;max-height:75vh;object-fit:contain;background-color:#111}#photoModal .carousel-control-prev,#photoModal .carousel-control-next{width:10%;background-color:transparent}#photoModal .carousel-control-prev:hover,#photoModal .carousel-control-next:hover{background-color:rgba(0,0,0,.25)}#photoModal .carousel-control-prev-icon,#photoModal .carousel-control-next-icon{background-color:transparent;filter:drop-shadow(0 0 2px rgba(0,0,0,.8))}#photoModal .carousel-indicators{background-color:transparent;bottom:.4rem;margin-bottom:0;gap:6px}#photoModal .carousel-indicators button{width:8px;height:8px;border-radius:50%;border-top:none;border-bottom:none;background-color:rgba(255,255,255,.35);transition:background-color .2s;flex:none}#photoModal .carousel-indicators button.active{background-color:rgba(255,255,255,.9)}#photoModal .modal-footer{background-color:var(--main-bg-color)}#photoModal .photo-counter{opacity:.6;background-color:inherit;color:var(--text-color)}#photoModal #photo-auth-prompt{background-color:var(--main-bg-color)}#photoModal #photo-auth-prompt p{color:var(--text-color);background-color:inherit}#photoModal #photo-auth-prompt .auth-submit-btn{background-color:var(--highlight-color);color:#fff;border:none}#photoModal #photo-auth-prompt .auth-submit-btn:hover{opacity:.85}.map-legend{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.75rem}.map-legend .legend-item{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--future-border);border-radius:999px;background-color:var(--main-bg-color);color:var(--text-color);font-family:inherit;font-size:.8rem;padding:.1rem .6rem .1rem .35rem;cursor:pointer}.map-legend .legend-item:hover{border-color:var(--highlight-color);color:var(--highlight-color)}.map-legend .legend-swatch{width:.85em;height:.85em;border-radius:50%;display:inline-block;flex:none}.map-legend .legend-count{font-size:.72rem;opacity:.55;background-color:inherit}