:root{--bg:#0b0906;--bg2:#141009;--card:#1c160d;--card2:#241c11;--line:#d4af6924;--brass:#d4af69;--brass-hi:#f0d9a8;--ink:#f3ead8;--ink-dim:#a89878;--ink-faint:#6b5f4a;--good:#7fbf7f;--warn:#e0b45c;--bad:#d47a6a;--radius:18px;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--ink);overscroll-behavior:none;-webkit-user-select:none;user-select:none;font-family:Inter,system-ui,sans-serif}#app{flex-direction:column;height:100dvh;display:flex;overflow:hidden}h1,h2,h3,.serif{font-family:Fraunces,serif}.screen{flex-direction:column;flex:1;animation:.25s fadein;display:flex;overflow:hidden}@keyframes fadein{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.scroll{-webkit-overflow-scrolling:touch;padding:0 18px calc(90px + var(--sab));flex:1;overflow-y:auto}.topbar{padding:calc(14px + var(--sat)) 18px 10px;align-items:center;gap:12px;display:flex}.topbar h1{letter-spacing:.3px;font-size:22px;font-weight:900}.topbar .sub{color:var(--ink-dim);margin-top:2px;font-family:Inter;font-size:12px;font-weight:500}.back-btn{border:1px solid var(--line);background:var(--card);width:38px;height:38px;color:var(--brass);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:flex}.tabbar{padding:10px 8px calc(10px + var(--sab));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:50;background:linear-gradient(#0b0906eb,#0b0906fa);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:var(--ink-faint);letter-spacing:.4px;background:0 0;border:none;border-radius:12px;flex-direction:column;align-items:center;gap:3px;padding:4px 14px;font-size:10px;font-weight:600;display:flex}.tab svg{stroke:currentColor;fill:none;stroke-width:1.8px;width:22px;height:22px}.tab.active{color:var(--brass)}.scene-card{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);aspect-ratio:4/3;margin-bottom:14px;position:relative;overflow:hidden}.scene-card img{object-fit:cover;width:100%;height:100%;display:block}.scene-card .meta{background:linear-gradient(#0000,#0b0906eb);padding:30px 14px 12px;position:absolute;bottom:0;left:0;right:0}.scene-card .meta .place{font-family:Fraunces;font-size:16px;font-weight:700}.scene-card .meta .era{color:var(--brass);margin-top:2px;font-size:12px;font-weight:600}.badge{letter-spacing:.5px;text-transform:uppercase;border-radius:999px;align-items:center;gap:4px;padding:4px 8px;font-size:10px;font-weight:700;display:inline-flex}.badge.free{color:var(--good);background:#7fbf7f26;position:absolute;top:10px;right:10px}.badge.ai{color:var(--brass);background:#d4af6929;border:1px solid #d4af694d}.hero{border:1px solid var(--line);background:radial-gradient(120% 140% at 20% 0,#2a2113 0%,#171009 60%);border-radius:22px;margin:6px 0 18px;padding:22px 20px}.hero h2{font-size:24px;font-weight:900;line-height:1.15}.hero p{color:var(--ink-dim);margin-top:8px;font-size:13px;line-height:1.5}.section-title{letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-dim);margin:18px 0 10px;font-size:13px;font-weight:700}.btn{background:linear-gradient(135deg, var(--brass), #b08d4c);color:#1a1206;letter-spacing:.3px;border:none;border-radius:16px;justify-content:center;align-items:center;gap:8px;width:100%;padding:16px;font-family:Inter;font-size:15px;font-weight:700;transition:transform .1s;display:flex}.btn:active{transform:scale(.97)}.btn.ghost{background:var(--card);color:var(--brass);border:1px solid var(--line)}.btn:disabled{opacity:.4}.input{background:var(--card);border:1px solid var(--line);width:100%;color:var(--ink);border-radius:14px;outline:none;padding:14px 16px;font-family:Inter;font-size:15px}.input:focus{border-color:#d4af6973}textarea.input{resize:none;height:76px}.search-results{margin-top:8px}.search-row{background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:12px;margin-bottom:8px;padding:13px 14px;font-size:14px;line-height:1.35}.search-row:active{background:var(--card2)}.search-row .type{color:var(--ink-faint);text-transform:capitalize;margin-top:2px;font-size:11px}#map{z-index:1;flex:1;min-height:220px}.map-wrap{flex-direction:column;flex:1;display:flex;position:relative}.map-pin{z-index:400;pointer-events:none;filter:drop-shadow(0 3px 5px #00000080);font-size:34px;position:absolute;top:50%;left:50%;transform:translate(-50%,-100%)}.map-footer{padding:14px 18px calc(16px + var(--sab));background:var(--bg);border-top:1px solid var(--line)}.map-footer .place-label{min-height:20px;color:var(--brass-hi);margin-bottom:12px;font-size:14px;font-weight:600}.leaflet-container{background:#0e0c08;font-family:Inter}.leaflet-control-attribution{color:var(--ink-faint)!important;background:#0b0906b3!important;font-size:9px!important}.leaflet-control-attribution a{color:var(--ink-dim)!important}.year-display{text-align:center;margin:18px 0 6px}.year-display .yr{color:var(--brass-hi);font-variant-numeric:tabular-nums;font-family:Fraunces;font-size:64px;font-weight:900;line-height:1}.year-display .era-name{color:var(--ink-dim);letter-spacing:.5px;margin-top:6px;font-size:13px;font-weight:600}.dial{touch-action:pan-x;height:84px;margin:10px 0 4px;position:relative;overflow:hidden;-webkit-mask:linear-gradient(90deg,#0000,#000 15% 85%,#0000);mask:linear-gradient(90deg,#0000,#000 15% 85%,#0000)}.dial canvas{display:block}.dial-center{background:var(--brass);width:2px;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 0 12px #d4af6999}.era-chips{scrollbar-width:none;gap:8px;padding:10px 0;display:flex;overflow-x:auto}.era-chips::-webkit-scrollbar{display:none}.chip{background:var(--card);color:var(--ink-dim);border:1px solid var(--line);border-radius:999px;flex-shrink:0;padding:9px 15px;font-size:13px;font-weight:600}.chip.active{color:var(--brass);background:#d4af6926;border-color:#d4af6966}.viewpoint-row{gap:8px;margin-top:4px;display:flex}.vp{text-align:center;background:var(--card);border:1px solid var(--line);color:var(--ink-dim);border-radius:14px;flex:1;padding:12px 6px;font-size:12px;font-weight:600}.vp .ic{margin-bottom:4px;font-size:20px;display:block}.vp.active{color:var(--brass);background:#d4af6921;border-color:#d4af6966}.progress-wrap{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:30px;display:flex}.portal{background:radial-gradient(circle,#2a2113 30%,#0000 70%);border-radius:50%;width:150px;height:150px;margin-bottom:30px;position:relative}.portal:before,.portal:after{content:"";border:2px solid #0000;border-top-color:var(--brass);border-radius:50%;position:absolute;inset:0}.portal:before{animation:1.6s linear infinite spin}.portal:after{border-top-color:var(--ink-dim);animation:2.4s linear infinite reverse spin;inset:12px}@keyframes spin{to{transform:rotate(360deg)}}.portal .yr{color:var(--brass-hi);justify-content:center;align-items:center;font-family:Fraunces;font-size:28px;font-weight:900;display:flex;position:absolute;inset:0}.stage-label{margin-bottom:8px;font-family:Fraunces;font-size:16px;font-weight:700}.stage-sub{color:var(--ink-dim);max-width:280px;font-size:13px;line-height:1.5}.stage-dots{gap:8px;margin-top:26px;display:flex}.sdot{background:var(--card2);border:1px solid var(--line);border-radius:50%;width:8px;height:8px}.sdot.on{background:var(--brass);border-color:var(--brass)}.compare{border:1px solid var(--line);aspect-ratio:2/3;touch-action:pan-y;border-radius:20px;width:100%;max-height:58dvh;margin:0 auto;position:relative;overflow:hidden}.compare img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.compare .now-img{clip-path:inset(0 0 0 var(--split,50%))}.compare .divider{top:0;bottom:0;left:var(--split,50%);background:var(--brass-hi);z-index:5;width:2px;position:absolute;transform:translate(-50%);box-shadow:0 0 14px #0009}.compare .divider .knob{background:var(--brass);color:#1a1206;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:15px;font-weight:900;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 3px 12px #00000080}.compare .lbl{z-index:6;letter-spacing:.8px;text-transform:uppercase;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;padding:5px 10px;font-size:10px;font-weight:800;position:absolute;top:12px}.compare .lbl.then{color:var(--brass-hi);background:#d4af6940;left:12px}.compare .lbl.now{color:#fff;background:#ffffff2e;right:12px}.result-head{margin:14px 0 4px}.result-head .place{font-family:Fraunces;font-size:20px;font-weight:900;line-height:1.2}.result-head .yr-line{color:var(--brass);margin-top:3px;font-size:13px;font-weight:700}.conf{border-radius:999px;align-items:center;gap:6px;margin-top:10px;padding:5px 11px;font-size:12px;font-weight:700;display:inline-flex}.conf.high{color:var(--good);background:#7fbf7f24}.conf.medium{color:var(--warn);background:#e0b45c24}.conf.low,.conf.limited{color:var(--bad);background:#d47a6a24}.rtabs{gap:6px;margin:16px 0 12px;display:flex}.rtab{background:var(--card);color:var(--ink-dim);border:1px solid var(--line);text-align:center;border-radius:12px;flex:1;padding:10px;font-size:13px;font-weight:700}.rtab.active{color:var(--brass);background:#d4af6921;border-color:#d4af6966}.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;margin-bottom:12px;padding:16px}.panel h3{color:var(--brass-hi);margin-bottom:8px;font-size:14px}.panel p,.panel li{color:var(--ink-dim);font-size:13px;line-height:1.6}.panel ul{padding-left:18px}.source-row{border-bottom:1px solid var(--line);padding:10px 0}.source-row:last-child{border-bottom:none}.source-row .st{color:var(--ink);font-size:13px;font-weight:600}.source-row .sp{color:var(--ink-faint);margin-top:2px;font-size:11px}.source-row .si{color:var(--ink-dim);margin-top:4px;font-size:12px;font-style:italic}.source-row a{color:var(--brass);font-size:12px;text-decoration:none}.disclosure{color:var(--ink-faint);background:#d4af690d;border:1px dashed #d4af6933;border-radius:12px;margin:4px 0 16px;padding:12px 14px;font-size:11px;line-height:1.5}.action-row{gap:10px;margin:14px 0;display:flex}.action-row .btn{flex:1;padding:13px;font-size:13px}.empty{text-align:center;color:var(--ink-faint);padding:60px 30px;font-size:14px;line-height:1.6}.empty .big{margin-bottom:12px;font-size:40px}.err-banner{color:var(--bad);background:#d47a6a1f;border:1px solid #d47a6a4d;border-radius:12px;margin-bottom:12px;padding:12px 14px;font-size:13px}.skeleton{background:linear-gradient(90deg, var(--card) 25%, var(--card2) 50%, var(--card) 75%);background-size:200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.sheet-overlay{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a0805b3;justify-content:center;align-items:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}}.sheet{background:var(--card2,#241c12);border:1px solid var(--line);width:100%;max-width:480px;padding:26px 22px calc(24px + env(safe-area-inset-bottom));border-bottom:none;border-radius:22px 22px 0 0;animation:.25s slideUp}@keyframes slideUp{0%{opacity:0;transform:translateY(40px)}}.sheet h3{color:var(--brass-hi);margin-bottom:8px;font-size:18px}.sheet p{color:var(--ink-dim);margin-bottom:16px;font-size:13px;line-height:1.6}.sheet-note{color:var(--brass);text-align:center;min-height:16px;margin-top:10px;font-size:12px}.credits-pill{color:var(--brass);cursor:pointer;background:#d4af691f;border:1px solid #d4af6959;border-radius:999px;margin-left:auto;padding:7px 14px;font-family:inherit;font-size:13px;font-weight:700}
