:root{--sand:#F3E6D0;--cream:#FBF5EA;--sage:#7E9474;--jun:#4F6247;--sun:#E07A3F;--rose:#C2554A;--night:#1F2A44;--text:#2B2622;--dust:#7A6E62;--ochre:#B8862F;--ochrebg:#FFF4DC}
*{box-sizing:border-box}body{margin:0;background:var(--sand);color:var(--text);font:16px/24px -apple-system,"Segoe UI",Roboto,sans-serif}
main{max-width:480px;margin:0 auto;padding-bottom:calc(80px + env(safe-area-inset-bottom))}
h1,h2,h3,.serif{font-family:Georgia,"Iowan Old Style",serif}h1{font-size:28px;line-height:32px;margin:8px 0}h2{font-size:22px;line-height:28px;margin:20px 0 8px}
.pad{padding:0 16px}a{color:var(--jun)}
.hero{position:relative;aspect-ratio:4/5;max-height:70vh;width:100%;overflow:hidden;background:var(--night)}
.hero img{width:100%;height:100%;object-fit:cover;display:block}
.hero .shade{position:absolute;inset:0;background:linear-gradient(transparent 35%,rgba(31,42,68,.85))}
.hero .t{position:absolute;left:16px;right:16px;bottom:24px;color:#fff}.hero .t p{margin:0;opacity:.9}
.sunc{position:absolute;top:20px;right:20px;width:64px;height:64px;border-radius:50%;background:radial-gradient(#F2B36B,var(--sun));box-shadow:0 0 30px #F2B36B;animation:glow 4s ease-in-out infinite}
@keyframes glow{50%{box-shadow:0 0 50px #F2B36B}}@media (prefers-reduced-motion:reduce){.sunc{animation:none}}
.ridge{display:block;width:100%;height:40px;margin-top:-39px;position:relative}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px}
.tile{aspect-ratio:1/1;border-radius:16px;background:var(--cream);box-shadow:0 2px 8px rgba(31,42,68,.12);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-decoration:none;color:var(--night);font-weight:600}
.tile svg{width:48px;height:48px;stroke:var(--sun);fill:none;stroke-width:2}
.card{display:block;position:relative;background:var(--cream);border-radius:16px;overflow:hidden;box-shadow:0 2px 8px rgba(31,42,68,.12);margin:0 16px 16px;text-decoration:none;color:inherit}
.card img,.card .ph{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;background:var(--sage)}
.card .ph{display:flex;align-items:center;justify-content:center;color:var(--cream);font:600 20px Georgia,serif}
.card .b{padding:12px 16px}.card h3{margin:0;font-size:18px;line-height:24px}.card p{margin:4px 0 0;color:var(--dust);font-size:14px;line-height:20px}
.num{position:absolute;top:10px;right:10px;width:28px;height:28px;border-radius:50%;background:var(--sun);color:#fff;font:600 15px/28px Georgia,serif;text-align:center}
.badge{display:inline-block;padding:4px 10px;border-radius:999px;color:var(--ochre);background:var(--ochrebg);border:1px solid var(--ochre);font-size:11px;line-height:14px;text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.card .badge{position:absolute;top:10px;left:10px}
.dhero{aspect-ratio:3/2;width:100%;object-fit:cover;display:block;background:var(--night)}
.back{position:fixed;top:12px;left:max(12px,calc(50% - 228px));width:44px;height:44px;border-radius:50%;background:rgba(31,42,68,.7);color:#fff;font-size:22px;line-height:44px;text-align:center;text-decoration:none;z-index:1000}
.credit{font-size:13px;line-height:18px;color:var(--dust);padding:6px 16px}
.src{font-size:14px}.src li{margin:4px 0;word-break:break-word}
.apps{padding:8px 16px 16px}.app{display:flex;justify-content:space-between;align-items:center;height:48px;border:2px solid var(--night);border-radius:12px;padding:0 14px;margin:8px 0;opacity:.6;color:var(--night);font-weight:700}
.app span{font-size:11px;font-weight:600;background:var(--night);color:#fff;border-radius:999px;padding:2px 8px}
#map{width:100%;height:calc(100dvh - 64px - 220px);min-height:300px}.mapd{aspect-ratio:4/3;height:auto;min-height:0}
.pin{background:var(--sun);color:#fff;border:2px solid #fff;border-radius:50%;width:28px!important;height:28px!important;font:600 14px/24px Georgia,serif;text-align:center}
.stops{list-style:none;margin:0;padding:8px 16px}.stops li{padding:10px 0;border-bottom:1px solid #e3d3b6;cursor:pointer;display:flex;gap:10px;align-items:center}
.stops b{flex:none;width:28px;height:28px;border-radius:50%;background:var(--sun);color:#fff;text-align:center;line-height:28px;font-family:Georgia,serif}
.night{background:var(--night) radial-gradient(1.5px 1.5px at 20% 30%,#fff,transparent) ,radial-gradient(1px 1px at 70% 20%,#fff,transparent),radial-gradient(1.5px 1.5px at 85% 60%,#fff,transparent),radial-gradient(1px 1px at 40% 70%,#fff,transparent);color:#fff;padding:20px 16px 12px}.night h1{margin:0}
.yr{color:var(--rose);font-weight:700;font-family:Georgia,serif}
.tabs{position:fixed;left:0;right:0;bottom:0;height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--night);display:flex;justify-content:center;z-index:1000}
.tabs a{flex:1;max-width:96px;min-width:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#c9cfdb;text-decoration:none;font-size:11px;border-top:3px solid transparent}
.tabs a.on{color:var(--sun);border-top-color:var(--sun)}.tabs svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:2}
.note{font-size:13px;color:var(--dust)}
.card img,.dhero{height:auto}
.back+.night{padding-left:68px}
.ridge.flat{margin-top:-1px}
.night{padding:20px 16px 16px}.sub{color:#E8ECF3;margin:6px 0 0;font-size:14px;line-height:20px}
.back+.night{padding:68px 16px 16px}.back+.night h1{font-size:24px;line-height:30px}
.ph{flex-direction:column;gap:6px}.ph svg{width:40px;height:40px;stroke:var(--cream);fill:none;stroke-width:2}
.pinhit{display:flex!important;align-items:center;justify-content:center;background:none;border:0}
.pinhit .pin{display:block;background:var(--sun);color:#fff;border:2px solid #fff;border-radius:50%;width:30px;height:30px;font:600 14px/26px Georgia,serif;text-align:center;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.mapd{aspect-ratio:auto;height:280px!important;min-height:0}
.app{width:100%;font:inherit;background:repeating-linear-gradient(45deg,#ece0c9 0 8px,#e6d8bd 8px 16px);border:2px dashed var(--dust);color:var(--dust);opacity:1;cursor:not-allowed}.app span{background:var(--dust)}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--night);color:#fff;padding:10px 16px;border-radius:999px;font-size:14px;z-index:2000;white-space:nowrap}
.call{display:inline-block;background:var(--jun);color:#fff;padding:10px 16px;border-radius:12px;text-decoration:none;font-weight:700}
.night{background-color:var(--night);background-image:radial-gradient(1.5px 1.5px at 20% 30%,#fff,transparent),radial-gradient(1px 1px at 70% 20%,#fff,transparent),radial-gradient(1.5px 1.5px at 85% 60%,#fff,transparent),radial-gradient(1px 1px at 40% 70%,#fff,transparent)}
.ridge.flat{background:var(--night)}
.back{background:rgba(31,42,68,.85);border:2px solid rgba(255,255,255,.85);line-height:40px}
.ph.ex{background:repeating-linear-gradient(45deg,#ece0c9 0 10px,#e6d8bd 10px 20px);color:var(--ochre)}.ph.ex svg{stroke:var(--ochre)}
