:root{
  --accent:#ec5262; --accent2:#ff8a65;
  --bg:#f6f4f1; --card:rgba(255,255,255,.96); --solid:#fff; --text:#1d1d1f; --muted:#6e6e73;
  --line:rgba(0,0,0,.09); --field:#f1f0ee; --shadow:0 6px 24px rgba(0,0,0,.16), 0 1px 3px rgba(0,0,0,.08);
  --blue:#0a84ff;
  --st:env(safe-area-inset-top,0px); --sb:env(safe-area-inset-bottom,0px);
  --sl:env(safe-area-inset-left,0px); --sr:env(safe-area-inset-right,0px);
  color-scheme:light dark;
}
@media (prefers-color-scheme:dark){
  :root{--bg:#111214;--card:rgba(30,31,34,.96);--solid:#1e1f22;--text:#f5f5f7;--muted:#a1a1a6;--line:rgba(255,255,255,.1);--field:#2a2b2f;--shadow:0 6px 24px rgba(0,0,0,.5);}
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);
  font:16px/1.35 -apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",Arial,sans-serif;overscroll-behavior:none}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
[hidden]{display:none!important}
.ico{width:22px;height:22px;display:block}
#map{position:fixed;inset:0;background:var(--bg);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

/* Top bar */
#topbar{position:fixed;z-index:1000;top:calc(var(--st) + 10px);left:calc(var(--sl) + 12px);right:calc(var(--sr) + 12px);display:flex;gap:10px;align-items:center}
.search{flex:1;display:flex;align-items:center;gap:8px;height:48px;padding:0 6px 0 14px;border-radius:14px;background:var(--card);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);color:var(--muted)}
.search input{flex:1;min-width:0;height:100%;border:0;outline:0;background:transparent;color:var(--text);font-size:17px;-webkit-appearance:none}
.search input::-webkit-search-cancel-button{display:none}
.iconbtn{display:grid;place-items:center;color:var(--text)}
.iconbtn.round{width:48px;height:48px;border-radius:50%;background:var(--card);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
.iconbtn.small{width:36px;height:36px;border-radius:50%;background:var(--field);font-size:14px;color:var(--muted)}
#btnMenu{flex:none}
#btnLocate{color:var(--blue)}
#btnLocate.active svg{filter:drop-shadow(0 0 4px rgba(10,132,255,.5))}

#results{position:fixed;z-index:999;top:calc(var(--st) + 66px);left:calc(var(--sl) + 12px);right:calc(var(--sr) + 12px);max-height:45vh;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:14px;background:var(--card);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
#results .empty{padding:16px;color:var(--muted);text-align:center}

#fabs{position:fixed;z-index:1000;right:calc(var(--sr) + 12px);bottom:calc(var(--sb) + 100px);display:flex;flex-direction:column;gap:10px}
.savebtn{position:fixed;z-index:1000;left:50%;transform:translateX(-50%);bottom:calc(var(--sb) + 22px);height:62px;padding:0 28px 0 22px;border-radius:31px;display:flex;align-items:center;gap:10px;color:#fff;font-size:19px;font-weight:650;letter-spacing:.2px;white-space:nowrap;
  background:linear-gradient(135deg,var(--accent2),var(--accent));box-shadow:0 8px 24px rgba(236,82,98,.45),0 2px 6px rgba(0,0,0,.15)}
.savebtn .ico{width:28px;height:28px}
.savebtn:active{transform:translateX(-50%) scale(.96)}
.savebtn.busy{opacity:.8}
.hint{position:fixed;z-index:1001;left:50%;transform:translateX(-50%);top:calc(var(--st) + 70px);padding:10px 16px;border-radius:12px;background:rgba(0,0,0,.78);color:#fff;font-size:14px;text-align:center;max-width:88vw}

/* Markers */
.pin{width:34px;height:44px}
.pin svg{width:34px;height:44px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.35));overflow:visible}
.pin.draft svg{animation:bob 1.2s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-4px)}}
.me-dot{width:18px;height:18px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.12),0 1px 4px rgba(0,0,0,.3)}
.me-dot::after{content:"";position:absolute;inset:-9px;border-radius:50%;background:rgba(10,132,255,.25);animation:pulse 2s ease-out infinite;z-index:-1}
@keyframes pulse{0%{transform:scale(.5);opacity:1}100%{transform:scale(1.6);opacity:0}}

