/* Būrelių žemėlapis · Vilnius — Kris brand DNA (LIGHT default, DARK override)
   Canon: wiki/meta/brand-style.md — JetBrains Mono headings/labels/numbers,
   Inter body ≥16px, one red accent, 4px corners. */

/* ---------- tokens: full LIGHT palette on bare :root ---------- */
:root{
  --ground:#FFFFFF;
  --surface:#F7F7F5;
  --ink:#0A0A0A;
  --muted:#595959;
  --line:#E5E2DE;
  --accent:#D90429;      /* red for text/borders */
  --accent-solid:#D90429;/* filled red surfaces — white on it = 5.25:1 in both themes */
  --red:#FF0000;         /* micro-accents only */
  --shadow:0 6px 24px rgba(10,10,10,.10);
  --shadow-sm:0 2px 8px rgba(10,10,10,.07);
  --scrim:rgba(10,10,10,.45);
  --chip-bg:#FFFFFF;
  --chip-on-ink:#FFFFFF;
  --map-filter:none;
  --mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --body:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --r:4px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#080808;
    --surface:#0D0D0D;
    --ink:#FAFAFA;
    --muted:#999999;
    --line:#262626;
    --accent:#FF0000;
    --accent-solid:#D90429;
    --red:#FF0000;
    --shadow:0 6px 24px rgba(0,0,0,.6);
    --shadow-sm:0 2px 8px rgba(0,0,0,.5);
    --scrim:rgba(0,0,0,.65);
    --chip-bg:#111111;
    --chip-on-ink:#080808;
  }
}
:root[data-theme="dark"]{
  --ground:#080808;
  --surface:#0D0D0D;
  --ink:#FAFAFA;
  --muted:#999999;
  --line:#262626;
  --accent:#FF0000;
  --accent-solid:#D90429;
  --red:#FF0000;
  --shadow:0 6px 24px rgba(0,0,0,.6);
  --shadow-sm:0 2px 8px rgba(0,0,0,.5);
  --scrim:rgba(0,0,0,.65);
  --chip-bg:#111111;
  --chip-on-ink:#080808;
}

*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
  background:var(--ground);
  color:var(--ink);
  font-family:var(--body);
  font-size:16px;
  line-height:1.5;
  overflow:hidden;
  -webkit-font-smoothing:antialiased;
}
button,input,select,textarea{font-family:inherit;font-size:16px;color:inherit}
a{color:var(--accent)}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:var(--r)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- map ---------- */
#map{position:fixed;inset:0;background:var(--surface);z-index:0}
.leaflet-container{background:var(--surface);font-family:var(--body)}
.leaflet-control-attribution{
  font-size:11px !important;background:rgba(255,255,255,.86) !important;color:var(--muted) !important;
}
:root[data-theme="dark"] .leaflet-control-attribution{background:rgba(8,8,8,.86) !important}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .leaflet-control-attribution{background:rgba(8,8,8,.86) !important}}
.leaflet-control-attribution a{color:var(--muted) !important}
.leaflet-bar a{background:var(--ground);color:var(--ink);border-bottom-color:var(--line)}
.leaflet-bar a:hover{background:var(--surface)}
.leaflet-touch .leaflet-bar{border-radius:var(--r);border-color:var(--line)}

/* ---------- shared card look ---------- */
.card{
  background:var(--ground);
  border:1px solid var(--line);
  border-radius:var(--r);
  box-shadow:var(--shadow-sm);
}
.eyebrow{
  font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);
}
.label{
  font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);
}
.num{font-family:var(--mono);font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink)}

/* ---------- left stack: hero + filters + counter ---------- */
.stack{
  position:fixed;left:16px;top:16px;width:376px;max-width:calc(100vw - 32px);
  max-height:calc(100vh - 152px);z-index:1000;
  display:flex;flex-direction:column;gap:10px;pointer-events:none;
}
.stack>*{pointer-events:auto}
/* the stack is a height-constrained flex column: everything keeps its natural size
   and ONLY the filter list absorbs the shrink (before this, an over-constrained
   column silently squashed the hero and `overflow:hidden` ate the byline) */
.stack>.hero,.stack>.bridge,.stack>.counter,.stack>.rail{flex:0 0 auto}
.stack>.filters{flex:0 1 auto;min-height:0}

.hero{position:relative;overflow:hidden;padding:16px 18px 14px}
.hero::before{  /* neuron motif ≤6% */
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.06;
  background-image:radial-gradient(currentColor 1.5px,transparent 1.6px);
  background-size:22px 22px;color:var(--accent);
}
.hero>*{position:relative}
.hero h1{
  font-family:var(--mono);font-size:26px;line-height:1.1;font-weight:800;
  letter-spacing:-.01em;margin:6px 0 8px;
}
.hero h1 .dot{color:var(--accent)}
.hero .facts{display:flex;gap:18px;flex-wrap:wrap;margin-top:2px}
.hero .facts .s{display:flex;flex-direction:column;line-height:1.05}
.hero .facts .s b{font-family:var(--mono);font-weight:800;font-size:26px;color:var(--ink);font-variant-numeric:tabular-nums}
.hero .facts .s i{
  font-style:normal;font-family:var(--mono);font-size:11px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:4px;
}
.hero .promise{margin-top:12px;font-size:16px;line-height:1.4;color:var(--ink)}
.hero .byline{margin-top:10px;font-size:13px;color:var(--muted)}
.hero .byline a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line)}
.hero .byline a:hover{border-bottom-color:var(--ink)}

/* test bridge */
.bridge{
  display:flex;gap:10px;align-items:center;text-decoration:none;color:inherit;
  padding:11px 14px;border-left:3px solid var(--accent);
}
.bridge .b-emo{font-size:20px;line-height:1}
.bridge .b-t{display:block;font-size:16px;font-weight:600;line-height:1.3}
.bridge .b-s{display:block;font-size:13.5px;color:var(--muted);margin-top:2px}
.bridge .b-go{margin-left:auto;color:var(--accent);font-family:var(--mono);font-weight:700}
.bridge:hover{background:var(--surface)}

