.detail-page{position:relative;height:100vh;height:100dvh;background:#0a0a0a;color:#fff;display:flex;flex-direction:column}.detail-page .back{position:absolute;top:16px;z-index:10;color:#ffffffd9;background:#0006;backdrop-filter:blur(6px);cursor:pointer;border:none;transition:background .15s,transform .15s}.detail-page .back:hover{background:#000c;text-decoration:none}.detail-page .back.map-link{left:18px;padding:6px 12px;border-radius:6px;font-size:13px}.detail-page .back.close-x{right:18px;width:38px;height:38px;border-radius:50%;padding:0;display:inline-flex;align-items:center;justify-content:center}.detail-page .back.close-x:hover{transform:scale(1.08)}.detail-page .page-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:50px;height:50px;border-radius:50%;background:#00000073;color:#fff;display:inline-flex;align-items:center;justify-content:center;backdrop-filter:blur(6px);transition:background .15s,transform .15s}.detail-page .page-nav.prev{left:24px}.detail-page .page-nav.next{right:24px}.detail-page .page-nav:hover{background:#000c;transform:translateY(-50%) scale(1.08);text-decoration:none}.detail-page .page-nav:active{transform:translateY(-50%) scale(.96)}@keyframes nav-pulse{0%,to{box-shadow:0 0 #fff0}50%{box-shadow:0 0 0 10px #ffffff2e}}.detail-page .page-nav.hint{animation:nav-pulse 1.4s ease-in-out 2}.detail-page .stage{flex:1;display:flex;align-items:center;justify-content:center;padding:60px 90px 30px;min-height:0}.detail-page .hero{max-width:100%;max-height:100%;object-fit:contain;cursor:zoom-in;border-radius:4px;box-shadow:0 8px 40px #0009}.detail-page .info-bar{padding:12px 28px 18px;display:flex;justify-content:space-between;align-items:center;color:#ffffffd9;font-size:13px;gap:16px;flex-wrap:wrap}.detail-page .info-bar .left,.detail-page .info-bar .right{display:flex;align-items:center;gap:10px}.detail-page .info-bar .right .action-group{display:inline-flex;align-items:center;gap:6px}.detail-page .info-bar .right>.action-group+.action-group,.detail-page .info-bar .right>.action-group+.position,.detail-page .info-bar .right>.position+.action-group{margin-left:6px;padding-left:12px;border-left:1px solid rgba(255,255,255,.18)}.detail-page .info-bar .flag{font-size:18px;line-height:1}.detail-page .info-bar .dot{color:#fff6}.detail-page .info-bar .album-pill{background:#ffffff1f;padding:2px 9px;border-radius:999px;font-size:12px}.detail-page .info-bar .position{color:#ffffff8c;font-variant-numeric:tabular-nums}.detail-page .download-link{color:#ffffffd9;background:#ffffff1a;padding:6px 8px;border-radius:6px;display:inline-flex;align-items:center}.detail-page .download-link:hover{background:#fff3;text-decoration:none}.detail-page .loc-btn{display:inline-flex;align-items:center;gap:6px;background:#ffffff1a;color:#ffffffe6;border:none;padding:6px 10px;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit}.detail-page .loc-btn:hover{background:#fff3}.detail-page .fav-btn{background:#ffffff1a;color:#ffffffd9;border:none;padding:6px 10px;border-radius:6px;cursor:pointer;font-size:16px;font-family:inherit;transition:transform .18s,background .18s;position:relative}.detail-page .fav-btn:hover{background:#ffffff38;transform:scale(1.1)}.detail-page .fav-btn.on{color:#ffcd3a;background:#ffcd3a2e}@keyframes fav-bounce{0%{transform:scale(1)}30%{transform:scale(1.45)}55%{transform:scale(.92)}to{transform:scale(1.1)}}.detail-page .fav-btn.bursting{animation:fav-bounce .4s var(--ease-out)}.detail-page .fav-btn .sparkle{position:absolute;top:50%;left:50%;width:6px;height:6px;border-radius:50%;background:#ffcd3a;pointer-events:none;opacity:0}.detail-page .fav-btn.bursting .sparkle{animation:fav-sparkle .55s var(--ease-out) forwards}.detail-page .fav-btn.bursting .sparkle:nth-child(1){--tx: 18px;--ty: -22px;animation-delay:.04s}.detail-page .fav-btn.bursting .sparkle:nth-child(2){--tx: -20px;--ty: -14px;animation-delay:.08s}.detail-page .fav-btn.bursting .sparkle:nth-child(3){--tx: 2px;--ty: -28px;animation-delay:0s}@keyframes fav-sparkle{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}20%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty))) scale(.2)}}.detail-page .loc-btn.danger{background:#b4323240;color:#ffb0b0}.detail-page .loc-btn.danger:hover{background:#b4323280;color:#fff}.loc-modal{position:fixed;inset:0;background:#000000b3;z-index:9998;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}.loc-modal[hidden]{display:none!important}.loc-modal-inner{background:#fff;color:var(--text);border-radius:10px;overflow:hidden;width:min(720px,92vw);height:min(560px,80vh);display:flex;flex-direction:column;box-shadow:0 20px 60px #00000080}.loc-modal-inner header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px}.loc-modal-inner header button{background:none;border:none;font-size:22px;cursor:pointer;color:var(--muted);padding:0 4px}.loc-date-row{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border);font-size:13px}.loc-date-row label{color:var(--muted)}.loc-date-row input[type=date]{padding:4px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px;font-family:inherit}.loc-date-row .link-btn{background:none;border:none;color:var(--muted);cursor:pointer;font-size:12px;text-decoration:underline;padding:2px 4px}.loc-date-row .link-btn:hover{color:var(--text)}#loc-map{flex:1}.loc-footer{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-top:1px solid var(--border);gap:12px}.loc-status{font-size:12px;color:var(--muted);flex:1;min-width:0}.loc-status.dirty{color:var(--accent);font-weight:500}.loc-status.saving{color:#b46d00}.loc-status.saved{color:#1a8a3a}.loc-status.error{color:#c93}.loc-actions{display:flex;gap:8px;flex-shrink:0}.btn-primary,.btn-secondary{padding:6px 16px;border-radius:6px;font-size:13px;cursor:pointer;font-family:inherit;border:1px solid transparent}.btn-primary{background:var(--accent);color:#fff;position:relative;display:inline-flex;align-items:center;gap:6px}.btn-primary:hover:not(:disabled){background:#024fa1}.btn-primary:disabled{background:#d0d7e0;cursor:not-allowed}.btn-primary.loading:before{content:"";width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn-secondary{background:#fff;color:var(--text);border-color:var(--border)}.btn-secondary:hover{background:#f3f4f6}.btn-danger{background:#fff;color:#c93636;border-color:#f0c0c0}.btn-danger:hover{background:#fdf0f0;border-color:#d97070}@media(max-width:720px){.detail-page .stage{padding:50px 14px 12px}.detail-page .page-nav{width:40px;height:40px}.detail-page .page-nav.prev{left:6px}.detail-page .page-nav.next{right:6px}.detail-page .back.map-link{top:10px;left:10px;padding:6px 10px;font-size:12px}.detail-page .back.close-x{top:10px;right:10px;width:36px;height:36px}.detail-page .info-bar{padding:8px 12px 14px;flex-direction:column;align-items:stretch;gap:8px;font-size:12px}.detail-page .info-bar .left{flex-wrap:wrap;gap:6px}.detail-page .info-bar .right{gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}.detail-page .info-bar .right::-webkit-scrollbar{display:none}.detail-page .loc-btn,.detail-page .fav-btn,.detail-page .download-link{min-height:44px;min-width:44px;padding:10px 12px;flex-shrink:0;box-sizing:border-box}.detail-page .loc-btn span{white-space:nowrap}.detail-page .info-bar .position{font-size:11px}.loc-modal-inner{width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;border-radius:0}.loc-footer{flex-wrap:wrap;gap:8px}.loc-actions{width:100%;justify-content:flex-end}.btn-primary,.btn-secondary,.btn-danger{min-height:40px;font-size:14px}.loc-date-row{flex-wrap:wrap}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
