:root{
  --bg:#E7EBE2; --paper:#F4F5EF; --ink:#1C2B26; --muted:#5E6E66; --line:#C8D0C3;
  --forest:#23443A; --lichen:#9FB595; --sandstone:#D9C9A6; --linkroad:#B3A27B; --grid:#DDE2D6;
  --green:#3E8E4E; --blue:#2F6DB5; --black:#1C2B26; --closed:#C2412D; --photo:#C77B2E; --baseroad:#CDD3C7; --contour:rgba(150,108,58,.24); --contourM:rgba(128,88,40,.46);
  --rail:#23443A; --rail-ink:#EAF0E6; --shadow:0 12px 32px rgba(28,43,38,.18);
  --display:"Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --body:"Figtree", system-ui, -apple-system, sans-serif;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#15201C; --paper:#1D2A25; --ink:#E6EDE3; --muted:#9AAAA1; --line:#34443D;
    --forest:#0F1814; --lichen:#6F8766; --sandstone:#4A4232; --linkroad:#7A6E52; --grid:#24322C;
    --green:#5DB46C; --blue:#5C97DD; --black:#E6EDE3; --closed:#E0664F; --photo:#E0A968; --baseroad:#3A4A43; --contour:rgba(205,175,125,.20); --contourM:rgba(218,190,138,.40);
    --rail:#0F1814; --rail-ink:#DDE6DA; --shadow:0 12px 32px rgba(0,0,0,.45);
  }
}
:root[data-theme="dark"]{
  --bg:#15201C; --paper:#1D2A25; --ink:#E6EDE3; --muted:#9AAAA1; --line:#34443D;
  --forest:#0F1814; --lichen:#6F8766; --sandstone:#4A4232; --linkroad:#7A6E52; --grid:#24322C;
  --green:#5DB46C; --blue:#5C97DD; --black:#E6EDE3; --closed:#E0664F; --photo:#E0A968; --baseroad:#3A4A43; --contour:rgba(205,175,125,.20); --contourM:rgba(218,190,138,.40);
  --rail:#0F1814; --rail-ink:#DDE6DA; --shadow:0 12px 32px rgba(0,0,0,.45);
}
*{box-sizing:border-box;margin:0}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font:15px/1.5 var(--body);overflow:hidden}
button,input{font:inherit;color:inherit;background:none;border:0}
button{cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.app{display:grid;grid-template-columns:72px 1fr 320px;height:100vh}

/* Sidebar */
.side{background:var(--rail);color:var(--rail-ink);display:flex;flex-direction:column;align-items:center;padding:16px 0;gap:4px;position:relative;z-index:30;width:72px;transition:width .25s ease}
.side:hover,.side:focus-within{width:220px;box-shadow:var(--shadow)}
.brand{font:800 20px/1 var(--display);letter-spacing:-.02em;height:44px;display:flex;align-items:center;width:100%;padding-left:22px;white-space:nowrap;overflow:hidden}
.brand span{opacity:0;transition:opacity .2s}
.side:hover .brand span,.side:focus-within .brand span{opacity:1}
.side nav{display:flex;flex-direction:column;width:100%;gap:2px;margin-top:12px}
.side .sep{height:1px;background:rgba(255,255,255,.12);margin:10px 16px}
.nav{display:flex;align-items:center;gap:14px;height:44px;padding-left:24px;text-decoration:none;white-space:nowrap;overflow:hidden;border-left:3px solid transparent;opacity:.8}
.nav:hover,.nav.on{opacity:1;background:rgba(255,255,255,.07)}
.nav.on{border-left-color:var(--lichen)}
.nav svg{flex:none;width:22px;height:22px}
.nav em{font-style:normal;opacity:0;transition:opacity .2s}
.side:hover .nav em,.side:focus-within .nav em{opacity:1}
.side .foot{margin-top:auto;width:100%}

/* Stage */
.stage{position:relative;overflow:hidden;min-width:0}
#map{position:absolute;inset:0;width:100%;height:100%;display:block;background:var(--paper);touch-action:none;cursor:grab}
#map.drag{cursor:grabbing}#map.hover{cursor:pointer}
.hud{position:absolute;left:24px;top:22px;right:24px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none;gap:16px}
.hud>*{pointer-events:auto}
.title h1{font:800 clamp(34px,4.6vw,64px)/.92 var(--display);letter-spacing:-.035em;max-width:9ch}
.title p{color:var(--muted);margin-top:10px;max-width:34ch}
.status{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow);min-width:210px}
.status b{font:700 16px var(--display);display:flex;align-items:center;gap:8px}
.dot{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px color-mix(in srgb,var(--green) 25%,transparent)}
.status small{color:var(--muted);display:block;margin-top:2px}
.theme{margin-top:8px;font-size:13px;color:var(--muted);text-decoration:underline}
.zoom{position:absolute;right:24px;bottom:24px;display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}
.zoom button{width:40px;height:40px;font-size:20px}
.zoom button+button{border-top:1px solid var(--line)}

