/* Fresh travel journal. Static foliage; glass is limited to small foreground surfaces. */
:root {
 --font:'Noto Sans SC','PingFang SC','Microsoft YaHei',system-ui,sans-serif;
 --title-font:'Songti SC','STSong','SimSun',Georgia,serif;
 --primary:#8bdce8; --primary-dark:#247a99; --accent:#96dbe8;
 --bg:#ecf8ff; --bg-card:#f8fdff; --text:#234d70; --text-light:#6286a2;
 --border:#cde5ef; --shadow:0 12px 36px #3c8bac12;
 --fresh-ink:#204d72; --fresh-muted:#4f6e87; --fresh-cyan:#79d9e8;
 --fresh-glass:rgba(248,253,255,.74); --fresh-line:rgba(109,183,210,.25);
 --fresh-shadow:0 10px 32px rgba(56,145,181,.12); --fresh-love:#f7a1ac;
}
[data-theme=dark] {
 --primary:#8bdce8; --primary-dark:#9edee9; --accent:#83cddb;
 --bg:#152c3a; --bg-card:#213f50; --text:#e0f3fa; --text-light:#a0bdce;
 --border:#365a70; --fresh-ink:#def2fc; --fresh-muted:#a0bdce;
 --fresh-glass:rgba(30,58,76,.86); --fresh-line:rgba(145,203,223,.22);
 --fresh-shadow:0 12px 36px #061b2b30; --fresh-love:#eea5b4;
}
html { scroll-padding-top:90px; }
body.site-shell { font-family:var(--font); color:var(--fresh-ink); background:radial-gradient(ellipse at 5% 8%,#dcf3ff 0,transparent 46%),radial-gradient(ellipse at 96% 75%,#dff6f2 0,transparent 42%),var(--bg); }
[data-theme=dark] body.site-shell { background:var(--bg); }
.site-shell .navbar {
 height:74px; min-height:74px; inset:0 0 auto; width:100%; max-width:none; margin:0;
 padding:0 clamp(20px,3.1vw,48px); gap:38px; border:0; border-bottom:1px solid #ffffff99;
 border-radius:0; background:var(--fresh-glass); box-shadow:none; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
}
.navbar .logo { display:flex; flex:none; align-items:center; gap:12px; color:var(--fresh-ink); }
.navbar .brand-heart { width:38px; height:38px; fill:var(--fresh-love); color:var(--fresh-love); stroke-width:0; filter:drop-shadow(0 3px 8px #ee99aa22); }
.site-shell .navbar .logo .brand-copy { display:flex; flex-direction:column; gap:2px; opacity:1; }
.navbar .logo strong { font:500 21px/1.2 var(--font); letter-spacing:.05em; color:var(--fresh-ink); }
.navbar .brand-copy small { color:var(--fresh-muted); font:400 9px/1.5 var(--font); letter-spacing:.42em; }
.navbar nav { flex:1; display:flex; align-items:center; gap:14px; }
.nav-sections { display:flex; gap:12px; align-items:center; }
.navbar nav a,.navbar .record-trip-link { color:var(--fresh-muted); border:0; background:transparent; border-radius:24px; padding:11px 17px; font-size:14px; box-shadow:none; }
.navbar nav a:hover { color:var(--primary-dark); background:#bceefa40; }
.navbar nav a.active,.navbar .record-trip-link.active { color:#245774; background:#b9edf780; border:0; }
.navbar nav a svg { width:18px; height:18px; stroke-width:1.8; }
.nav-context { display:flex; flex:1; align-items:center; justify-content:flex-end; gap:16px; font-size:11px; color:var(--fresh-muted); white-space:nowrap; }
.nav-context .nav-stats { color:var(--fresh-muted); font-variant-numeric:tabular-nums; }
.nav-context .nav-whisper { border-left:1px solid var(--fresh-line); padding-left:16px; }
.nav-tools { display:flex; align-items:center; gap:8px; margin-left:auto; }
.navbar .theme-toggle,.navbar .nav-logout button { color:var(--fresh-muted); border:0; background:transparent; width:34px; height:34px; border-radius:50%; }
.navbar .theme-toggle:hover,.navbar .nav-logout button:hover { background:#bceefa50; }
.navbar .nav-logout { margin:0; }
[data-theme=dark] .navbar nav a.active { color:#b8eff5; background:#71d6e522; }
.site-shell .page-content { padding-top:108px; }
.navbar .logo strong,.navbar .logo small,.navbar nav a,.journey-home .tl-item-name,.journey-heading h1 { text-shadow:none; }
.site-shell .page-title,.site-shell .admin-page-title { color:var(--fresh-ink); font:400 clamp(26px,2.2vw,34px)/1.5 var(--font); letter-spacing:.02em; }
.site-shell .page-kicker { color:var(--fresh-muted); letter-spacing:.22em; font-size:10px; }
.site-shell .page-title::after { background:var(--fresh-cyan); height:2px; width:48px; }
.site-shell .back-link { color:var(--fresh-muted); }
.site-shell :focus-visible { outline:2px solid #43abc5; outline-offset:3px; }
.site-shell .btn-primary,.site-shell .memory-save-bar>button { color:#245774!important; background:var(--primary)!important; border-color:transparent!important; box-shadow:0 6px 18px #59b6d51a; border-radius:12px; }
.site-shell .btn-primary:hover,.site-shell .memory-save-bar>button:hover { background:#a2e5ee!important; box-shadow:0 8px 20px #59b6d522; }
.site-shell .btn-secondary { color:var(--primary-dark); background:#bceefa30; border-color:var(--fresh-line); }
.site-shell .site-footer { background:transparent; border-color:var(--fresh-line); color:var(--fresh-muted); }
.site-shell .footer-brand { color:var(--fresh-muted); }
.site-shell .footer-brand svg,.memory-heart { color:var(--fresh-love); }
/* Home: the map remains a live map underneath independent floating cards. */
.journey-page { --journal-width:310px; --journey-ink:var(--fresh-ink); --journey-muted:var(--fresh-muted); --journey-coral:var(--fresh-cyan); --journey-coral-dark:var(--primary-dark); --journal-line:var(--fresh-line); --journal-paper:var(--fresh-glass); --journal-soft:#d9f4fb88; }
.journey-home { padding-top:74px; }
.journey-home .map-container { background:#ddf4ff; }
.journey-home #map canvas.amap-layer { filter:saturate(.65) brightness(1.07); }
[data-theme=dark] .journey-home #map canvas.amap-layer { filter:none; }
.journey-home .map-container::before { content:''; position:absolute; z-index:390; inset:0; pointer-events:none; background:linear-gradient(90deg,#ecf8ff4d 0,#ecf8ff26 30%,#ecf8ff26 82%,#e7f7ff40); }
[data-theme=dark] .journey-home .map-container::before { background:linear-gradient(90deg,#152c3a55,transparent 32%); }
.journey-home .timeline-rail {
 top:34px; bottom:28px; left:clamp(20px,3vw,46px); width:var(--journal-width); padding:0; border:0; border-radius:0;
 background:transparent; box-shadow:none; backdrop-filter:none; -webkit-backdrop-filter:none; overflow:visible; isolation:auto;
}
.journey-heading { padding:0 0 22px; margin:0; border:0; }
.journey-kicker,.journey-metrics,.timeline-rail-title { display:none; }
.journey-heading h1 { font:400 32px/1.4 var(--font); letter-spacing:.015em; color:var(--fresh-ink); }
.journey-subtitle { display:block; color:var(--fresh-muted); font-size:13px; letter-spacing:.04em; margin-top:4px; }
.journey-heading::after { content:''; display:block; width:56px; height:2px; background:var(--fresh-cyan); margin-top:12px; border-radius:2px; }
.timeline-rail-body { overflow-y:auto; overflow-x:visible; padding:0 9px 12px 0; scrollbar-width:thin; scrollbar-color:#93cfdf77 transparent; }
.tl-year-group { margin-bottom:18px; padding-bottom:0; }
.tl-year-group::before { left:12px; top:42px; bottom:0; width:1px; background:#6bdae9; opacity:.85; }
.journey-home .tl-year-tag { display:flex; align-items:center; gap:12px; width:max-content; padding:5px 14px; margin:0 0 13px -4px; border:1px solid #ffffffa6; border-radius:24px; background:var(--fresh-glass); color:var(--fresh-ink); font:500 17px/1.4 var(--font); letter-spacing:.025em; box-shadow:0 3px 12px #5bb6ce08; }
.tl-year-tag::before { display:none; }
.tl-year-tag small { font:400 10px/1.5 var(--font); color:var(--fresh-muted); letter-spacing:0; }
.journey-home .tl-item {
 width:calc(100% - 29px); min-height:96px; margin:0 0 12px 29px; padding:10px; gap:14px;
 border:1px solid #ffffffc4; border-radius:19px; color:var(--fresh-ink); background:var(--fresh-glass);
 box-shadow:var(--fresh-shadow); backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px); transition:background .18s,border-color .18s;
}
.journey-home .tl-item:hover { background:rgba(249,254,255,.91); border-color:#95dfea; backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px); }
.journey-home .tl-item.is-current { background:rgba(222,246,253,.86); border-color:#c0eff7; box-shadow:0 8px 26px #4facc923; }
.tl-item-dot { width:14px; height:14px; left:-24px; top:calc(50% - 7px); background:var(--bg-card); border:1.5px solid #56cadd; }
.tl-item.is-current .tl-item-dot { background:#42c8dd; border:3px solid #f4fdff; box-shadow:0 0 0 2px #42c8dd,0 0 0 6px #93e7f33d; }
.tl-media-frame { width:70px; height:74px; border-radius:12px; background:#d9edf5; }
.tl-item-info { gap:3px; }
.journey-home .tl-item-name { font-size:18px; font-weight:500; line-height:1.5; }
.journey-home .tl-item-name,.journey-heading h1 { text-shadow:none; }
.journey-home .tl-item-date,.tl-item-count { color:var(--fresh-muted); font-size:12px; line-height:1.65; }
.journey-home .tl-item-placeholder,.map-featured-placeholder,.mobile-feature-placeholder { background:linear-gradient(145deg,#dceff8,#e9f9fd); color:#71a4bb; }
.tl-item-count { font-variant-numeric:tabular-nums; }
.journey-home .map-featured-card {
 position:absolute; top:30px; right:24px; left:auto; bottom:auto; z-index:420; display:flex; flex-direction:column; align-items:stretch;
 width:clamp(300px,26vw,400px); min-height:0; padding:10px; margin:0; gap:0; border:1px solid #ffffffbc; border-radius:24px;
 color:var(--fresh-ink); background:var(--fresh-glass); box-shadow:0 16px 46px #4b9cbb20;
 backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
}
.journey-home .map-featured-card:hover { background:rgba(246,253,255,.85); box-shadow:0 18px 48px #4b9cbb25; }
.map-featured-card .selected-media-frame { width:100%; height:auto; aspect-ratio:3/2; border-radius:16px; background:#dbeff8; }
.map-featured-card .selected-love { position:absolute; top:12px; right:12px; width:32px; height:32px; display:grid; place-items:center; border-radius:50%; color:var(--fresh-love); background:#ffffffde; box-shadow:0 3px 12px #9aafc021; }
.selected-love svg { width:18px; height:18px; fill:currentColor; stroke-width:0; }
.map-featured-copy { padding:12px 10px 3px; gap:8px; }
.map-featured-copy strong { font:400 32px/1.45 var(--title-font); color:var(--fresh-ink); }
.map-featured-copy .map-featured-meta { display:flex; flex-wrap:wrap; gap:8px; color:var(--fresh-muted); font:400 12px/1.8 var(--font); }
.map-featured-meta svg { width:13px; height:13px; vertical-align:-2px; margin-right:4px; }
.map-featured-copy>.featured-cta { display:flex; align-items:center; justify-content:center; gap:8px; margin-top:4px; min-height:46px; border-radius:25px; background:#8bdce8; color:#245774; font-size:16px; }
.map-featured-copy>.featured-cta svg { width:16px; height:16px; }
.journey-home .map-mode-switch { top:auto; bottom:26px; right:calc(50% - 70px); border-color:#ffffffaa; background:var(--fresh-glass); border-radius:24px; box-shadow:var(--fresh-shadow); }
.map-mode-switch a { border-radius:20px; color:var(--fresh-muted); }
.map-mode-switch a.active { background:#b4edf5; color:#245774; }
.journey-home .map-loading { background:var(--fresh-glass); border-color:var(--fresh-line); color:var(--fresh-muted); }
.love-counter-list { gap:8px; border:0; margin:4px 0 0; padding:12px 0 0; }
.love-counter { border:1px solid #ffffffaa; border-radius:16px; padding:10px 12px; background:var(--fresh-glass); }
.love-counter>svg { color:var(--fresh-love); width:22px; }
.love-counter-copy>strong { font:400 19px/1.4 var(--font); }
.journey-home .concert-panel { background:var(--fresh-glass); border:1px solid #ffffff99; border-radius:18px; padding:14px; box-shadow:var(--fresh-shadow); }
.journey-page .site-footer { right:190px; color:var(--fresh-muted); background:#f4fcff91; }
.journey-heart-marker { color:var(--fresh-love); }
.map-fallback { background:var(--bg-card); border-color:var(--fresh-line); }
.map-fallback-actions button { background:var(--primary); color:#245774; border-color:transparent; }
/* Circular photo pins, with a small route endpoint underneath. */
#map .polaroid-back { display:none; }
#map .polaroid-frame { width:76px; height:76px; max-height:76px; padding:3px; border:1px solid #fff; border-radius:50%; overflow:hidden; background:#fff; box-shadow:0 4px 16px #268da83b; }
#map .polaroid-frame img { width:100%; height:100%; border-radius:50%; aspect-ratio:1; }
#map .polaroid-frame::after { display:none; }
#map .polaroid-badge { top:auto; bottom:4px; right:calc(50% - 15px); min-width:30px; height:16px; padding:0 3px; font-size:9px; background:#2687aacf; border:0; box-shadow:none; }
#map .polaroid-pin { background:#72d9e8; border-color:#fff; width:10px; height:10px; box-shadow:0 0 0 2px #82dbe855; }
#map.compact-markers .polaroid-frame { height:0; }
#map .cluster-marker { border-color:#fff; background:#9fdfead9; box-shadow:0 4px 14px #268da82b; }
#map .dot-marker { background:#6ad5e5; border-color:#fff; }
#map .cluster-marker-count { color:#245774; background:#d8f5fbcc; }
#map .polaroid-marker.is-selected .polaroid-frame { border-color:#65daeb; box-shadow:0 0 0 3px #ffffffbf,0 0 0 5px #78e0ee66,0 5px 20px #268da855; }
/* Albums, memories and the editor share the same light surfaces. */
.site-shell.memory-page { --memory-paper:var(--bg); --memory-ink:var(--fresh-ink); --memory-muted:var(--fresh-muted); --memory-coral:var(--primary-dark); --memory-glass:var(--fresh-glass); background:radial-gradient(ellipse at 5% 6%,#dff4ff 0,transparent 48%),radial-gradient(ellipse at 95% 75%,#dff6f2 0,transparent 48%),var(--bg); }
.site-shell.memory-page .album-index,.site-shell.memory-page .album-detail,.site-shell.memory-page .memory-editor { margin-top:74px; padding-top:30px; max-width:1480px; }
.memory-page .page-heading-row { margin-bottom:28px; }
.memory-page .memory-whisper { font-family:var(--font); color:var(--fresh-muted); font-size:13px; }
.memory-page .memory-whisper span,.memory-page .card-title-row>svg { color:var(--fresh-love); }
.memory-page .place-card { border:1px solid #ffffffcc; border-radius:23px; background:var(--fresh-glass); box-shadow:var(--fresh-shadow); padding:8px; }
.memory-page .card-img-wrap,.memory-page .card-img-placeholder { border-radius:17px; overflow:hidden; background:#dceef6; }
.memory-page .card-img-wrap { position:relative; }
.memory-page .card-img-wrap [data-media-placeholder] { position:absolute; inset:0; display:grid; place-items:center; color:var(--fresh-muted); background:#dceef6; }
.memory-page .card-img-wrap [data-media-placeholder][hidden] { display:none; }
.memory-page .card-body { padding:15px 14px 17px; }
.memory-page .card-title { font:400 23px/1.6 var(--title-font); }
.memory-page .card-date { color:var(--fresh-muted); font-size:12px; }
.memory-page .detail-header h1 { color:var(--fresh-ink); font-weight:400; }
.memory-page .detail-itinerary,.memory-page .memory-panel { border:1px solid #ffffffcc; background:var(--fresh-glass); box-shadow:var(--fresh-shadow); border-radius:22px; }
.memory-page .itinerary-stop { background:#c2edf640; }
.memory-page .memory-placeholder { background:linear-gradient(145deg,#e4f6fd,#dceff6); color:#71a8bd; }
.memory-page .memory-section-title h2 { border-color:var(--fresh-cyan); font:500 19px/1.5 var(--font); }
.memory-page .media-tile { border-radius:15px; background:#dceef6; }
.memory-page .memory-save-bar { background:var(--fresh-glass); border-color:#ffffffcc; box-shadow:var(--fresh-shadow); }
.memory-page .memory-save-bar>span { color:var(--fresh-muted); }
.memory-page .memory-editor input:not([type=checkbox]):not([type=range]):not([type=file]),.memory-page .memory-editor textarea,.memory-page .memory-editor select { background:#f9fdffad; color:var(--fresh-ink); border-color:var(--fresh-line); }
.memory-page .memory-editor input:focus-visible,.memory-page .memory-editor textarea:focus-visible { outline-color:#62bdcf; }
.memory-page .transport-chip.active { background:#b6eaf540; border-color:#82cadb; color:#39839c; }
.memory-page .photo-preview-item.is-cover { outline-color:#70d0e0; }
.memory-page #photo-input { background:#dff4fa44; border-color:#8fcada; }
.memory-page .stop-number .num { background:#8bdce8!important; color:#245774!important; }
.site-shell .admin-card,.site-shell .form-card,.site-shell .storage-summary,.site-shell .settings-panel,.site-shell .admin-section { background:var(--fresh-glass); border-color:var(--fresh-line); box-shadow:var(--fresh-shadow); }
.site-shell .search-results { background:var(--bg-card)!important; border-color:var(--fresh-line)!important; }
.site-shell .search-result-item:hover { background:#c6edf544!important; }
.site-shell .storage-progress-fill { background:linear-gradient(90deg,#8bdce8,#70c8dd); }
.site-shell .flash-msg { border-radius:15px; box-shadow:var(--fresh-shadow); }
[data-theme=dark] .journey-home .tl-item:hover,[data-theme=dark] .journey-home .map-featured-card:hover { background:#274e63dc; }
[data-theme=dark] .journey-home .tl-item.is-current { background:#285367d6; border-color:#66bdcf77; }
[data-theme=dark] .journey-home .tl-item-placeholder,[data-theme=dark] .map-featured-placeholder,[data-theme=dark] .mobile-feature-placeholder { background:#2a4a5e; color:#a0bdce; }
[data-theme=dark] .journey-home .tl-year-tag,[data-theme=dark] .journey-home .tl-item,[data-theme=dark] .journey-home .map-featured-card,[data-theme=dark] .memory-page .place-card,[data-theme=dark] .memory-page .memory-panel { border-color:#7ab8cf30; }
[data-theme=dark] .site-shell.memory-page { background:var(--bg); }
[data-theme=dark] .memory-page .memory-editor input:not([type=checkbox]):not([type=range]):not([type=file]),[data-theme=dark] .memory-page .memory-editor textarea,[data-theme=dark] .memory-page .memory-editor select { background:#25495d88; }
[data-theme=dark] .memory-page .memory-placeholder { background:linear-gradient(145deg,#26465a,#213f50); }
[data-theme=dark] .site-shell .search-result-item:hover { background:#285367!important; }
@media(min-width:1600px) { .journey-page { --journal-width:325px; } .journey-home .map-featured-card { right:32px; } }
@media(min-width:768px) and (max-width:1199px) { .journey-page { --journal-width:280px; } .journey-home .timeline-rail { left:20px; padding:0; } .journey-heading h1 { font-size:25px; } .journey-home .map-featured-card { width:285px; right:18px; } .nav-context .nav-whisper { display:none; } .site-shell .navbar { gap:24px; } .nav-sections { gap:3px; } .navbar nav a { padding:10px 12px; } }
@media(max-height:780px) and (min-width:768px) { .journey-home .timeline-rail { top:24px; bottom:22px; padding:0; } .journey-heading { padding-bottom:18px; margin:0; } .journey-home .tl-item { min-height:86px; margin-bottom:10px; } .tl-media-frame { height:64px; width:64px; } .journey-home .map-featured-card { width:310px; top:24px; } }
@media(max-width:767px) {
 .site-shell .navbar { height:64px; min-height:64px; padding:0 18px; gap:10px; }
 .navbar .logo strong { font-size:18px; } .navbar .brand-heart { width:30px; height:30px; } .navbar .brand-copy small { font-size:8px; }
 .navbar nav { flex:0; margin-left:auto; } .navbar .nav-sections,.nav-context { display:none; }
 .navbar .nav-tools { display:flex; } .navbar .theme-toggle,.navbar .nav-logout button { width:30px; height:30px; }
 .site-shell .mobile-tabbar { background:var(--fresh-glass); border-top:1px solid #ffffff99; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); }
 .mobile-tabbar a { color:var(--fresh-muted); } .mobile-tabbar a.active { color:var(--primary-dark); } .mobile-tabbar a.active::before { background:#b9edf777; }
 .journey-home { padding-top:64px; }
 .journey-home .timeline-rail { top:22px; left:20px; right:auto; bottom:auto; width:max-content; max-width:calc(100% - 40px); height:auto; padding:0; border:0; background:none; box-shadow:none; }
 .journey-heading { padding:0; } .journey-heading h1 { font-size:23px; } .journey-subtitle { display:block; font-size:11px; }
 .journey-heading::after { width:42px; margin-top:9px; }
 .journey-home .map-mode-switch { top:116px; right:14px; bottom:auto; grid-template-columns:repeat(2,46px); }
 .journey-home .map-featured-card { display:none; }
 .journey-home .map-loading { top:120px; left:100px; }
 .timeline-mobile-btn { background:var(--fresh-glass); border:1px solid #ffffffbc; box-shadow:var(--fresh-shadow); backdrop-filter:blur(7px); -webkit-backdrop-filter:blur(7px); border-radius:22px; min-height:92px; bottom:16px; }
 .mobile-feature-copy strong { font-size:16px; font-weight:500; } .mobile-feature-copy small { font-size:11px; color:var(--fresh-muted); } .mobile-feature-copy>span { font-size:11px; }
 .journey-home .timeline-drawer { background:var(--bg-card); border-color:var(--fresh-line); border-radius:26px 26px 0 0; }
 .timeline-drawer .tl-item { width:calc(100% - 29px); } .timeline-drawer .tl-year-tag { font-size:16px; }
 .timeline-drawer-header { color:var(--fresh-ink); border-color:var(--fresh-line); background:none; } .timeline-drawer-close { color:var(--fresh-muted); }
 .site-shell .page-content { padding-top:85px; } .site-shell.memory-page .album-index,.site-shell.memory-page .album-detail,.site-shell.memory-page .memory-editor { margin-top:64px; padding-top:24px; }
 .memory-page .place-card { padding:6px; border-radius:18px; } .memory-page .card-img-wrap { border-radius:13px; } .memory-page .card-body { padding:12px 8px; } .memory-page .card-title { font-size:20px; }
 .memory-page .card-date { font-size:11px; } .memory-page .memory-panel { border-radius:18px; }
 .site-shell .memory-save-bar>button { min-width:125px; font-size:13px; }
}
@media(prefers-reduced-motion:reduce) { .site-shell *, .site-shell *::before,.site-shell *::after { scroll-behavior:auto!important; } .journey-home .tl-item,.memory-page .place-card { transition:none; } }
/* The entry pages use the same type and palette, without external font requests. */
.fresh-auth { font-family:var(--font); background:var(--bg); color:var(--fresh-ink); }
.fresh-auth .auth-scene { background:radial-gradient(ellipse at 65% 35%,#d5f2fb,#ecf8ff 65%); }
.fresh-auth .auth-scene::before { display:none; }
.fresh-auth .auth-scene::after { background:url('../img/spring-edges.webp') center/cover no-repeat; opacity:.35; }
.fresh-auth .auth-scene-content { z-index:2; left:clamp(28px,5vw,80px); bottom:clamp(38px,10vh,120px); }
.fresh-auth .auth-brand { color:var(--fresh-ink); font:400 clamp(32px,4.4vw,62px)/1.4 var(--title-font); text-shadow:none; letter-spacing:.08em; }
.fresh-auth .auth-scene-content p { color:var(--fresh-muted); text-shadow:none; margin-top:16px; font-size:14px; }
.fresh-auth .auth-panel { background:var(--fresh-glass); }
.fresh-auth .auth-card { color:var(--fresh-ink); }
.fresh-auth .auth-title { font:400 27px/1.5 var(--font); color:var(--fresh-ink); }
.fresh-auth .auth-subtitle,.fresh-auth .auth-footer a { color:var(--fresh-muted); }
.fresh-auth .auth-submit { background:var(--primary); color:#245774; border:0; border-radius:13px; box-shadow:0 6px 18px #59b6d51a; }
.fresh-auth input { border-color:var(--fresh-line); border-radius:11px; color:var(--fresh-ink); }
[data-theme=dark] .fresh-auth .auth-scene { background:radial-gradient(ellipse at 65% 35%,#25495a,#152c3a 65%); }
[data-theme=dark] .fresh-auth .auth-scene::after { opacity:.13; }
@media(prefers-reduced-transparency:reduce) { :root { --fresh-glass:#f0faff; } [data-theme=dark] { --fresh-glass:#213f50; } .site-shell .navbar,.journey-home .tl-item,.journey-home .map-featured-card,.timeline-mobile-btn { backdrop-filter:none; -webkit-backdrop-filter:none; } }

/* Keep memories reachable at the national overview; route animations remain hidden. */
.journey-home #map.cluster-loaded.overview-only .polaroid-marker,
.journey-home #map.cluster-loaded.overview-only .cluster-marker { opacity:1 !important; filter:none; pointer-events:auto; }
.journey-home #map.overview-only .amap-marker:has(.polaroid-marker),
.journey-home #map.overview-only .amap-marker:has(.cluster-marker),
.journey-home #map.overview-only .leaflet-marker-icon:has(.polaroid-marker),
.journey-home #map.overview-only .leaflet-marker-icon:has(.cluster-marker) { pointer-events:auto !important; }

/* Set the SDK marker container order so transport hover and Leaflet latitude sorting
   cannot cover a photo. The child image alone cannot cross its parent's layer. */
.journey-home #map .amap-marker:has(.polaroid-marker),
.journey-home #map .amap-marker:has(.cluster-marker img),
.journey-home #map .leaflet-marker-icon:has(.polaroid-marker),
.journey-home #map .leaflet-marker-icon:has(.cluster-marker img) { z-index:200 !important; }
.journey-home #map .amap-marker:has(.trajectory-transport-marker),
.journey-home #map .leaflet-marker-icon:has(.trajectory-transport-marker) { z-index:110 !important; }

/* Complete journey titles wrap at any length instead of truncating transfer stops. */
.journey-home .map-featured-card { max-height:calc(100% - 60px); overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin; }
.map-featured-card .selected-media-frame,.map-featured-copy { flex-shrink:0; }
.map-featured-copy strong:has(.map-featured-name.is-route) { font:500 21px/1.7 var(--font); }
.map-featured-name.is-route,.mobile-feature-name.is-route { display:block; white-space:normal; overflow-wrap:anywhere; }
@media(max-width:767px) {
 .timeline-mobile-btn:has(.mobile-feature-name.is-route) { max-height:35vh; overflow-y:auto; overscroll-behavior:contain; }
 .mobile-feature-name.is-route { font-size:14px; line-height:1.7; }
}

/* Media viewers: constrain the grid tracks before resolving media max-height.
   Intrinsic image sizes must never enlarge the stage beyond the live viewport. */
.site-shell .lightbox {
 box-sizing:border-box; inset:0; width:100%; height:100vh; height:100dvh;
 overflow:hidden; padding:max(64px,env(safe-area-inset-top)) max(64px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom)) max(64px,env(safe-area-inset-left));
}
.site-shell .lightbox.active { display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:minmax(0,1fr); place-items:center; }
.site-shell .lightbox .lightbox-stage {
 width:100%; height:100%; min-width:0; min-height:0; max-width:100%; max-height:100%;
 display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:minmax(0,1fr); place-items:center;
}
.site-shell .lightbox .lightbox-stage>img,.site-shell .lightbox .lightbox-stage>video {
 grid-area:1/1; width:auto; height:auto; min-width:0; min-height:0; max-width:100%; max-height:100%; object-fit:contain;
}
.site-shell #gallery-overlay { box-sizing:border-box; width:100%; height:100vh; height:100dvh; overflow:hidden; }
.site-shell #gallery-overlay .gallery-body { min-width:0; min-height:0; overflow:hidden; padding-bottom:max(16px,env(safe-area-inset-bottom)); }
.site-shell #gallery-overlay .gallery-media-container {
 height:100%; max-height:100%; min-width:0; min-height:0; display:grid;
 grid-template-columns:minmax(0,1fr); grid-template-rows:minmax(0,1fr); place-items:center;
}
.site-shell #gallery-overlay .gallery-img,.site-shell #gallery-overlay .gallery-video {
 grid-area:1/1; width:auto; height:auto; min-width:0; min-height:0; max-width:100%; max-height:100%; object-fit:contain;
}
@media(max-width:767px) {
 .site-shell .lightbox { padding:max(60px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(48px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left)); }
}

/* A short, airy location cue. Photos remain above transport and this halo. */
.map-focus-pulse { position:relative; width:112px; height:112px; pointer-events:none; }
.map-focus-ring { position:absolute; inset:0; border:2px solid rgba(91,191,210,.66); border-radius:50%; background:radial-gradient(circle,rgba(193,237,245,0) 40%,rgba(177,231,241,.28)); opacity:0; animation:map-focus-ripple 1.8s cubic-bezier(.16,.65,.3,1) forwards; }
.map-focus-ring.is-delayed { animation-delay:.4s; }
.map-focus-dot { position:absolute; width:10px; height:10px; left:51px; top:51px; border:2px solid #fff; border-radius:50%; background:#83d1df; box-shadow:0 0 0 5px rgba(201,240,247,.55); animation:map-focus-dot 2.6s ease-out forwards; }
.amap-marker:has(.map-focus-pulse),.leaflet-marker-icon:has(.map-focus-pulse) { pointer-events:none!important; }
@keyframes map-focus-ripple { 0% { transform:scale(.2); opacity:0; } 12% { opacity:.9; } 100% { transform:scale(1); opacity:0; } }
@keyframes map-focus-dot { 0%,75% { opacity:1; } 100% { opacity:0; } }
@media(prefers-reduced-motion:reduce) {
 .map-focus-ring { animation:none; transform:scale(.55); opacity:.6; background:transparent; }
 .map-focus-ring.is-delayed { display:none; }
 .map-focus-dot { animation:none; }
}

/* All destinations stay readable in both timeline layouts. */
.journey-home .tl-item-name.is-route { font-size:16px; line-height:1.65; white-space:normal; overflow-wrap:anywhere; }
.journey-home .tl-item:has(.tl-item-name.is-route) { height:auto; }

/* A quiet fixed heading; the timeline itself is the only scrolling area. */
.journey-home .timeline-rail-body,.journey-home .timeline-drawer-body { scrollbar-width:none; -ms-overflow-style:none; overscroll-behavior:contain; }
.journey-home .timeline-rail-body { padding-right:0; }
.journey-home .timeline-rail-body::-webkit-scrollbar,.journey-home .timeline-drawer-body::-webkit-scrollbar { display:none; width:0; height:0; }
.journey-home .journey-heading { display:flex; align-items:flex-start; gap:16px; }
.journey-home .journey-heading::after { display:none; }
.journey-heading-copy { flex:1; min-width:0; }
.journey-heading-copy h1 { white-space:nowrap; }
.journey-heading-copy::after { content:''; display:block; width:56px; height:2px; margin-top:12px; border-radius:2px; background:var(--fresh-cyan); }
.journey-home .journey-heading .love-counter-list { display:block; flex:none; width:130px; max-height:none; overflow:visible; margin:0; padding:1px 0 0 16px; border:0; border-left:1px solid var(--fresh-line); }
.journey-home .journey-heading .love-counter { display:block; position:relative; padding:0; margin:0; border:0; border-radius:0; background:none; box-shadow:none; backdrop-filter:none; -webkit-backdrop-filter:none; }
.journey-home .journey-heading .love-counter > svg { position:absolute; top:2px; left:0; width:14px; height:14px; padding:0; border-radius:0; color:var(--fresh-love); background:none; stroke-width:1.6; }
.journey-home .journey-heading .love-counter-copy { display:flex; flex-wrap:wrap; gap:4px 0; color:var(--fresh-muted); }
.journey-home .journey-heading .love-counter-copy > span { padding-left:19px; font:400 11px/1.5 var(--font); }
.journey-home .journey-heading .love-counter-copy > strong { font:italic 400 48px/.98 'Bodoni MT','Didot','Baskerville','Georgia',serif; color:var(--fresh-ink); letter-spacing:-.045em; font-variant-numeric:lining-nums; }
.journey-home .journey-heading .love-counter-copy > strong small { margin-left:7px; font:400 12px/1.5 var(--font); letter-spacing:0; }
.journey-home .journey-heading .love-counter.is-today .love-counter-copy > strong { font:500 20px/1.6 var(--font); letter-spacing:0; }
.journey-home .journey-heading .love-counter-copy > small { display:block; width:100%; font:400 10px/1.5 var(--font); letter-spacing:.03em; }
.timeline-extra-moments { display:grid; gap:8px; margin:0 0 16px; }
.timeline-extra-moment { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px; border:1px solid var(--fresh-line); border-radius:13px; background:var(--fresh-glass); color:var(--fresh-muted); font-size:12px; }
.timeline-extra-moment strong { flex:none; color:var(--fresh-ink); font:400 18px/1.4 Georgia,serif; }
@media(max-width:767px) {
 .journey-home .timeline-rail { width:calc(100% - 40px); }
 .journey-home .journey-heading { gap:14px; }
 .journey-heading-copy::after { width:42px; margin-top:9px; }
 .journey-home .journey-heading .love-counter-list { width:123px; padding-left:13px; }
 .journey-home .journey-heading .love-counter-copy > strong { font-size:44px; }
 .journey-home .map-mode-switch { top:116px; }
}
@media(max-width:767px) and (max-height:550px) {
 .journey-home .timeline-rail { top:12px; }
 .journey-home .journey-subtitle,.journey-heading-copy::after,.journey-home .journey-heading .love-counter-copy > small { display:none; }
 .journey-home .journey-heading .love-counter-copy > strong { font-size:40px; }
 .journey-home .map-mode-switch { top:90px; }
}

/* Separate the dismiss button from the card's navigation link. */
.journey-home .map-featured-card[hidden] { display:none; }
.map-featured-open { display:flex; flex-direction:column; flex-shrink:0; color:inherit; text-decoration:none; }
.map-featured-card .selected-love { right:auto; left:14px; top:14px; }
.map-featured-close { position:absolute; top:14px; right:14px; z-index:2; display:grid; place-items:center; width:34px; height:34px; padding:0; border:1px solid rgba(255,255,255,.9); border-radius:50%; background:rgba(248,253,255,.94); color:var(--fresh-ink); box-shadow:0 3px 12px rgba(67,105,127,.12); cursor:pointer; transition:background .15s,color .15s; }
.map-featured-close svg { width:18px; height:18px; stroke-width:1.8; }
.map-featured-close:hover { background:#fff; color:var(--primary-dark); }
.map-featured-close:focus-visible { outline:2px solid var(--fresh-cyan); outline-offset:3px; }

/* Keep photo controls legible against bright images in the dark theme. */
[data-theme=dark] .map-featured-close { width:36px; height:36px; background:rgba(13,33,48,.96); color:#f3fbff; border-color:rgba(211,241,251,.65); box-shadow:0 3px 12px rgba(0,0,0,.3); }
[data-theme=dark] .map-featured-close svg { width:20px; height:20px; stroke-width:2.2; }
[data-theme=dark] .map-featured-close:hover { background:#315c73; color:#fff; border-color:#abe4f2; }
[data-theme=dark] .map-featured-close:focus-visible { outline-color:#92e1ef; }
[data-theme=dark] .map-featured-card .selected-love { background:rgba(13,33,48,.94); color:#f6b1bf; border:1px solid rgba(246,177,191,.36); }