/* filters */
.filters{display:flex;flex-direction:column;min-height:0}
.f-head{
  display:flex;align-items:center;gap:8px;width:100%;min-height:48px;padding:13px 14px;
  background:transparent;border:0;cursor:pointer;text-align:left;
}
.f-head .caret{margin-left:auto;color:var(--muted);transition:transform .18s ease}
.filters.open .f-head .caret{transform:rotate(180deg)}
.f-body{display:none;padding:0 14px 14px;overflow-y:auto;max-height:min(52vh,460px);min-height:0}
.filters.open .f-body{display:block}
.f-group{margin-top:12px}
.f-group:first-child{margin-top:2px}
.f-group>.label{display:block;margin-bottom:7px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{
  display:inline-flex;align-items:center;gap:6px;min-height:38px;
  font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.04em;
  background:var(--chip-bg);color:var(--ink);border:1px solid var(--line);
  border-radius:var(--r);padding:8px 11px;cursor:pointer;line-height:1.2;
  transition:background .12s ease,border-color .12s ease;
}
.chip:hover{background:var(--surface)}
.chip .sw{width:10px;height:10px;border-radius:50%;background:var(--muted);flex:0 0 auto}
.chip .cnt{color:var(--muted);font-weight:400}
/* ONE red job in the filter panel: "this chip is on" */
.chip[aria-pressed="true"],
.chip.red[aria-pressed="true"]{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff}
.chip[aria-pressed="true"] .cnt{color:#fff;opacity:.8}
.chip[aria-pressed="true"] .sw{box-shadow:0 0 0 1px #fff}
.chip[aria-pressed="true"]:focus-visible{outline-color:var(--ink)}
.chip:disabled{opacity:.55;cursor:not-allowed}
.f-text{
  width:100%;padding:9px 11px;background:var(--surface);color:var(--ink);
  border:1px solid var(--line);border-radius:var(--r);font-size:16px;
}
.f-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.f-note{font-size:13.5px;color:var(--muted);margin-top:6px;line-height:1.4}
.f-note.trap{border-left:2px solid var(--line);padding-left:8px}
.f-foot{display:flex;gap:8px;margin-top:16px;align-items:stretch}
.f-reset{
  flex:1 1 auto;background:transparent;border:1px solid var(--line);
  border-radius:var(--r);padding:10px;min-height:44px;cursor:pointer;color:var(--muted);
  font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
}
.f-reset:hover{color:var(--ink);border-color:var(--ink)}
.f-done{display:none;flex:1 1 auto;justify-content:center;min-height:44px}

/* counter */
.counter{
  display:block;padding:11px 14px;font-size:15px;line-height:1.45;color:var(--muted);
}
.counter.is-empty{padding:12px 14px}
.counter b{font-family:var(--mono);font-weight:800;color:var(--ink);font-size:17px;font-variant-numeric:tabular-nums}
.counter .warn{color:var(--ink);font-weight:600}

/* ---------- top-right toolbar ---------- */
.toolbar{
  position:fixed;top:16px;right:16px;z-index:1000;display:flex;gap:8px;align-items:flex-start;
}
.search{position:relative}
.search input{
  width:304px;padding:11px 12px 11px 34px;background:var(--ground);color:var(--ink);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-sm);font-size:16px;
}
.search input::placeholder{color:var(--muted)}
.search .mag{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:14px;pointer-events:none}
.sugg{
  position:absolute;top:calc(100% + 6px);right:0;left:0;background:var(--ground);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  max-height:320px;overflow-y:auto;display:none;
}
.sugg.on{display:block}
.sugg button{
  display:block;width:100%;text-align:left;background:transparent;border:0;
  border-bottom:1px solid var(--line);padding:10px 12px;cursor:pointer;font-size:15px;
}
.sugg button:last-child{border-bottom:0}
.sugg button:hover,.sugg button.hi{background:var(--surface)}
.sugg .s-sub{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.tbtn{
  background:var(--ground);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-sm);cursor:pointer;padding:11px 12px;line-height:1;
  min-height:44px;min-width:44px;
  font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:.06em;
}
.tbtn:hover{background:var(--surface)}
.tbtn[aria-pressed="true"]{background:var(--ink);color:var(--ground);border-color:var(--ink)}
.seg{display:flex;background:var(--ground);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-sm);overflow:hidden}
.seg button{
  background:transparent;border:0;cursor:pointer;padding:11px 12px;min-height:44px;
  font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.08em;color:var(--muted);
}
.seg button.on{background:var(--ink);color:var(--ground)}

/* ---------- provider panel ---------- */
.panel{
  position:fixed;right:16px;top:76px;width:392px;max-width:calc(100vw - 32px);
  max-height:calc(100vh - 100px);overflow-y:auto;z-index:1100;
  background:var(--ground);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:18px;opacity:0;transform:translateX(16px);pointer-events:none;
  transition:opacity .2s ease,transform .2s ease;
}
.panel.open{opacity:1;transform:none;pointer-events:auto}
.panel:focus{outline:none}
.panel:focus-visible{outline:2px solid var(--line);outline-offset:-2px}
.panel .eyebrow{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.panel .close{
  float:right;background:transparent;border:1px solid var(--line);border-radius:var(--r);
  cursor:pointer;padding:4px 9px;color:var(--muted);font-size:14px;line-height:1.2;
}
.panel .close{min-height:36px;min-width:36px}
.panel .close:hover{color:var(--ink);border-color:var(--ink)}
.panel h2{font-family:var(--mono);font-size:19px;font-weight:800;line-height:1.25;margin:6px 0 8px;padding-right:44px}
.panel .addr{font-size:15px;color:var(--muted);line-height:1.45}
.panel .badges{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 4px}
.badge{
  font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:var(--r);padding:4px 8px;color:var(--muted);
}
/* a caveat is not an action — it gets a dashed border, not the red */
.badge.warn{color:var(--muted);border-color:var(--muted);border-style:dashed}
.badge.nvs{color:var(--ink);border-color:var(--ink)}
.badge.trial{color:var(--accent);border-color:var(--accent)}
/* Vilnius m. žemėlapio žymos — teikėjo savideklaracija, ne mūsų/savivaldybės patikra;
   normalcase (not the badge default uppercase) so the honesty caveat stays readable */
.badge.city-spc,.badge.city-nvs{color:var(--ink);border-color:var(--ink);text-transform:none;letter-spacing:.01em;font-weight:600;cursor:help}
.panel .p-photo{display:block;width:100%;max-height:180px;object-fit:cover;border-radius:var(--r,4px);border:1px solid var(--line);margin:8px 0 10px;background:var(--surface)}
.actions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.btn{
  display:inline-flex;align-items:center;gap:6px;text-decoration:none;cursor:pointer;
  font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:var(--r);padding:11px 14px;min-height:44px;
  background:var(--ground);color:var(--ink);
}
.btn:hover{background:var(--surface)}
.btn.primary{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff}
.btn.primary:hover{filter:brightness(1.08)}
.btn.primary:focus-visible{outline-color:var(--ink)}
.btn.ghost{color:var(--muted)}
/* everything that is not THE action drops to a quiet text link */
.actionlinks{display:flex;flex-wrap:wrap;gap:14px;margin:2px 0 4px}
.alink{
  background:transparent;border:0;padding:0;cursor:pointer;color:var(--ink);
  font-family:var(--body);font-size:14.5px;text-decoration:underline;
  text-underline-offset:3px;text-decoration-color:var(--line);
}
.alink:hover{text-decoration-color:var(--ink)}
.p-trust{
  margin-top:12px;padding-top:10px;border-top:1px solid var(--line);
  font-size:13.5px;line-height:1.45;color:var(--muted);
}
.tgroup{border-top:1px solid var(--line);margin-top:6px}
.tgroup summary{
  cursor:pointer;list-style:none;padding:11px 2px;display:flex;align-items:center;gap:8px;
  font-family:var(--mono);font-size:13px;font-weight:700;
}
.tgroup summary::-webkit-details-marker{display:none}
.tgroup summary .sw{width:10px;height:10px;border-radius:50%}
.tgroup summary .cnt{margin-left:auto;color:var(--muted);font-weight:400}
.tgroup ul{list-style:none;padding:0 2px 10px}
.tgroup li{padding:7px 0;border-top:1px dashed var(--line);font-size:16px;line-height:1.4}
.tgroup li .meta{display:block;font-size:12.5px;color:var(--muted);margin-top:3px;font-family:var(--mono)}
.tgroup li.dim{opacity:.45}

/* ---------- list view ---------- */
.listview{
  position:fixed;right:16px;top:76px;width:460px;max-width:calc(100vw - 32px);
  max-height:calc(100vh - 100px);z-index:1050;display:none;flex-direction:column;
  background:var(--ground);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
}
.listview.open{display:flex}
.lv-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
.lv-head select{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:6px 8px;font-size:14px}
.lv-body{overflow-y:auto;padding:4px 0}
.lv-item{
  display:grid;grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:"n d" "a a" "t t";
  column-gap:12px;row-gap:5px;align-items:start;
  width:100%;text-align:left;background:transparent;border:0;
  border-bottom:1px solid var(--line);padding:14px 16px;cursor:pointer;
}
.lv-item:hover{background:var(--surface)}
.lv-item .n{grid-area:n;font-size:16px;font-weight:600;line-height:1.3}
.lv-item .a{grid-area:a;font-size:14px;color:var(--muted);line-height:1.35}
.lv-item .t{grid-area:t;display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.lv-item .t span{font-family:var(--mono);font-size:12.5px;color:var(--muted);border:1px solid var(--line);border-radius:var(--r);padding:3px 6px}
/* distance/time is data, not an action — ink, never red */
.lv-item .d{grid-area:d;float:none;font-family:var(--mono);font-size:13px;font-weight:700;color:var(--ink);white-space:nowrap}

/* ---------- markers ---------- */
.pin{
  width:100%;height:100%;border-radius:50%;
  border:2px solid var(--ground);box-shadow:0 1px 4px rgba(0,0,0,.35);
}
.pin.approx{border-style:dashed;opacity:.85}
.pin.sel{box-shadow:0 0 0 4px var(--accent)}
.pin-school{width:100%;height:100%;border-radius:2px;background:var(--muted);border:2px solid var(--ground);opacity:.9}
.cluster{
  display:flex;align-items:center;justify-content:center;border-radius:50%;
  background:var(--ground);border:2px solid var(--ink);color:var(--ink);
  font-family:var(--mono);font-weight:800;font-size:13px;box-shadow:var(--shadow-sm);
}
.leaflet-tooltip{
  font-family:var(--body);font-size:13px;border-radius:var(--r);
  background:var(--ground);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow-sm);
}
.leaflet-tooltip-top:before{border-top-color:var(--line)}

/* ---------- modal (report form / about) ---------- */
.modal{position:fixed;inset:0;z-index:2000;background:var(--scrim);display:none;align-items:center;justify-content:center;padding:20px}
.modal.open{display:flex}
.modal .sheet{
  background:var(--ground);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  width:min(520px,100%);max-height:86vh;overflow-y:auto;padding:22px 24px;
}
.modal h2{font-family:var(--mono);font-size:20px;font-weight:800;margin-bottom:6px}
.modal p{font-size:16px;color:var(--muted);line-height:1.5}
.modal label{display:block;margin-top:14px}
.modal label span{display:block;margin-bottom:5px}
.modal input,.modal textarea{
  width:100%;background:var(--surface);color:var(--ink);border:1px solid var(--line);
  border-radius:var(--r);padding:10px 12px;font-size:16px;
}
.modal textarea{min-height:110px;resize:vertical;font-family:inherit}
.modal .m-actions{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap}
.modal .m-msg{margin-top:12px;font-size:14px}
.modal .m-msg.ok{color:var(--ink)}
.modal .m-msg.err{color:var(--accent);font-weight:600}

/* ---------- footer ---------- */
/* the old four-line grey wall sat unreadably on top of the map; it is now one
   quiet card-pill that opens the sources modal (and an "i" chip in the mobile rail) */
.foot{position:fixed;left:16px;bottom:12px;z-index:900}
.foot-btn{
  background:var(--ground);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-sm);cursor:pointer;padding:9px 12px;min-height:40px;color:var(--muted);
  font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
}
.foot-btn:hover{color:var(--ink);border-color:var(--ink)}

/* ---------- mobile bar ---------- */
.mbar{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:1200;
  background:var(--ground);border-top:1px solid var(--line);padding:8px 10px calc(8px + env(safe-area-inset-bottom));
  gap:8px;
}
.mbar button{
  flex:1;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:11px 6px;cursor:pointer;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.05em;
}
.mbar button[aria-pressed="true"]{background:var(--ink);color:var(--ground);border-color:var(--ink)}
.mbar .n{color:inherit;opacity:.75}
.mbar button{min-height:48px}

/* ---------- chrome that only exists on mobile ---------- */
.mrow,.fab{display:none}

/* ---------- shell: transparent on desktop, a real column on mobile ---------- */
#shell,#mtop,#scroller{display:contents}

/* ---------- responsive — V2 MOBILE-FIRST ----------
   ≤900px the page is a LIST, not a map. #shell becomes a flex column: a sticky
   top bar (search · 📍 nuo manęs · 🏫 nuo mokyklos · 🗺️ žemėlapis · chip rail)
   above one scroller that carries the hero and the results. The map is a MODE
   you enter (body.mapview) and leave with the same button, relabelled „≡ Sąrašas".
   Desktop keeps the V1.2 map-first layout untouched. */
@media (max-width:900px){
  #shell{
    position:fixed;inset:0;z-index:600;pointer-events:none;
    display:flex;flex-direction:column;
    height:100vh;height:100dvh;overflow:hidden;
  }
  #mtop{
    position:relative;z-index:2;flex:0 0 auto;pointer-events:auto;
    display:flex;flex-direction:column;gap:8px;
    background:var(--ground);border-bottom:1px solid var(--line);box-shadow:var(--shadow-sm);
    padding:calc(8px + env(safe-area-inset-top)) 8px 7px;
  }
  #scroller{
    position:relative;z-index:1;flex:1 1 auto;min-height:0;pointer-events:auto;
    display:block;overflow-y:auto;overflow-x:hidden;
    -webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;
    background:var(--ground);
    padding-bottom:calc(88px + env(safe-area-inset-bottom));
  }
  body.mapview #scroller{display:none}      /* the map is what you came for */

  /* --- top bar --- */
  .toolbar{position:static;top:auto;right:auto;left:auto;bottom:auto;gap:8px;align-items:stretch}
  .toolbar #btnList,.toolbar #btnTheme,.toolbar #btnShare,.toolbar .seg{display:none}
  .search{flex:1 1 auto;min-width:0}
  .search input{width:100%;min-height:48px}
  .sugg{max-height:52vh;z-index:5}
  .mrow{display:flex}
  .rail{display:flex}

  /* --- scroll area --- */
  .stack{
    position:static;left:auto;top:auto;right:auto;width:auto;max-width:none;max-height:none;
    display:block;gap:0;padding:8px 8px 0;pointer-events:auto;
  }
  .hero{padding:12px 14px}
  .hero h1{font-size:22px;margin:4px 0 8px}
  .hero .facts{gap:14px}
  .hero .facts .s b{font-size:22px}
  .hero .promise{margin-top:8px;font-size:15px}
  .hero .byline{display:none}
  .bridge{display:none}
  .counter{display:none}   /* the live count lives in the rail (.rc) */

  /* --- list = the default screen --- */
  .listview,.listview.open{
    position:static;left:auto;right:auto;top:auto;bottom:auto;
    width:auto;max-width:none;max-height:none;z-index:auto;
    display:flex;background:transparent;border:0;border-radius:0;box-shadow:none;margin-top:8px;
  }
  .lv-head{
    position:sticky;top:0;z-index:3;flex-wrap:wrap;
    background:var(--ground);border-bottom:1px solid var(--line);padding:10px 12px;
  }
  .lv-head select{flex:1 1 auto;min-width:0;max-width:200px;min-height:44px}
  #lvClose{display:none}
  .lv-body{overflow:visible;padding:0}
  .lv-item{padding:15px 14px}

  /* --- filter sheet --- */
  .filters{
    position:fixed;left:0;right:0;bottom:0;top:auto;z-index:1500;
    border-radius:10px 10px 0 0;border-bottom:0;
    transform:translateY(102%);transition:transform .24s ease;box-shadow:var(--shadow);
  }
  .filters.open{transform:none}
  /* the bottom action bar overlaps the sheet — content and the sticky primary
     action both have to clear it */
  .filters .f-body{display:block;max-height:58vh;padding-bottom:calc(74px + env(safe-area-inset-bottom))}
  .chip{min-height:44px;padding:11px 12px;font-size:13px}
  .f-done{display:inline-flex}
  .f-head{min-height:52px}

  .foot{display:none}
  .mbar{display:flex}
  .fab{display:flex}

  /* every map control clears 44px */
  .leaflet-touch .leaflet-bar a,.leaflet-bar a{width:44px;height:44px;line-height:44px}
  .leaflet-control-zoom{margin-bottom:calc(84px + env(safe-area-inset-bottom)) !important}
}