.layers{position:absolute;left:24px;bottom:24px;background:var(--paper);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:10px;width:240px}
.layers h2{font:700 14px var(--display);padding:4px 6px 8px}
.find{width:100%;border:1px solid var(--line);border-radius:8px;padding:7px 10px;margin-bottom:6px;font-size:14px;background:var(--bg)}
.layer{display:flex;align-items:center;gap:10px;width:100%;padding:6px;border-radius:8px;text-align:left}
.layer:hover{background:var(--bg)}
.sw{width:30px;height:18px;border-radius:9px;background:var(--line);position:relative;flex:none;transition:background .2s}
.sw::after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:var(--paper);transition:transform .2s}
.layer[aria-pressed="true"] .sw{background:var(--forest)}
:root[data-theme="dark"] .layer[aria-pressed="true"] .sw{background:var(--lichen)}
.layer[aria-pressed="true"] .sw::after{transform:translateX(12px)}
.layer span:last-child{font-size:14px}
.grade{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;padding:8px 6px 2px}
.grade button{border:1px solid var(--line);border-radius:8px;padding:5px 0;font-size:12px;display:flex;align-items:center;justify-content:center;gap:4px}
.grade button[aria-pressed="false"]{opacity:.4}
.g-ico{width:10px;height:10px;display:inline-block;flex:none}

.chips{position:absolute;left:288px;right:88px;bottom:24px;display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;cursor:grab;user-select:none;-webkit-user-select:none}
.chips::-webkit-scrollbar{display:none}
.chips.dragging{cursor:grabbing}
.chips.dragging .chip{pointer-events:none}
.chip{flex:none;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:8px 14px;display:flex;gap:8px;align-items:center;box-shadow:var(--shadow);font-weight:500;font-size:14px}
.chip.on{border-color:var(--ink)}

.drawer{position:absolute;top:0;right:0;bottom:0;width:min(380px,100%);background:var(--paper);border-left:1px solid var(--line);box-shadow:var(--shadow);transform:translateX(105%);transition:transform .35s cubic-bezier(.2,.8,.2,1);z-index:20;display:flex;flex-direction:column;overflow-y:auto}
.drawer.open{transform:none}
.dr-head{padding:22px 22px 0}
.close{float:right;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);font-size:18px}
.dr-head h3{font:800 34px/1 var(--display);letter-spacing:-.03em;margin-top:6px}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted);margin-top:6px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);margin:18px 22px;border:1px solid var(--line);border-radius:12px}
.stats div{padding:10px 12px}
.stats div+div{border-left:1px solid var(--line)}
.stats b{font:700 18px var(--display);display:block;white-space:nowrap}
.stats small{color:var(--muted);font-size:12px}
.dr-body{padding:0 22px 24px;display:flex;flex-direction:column;gap:14px}
.cond{background:var(--bg);border-radius:10px;padding:10px 12px;font-size:14px}
.acts{display:flex;gap:8px;flex-wrap:wrap}
.btn{border-radius:10px;padding:10px 14px;font-weight:600;text-decoration:none;border:1px solid var(--line)}
.btn.pri{background:var(--forest);color:#EAF0E6;border-color:var(--forest)}

/* News rail */
.news{background:var(--paper);border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.news header{padding:22px 20px 12px;border-bottom:1px solid var(--line)}
.news h2{font:800 24px var(--display);letter-spacing:-.02em}
.news header p{color:var(--muted);font-size:13px}
.tabs{display:flex;gap:4px;margin-top:10px}
.tabs button{font-size:12.5px;padding:5px 8px;border-radius:999px;border:1px solid var(--line)}
.tabs button[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.feed{flex:1;overflow-y:auto;position:relative}
.feed:hover .feed-inner,.feed:focus-within .feed-inner{animation-play-state:paused!important}
.post{display:block;padding:14px 20px;text-decoration:none;border-bottom:1px solid var(--line)}
.post:hover{background:var(--bg)}
.post .meta{font-size:12px;color:var(--muted);display:flex;gap:10px}
.post .cat{font-weight:600}.post .cat.alert{color:var(--closed)}
.post h4{font:700 17px/1.2 var(--display);margin:3px 0 4px;letter-spacing:-.01em}
.post p{font-size:14px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.thumb{height:92px;border-radius:10px;margin-bottom:10px;background:linear-gradient(135deg,var(--lichen),var(--forest))}
.news footer{padding:12px 20px;border-top:1px solid var(--line);font-size:13px;display:flex;justify-content:space-between}
#pauseBtn[hidden]{display:none}
@keyframes scrollUp{from{transform:translateY(0)}to{transform:translateY(-50%)}}
.tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--paper);padding:6px 10px;border-radius:8px;font-size:13px;font-weight:600;opacity:0;transform:translate(-50%,-140%);transition:opacity .12s;white-space:nowrap;z-index:15}
.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--muted);font-size:14px}
.loading .bf{color:var(--ink)}