/* Popups */
.leaflet-popup-content-wrapper{border-radius:16px;background:var(--solid);color:var(--text);box-shadow:var(--shadow)}
.leaflet-popup-tip{background:var(--solid)}
.leaflet-popup-content{margin:14px 16px;min-width:220px;font-size:15px}
.leaflet-container a.leaflet-popup-close-button{width:32px;height:32px;font-size:22px;line-height:30px;color:var(--muted)}
.pop h3{margin:0 24px 2px 0;font-size:17px;font-weight:650}
.pop .date{color:var(--muted);font-size:12.5px;margin-bottom:6px}
.pop .note{margin:6px 0;white-space:pre-wrap;word-wrap:break-word}
.tags{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0}
.tag{font-size:12.5px;padding:3px 9px;border-radius:10px;background:rgba(236,82,98,.12);color:var(--accent);font-weight:600}
.thumbs{display:flex;gap:6px;overflow-x:auto;margin:8px 0;-webkit-overflow-scrolling:touch}
.thumbs img{width:68px;height:68px;object-fit:cover;border-radius:10px;flex:none;cursor:zoom-in;background:var(--field)}
.popbtns{display:flex;gap:8px;margin-top:10px}
.popbtns a,.popbtns button{flex:1;min-height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:4px;font-size:14px;font-weight:600;text-decoration:none;background:var(--field);color:var(--text)!important;padding:0 6px}
.popbtns .maps{flex:1.6;background:var(--blue);color:#fff!important}
.popbtns .del{color:#ff3b30!important}

/* Sheet */
#scrim{position:fixed;inset:0;z-index:1500;background:rgba(0,0,0,.3)}
.sheet{position:fixed;z-index:1600;left:0;right:0;bottom:0;max-height:62%;display:flex;flex-direction:column;background:var(--solid);border-radius:20px 20px 0 0;box-shadow:0 -6px 30px rgba(0,0,0,.2);padding:0 calc(var(--sr) + 16px) calc(var(--sb) + 12px) calc(var(--sl) + 16px);animation:up .22s ease-out}
@keyframes up{from{transform:translateY(40%);opacity:.4}}
.grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:8px auto 0}
.sheethead,.panelhead{display:flex;align-items:center;justify-content:space-between;min-height:52px}
.sheethead h2,.panelhead h2{margin:0;font-size:17px;font-weight:650}
.textbtn{min-height:44px;min-width:60px;padding:0 4px;color:var(--accent);font-size:17px}
.textbtn.strong{font-weight:650}
.sheethead .textbtn:first-child{text-align:left}
.sheethead .textbtn:last-child{text-align:right}
.sheetbody{overflow:auto;-webkit-overflow-scrolling:touch;padding-bottom:6px}
.loc{margin:0 0 10px;font-size:13.5px;color:var(--muted)}
.fld{display:block;margin:0 0 12px}
.fld>span{display:block;font-size:13px;font-weight:600;color:var(--muted);margin:0 0 5px 2px}
.fld em{font-weight:400;font-style:normal}
.fld input,.fld textarea{width:100%;border:0;outline:0;border-radius:12px;background:var(--field);padding:12px 14px;font-size:16px;-webkit-appearance:none}
.fld textarea{resize:none;min-height:76px}
.fld input:focus,.fld textarea:focus{box-shadow:0 0 0 2px var(--accent) inset}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 14px}
.chip{min-height:38px;padding:0 14px;border-radius:19px;background:var(--field);font-size:15px;border:1.5px solid transparent}
.chip.on{background:rgba(236,82,98,.14);border-color:var(--accent);color:var(--accent);font-weight:600}
.photos{display:flex;flex-wrap:wrap;gap:8px}
.photos .ph{position:relative;width:76px;height:76px}
.photos .ph img{width:100%;height:100%;object-fit:cover;border-radius:12px;background:var(--field)}
.photos .ph button{position:absolute;top:-6px;right:-6px;width:28px;height:28px;border-radius:50%;background:rgba(0,0,0,.72);color:#fff;font-size:13px;border:2px solid var(--solid)}
.photos .ph.loading img{opacity:.4}
.addphoto{width:76px;height:76px;border-radius:12px;border:1.5px dashed var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted);font-size:12.5px;cursor:pointer;position:relative;overflow:hidden}
.addphoto input{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}