/* ---------- motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
  .leaflet-fade-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-zoom-animated{transition:none !important}
}

/* OSM fallback basemap (only if Esri canvas tiles fail) */
#map.osmfb .leaflet-tile{filter:grayscale(.55) brightness(1.04) contrast(.92)}
:root[data-theme="dark"] #map.osmfb .leaflet-tile{filter:invert(1) hue-rotate(180deg) brightness(.88) contrast(1.05) grayscale(.4)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) #map.osmfb .leaflet-tile{filter:invert(1) hue-rotate(180deg) brightness(.88) contrast(1.05) grayscale(.4)}}

/* ==================================================================
   V1.1 — prices · OSM venue layer · branches · legend
   ================================================================== */

/* "what's new" is release noise for a first-time parent — it now lives inside the
   sources modal instead of the first screen */
.s-new{
  margin-top:2px;font-family:var(--mono);font-size:13px;line-height:1.5;
  letter-spacing:.02em;color:var(--muted);border-left:2px solid var(--line);padding-left:10px;
}
.s-body{margin-top:12px;font-size:15px;line-height:1.5;color:var(--muted)}
.modal .sheet{position:relative}
.s-x{
  position:absolute;top:14px;right:14px;background:transparent;border:1px solid var(--line);
  border-radius:var(--r);cursor:pointer;color:var(--muted);min-width:38px;min-height:38px;font-size:14px;
}
.s-x:hover{color:var(--ink);border-color:var(--ink)}
.modal h2{padding-right:48px}