.zoom .modebtn{font:700 14px var(--body)}
.zoom .themebtn{font-size:18px}
.zoom{z-index:25;transition:right .35s cubic-bezier(.2,.8,.2,1),bottom .35s cubic-bezier(.2,.8,.2,1)}
@media (min-width:900px){#stage:has(.drawer.open) .zoom{right:404px}}
.profile{margin:0 22px 16px}.profile[hidden]{display:none}
.profile h4{font:700 14px var(--display);margin-bottom:6px}
#drProfile{width:100%;height:140px;display:block;background:var(--bg);border-radius:10px;touch-action:none}
.prof-stats{font-size:13px;margin-top:8px}
.prof-note{font-size:11px;color:var(--muted);margin-top:2px}
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.88);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;z-index:100;padding:24px 88px 16px;touch-action:none}
.lightbox[hidden]{display:none}
.lb-stage{position:relative;width:100%;height:calc(100dvh - 110px);min-height:0}
.lb-stage>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .22s ease;user-select:none;-webkit-user-drag:none}
.lb-stage>img.show{opacity:1}
.lb-stage>img{transition:opacity .22s ease,filter .2s ease}
.lb-stage.busy>img.show{filter:brightness(.42) saturate(.75)}
.lb-loader{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#EAF0E6;font-size:14px;letter-spacing:.02em;text-shadow:0 1px 6px rgba(0,0,0,.6);opacity:0;pointer-events:none;transition:opacity .2s}
.lb-stage.busy .lb-loader{opacity:1}
.lb-fail{display:none;position:absolute;inset:0;place-items:center;text-align:center;color:#EAF0E6;cursor:pointer;padding:20px}
.lb-stage.failed .lb-fail{display:grid}
.feed-empty{padding:20px;color:var(--muted)}
.lb-close{position:absolute;top:16px;right:20px;background:none;border:none;color:#EAF0E6;font-size:28px;line-height:1;cursor:pointer;padding:6px}
.lb-nav{position:absolute;right:20px;width:52px;height:52px;border-radius:50%;border:1px solid rgba(255,255,255,.4);background:rgba(20,30,26,.75);color:#EAF0E6;font-size:18px;cursor:pointer}
.lb-nav:hover:not(:disabled){background:rgba(60,80,70,.9)}
#photoPrev{top:calc(50% - 60px)}#photoNext{top:calc(50% + 8px)}
.lb-nav:disabled{opacity:.3;cursor:default}
.lb-bar{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;justify-content:center;color:#EAF0E6;font-size:14px;min-height:28px}
.lb-dates{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
.lb-dates button{border:1px solid rgba(255,255,255,.45);background:none;color:#EAF0E6;border-radius:999px;padding:4px 12px;font-size:13px;cursor:pointer}
.lb-dates button[aria-pressed="true"]{background:#EAF0E6;color:#1C2B26;font-weight:600}
@media (max-width:700px){.lightbox{padding:56px 12px 12px}.lb-stage{height:calc(100dvh - 130px)}.lb-nav{top:auto!important;bottom:70px;width:46px;height:46px}#photoPrev{right:76px}#photoNext{right:20px}}

.news-toggle{display:none}
@media (max-width:1100px){
  .app{grid-template-columns:72px 1fr}
  .news{position:fixed;right:0;top:0;bottom:0;width:min(340px,90vw);z-index:40;transform:translateX(100%);transition:transform .3s;box-shadow:var(--shadow)}
  .news.open{transform:none}
  .news-toggle{display:flex;position:absolute;right:24px;top:130px;background:var(--forest);color:#EAF0E6;border-radius:999px;padding:9px 14px;font-weight:600;box-shadow:var(--shadow);z-index:5}
}
.layers-toggle,.news-close,.layers-close,.thanks{display:none}
html,body{overscroll-behavior:none}
@media (max-width:720px){
  html,body{overflow:hidden}
  .app{grid-template-columns:1fr;grid-template-rows:1fr calc(64px + env(safe-area-inset-bottom));height:100dvh}
  .side{grid-row:2;flex-direction:row;width:100%!important;padding:0 0 env(safe-area-inset-bottom);justify-content:space-around}
  .side:hover{box-shadow:none}
  .brand,.side .sep,.nav em,.side .foot,.desk-only,.side nav a:nth-child(n+6){display:none}
  .side nav{flex-direction:row;margin:0;justify-content:space-around}
  .nav{padding:0 12px;border-left:0}

  /* header: compact title + a status pill that expands when tapped */
  .hud{left:12px;right:12px;top:10px;flex-direction:row;align-items:center;gap:10px}
  .title h1{font-size:25px;line-height:1;max-width:none;letter-spacing:-.03em}
  .title p{display:none}
  .status{padding:8px 12px;min-width:0;border-radius:999px;position:relative;z-index:6}
  .status b{font-size:14px;cursor:pointer;white-space:nowrap}
  .status small,.status a{display:none}
  .status.open{border-radius:16px;min-width:210px}
  .status.open small{display:block}.status.open a{display:inline-block}

  /* floating buttons on the right: 3D / fit above the trail chips, Layers above them */
  .zoom{display:flex;right:12px;bottom:84px;border-radius:14px}
  .zoom #zin,.zoom #zout{display:none}
  .zoom button{width:48px;height:48px}
  .zoom .layers-toggle{display:flex;align-items:center;justify-content:center;font-size:0;gap:0;padding:0;border-radius:0;background:transparent;border:0;box-shadow:none}
  .zoom .layers-toggle svg{width:22px;height:22px}
  .zoom .layers-toggle+button{border-top:1px solid var(--line)}
  .zoom .layers-toggle[aria-expanded="true"]{background:var(--forest);color:#EAF0E6}
  .thanks{display:flex;align-items:center;position:absolute;left:12px;bottom:84px;z-index:25;height:48px;max-width:48px;overflow:hidden;white-space:nowrap;border-radius:999px;background:var(--paper);color:var(--closed);border:1px solid var(--line);box-shadow:var(--shadow);text-decoration:none;animation:thanksBox 9s ease 1.2s forwards}
  .thanks svg{flex:none;width:24px;height:24px;margin:0 11px;fill:currentColor;animation:heartbeat 1.1s ease-in-out 3}
  .thanks span{font:600 14px var(--body);color:var(--ink);padding-right:16px}
  .news-toggle{top:60px;bottom:auto;right:12px;padding:8px 12px;font-size:13px}

  /* layers: collapsed by default, slides up from above the chips when opened */
  .layers{left:8px;right:8px;bottom:78px;width:auto;max-height:62dvh;overflow-y:auto;z-index:30;padding:12px}
  .layers.collapsed{display:none}
  .layers h2{display:flex;justify-content:space-between;align-items:center}
  .layers-close{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);font-size:20px;font-weight:400}
  .layers .layer-list{display:grid;grid-template-columns:1fr 1fr;gap:2px}
  .layer{padding:11px 6px;min-height:44px}
  .grade button{padding:9px 0}
  .find{font-size:16px;padding:10px 12px}

  /* trail details: bottom sheet above the chips, map stays visible */
  .drawer{top:auto;left:0;right:0;bottom:74px;width:100%;height:min(44dvh,420px);border-left:0;border-top:1px solid var(--line);border-radius:18px 18px 0 0;transform:translateY(calc(100% + 80px));z-index:22}
  .drawer.open{transform:none}
  .drawer::before{content:"";display:block;width:38px;height:4px;border-radius:2px;background:var(--line);margin:8px auto 0;flex:none}
  .dr-head{padding:8px 18px 0}
  .dr-head h3{font-size:24px;margin-top:2px}
  .stats{margin:10px 18px}.stats div{padding:7px 10px}.stats b{font-size:16px}
  .profile{margin:0 18px 10px}.profile h4,.prof-note{display:none}
  #drProfile{height:96px}.prof-stats{margin-top:5px}
  .dr-body{padding:0 18px 16px;gap:10px}.cond{padding:8px 10px}.btn{padding:9px 12px}
  .chips{left:12px;right:12px;bottom:14px;z-index:23}
  #stage:has(.drawer.open) .zoom{bottom:calc(74px + min(44dvh,420px) + 10px)}
  #stage:has(.drawer.open) .zoom .layers-toggle,#stage:has(.drawer.open) .news-toggle,#stage:has(.drawer.open) .thanks{display:none}

  /* news rail: full-height panel with a close button */
  .news{width:min(360px,92vw)}
  .news-close{display:grid;place-items:center;position:absolute;right:14px;top:14px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);font-size:20px}
  .lb-dates button{padding:8px 14px}
}
@media (max-width:1100px){.news-close{display:grid;place-items:center;position:absolute;right:14px;top:14px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);font-size:20px}}

/* Weather & trail conditions dialog */
.modal{position:fixed;inset:0;background:rgba(10,20,16,.55);display:grid;place-items:center;z-index:100;padding:12px}
.modal[hidden]{display:none}
.modal-card{background:var(--paper);color:var(--ink);border-radius:18px;box-shadow:var(--shadow);width:min(680px,100%);max-height:calc(100dvh - 24px);overflow:auto;padding:0 22px 22px}
.modal-card header{position:sticky;top:0;z-index:1;background:var(--paper);display:flex;justify-content:space-between;align-items:center;padding:18px 0 10px}
.modal-card h2{font:800 26px var(--display);letter-spacing:-.02em}
.modal-card header button{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);font-size:20px}
.wx-note{color:var(--muted);padding:10px 0}
.wx-sum{background:var(--bg);border-radius:12px;padding:10px 12px;font-size:14px;margin:12px 0}
.wx-head,.wx-row{display:grid;grid-template-columns:78px 34px 1fr 64px 62px;gap:10px;align-items:center}
.wx-head{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 0 4px}
.wx-row{padding:9px 0;border-top:1px solid var(--line)}
.wx-day b{display:block;font-size:15px}
.wx-day small,.wx-t small,.wx-mm{color:var(--muted);font-size:13px}
.wx-t{font-weight:600}
.wx-svg{width:28px;height:28px;display:block}
.wx-rain{display:flex;align-items:center;gap:10px}
.wx-bar{flex:1;height:12px;border-radius:6px;background:var(--bg);overflow:hidden}
.wx-bar i{display:block;height:100%;border-radius:6px}
.wx-pct{font:700 15px var(--display);min-width:40px;text-align:right}
.wx-h3{font:700 15px var(--display);margin:18px 0 6px}
.pop-lo{background:var(--green)}.pop-mid{background:var(--photo)}.pop-hi{background:var(--blue)}.pop-n{background:var(--line)}
.wx-hbars{display:flex;align-items:flex-end;gap:3px;height:64px}
.wx-hbars i{flex:1;border-radius:3px 3px 0 0;min-height:2px}
.wx-axisrow{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:4px}
.wx-cchart{position:relative;height:120px;border-bottom:1px solid var(--line)}
.wx-cbars{position:absolute;inset:0;display:flex;align-items:flex-end;gap:2px}
.wx-cbars i{flex:1;background:var(--blue);opacity:.75;border-radius:2px 2px 0 0}
.wx-mover{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.wx-mover polyline{fill:none;stroke:var(--photo);stroke-width:2.4;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.wx-legend{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;color:var(--muted);margin-top:4px}
.wx-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:middle}
.wx-k-rain{background:var(--blue);opacity:.75}.wx-k-line{background:var(--photo)}
.wx-foot{font-size:12px;color:var(--muted);margin-top:16px}.wx-foot a{color:inherit}
.wx-closed{margin:0 0 4px 18px;font-size:14px}
.cond-hero{border-radius:14px;padding:14px 16px;margin-top:10px;border:1px solid var(--line)}
.cond-hero small{font-size:12px;text-transform:uppercase;letter-spacing:.05em;opacity:.75}
.cond-hero h3{font:800 28px/1.1 var(--display);letter-spacing:-.02em;margin:2px 0 6px}
.cond-hero p{font-size:14px}
.cond-dusty{background:color-mix(in srgb,#C8963E 28%,var(--paper))}
.cond-dry{background:color-mix(in srgb,#B8B96A 26%,var(--paper))}
.cond-tacky{background:color-mix(in srgb,#5DB46C 26%,var(--paper))}
.cond-damp{background:color-mix(in srgb,#5C97DD 24%,var(--paper))}
.cond-wet{background:color-mix(in srgb,#2F6DB5 34%,var(--paper))}
.cond-gauge{position:relative;height:12px;border-radius:6px;margin:16px 0 4px;background:linear-gradient(90deg,#C8963E,#B8B96A 30%,#6FAE6A 48%,#5C97DD 75%,#2F5F9C)}
.cond-mark{position:absolute;top:-5px;width:8px;height:22px;border-radius:4px;background:var(--ink);border:2px solid var(--paper);transform:translateX(-50%);box-shadow:0 1px 4px rgba(0,0,0,.35)}
.cond-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}
.cond-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.cond-stats div{background:var(--bg);border-radius:10px;padding:8px 10px}
.cond-stats b{display:block;font:700 18px var(--display)}
.cond-stats small{color:var(--muted);font-size:12px}
@media (max-width:560px){
  .modal{padding:0;align-items:end}
  .modal-card{border-radius:18px 18px 0 0;max-height:92dvh;padding:0 14px calc(18px + env(safe-area-inset-bottom))}
  .wx-head,.wx-row{grid-template-columns:64px 28px 1fr 52px 50px;gap:6px}
  .wx-pct{min-width:34px}
  .cond-stats{grid-template-columns:repeat(2,1fr)}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* park statistics */
.st-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}
.st-tile{background:var(--bg);border-radius:12px;padding:10px 12px}
.st-tile b{display:block;font:800 22px var(--display);letter-spacing:-.02em}
.st-tile span{font-size:12px;color:var(--muted)}
.st-stack{display:flex;height:16px;border-radius:8px;overflow:hidden;gap:2px;margin:6px 0 10px}
.st-stack i,.st-key i{display:block}
.st-dbl{background-image:repeating-linear-gradient(45deg,transparent 0 3px,var(--paper) 3px 5px)}
.st-row{display:grid;grid-template-columns:1fr 84px 70px 42px;gap:8px;padding:7px 0;border-top:1px solid var(--line);font-size:14px;align-items:center}
.st-row span:nth-child(n+2){text-align:right;color:var(--muted)}
.st-key{display:flex;align-items:center;gap:8px}
.st-key i{width:12px;height:12px;border-radius:3px;flex:none}
.st-hist{display:flex;align-items:flex-end;gap:10px;height:110px;border-bottom:1px solid var(--line);padding-top:16px}
.st-col{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}
.st-col i{width:100%;background:var(--lichen);border-radius:4px 4px 0 0;display:block}
.st-col em{font:700 12px var(--body);font-style:normal;margin-bottom:3px}
.st-col span{position:absolute;top:100%;margin-top:3px;font-size:11px;color:var(--muted);white-space:nowrap}
.st-hist+.wx-axisrow{margin-top:20px}
.st-lb{display:grid;grid-template-columns:150px 1fr 60px;gap:10px;align-items:center;padding:4px 0;font-size:14px}
.st-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-bar{height:10px;border-radius:5px;background:var(--bg);overflow:hidden}
.st-bar i{display:block;height:100%;border-radius:5px}
.st-val{text-align:right;color:var(--muted)}
.club-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}
.club-actions button,.club-actions a{height:42px;padding:0 18px;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;text-decoration:none;font:600 14px var(--body);color:var(--ink)}
.club-actions a{background:var(--forest);color:#fff;border-color:var(--forest)}
.modal.corner{background:transparent;place-items:end center;pointer-events:none;padding:0 12px 24px}
.modal.corner .modal-card{pointer-events:auto;width:min(420px,100%);padding-bottom:18px;box-shadow:0 10px 40px rgba(0,0,0,.3)}

@keyframes heartbeat{0%,100%{transform:scale(1)}20%{transform:scale(1.28)}40%{transform:scale(1)}60%{transform:scale(1.18)}}
@keyframes thanksBox{0%{max-width:48px}12%,78%{max-width:290px}92%,100%{max-width:48px}}
@media (prefers-reduced-motion:reduce){.thanks,.thanks svg{animation:none}}
.dir ol{margin:4px 0 0;padding-left:0;list-style:none;counter-reset:d}
.dir li{counter-increment:d;position:relative;padding:8px 0 8px 36px;border-top:1px solid var(--line);font-size:14.5px;line-height:1.45}
.dir li::before{content:counter(d);position:absolute;left:0;top:8px;width:24px;height:24px;border-radius:50%;background:var(--forest);color:#fff;font:700 12px var(--body);display:grid;place-items:center}
.dir-sub{color:var(--muted);font-size:14px;line-height:1.5;margin:0 0 6px}
.trail-link{color:inherit;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
.trail-link:hover{text-decoration-color:currentColor}
.post.trail-link{text-decoration:none}
.tabs{flex-wrap:wrap}
.layer-sub{margin:0 0 6px 20px;padding-left:8px;border-left:2px solid var(--line)}
.layer-sub[hidden]{display:none}
.layer.sub{padding:4px 6px;font-size:13px}
.layer.sub small{color:var(--muted);margin-left:4px}
.layer[data-l="single"][aria-pressed="false"]+.layer-sub{opacity:.45}
@media (max-width:720px){.layer-sub{grid-column:1/-1}}

/* Loading animation: a mountain biker hits a kicker and lands a backflip */
.bf{width:170px;height:106px;overflow:visible}
.bf-ground,.bf-ramp{stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;fill:none;opacity:.55}
.bf-ramp{fill:currentColor;fill-opacity:.12}
.bf-bike circle,.bf-bike path,.bf-rider circle,.bf-rider path{fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round}
.bf-bike .bf-thin{stroke-width:.9;opacity:.6}
.bf-rider circle,.bf-rider path{stroke:var(--photo)}
.bf-dust circle{fill:currentColor;opacity:0}
.bf-x,.bf-y,.bf-r{transform-box:view-box;transform-origin:0 0}
.bf-x{animation:bf-x 1.7s linear infinite}
.bf-y{animation:bf-y 1.7s linear infinite}
.bf-r{animation:bf-r 1.7s linear infinite}
.bf-dust circle{animation:bf-dust 1.7s ease-out infinite}
.bf-dust circle:nth-child(2){animation-delay:.03s}.bf-dust circle:nth-child(3){animation-delay:.06s}
@keyframes bf-x{0%{transform:translateX(18px)}30%{transform:translateX(55px)}80%{transform:translateX(112px)}100%{transform:translateX(146px)}}
@keyframes bf-y{0%,14%{transform:translateY(61px)}30%{transform:translateY(49px);animation-timing-function:cubic-bezier(.2,.75,.4,1)}55%{transform:translateY(33px);animation-timing-function:cubic-bezier(.6,0,.85,.3)}80%,100%{transform:translateY(61px)}}
@keyframes bf-r{0%,14%{transform:rotate(0)}30%{transform:rotate(-14deg);animation-timing-function:cubic-bezier(.4,.1,.6,.9)}78%{transform:rotate(-374deg)}82%,100%{transform:rotate(-360deg)}}
@keyframes bf-dust{0%,79%{opacity:0;transform:translate(0,0)}82%{opacity:.7}100%{opacity:0;transform:translate(6px,-8px)}}
@media (prefers-reduced-motion:reduce){.bf-x,.bf-y,.bf-r,.bf-dust circle{animation:none}.bf-x{transform:translateX(80px)}.bf-y{transform:translateY(61px)}}
.lb-loader .bf{color:#EAF0E6;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
