*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font-family:system-ui,-apple-system,"Hiragino Sans","Yu Gothic",sans-serif;font-size:15px;color:#222;display:flex;flex-direction:column;height:100dvh;background:#f4f5f7}
button,input,select,textarea{font:inherit}
button{padding:8px 12px;border:1px solid #bbb;border-radius:8px;background:#fff;cursor:pointer;min-height:40px}
button.primary{background:#1a73e8;color:#fff;border-color:#1a73e8}
button.danger{color:#c62828;border-color:#c62828}
button.on,button.active{background:#1a73e8;color:#fff;border-color:#1a73e8}
input,select,textarea{padding:8px;border:1px solid #bbb;border-radius:8px;width:100%;background:#fff;min-height:40px}
.row{display:flex;gap:6px;align-items:center}
.row.end{justify-content:flex-end;margin-top:10px}
.row.wrap{flex-wrap:wrap}
#top{background:#fff;padding:8px calc(8px + env(safe-area-inset-right)) 8px calc(8px + env(safe-area-inset-left));border-bottom:1px solid #ddd;position:relative;z-index:1000;display:flex;flex-direction:column;gap:6px}
#top .row button{white-space:nowrap}
#searchResults{position:absolute;left:8px;right:8px;top:100%;margin:0;padding:0;list-style:none;background:#fff;border:1px solid #bbb;border-radius:8px;box-shadow:0 4px 12px #0003;max-height:50vh;overflow:auto}
#searchResults li{padding:10px 12px;border-bottom:1px solid #eee;cursor:pointer}
#searchResults li:hover{background:#eef4ff}
main{flex:1;min-height:0;display:flex;flex-direction:column}
#map{height:42%;min-height:200px;z-index:0}
#panel{flex:1;min-height:0;overflow:auto;background:#fff;display:flex;flex-direction:column}
.tabs{display:flex;position:sticky;top:0;background:#fff;z-index:5;border-bottom:1px solid #ddd}
.tabs button{flex:1;border:0;border-radius:0;border-bottom:3px solid transparent;background:#fff;color:#333}
.tabs button.on{border-bottom-color:#1a73e8;color:#1a73e8;background:#fff}
.tab{padding:10px;flex:1}
.credit{font-size:11px;color:#666;padding:10px;border-top:1px solid #eee}
@media(min-width:820px){
  main{flex-direction:row}
  #map{height:auto;flex:1}
  #panel{flex:none;width:400px;border-left:1px solid #ddd}
}
.item{display:flex;gap:8px;align-items:flex-start;padding:8px;border:1px solid #e3e3e3;border-radius:10px;margin-bottom:8px;background:#fff}
.item .body{flex:1;min-width:0}
.item .nm{font-weight:600;word-break:break-all}
.item .sub{font-size:12px;color:#666;word-break:break-all}
.item .memo{font-size:12px;color:#444;white-space:pre-wrap;margin-top:2px}
.dot{width:14px;height:14px;border-radius:50%;flex:none;margin-top:4px;border:2px solid #fff;box-shadow:0 0 0 1px #888}
.num{width:24px;height:24px;border-radius:50%;background:#1a73e8;color:#fff;font-size:13px;display:flex;align-items:center;justify-content:center;flex:none}
.item .acts{display:flex;flex-direction:column;gap:4px}
.item .acts button{padding:2px 8px;min-height:32px}
.leg{margin:-2px 0 8px 18px;padding-left:12px;border-left:3px dashed #1a73e8;font-size:13px;color:#1a73e8;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.leg a{color:#1a73e8}
.sum{background:#eef4ff;border-radius:10px;padding:10px;margin:8px 0;font-weight:600}
.item.dragover{outline:2px solid #1a73e8}
.hint{font-size:12px;color:#666;margin:6px 0}
h4{margin:14px 0 6px}
dialog{border:0;border-radius:14px;padding:16px;width:min(92vw,420px);box-shadow:0 8px 30px #0005}
dialog::backdrop{background:#0006}
dialog h3{margin:0 0 8px}
dialog label{display:block;margin-top:8px;font-size:13px;color:#555}
.pinmk{width:26px;height:26px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 1px 4px #0006}
.pinmk span{display:block;transform:rotate(45deg);color:#fff;font-size:12px;font-weight:700;text-align:center;line-height:22px}
.me{width:16px;height:16px;border-radius:50%;background:#1a73e8;border:3px solid #fff;box-shadow:0 0 0 2px #1a73e8aa}
body.tapadd #map{cursor:crosshair}
#printArea,.print-only{display:none}
@media print{
  .print-only{display:block!important;font-size:22px;margin:0 0 5mm}
  .pnote{font-size:10px;color:#555;margin-top:6mm}
  @page{margin:12mm}
  body{display:block;height:auto;background:#fff}
  #top,#panel,dialog,.leaflet-control-container{display:none!important}
  main{display:block}
  #map{height:95mm!important;width:100%!important;border:1px solid #888;margin-bottom:6mm;flex:none}
  #printArea{display:block}
  .pl{font-size:12px}
  .pl .r{display:flex;gap:8px;padding:3px 0;border-bottom:1px solid #ccc;break-inside:avoid}
  .pl .n{width:22px;font-weight:700}
  .pl .leg2{padding-left:30px;color:#444;font-size:11px}
  .pl .t{font-weight:700;margin-top:6px}
}

#pvList{max-height:45vh;overflow:auto;border:1px solid #ddd;border-radius:8px;padding:8px;margin-top:4px;background:#fafafa}
.pvtitle{font-size:18px;font-weight:700;margin-bottom:6px}
#pvList .pl{font-size:13px}
#pvList .r{display:flex;gap:8px;padding:4px 0;border-bottom:1px solid #ddd}
#pvList .n{width:22px;font-weight:700}
#pvList .leg2{padding-left:30px;color:#1a73e8;font-size:12px}
#pvList .t{font-weight:700;margin-top:6px}
dialog#printDialog{width:min(92vw,520px)}
@media (pointer:coarse),(max-width:819px){#btnPrint,#btnPrint2{display:none!important}}