/* legend under the layer chips */
.legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font-size:13.5px;color:var(--muted)}
.legend .lg{display:inline-flex;align-items:center;gap:5px}
.lg-reg,.lg-osm,.lg-sch{width:11px;height:11px;border-radius:50%;flex:0 0 auto;display:inline-block}
.lg-reg{background:var(--muted);border:2px solid var(--ground)}
.lg-osm{background:var(--ground);border:2px solid var(--muted)}
.lg-sch{background:var(--muted);border-radius:2px;opacity:.85}

/* markers rendered from the SVG factory */
.leaflet-marker-icon.bz-pin{filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}

/* counter: OSM tail */
.counter .c-osm{color:var(--muted)}
.counter .c-osm b{font-size:14px}

/* ---------- panel: price block ---------- */
.p-lab{
  font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);
}
.p-age{margin-top:8px;font-size:14px;color:var(--muted)}
.p-age b{color:var(--ink);font-family:var(--mono)}
.pricebox{
  margin:12px 0 0;padding:12px 14px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r);border-left:3px solid var(--ink);
}
.pricebox .price{font-size:15px;color:var(--muted);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.pricebox .price b{font-family:var(--mono);font-size:19px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.pricebox .p-note{font-size:13.5px;color:var(--muted);margin-top:5px;line-height:1.45}
.pricebox .p-src{font-size:12.5px;color:var(--muted);margin-top:7px;font-family:var(--mono)}
.pricebox .p-src a{color:var(--muted);text-decoration:underline}
.pricebox .p-src a:hover{color:var(--ink)}
.p-ask{
  background:transparent;border:1px dashed var(--muted);border-radius:var(--r);
  color:var(--ink);cursor:pointer;padding:9px 12px;min-height:40px;
  font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.04em;
}
.p-ask:hover{background:var(--ground);border-color:var(--ink)}
.p-sched{margin-top:8px;font-size:15px;color:var(--muted)}
.p-data{
  margin-top:10px;font-size:12.5px;font-family:var(--mono);letter-spacing:.03em;color:var(--muted);
}

/* small buttons (socials, branch directions) */
.btn.sm{padding:5px 8px;font-size:11px;letter-spacing:.08em}
.actions.socials{margin-top:-4px}

/* branches list */
.tgroup.branches li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tgroup.branches li .b-n{font-weight:600;flex:1 1 auto;min-width:0}
.tgroup.branches li .meta{flex:1 0 100%;order:3}

/* OSM venue panel */
.badge.osm{display:inline-flex;align-items:center;gap:5px;text-transform:none;letter-spacing:.02em}
.badge.osm i{width:9px;height:9px}
.vrows{margin-top:12px;display:flex;flex-direction:column;gap:6px}
.vrow{font-size:14px;color:var(--ink);display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.vrow a{text-decoration:none;border-bottom:1px solid var(--line)}
.vrow .oh{font-family:var(--mono);font-size:12.5px;color:var(--muted);word-break:break-word}

/* ---------- list view: price chip ---------- */
.lv-item .t .pz{
  font-family:var(--mono);font-size:11px;font-weight:700;color:var(--ink);
  border:1px solid var(--ink);border-radius:var(--r);padding:2px 5px;
}
.lv-item .t .pz.none{color:var(--muted);border-color:var(--line);font-weight:400}
.lv-note{padding:10px 16px;font-size:12.5px;color:var(--muted);font-family:var(--mono)}



/* ---------- V1.1b: paskirtis · at_school · claim ---------- */
.label.sub{display:block;margin:10px 0 6px;opacity:.9}

.badge.sch{color:var(--ink);border-color:var(--ink);text-transform:none;letter-spacing:.02em}
.badge.ext{color:var(--muted);border-color:var(--muted);border-style:dashed}

.tgroup li .ptag{
  display:inline-block;margin-left:7px;vertical-align:1px;
  font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  border:1px solid var(--line);border-radius:var(--r);padding:1px 5px;color:var(--muted);
}
.tgroup li .ptag.nvs{color:var(--ink);border-color:var(--ink)}



/* ---------- V1.1c: travel time · ritmas · ownership · depth · rich cards ---------- */
.p-time{
  margin-top:8px;font-family:var(--mono);font-size:13px;font-weight:700;
  letter-spacing:.02em;color:var(--ink);
}
.p-time .km{color:var(--muted);font-weight:400}
.p-time.hint{font-weight:400}
.p-time .lnk{
  background:transparent;border:0;padding:0;cursor:pointer;color:var(--ink);
  font-family:var(--mono);font-size:13.5px;text-align:left;text-decoration:underline;
}
.p-age .muted{color:var(--muted);font-weight:400;font-size:12px}
.badge.own{color:var(--ink);border-color:var(--line)}

.p-about{margin-top:6px;font-size:15px;line-height:1.45;color:var(--ink)}
.dstats{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.dstat{
  font-family:var(--mono);font-size:11.5px;color:var(--muted);
  border:1px solid var(--line);border-radius:var(--r);padding:4px 8px;
}
.dstat b{color:var(--ink);font-weight:800;font-variant-numeric:tabular-nums}
.p-awards{margin-top:8px;font-size:13.5px;color:var(--muted);line-height:1.4}
.p-srcsite{margin-top:6px;font-size:12.5px;font-family:var(--mono);color:var(--muted)}
.p-srcsite a{color:var(--muted);text-decoration:underline}
.p-srcsite a:hover{color:var(--ink)}

.pricebox .p-note.others{
  margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);color:var(--muted);
}
.pricebox .p-note.others .p-lab{display:block;margin-bottom:2px}

.ritmas{margin-top:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r)}
.ritmas .p-lab{display:block;margin-bottom:4px}
.ritmas .r-line{font-size:14.5px;color:var(--ink);line-height:1.45}
.ritmas .ptag{
  display:inline-block;margin-left:6px;font-family:var(--mono);font-size:9.5px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);
  border-radius:var(--r);padding:1px 5px;color:var(--muted);
}
.ritmas .p-note{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.4}

/* result cards */
.lv-item .n .dot{
  display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px;
}
.lv-item .d{text-align:right;line-height:1.35}
.lv-item .d .tm{display:block;font-size:11px;color:var(--muted);font-weight:400;white-space:nowrap}
.lv-item .t .tb,.lv-item .t .ag,.lv-item .t .rt,.lv-item .t .br{
  font-family:var(--mono);font-size:11px;color:var(--muted);
  border:1px solid var(--line);border-radius:var(--r);padding:2px 5px;
}
.lv-item .t .tb.nvs{color:var(--ink);border-color:var(--ink);font-weight:700}
.lv-item .t .ag{color:var(--ink)}

/* empty state */
.empty{display:flex;flex-direction:column;gap:8px;width:100%}
.empty .e-line{font-size:14px;color:var(--ink);line-height:1.45}
.empty .e-cta{display:flex;gap:8px;flex-wrap:wrap}
.counter .empty{padding:2px 0}
.lv-empty{padding:16px}


/* ==================================================================
   V1.2 — UX pass: visible core filters · one red · readable card grid
   ================================================================== */

/* ---------- mobile core-filter rail (hidden on desktop, where the
   filter card itself is open by default) ---------- */
.rail{
  display:none;gap:8px;align-items:center;overflow-x:auto;overflow-y:hidden;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;padding:2px 0 4px;
  /* the fade is the "there is more, swipe" affordance */
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent);
          mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent);
}
.rail::-webkit-scrollbar{display:none}
.rail .rc{
  position:sticky;left:0;z-index:2;flex:0 0 auto;
  display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;
  background:var(--ground);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-sm);font-size:13px;color:var(--muted);white-space:nowrap;
}
.rail .rc b{
  font-family:var(--mono);font-weight:800;font-size:16px;color:var(--ink);
  font-variant-numeric:tabular-nums;margin-right:6px;
}
.rchip{
  flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;min-height:44px;
  padding:8px 13px;cursor:pointer;white-space:nowrap;
  background:var(--ground);color:var(--ink);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow-sm);
  font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
}
.rchip:hover{background:var(--surface)}
.rchip[aria-pressed="true"]{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff}
.rchip[aria-pressed="true"]:focus-visible{outline-color:var(--ink)}
.rchip .rn{
  font-variant-numeric:tabular-nums;font-size:12px;
  min-width:0;color:var(--muted);
}
.rchip[aria-pressed="true"] .rn{color:#fff;opacity:.85}
.rchip .rn:empty{display:none}
.rchip.rinfo{text-transform:none;letter-spacing:.02em;color:var(--muted)}

/* ---------- bigger hit areas on the map controls ---------- */
.leaflet-touch .leaflet-bar a,.leaflet-bar a{width:40px;height:40px;line-height:40px}

/* ---------- honest micro-labels: nothing below 12.5px ---------- */
.tgroup li .meta{font-size:13.5px}
.tgroup li .ptag,.ritmas .ptag{font-size:11px;padding:2px 6px}
.dstat{font-size:12.5px;padding:5px 9px}
.badge.osm i{width:10px;height:10px}
.vrow .oh{font-size:13.5px}
.lv-item .t .pz,.lv-item .t .tb,.lv-item .t .ag,.lv-item .t .rt,.lv-item .t .br{font-size:12.5px;padding:3px 6px}
.lv-item .d .tm{font-size:12.5px}
.lv-note{font-size:13.5px}
.p-age .muted{font-size:13px}
.p-time{font-size:14px}
.empty .e-line{font-size:15px}
.sugg .s-sub{font-size:13px}
.leaflet-control-attribution{font-size:12px !important}

/* ---------- loading: a named state, not an empty grey rectangle ---------- */
body.loading #map::after{
  content:"";position:absolute;inset:0;z-index:400;
  background:repeating-linear-gradient(135deg,var(--surface) 0 18px,var(--ground) 18px 36px);
  opacity:.5;
}
body.loading .hero .facts{opacity:.35}