/* Panels (list/menu) */
.panel{position:fixed;z-index:1600;left:0;right:0;bottom:0;top:calc(var(--st) + 40px);display:flex;flex-direction:column;background:var(--solid);border-radius:20px 20px 0 0;box-shadow:0 -6px 30px rgba(0,0,0,.25);padding:6px calc(var(--sr) + 16px) 0 calc(var(--sl) + 16px);animation:up .22s ease-out}
.panel.small{top:auto;max-height:80%}
.seg{display:flex;background:var(--field);border-radius:10px;padding:3px;margin:4px 0 8px}
.seg button{flex:1;min-height:36px;border-radius:8px;font-size:15px;font-weight:600;color:var(--muted)}
.seg button.on{background:var(--solid);color:var(--text);box-shadow:0 1px 4px rgba(0,0,0,.12)}
.items{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;padding-bottom:calc(var(--sb) + 12px)}
.item{display:flex;gap:12px;align-items:center;width:100%;text-align:left;padding:10px 4px;border-bottom:1px solid var(--line);min-height:64px}
.item .th{width:52px;height:52px;border-radius:10px;flex:none;object-fit:cover;background:linear-gradient(135deg,var(--accent2),var(--accent));display:grid;place-items:center;color:#fff}
.item .th svg{width:24px;height:24px}
.item .tx{flex:1;min-width:0}
.item .t1{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .t2{font-size:14px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item .t3{font-size:12.5px;color:var(--muted);margin-top:2px}
.item mark{background:rgba(255,204,0,.45);color:inherit;border-radius:3px}
.items .empty{padding:40px 20px;text-align:center;color:var(--muted)}
.menubody{overflow:auto;padding-bottom:calc(var(--sb) + 16px)}
.rowbtn{display:block;width:100%;text-align:left;padding:14px;margin:0 0 10px;border-radius:14px;background:var(--field);font-size:17px;font-weight:600;cursor:pointer}
.rowbtn small{display:block;font-size:13px;font-weight:400;color:var(--muted);margin-top:2px}
.stats,.about,.attr{color:var(--muted);font-size:14px;margin:12px 4px}
.attr{font-size:12px}

/* Lightbox */
#lightbox{position:fixed;inset:0;z-index:3000;background:rgba(0,0,0,.94);display:flex;align-items:center;justify-content:center}
#lightbox img{max-width:100%;max-height:100%;object-fit:contain}
#lightbox .iconbtn{position:absolute;background:rgba(255,255,255,.16);color:#fff;font-size:22px;box-shadow:none}
.lbclose{top:calc(var(--st) + 12px);right:calc(var(--sr) + 12px)}
.lbprev{left:calc(var(--sl) + 10px);top:50%}
.lbnext{right:calc(var(--sr) + 10px);top:50%}

#toast{position:fixed;z-index:4000;left:50%;bottom:calc(var(--sb) + 100px);transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:.25s;padding:12px 18px;border-radius:14px;background:rgba(28,28,30,.9);color:#fff;font-size:15px;max-width:88vw;text-align:center}
#toast.show{opacity:1;transform:translate(-50%,0)}

.leaflet-control-attribution{font-size:10px;background:rgba(255,255,255,.7)!important;margin-bottom:calc(var(--sb))!important}
.leaflet-control-zoom{display:none}
@media (prefers-color-scheme:dark){
  .leaflet-control-attribution{background:rgba(0,0,0,.55)!important;color:#bbb}
  .leaflet-control-attribution a{color:#ddd}
}

/* Cloud sync + map style (menu) */
.group{padding:12px 14px;margin:0 0 12px;border-radius:14px;background:var(--field)}
.group h3{margin:0 0 6px;font-size:15px}
.syncstatus{margin:0 0 10px;font-size:14px;color:var(--muted)}
.syncstatus.good{color:#1f9d55}.syncstatus.warn{color:#c77700}.syncstatus.bad{color:#d92d3a}
#syncOff{display:flex;gap:8px}
#syncOff input{flex:1;min-width:0;border:0;outline:0;border-radius:10px;background:var(--solid);color:var(--text);padding:10px 12px;font-size:16px;-webkit-appearance:none}
#syncOn{display:flex;flex-wrap:wrap;gap:8px}
.pillbtn{min-height:40px;padding:0 14px;border-radius:20px;background:var(--accent);color:#fff;font-size:15px;font-weight:600}
.pillbtn.ghost{background:var(--solid);color:var(--text)}
#mapPref{margin:0;background:var(--line)}
@media (prefers-color-scheme:dark){.syncstatus.good{color:#4cd27a}.syncstatus.warn{color:#ffb340}.syncstatus.bad{color:#ff6b6b}}
