:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#04060f;--fg:#e8ecf5;--muted:#8b94ad;--glow:#ffd166;--glow-soft:#ffd16659;--panel:#04060fb8;font-family:system-ui,-apple-system,Noto Sans TC,PingFang TC,sans-serif}html,body{background:var(--bg);height:100%;color:var(--fg);margin:0;overflow:hidden}#app{position:fixed;inset:0}.globe{position:absolute;inset:0}.brand{top:max(16px, env(safe-area-inset-top));z-index:2;pointer-events:none;position:absolute;left:20px}.brand h1{letter-spacing:.08em;color:var(--glow);text-shadow:0 0 18px #ffd1668c;margin:0;font-size:22px;font-weight:600}.brand p{color:var(--muted);margin:2px 0 0;font-size:12px}.bottom{z-index:2;padding:0 16px max(12px, env(safe-area-inset-bottom));pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:absolute;bottom:0;left:0;right:0}.status{color:var(--muted);text-align:center;font-size:12px}.status b{color:var(--glow);font-weight:600}.error{color:#ff8a80}.badge{color:var(--glow);border:1px solid #ffd16680;border-radius:999px;margin-left:8px;padding:1px 6px;font-size:11px}.timeline{pointer-events:auto;background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid #ffffff0f;border-radius:14px;align-items:center;gap:10px;width:min(720px,100%);padding:10px 14px;display:flex}.timeline button{min-width:34px;height:34px;color:var(--fg);font:inherit;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:10px;flex:none;padding:0 10px;font-size:13px}.timeline button:hover{border-color:var(--glow-soft)}.timeline button:disabled{opacity:.35;cursor:default}.tl-play{color:var(--glow)}.timeline.is-playing .tl-play{border-color:var(--glow-soft);background:#ffd16629}.tl-track{flex:1;align-items:center;gap:8px;padding-top:18px;display:flex}.tl-slider{flex:1;align-items:center;display:flex;position:relative}.tl-end{color:var(--muted);font-variant-numeric:tabular-nums;flex:none;font-size:11px}.tl-range{appearance:none;background:#ffffff2e;border-radius:2px;outline:none;flex:1;height:4px;margin:0}.tl-range::-webkit-slider-thumb{appearance:none;background:var(--glow);cursor:grab;border-radius:50%;width:18px;height:18px;box-shadow:0 0 14px #ffd166b3}.tl-range::-moz-range-thumb{background:var(--glow);cursor:grab;border:0;border-radius:50%;width:18px;height:18px;box-shadow:0 0 14px #ffd166b3}.timeline.is-all .tl-range::-webkit-slider-thumb{background:var(--muted);box-shadow:none}.timeline.is-all .tl-range::-moz-range-thumb{background:var(--muted);box-shadow:none}.tl-year{background:var(--glow);color:#1a1400;font-variant-numeric:tabular-nums;pointer-events:none;border-radius:6px;width:max-content;padding:1px 6px;font-size:11px;font-weight:600;position:absolute;top:-22px;left:0;transform:translate(-50%)}.timeline.is-all .tl-year{display:none}.card{z-index:3;background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);top:max(16px, env(safe-area-inset-top));border:1px solid #ffffff14;border-radius:16px;flex-direction:column;width:min(400px,100vw - 32px);display:flex;position:absolute;bottom:16px;right:16px;overflow:hidden}.card[hidden],.card-handle{display:none}.card-head{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 16px 12px;display:flex}.card-head h2{margin:0;font-size:18px;font-weight:600}.card-head .sub{color:var(--muted);margin:2px 0 0;font-size:13px}.card-head .meta{color:var(--muted);margin:6px 0 0;font-size:12px}.card-close{width:32px;height:32px;color:var(--fg);cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:50%;flex:none;font-size:14px}.card-body{-webkit-overflow-scrolling:touch;padding:8px 16px 16px;overflow-y:auto}.visit h3{color:var(--glow);margin:14px 0 8px;font-size:13px;font-weight:600}.visit h3 small{color:var(--muted);margin-left:8px;font-weight:400}.grid{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:4px;display:grid}.tile{aspect-ratio:1;cursor:pointer;background:#ffffff0f;border:0;border-radius:6px;padding:0;position:relative;overflow:hidden}.tile img{object-fit:cover;width:100%;height:100%;display:block}.tile.missing img{visibility:hidden}.tile.missing:after{content:"";background:repeating-linear-gradient(135deg,#ffffff0d 0 8px,#0000 8px 16px);position:absolute;inset:0}.empty{color:var(--muted);margin:8px 0;font-size:13px}@media (width<=767px){.card{width:auto;max-height:62vh;padding-bottom:env(safe-area-inset-bottom);border-bottom:0;border-radius:18px 18px 0 0;inset:auto 0 0}.card-handle{background:#ffffff40;border-radius:2px;width:40px;height:4px;margin:8px auto 0;display:block}.card-head{padding-top:10px}.card:not([hidden])~.bottom{display:none}}.viewer{z-index:10;touch-action:pan-y;-webkit-user-select:none;user-select:none;background:#020308f0;grid-template-columns:56px 1fr 56px;align-items:center;display:grid;position:fixed;inset:0}.viewer[hidden]{display:none}.v-figure{max-height:100vh;padding:56px 0 max(24px, env(safe-area-inset-bottom));box-sizing:border-box;flex-direction:column;grid-column:2;justify-content:center;align-items:center;gap:10px;margin:0;display:flex}.v-img{object-fit:contain;background:#ffffff0a;border-radius:6px;width:auto;max-width:100%;height:auto;max-height:calc(100vh - 130px)}.v-caption{color:var(--muted);font-size:13px}.v-caption span{font-variant-numeric:tabular-nums;margin-left:10px}.v-missing{color:#ff8a80}.viewer button{color:var(--fg);cursor:pointer;opacity:.7;background:0 0;border:0;height:100%;font-size:40px;line-height:1}.viewer button:hover{opacity:1}.viewer button:disabled{opacity:.15;cursor:default}.v-prev{grid-column:1}.v-next{grid-column:3}.v-close{top:max(12px, env(safe-area-inset-top));width:44px;position:absolute;right:12px;height:44px!important;font-size:20px!important}.v-open{top:max(18px, env(safe-area-inset-top));color:var(--glow);border:1px solid #ffd16680;border-radius:999px;padding:6px 12px;font-size:13px;text-decoration:none;position:absolute;left:16px}@media (width<=480px){.viewer{grid-template-columns:0 1fr 0}.v-prev,.v-next{display:none}}.tip{color:var(--fg);white-space:nowrap;background:#04060fd9;border:1px solid #ffd16659;border-radius:8px;padding:6px 10px;font-size:13px}.tip span{color:var(--muted);margin-left:8px}@media (width<=480px){.timeline{gap:6px;padding:8px 10px}.tl-end{display:none}}