/* ---------- focus: never a red ring on a red surface ---------- */
.mbar button:focus-visible,.rchip:focus-visible,.chip:focus-visible{outline-offset:2px}
.mbar button[aria-pressed="true"]:focus-visible{outline-color:var(--accent)}

@media (max-width:900px){
  /* the rail sits in the stack flow, so the list view is told where the stack ends */
  .rail{display:flex}
  .foot{display:none}          /* the „i" chip in the rail carries it on mobile */
}

/* the filter list scrolls — say so instead of cutting a chip row in half */
@media (min-width:901px){
  .f-body{
    -webkit-mask-image:linear-gradient(#000 calc(100% - 18px),transparent);
            mask-image:linear-gradient(#000 calc(100% - 18px),transparent);
  }
}
.lv-item .d{max-width:112px}

/* the sheet's primary action stays reachable without scrolling to the end */
@media (max-width:900px){
  .f-foot{
    position:sticky;bottom:calc(4px + env(safe-area-inset-bottom));z-index:2;margin-top:14px;
    padding:12px 0 4px;
    background:linear-gradient(transparent,var(--ground) 14px);
  }
}


/* ==================================================================
   V2 — mobile-first shell · onboarding · about · user layer (Supabase)
   ================================================================== */

/* ---------- mobile action row: location · location · map toggle ---------- */
.mrow{gap:8px}
.mb{
  flex:1 1 0;min-width:0;min-height:48px;
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  background:var(--ground);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);
  font-family:var(--mono);font-size:12.5px;font-weight:700;letter-spacing:.04em;
  padding:8px 6px;cursor:pointer;white-space:nowrap;overflow:hidden;
}
.mb span{overflow:hidden;text-overflow:ellipsis}
.mb.on{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff}
.mb.on:focus-visible{outline-color:var(--ink)}
.mb.mmap{flex:0 0 auto;padding:8px 14px;background:var(--ink);color:var(--ground);border-color:var(--ink)}

/* ---------- hero action row ---------- */
.hero-acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.hbtn{
  display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:9px 11px;
  background:transparent;border:1px solid var(--line);border-radius:var(--r);color:var(--muted);
  font-family:var(--mono);font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  cursor:pointer;
}
.hbtn:hover{color:var(--ink);border-color:var(--ink)}
@media (max-width:900px){.hbtn{min-height:44px;font-size:12px}}

/* ---------- footer row (desktop only — the rail carries it on mobile) ---------- */
@media (min-width:901px){
  .foot{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
}
.foot-btn{display:inline-flex;align-items:center;text-decoration:none}

/* ---------- add-a-place FAB (mobile) ---------- */
.fab{
  position:fixed;right:14px;bottom:calc(80px + env(safe-area-inset-bottom));z-index:1450;
  width:56px;height:56px;border-radius:50%;border:1px solid var(--ink);
  background:var(--ink);color:var(--ground);font-size:26px;line-height:1;
  align-items:center;justify-content:center;box-shadow:var(--shadow);cursor:pointer;
}
body.sheet .fab,body.pick .fab,body.panelopen .fab{display:none}

/* ---------- pin-picker banner ---------- */
.pickbar{
  display:none;position:fixed;left:12px;right:12px;top:calc(12px + env(safe-area-inset-top));
  z-index:1800;background:var(--ground);border:1px solid var(--ink);border-radius:var(--r);
  box-shadow:var(--shadow);padding:12px 14px;gap:8px;align-items:center;flex-wrap:wrap;
  font-size:15px;line-height:1.4;
}
body.pick .pickbar{display:flex}
body.pick #map{cursor:crosshair}
.pickbar .btn.sm{min-height:44px;padding:9px 12px;font-size:12px}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:calc(92px + env(safe-area-inset-bottom));z-index:3000;
  transform:translateX(-50%) translateY(10px);opacity:0;pointer-events:none;
  background:var(--ink);color:var(--ground);padding:12px 16px;border-radius:var(--r);
  font-family:var(--mono);font-size:13px;font-weight:700;letter-spacing:.04em;
  max-width:calc(100vw - 32px);text-align:center;
  transition:opacity .18s ease,transform .18s ease;
}
.toast.on{opacity:1;transform:translateX(-50%)}
@media (min-width:901px){.toast{bottom:24px}}

/* ---------- panel: bottom sheet with a drag handle (mobile) ---------- */
.grab{display:none}
.p-in{min-width:0}
@media (max-width:900px){
  .panel{
    left:0;right:0;top:auto;bottom:0;width:auto;max-width:none;
    height:90vh;height:90dvh;max-height:90dvh;
    border-radius:12px 12px 0 0;border-bottom:0;padding:0;overflow:hidden;
    display:flex;flex-direction:column;z-index:1700;
    transform:translateY(100%);
    transition:transform .26s cubic-bezier(.2,.8,.2,1),opacity .18s ease;
  }
  .panel.open{transform:translateY(50vh);transform:translateY(50dvh)}
  .panel.dragging{transition:none}
  .grab{
    display:flex;align-items:center;justify-content:center;flex:0 0 auto;
    height:34px;cursor:grab;touch-action:none;background:transparent;border:0;width:100%;
  }
  .grab i{display:block;width:44px;height:5px;border-radius:3px;background:var(--line)}
  .grab:active{cursor:grabbing}
  .p-in{
    flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;padding:2px 16px calc(24px + env(safe-area-inset-bottom));
  }
  .panel .close{min-height:44px;min-width:44px}
  .panel h2{padding-right:52px}
  .btn.sm{min-height:44px;padding:9px 12px;font-size:12px}
  .p-ask{min-height:44px}
  .s-x{min-width:44px;min-height:44px}
  .sugg button{min-height:52px}
  .modal .sheet{max-height:88dvh}
}

/* ---------- „Kaip naudotis" onboarding ---------- */
.how .sheet{width:min(460px,100%)}
.how-emo{font-size:40px;line-height:1;margin:12px 0 2px}
.how-dots{display:flex;gap:7px;margin-top:18px}
.how-dots i{display:block;width:9px;height:9px;border-radius:50%;background:var(--line)}
.how-dots i.on{background:var(--accent-solid)}
#howTitle{margin-top:6px}

/* ---------- „Apie" ---------- */
.ab-grid{margin-top:16px;display:flex;flex-direction:column;gap:15px}
.ab-b{border-left:2px solid var(--line);padding-left:12px}
.ab-b h3{
  font-family:var(--mono);font-size:11px;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);margin-bottom:4px;
}
.ab-b p{font-size:15.5px;color:var(--ink);line-height:1.5}
.ab-b.quote{border-left-color:var(--accent-solid)}
.ab-b.quote p{font-size:17px;font-weight:600;line-height:1.4}
.ab-b ul{margin:5px 0 0 18px;padding:0}
.ab-b li{font-size:15px;color:var(--ink);line-height:1.5;margin:2px 0}
.ab-b a{color:var(--ink)}

