/* Stabilized — app styles. Paper/oxblood identity.
   Status + tier colors are injected onto :root by js/app.js (single source of
   truth is the STATUSES/TIERS tables there); CSS only references the vars. */
:root{
  --ink:#211b17;--ink-soft:#5b5148;--ink-faint:#8a7f6d;
  --paper:#f3eee3;--paper-2:#ece5d7;--card:#fbf8f1;--line:#d9cfbe;
  --ox:#8a2b22;--ox-dk:#6f1f18;
  --water:#a9c7d4;--land:#f1ebdd;
  --teal:#0f5c63;
  --radius:8px;--radius-sm:6px;
  --shadow:0 10px 34px rgba(33,27,23,.28);
  --fs-xs:.6875rem;--fs-sm:.75rem;--fs-md:.8125rem;--fs-lg:1rem;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-size:16px;color:var(--ink);background:var(--paper);
}
button{font:inherit;color:inherit}

#app{display:grid;grid-template-columns:380px 1fr;height:100vh;height:100dvh}
#panel{background:var(--paper);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
#map{height:100%;background:var(--water);position:relative}
.leaflet-container{background:var(--water);font:inherit}

/* boot / loading */
#boot{
  position:absolute;inset:0;z-index:1500;display:flex;align-items:center;justify-content:center;
  background:var(--land);color:var(--ink-soft);font-size:var(--fs-md);letter-spacing:.02em;
}
#boot .b-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.9rem 1.2rem;box-shadow:0 4px 18px rgba(33,27,23,.12)}

/* ---------- panel header ---------- */
.sheet-handle{display:none}
header.hd{padding:1rem 1rem .5rem}
.title{font-family:Georgia,"Times New Roman",serif;font-weight:700;font-size:1.75rem;line-height:.95;letter-spacing:-.03em}
.title .dot{color:var(--ox)}
.sub{font-size:var(--fs-sm);color:var(--ink-soft);margin-top:.3rem;line-height:1.4}

details.caveat{
  margin:.6rem 1rem 0;background:var(--paper-2);border:1px solid var(--line);
  border-left:3px solid var(--ox);border-radius:var(--radius-sm);
  font-size:var(--fs-xs);color:var(--ink-soft);line-height:1.45;
}
details.caveat summary{
  cursor:pointer;padding:.5rem .7rem;font-weight:600;color:var(--ink);
  list-style:none;display:flex;align-items:center;gap:.4rem;
}
details.caveat summary::-webkit-details-marker{display:none}
details.caveat summary::after{content:"▾";margin-left:auto;color:var(--ink-faint);transition:transform .15s}
details.caveat[open] summary::after{transform:rotate(180deg)}
details.caveat .cv-body{padding:0 .7rem .55rem}
details.caveat b{color:var(--ink)}