/* ---------- auth ---------- */
.tbtn.tauth[data-in="1"]{background:var(--ink);color:var(--ground);border-color:var(--ink)}
.au-who{font-size:16px;margin-top:12px;color:var(--ink)}
.au-who b{font-family:var(--mono);font-weight:800}
#auWhy,#auPriv,#plNote{margin-top:12px;font-size:13.5px;color:var(--muted);line-height:1.45}
#auPriv a,#plNote a{color:var(--muted)}
.modal select{
  width:100%;background:var(--surface);color:var(--ink);border:1px solid var(--line);
  border-radius:var(--r);padding:10px 12px;font-size:16px;min-height:44px;
}
.pl-2{display:flex;gap:8px}
.pl-2 label{flex:1 1 0;min-width:0}
.pl-where{
  margin-top:12px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);
  border-left:3px solid var(--ink);border-radius:var(--r);font-family:var(--mono);font-size:13px;
}

/* ---------- user layer inside the provider panel ---------- */
.ublock{
  margin-top:14px;padding:12px 14px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r);
}
.ublock .p-lab{display:block;margin-bottom:6px}
.ustats{font-size:15.5px;color:var(--ink);font-weight:600;line-height:1.45}
.ustats.none{font-weight:400;color:var(--muted);font-size:14.5px}
.ureviews{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.ureviews li{border-top:1px dashed var(--line);padding:10px 0 2px;font-size:15px;line-height:1.5;color:var(--ink)}
.ureviews li.pend{opacity:.8}
.ureviews .um{
  display:block;font-family:var(--mono);font-size:12.5px;color:var(--muted);margin-top:5px;
}
.ureviews img{
  display:block;margin-top:9px;width:100%;max-width:280px;height:auto;
  border:1px solid var(--line);border-radius:var(--r);
}
.urow{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.uform{margin-top:10px}
.uform label{display:block;margin-top:10px;font-size:14px;color:var(--muted)}
.uform label span{display:block;margin-bottom:4px}
.uform input,.uform textarea,.uform select{
  width:100%;background:var(--ground);color:var(--ink);border:1px solid var(--line);
  border-radius:var(--r);padding:10px 12px;font-size:16px;min-height:44px;
}
.uform textarea{min-height:92px;resize:vertical;font-family:inherit}
.uform input[type="file"]{padding:9px 10px;font-size:14px}
.rv-2{display:flex;gap:8px}
.rv-2 label{flex:1 1 0;min-width:0}
.uform .m-actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.u-msg{margin-top:10px;font-size:14px;color:var(--ink)}
.u-msg.err{color:var(--accent);font-weight:600}
.u-cnt{font-family:var(--mono);font-size:12px;color:var(--muted);text-align:right;margin-top:4px}
.u-off{font-size:13.5px;color:var(--muted);margin-top:6px;line-height:1.45}

/* saved heart */
.lv-row{position:relative}
.lv-item .t{padding-right:52px}
.fav{
  position:absolute;right:8px;bottom:9px;width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:var(--ground);border:1px solid var(--line);border-radius:var(--r);
  color:var(--muted);font-size:17px;line-height:1;
}
.fav[aria-pressed="true"]{color:var(--accent);border-color:var(--accent)}
.fav:hover{border-color:var(--ink)}

/* parent-added places */
.badge.user{color:var(--ink);border-color:var(--ink);text-transform:none;letter-spacing:.02em}
.badge.pend{color:var(--muted);border-color:var(--muted);border-style:dashed}
.lg-usr{
  width:11px;height:11px;flex:0 0 auto;display:inline-block;
  background:var(--muted);border-radius:2px;transform:rotate(45deg);
}

/* ---------- skeleton: perceived speed while 800 kB of data lands ---------- */
.skel{padding:15px 16px;border-bottom:1px solid var(--line)}
.skel i{
  display:block;height:13px;border-radius:3px;margin-bottom:9px;
  background:linear-gradient(90deg,var(--surface) 0%,var(--line) 50%,var(--surface) 100%);
  background-size:220% 100%;animation:bzshim 1.15s linear infinite;
}
.skel i.w1{width:62%}
.skel i.w2{width:88%;height:11px}
.skel i.w3{width:40%;height:11px;margin-bottom:0}
@keyframes bzshim{from{background-position:110% 0}to{background-position:-110% 0}}
body.loading .hero .promise{opacity:.4}

/* ---------- touch: no hover-only affordances, no sticky hover ---------- */
@media (hover:none){
  .chip:not([aria-pressed="true"]):hover{background:var(--chip-bg)}
  .rchip:not([aria-pressed="true"]):hover,.tbtn:not([aria-pressed="true"]):hover,
  .mb:not(.on):hover,.btn:not(.primary):hover,.fav:hover,.hbtn:hover,.foot-btn:hover{background:var(--ground)}
  .lv-item:hover,.sugg button:hover,.bridge:hover,.leaflet-bar a:hover{background:transparent}
  .hbtn:hover,.foot-btn:hover{color:var(--muted);border-color:var(--line)}
}
button,a,.chip,.rchip{-webkit-tap-highlight-color:rgba(217,4,41,.12)}


/* ---------- ≤900px: the 44px floor applies to every UI control ---------- */
@media (max-width:900px){
  .alink{min-height:44px;display:inline-flex;align-items:center}
  .actionlinks{gap:10px 16px}
  .p-time .lnk{min-height:44px;display:inline-flex;align-items:center}
  .modal input,.modal textarea,.modal select,.uform input,.uform textarea,.uform select{min-height:44px}
  .modal .s-x{width:44px;height:44px}
  .tgroup summary{min-height:48px}
  .seg button,.tbtn{min-height:48px}
  .lv-head select{min-height:44px}
}

/* the bottom bar sits on top of Leaflet's attribution — lift it clear */
@media (max-width:900px){
  .leaflet-bottom.leaflet-right .leaflet-control-attribution{
    margin-bottom:calc(64px + env(safe-area-inset-bottom));
  }
  /* the toolbar shrinks to search + „?" + „👤"; the rest lives in the rail */
  .toolbar .tbtn{flex:0 0 auto;padding:11px 13px}
}
/* narrow desktops: the top-right toolbar and the left stack must not collide.
   „?" and „↗" already live in the hero, so they are the first to go. */
@media (min-width:901px) and (max-width:1180px){
  .toolbar #btnShare,.toolbar #btnHelp{display:none}
  .search input{width:206px}
  .toolbar{gap:6px}
  .tbtn{padding:11px 10px}
  .stack{width:318px}
  .panel,.listview{width:340px}
}

/* ==========================================================================
   V2.2 · „Neuronas" — guided finder (guide.js)
   Right-hand conversation panel on desktop, bottom sheet on mobile.
   Tokens only — never a raw colour, so both themes come along for free.
   ========================================================================== */
.guide{
  position:fixed;z-index:1200;right:16px;top:16px;bottom:16px;width:min(420px,calc(100vw - 32px));
  display:none;flex-direction:column;background:var(--ground);color:var(--ink);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  font-family:var(--body);overflow:hidden;
}
.guide.open{display:flex;animation:gIn .22s ease-out}
@keyframes gIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.guide.open{animation:none}}

.g-head{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--surface);flex:0 0 auto}
.g-ava{color:var(--accent);display:flex;flex:0 0 auto}
.g-ava .g-core{animation:gPulse 2.4s ease-in-out infinite}
@keyframes gPulse{0%,100%{opacity:1}50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){.g-ava .g-core{animation:none}}
.g-who{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.g-who b{font-family:var(--mono);font-size:14px;letter-spacing:.02em}
.g-who i{font-style:normal;font-size:11px;color:var(--muted)}
.g-step{margin-left:auto;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.g-x{width:32px;height:32px;flex:0 0 auto;border:1px solid var(--line);background:var(--ground);color:var(--ink);
  border-radius:var(--r);cursor:pointer;font-size:14px;line-height:1}
.g-x:hover{background:var(--surface)}

.g-log{flex:1 1 auto;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px}
.g-msg{max-width:92%;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:10px 12px;font-size:15px;line-height:1.45}
.g-msg b{font-weight:600}
.g-msg.me{align-self:flex-end;background:var(--accent-solid);border-color:var(--accent-solid);color:#fff;
  display:flex;align-items:baseline;gap:8px;font-size:14px}
.g-msg.me .g-edit{background:none;border:0;color:#fff;opacity:.85;text-decoration:underline;cursor:pointer;
  font-size:12px;font-family:var(--body);padding:0;min-height:auto}
.g-msg.me .g-edit:hover{opacity:1}
.g-msg.think{background:none;border:0;padding:0;max-width:100%}
.g-lead{font-style:normal;font-size:12px;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.g-wait{font-style:normal;color:var(--muted)}

.g-tline{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:14px;color:var(--muted);
  font-family:var(--mono);animation:gLine .3s ease-out}
@keyframes gLine{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.g-tline{animation:none}}
.g-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:0 0 auto;animation:gPulse 1s ease-in-out infinite}
.g-tline.done .g-dot{animation:none;background:var(--muted)}
.g-tline.done::after{content:'✓';color:var(--muted);font-size:12px}

.g-cards{display:flex;flex-direction:column;gap:8px}
.g-card{display:flex;flex-direction:column;gap:3px;text-align:left;width:100%;
  background:var(--ground);border:1px solid var(--line);border-radius:var(--r);padding:12px;cursor:pointer;
  font-family:var(--body);color:var(--ink);min-height:44px}
.g-card:hover{border-color:var(--accent);background:var(--surface)}
.g-card b{font-size:15px;line-height:1.25}
.g-c-meta{font-size:13px;color:var(--muted)}
.g-c-badges{display:flex;gap:6px;flex-wrap:wrap}
.g-c-badges i{font-style:normal;font-size:11px;font-family:var(--mono);letter-spacing:.04em;
  border:1px solid var(--accent);color:var(--accent);border-radius:var(--r);padding:1px 6px}

.g-tips{border-top:1px dashed var(--line);padding-top:10px;margin-top:4px;font-size:13px;color:var(--muted)}
.g-tips b{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}
.g-tips ul{margin:0;padding-left:16px}
.g-tips li{margin:2px 0}

.g-form{flex:0 0 auto;border-top:1px solid var(--line);padding:12px 14px;background:var(--surface);
  max-height:52vh;overflow-y:auto}
.g-row{display:flex;gap:8px;flex-wrap:wrap}
.g-row.col{flex-direction:column}
.g-row.wrap{flex-wrap:wrap}
.g-row.nav{margin-top:10px;justify-content:space-between}
.g-btn{min-height:44px;padding:10px 14px;border:1px solid var(--line);background:var(--ground);color:var(--ink);
  border-radius:var(--r);cursor:pointer;font-family:var(--body);font-size:15px;font-weight:500;
  display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.25}
.g-btn:hover{border-color:var(--accent);background:var(--surface)}
.g-btn i{font-style:normal;font-size:12px;color:var(--muted);font-weight:400}
.g-btn.primary{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff}
.g-btn.primary:hover{opacity:.92;background:var(--accent-solid)}
.g-btn.big{width:100%;align-items:center;text-align:center}
.g-btn.pill{flex:0 1 auto;align-items:center;padding:10px 13px;font-size:14px}
.g-btn.pill.on,.g-btn.pill[aria-pressed="true"]{background:var(--accent-solid);border-color:var(--accent-solid);color:#fff}
.g-btn.ghost{background:transparent;border-color:var(--line);color:var(--muted)}
.g-btn.ghost:hover{color:var(--ink)}
.g-btn.sm{min-height:38px;padding:8px 12px;font-size:13px;align-items:center}
.g-btn.check{width:100%;align-items:flex-start;margin-top:8px;font-size:14px}
.g-btn.check.on{border-color:var(--accent);color:var(--accent)}
.g-btn.hit{width:100%;align-items:flex-start}
.g-input{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--ground);color:var(--ink);font-family:var(--body);font-size:16px}
.g-input:focus{outline:2px solid var(--accent);outline-offset:1px}
.g-hits{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.g-note{margin:8px 0 0;font-size:12px;color:var(--muted);line-height:1.4}

@media (max-width:760px){
  .guide{right:0;left:0;bottom:0;top:auto;width:100%;height:88vh;max-height:88vh;
    border-radius:12px 12px 0 0;border-left:0;border-right:0;border-bottom:0}
  .guide.open{animation:gUp .24s ease-out}
  @keyframes gUp{from{transform:translateY(100%)}to{transform:none}}
  .g-form{max-height:44vh}
  body.guide-on .mbar{display:none}
  body.guide-on .fab{display:none}
}

/* V2.2 · the origin node: a school (or you) in the middle, lines to the clubs around it */
.bz-hub{
  font-family:var(--mono);font-size:11px;letter-spacing:.03em;
  background:var(--ground);color:var(--ink);border:1px solid var(--accent);
  border-radius:var(--r);box-shadow:var(--shadow-sm);padding:4px 8px;white-space:nowrap
}
.bz-hub::before{border-top-color:var(--accent)}
.leaflet-pane path.bz-link{pointer-events:none}

/* ==========================================================================
   Auditas 2026-08-30 · nykščio dydis. WCAG 2.2 AA reikalauja 24 px (praeidavo),
   bet Apple HIG / WCAG AAA nori 44 px — telefone dažniausiai spaudžiami valdikliai
   (čipsai, uždarymo kryžiukai, gido „Atgal") buvo 36–40 px. Tik dydis, spalvos
   ir brand'as nekeičiami.
   ========================================================================== */
@media (max-width:900px) and (pointer:coarse){
  .chip{min-height:44px;padding:10px 12px}
  .s-x{min-width:44px;min-height:44px}
  .panel .close{min-height:44px;min-width:44px}
  .p-ask{min-height:44px}
  .foot-btn{min-height:44px}
  .g-btn.sm{min-height:44px}
  .lv-item{min-height:44px}
  .mbar button{min-height:48px}
}

/* ==========================================================================
   Sutikimo juosta (auditas 2026-08-30). Abu mygtukai vienodo svorio — EDPB
   draudžia „Sutinku" daryti ryškesnį už „Tik būtini".
   ========================================================================== */
.consent{
  position:fixed;left:16px;bottom:16px;z-index:2000;max-width:420px;
  background:var(--ground);color:var(--ink);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow);padding:16px;font-family:var(--body)
}
.consent[hidden]{display:none}
.consent .c-t{margin:0 0 6px;font-family:var(--mono);font-size:14px;font-weight:700;letter-spacing:.02em}
.consent .c-b{margin:0 0 12px;font-size:14px;line-height:1.45;color:var(--muted)}
.consent .c-b a{color:var(--accent)}
.consent .c-a{display:flex;gap:8px}
.consent .c-a .btn{flex:1 1 0;justify-content:center;min-height:44px;font-weight:600}
@media (max-width:760px){
  .consent{left:0;right:0;bottom:0;max-width:none;border-radius:12px 12px 0 0;border-left:0;border-right:0;border-bottom:0}
}

/* interesų konflikto ženklas — matomas, bet ne rėkiantis (auditas 2026-08-30) */
.badge.disc{border-color:var(--ink);color:var(--ink);background:var(--surface);font-weight:700}


/* ⚗️ atsakomybės eilutė „Apie" lange (privaloma — wiki/meta/tool-disclaimer.md) */
.ab-b.warn{border:1px solid var(--red);background:transparent}
.ab-b.warn h3{color:var(--red)}
.ab-b.warn p{color:var(--ink)}