/* ---------- controls ---------- */
/* controls + list share ONE scroll container so the list never gets squeezed */
#panelBody{flex:1;overflow-y:auto;min-height:0}
.pad{padding:.55rem 1rem .8rem}
.search{
  width:100%;padding:.55rem .7rem;border:1px solid var(--line);border-radius:7px;
  background:var(--card);font:inherit;font-size:var(--fs-md);color:var(--ink);
}
.search::placeholder{color:var(--ink-faint)}
.search:focus{outline:2px solid var(--ox);outline-offset:-1px}
.lbl{
  font-size:.625rem;text-transform:uppercase;letter-spacing:.09em;
  color:var(--ink-soft);font-weight:700;margin:.75rem 0 .35rem;
}
.lbl .c{float:right;font-weight:400;letter-spacing:0;text-transform:none;font-size:var(--fs-xs);color:var(--ink-faint)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
select.sel{
  width:100%;padding:.45rem .55rem;border:1px solid var(--line);border-radius:7px;
  background:var(--card);font:inherit;font-size:var(--fs-md);color:var(--ink);
}

.chips{display:flex;flex-wrap:wrap;gap:.3rem}
.chip{
  font-size:var(--fs-sm);padding:.28rem .6rem;border:1px solid var(--line);
  background:var(--paper-2);border-radius:999px;cursor:pointer;color:var(--ink-soft);
  display:inline-flex;align-items:center;gap:.35rem;
}
.chip:hover{background:var(--card)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.chip[disabled]{opacity:.45;cursor:not-allowed}
/* chips that carry a status/tier color: colored dot + label; pressed = ink frame,
   never colored fill (identity is never color-alone) */
.chip .cdot{width:.55rem;height:.55rem;border-radius:50%;background:var(--cc,#ccc);flex:0 0 auto}
.chip.cchip{background:var(--card);color:var(--ink-soft)}
.chip.cchip[aria-pressed="true"]{
  background:var(--card);color:var(--ink);border-color:var(--ink);
  box-shadow:inset 0 0 0 1px var(--ink);font-weight:600;
}
.chip.cchip[aria-pressed="false"] .cdot{opacity:.35}

/* your spot */
.spotrow{display:flex;gap:.4rem;align-items:center}
.spotrow .hint{font-size:var(--fs-xs);color:var(--ink-faint);line-height:1.35}

/* pipeline stats */
.pipe{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem;margin-top:.35rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:7px;padding:.4rem .5rem}
.stat .n{font-family:Georgia,serif;font-weight:700;font-size:1.125rem;line-height:1}
.stat .k{font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin-top:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat .k::before{content:"";display:inline-block;width:.5rem;height:.5rem;border-radius:50%;margin-right:.3rem;vertical-align:middle;background:var(--dotc,#ccc)}

/* route box */
#routeBox .rt-empty{color:var(--ink-faint);font-size:var(--fs-sm);padding:.15rem 0 .4rem}
.rt-row{display:flex;align-items:center;gap:.4rem;padding:.2rem 0;font-size:var(--fs-sm)}
.rt-num{
  background:var(--teal);color:#fff;border-radius:50%;width:1.1rem;height:1.1rem;
  display:inline-flex;align-items:center;justify-content:center;font-size:.625rem;flex:0 0 auto;
}
.rt-a{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-x{border:none;background:none;color:var(--ink-faint);cursor:pointer;font-size:1rem;line-height:1;padding:0 .15rem}
.rt-meta{font-size:var(--fs-xs);color:var(--ink-faint);margin:.25rem 0 .4rem}
.rt-acts{display:flex;gap:.4rem}

/* ---------- list ---------- */
#listwrap{border-top:1px solid var(--line)}
.listhd{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:.6rem 1rem .35rem;position:sticky;top:0;background:var(--paper);z-index:2;
}
.listhd .c{font-size:var(--fs-xs);color:var(--ink-faint)}
.card{padding:.55rem 1rem;border-bottom:1px solid var(--line);cursor:pointer;display:flex;gap:.55rem;align-items:flex-start}
.card:hover{background:var(--paper-2)}
.dotp{width:.6rem;height:.6rem;border-radius:50%;margin-top:.3rem;flex:0 0 auto;box-shadow:0 0 0 2px var(--card)}
.card .a{font-size:var(--fs-md);font-weight:500;line-height:1.25}
.card .m{font-size:var(--fs-xs);color:var(--ink-soft);margin-top:.1rem}
.badge{
  display:inline-block;font-size:.625rem;font-weight:700;padding:.05rem .35rem;border-radius:4px;
  color:#fff;vertical-align:baseline;margin-left:.35rem;background:var(--bg,#777);
}
.badge.teal{background:var(--teal)}
.empty{padding:1.4rem 1rem;color:var(--ink-soft);font-size:var(--fs-sm);line-height:1.5}

/* ---------- footer ---------- */
.foot{border-top:1px solid var(--line);padding:.6rem 1rem;display:flex;gap:.4rem;flex-wrap:wrap}
.btn{
  font-size:var(--fs-sm);font-weight:600;padding:.5rem .7rem;border-radius:7px;
  cursor:pointer;border:1px solid var(--ink);background:transparent;color:var(--ink);
}
.btn:hover{background:var(--paper-2)}
.btn.pri{background:var(--ox);border-color:var(--ox);color:#fff}
.btn.pri:hover{background:var(--ox-dk)}
.btn.sm{padding:.3rem .55rem;font-size:var(--fs-xs)}
.btn[disabled]{opacity:.5;cursor:default}

/* share box */
#shareBox{border-top:1px solid var(--line);padding:.6rem 1rem;background:var(--paper-2)}
#shareBox .sh-t{font-size:var(--fs-xs);color:var(--ink-soft);line-height:1.4;margin-bottom:.4rem}
#shareBox .sh-t b{color:var(--ink)}
#shareBox .sh-row{display:flex;gap:.35rem}
#shareBox input{
  flex:1;min-width:0;font:inherit;font-size:var(--fs-xs);padding:.4rem .5rem;
  border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink-soft);
}
#shareBox .sh-state{font-size:var(--fs-xs);color:var(--ink-faint);margin-top:.35rem}

/* ---------- map bits ---------- */
.hoodlbl2{
  color:#8a7a63;font-size:.625rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  text-shadow:0 1px 0 rgba(255,255,255,.9),0 -1px 0 rgba(255,255,255,.9),1px 0 0 rgba(255,255,255,.9),-1px 0 0 rgba(255,255,255,.9);
  white-space:nowrap;pointer-events:none;transform:translate(-50%,-50%);
}
.anchor{
  width:16px;height:16px;background:var(--teal);border:2.5px solid #fff;border-radius:50%;
  box-shadow:0 0 0 2px var(--teal),0 1px 4px rgba(0,0,0,.4);cursor:grab;
}
.anchor-lbl{
  background:var(--teal);color:#fff;font-size:.625rem;font-weight:700;padding:.15rem .4rem;
  border-radius:5px;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.3);
}
.marker-cluster{background:rgba(138,43,34,.22)}
.marker-cluster div{background:rgba(138,43,34,.82);color:#fff;font-weight:600;font-family:inherit}
#map.setspot .leaflet-container,#map.setspot{cursor:crosshair}

/* popup card */
.leaflet-popup-content-wrapper{background:var(--card);border-radius:10px;box-shadow:0 6px 24px rgba(33,27,23,.25)}
.leaflet-popup-content{margin:12px 14px;width:256px!important;font:inherit}
.leaflet-popup-tip{background:var(--card)}
.pop .pa{font-family:Georgia,serif;font-weight:700;font-size:1rem;line-height:1.15;color:var(--ink)}
.pop .pm{font-size:var(--fs-xs);color:var(--ink-soft);margin:.25rem 0 .15rem}
.pop .cm{font-size:var(--fs-xs);color:var(--teal);font-weight:600;margin:.1rem 0}
.pop .setlbl{font-size:.625rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);font-weight:700;margin:.5rem 0 .3rem}
.pop .sgrid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.3rem}
.pop .sbtn{
  font-size:var(--fs-xs);padding:.3rem .2rem;border:1px solid var(--line);background:var(--card);
  border-radius:6px;cursor:pointer;color:var(--ink-soft);
  display:flex;align-items:center;justify-content:center;gap:.25rem;
}
.pop .sbtn .cdot{width:.45rem;height:.45rem;border-radius:50%;background:var(--cc,#ccc);flex:0 0 auto}
.pop .sbtn[aria-pressed="true"]{color:var(--ink);border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);font-weight:700}
.pop textarea{
  width:100%;margin-top:.5rem;border:1px solid var(--line);border-radius:6px;padding:.45rem;
  font:inherit;font-size:var(--fs-sm);resize:vertical;min-height:44px;background:var(--card);color:var(--ink);
}
.pop .acts{display:flex;gap:.3rem;margin-top:.5rem;flex-wrap:wrap}
.pop .act{
  flex:1;text-align:center;font-size:var(--fs-xs);font-weight:600;padding:.35rem .25rem;
  border:1px solid var(--line);border-radius:6px;cursor:pointer;background:var(--card);
  color:var(--ink);text-decoration:none;white-space:nowrap;
}
.pop .act:hover{background:var(--paper)}

/* ---------- search typeahead ---------- */
.searchwrap{position:relative}
#qSug{
  position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:1500;
  background:var(--paper);border:1px solid var(--line);border-radius:8px;
  box-shadow:0 4px 16px rgba(33,27,23,.16);overflow:hidden;
}
.sug-item{
  display:flex;align-items:baseline;gap:.5rem;padding:.45rem .6rem;cursor:pointer;
  font-size:var(--fs-sm);color:var(--ink);
}
.sug-item[aria-selected="true"]{background:var(--card)}
.sug-k{
  flex:0 0 3.4rem;font-size:.625rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--ink-faint);font-weight:700;
}
.sug-t{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sug-m{margin-left:auto;font-size:var(--fs-xs);color:var(--ink-soft);white-space:nowrap;flex:0 0 auto}

/* toast */
#toast{
  position:fixed;left:50%;bottom:1.2rem;transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:var(--paper);font-size:var(--fs-sm);padding:.55rem .9rem;
  border-radius:8px;box-shadow:var(--shadow);z-index:3000;opacity:0;pointer-events:none;
  transition:opacity .18s,transform .18s;max-width:min(92vw,26rem);text-align:center;
}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------- mobile: map full-bleed + bottom sheet ---------- */
@media(max-width:760px){
  #app{display:block}
  #map{position:fixed;inset:0;height:100dvh}
  #panel{
    position:fixed;left:0;right:0;bottom:0;height:88dvh;z-index:1100;
    border-right:none;border-top:1px solid var(--line);border-radius:14px 14px 0 0;
    box-shadow:0 -8px 30px rgba(33,27,23,.22);
    transform:translateY(44dvh);transition:transform .22s ease;
    touch-action:pan-y;
  }
  #panel.dragging{transition:none}
  #app[data-sheet="peek"] #panel{transform:translateY(calc(88dvh - 150px))}
  #app[data-sheet="half"] #panel{transform:translateY(44dvh)}
  #app[data-sheet="full"] #panel{transform:translateY(0)}
  .sheet-handle{
    display:flex;align-items:center;justify-content:center;padding:.5rem 0 .15rem;cursor:grab;
    flex:0 0 auto;
  }
  .sheet-handle::before{content:"";width:2.6rem;height:.3rem;border-radius:999px;background:var(--line)}
  header.hd{padding:.15rem 1rem .3rem}
  .title{font-size:1.35rem}
  .sub{margin-top:.15rem}
  /* the data-honesty caveat stays visible on mobile — summary line always shown */
  details.caveat{margin:.4rem .8rem 0}
  .pad{padding:.45rem .8rem .7rem}
  .listhd,.card{padding-left:.8rem;padding-right:.8rem}
  .foot,#shareBox{padding:.5rem .8rem}
  .leaflet-popup-content{width:236px!important}
}

/* hover preview card on pins (hover-capable devices only; click opens the editor) */
.pin-tip{
  background:var(--paper);border:1px solid var(--line);border-radius:6px;
  box-shadow:0 2px 10px rgba(33,27,23,.18);color:var(--ink);
  padding:.45rem .6rem;line-height:1.35;pointer-events:none;white-space:nowrap;
}
.pin-tip .tip-a{font-family:Georgia,serif;font-weight:700;font-size:.85rem}
.pin-tip .tip-m{color:var(--ink-soft);font-size:var(--fs-xs);margin-top:.15rem}
.leaflet-tooltip-top.pin-tip:before{border-top-color:var(--line)}
