:root{
  --bg:#f4f6f9; --panel:#fff; --ink:#18202b; --sub:#5b6676; --line:#dde2ea;
  --accent:#1f5fd1; --accent-soft:#e3ecfb; --hot:#d9772b;
  --kuma:#d9772b; --okayama:#1f5fd1; --niimi:#2f9a6a; --other:#8a94a6;
  --font:"BIZ UDPGothic","Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.6;display:grid;grid-template-columns:400px minmax(0,1fr);height:100vh;height:100dvh;overflow:hidden}
#side{overflow-y:auto;padding:14px 16px 30px;display:flex;flex-direction:column;gap:12px;border-right:1px solid var(--line)}
#mapcol{position:relative;min-height:0}
#map{position:absolute;inset:0;background:#e9edf2}
@media (max-width:860px){
  body{display:flex;flex-direction:column;height:auto;overflow:visible}
  #mapcol{order:-1;flex:none;position:sticky;top:0;height:52vh;height:52dvh;z-index:5;border-bottom:1px solid var(--line)}
  #side{overflow:visible;border-right:none;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
}
h1{font-size:17px;margin:0}
.sub{color:var(--sub);font-size:12.5px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px}
.panel ol{margin:6px 0;padding-left:1.3em;font-size:13px}
.head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
button,.filebtn{font-family:inherit;font-size:13.5px;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:8px;padding:6px 11px;cursor:pointer;display:inline-block}
button:hover,.filebtn:hover{border-color:var(--accent)}
button:disabled{opacity:.4;cursor:default}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700;padding:9px 16px;font-size:15px}
button:focus-visible,a:focus-visible,.filebtn:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.filebtn input{position:absolute;width:1px;height:1px;opacity:0}
.filebtn{position:relative}
.authrow{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.monthbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.monthbar b{font-size:15px}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.dow{text-align:center;font-size:11px;color:var(--sub)}
.dow.sun{color:#c94a4a}.dow.sat{color:var(--accent)}
.day{aspect-ratio:1/1;border:1px solid transparent;border-radius:7px;background:none;padding:3px 1px 2px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;font-size:13px;font-variant-numeric:tabular-nums}
.day.has{background:var(--bg)}
.day.none{color:var(--sub);opacity:.4}
.day.sel{border-color:var(--accent);background:var(--accent-soft);font-weight:700}
.day .bar{height:5px;width:72%;border-radius:3px;display:flex;overflow:hidden}
.day .bar i{display:block;height:100%}
.day .tr{font-size:9px;color:var(--sub);line-height:1;white-space:nowrap}
.legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:11.5px;color:var(--sub)}
.legend span::before{content:"";display:inline-block;width:10px;height:5px;border-radius:2px;margin-right:4px;vertical-align:middle;background:var(--c)}
.dayhead{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.dayhead h2{font-size:16px;margin:0}
.stop{display:grid;grid-template-columns:28px minmax(0,1fr);gap:9px;padding:8px 6px;border-radius:8px;cursor:pointer}
.stop:hover{background:var(--bg)}
.stop.sel{background:var(--accent-soft)}
.num{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}
.num.home{background:var(--sub)}
.time{font-size:12.5px;color:var(--sub);font-variant-numeric:tabular-nums}
.pname{font-weight:700;overflow-wrap:anywhere}
.pname.unnamed{font-weight:400;color:var(--sub)}
.row2{display:flex;gap:10px;flex-wrap:wrap;font-size:12px}
.row2 a,.linkbtn{color:var(--accent);font-size:12px}
.linkbtn{border:none;background:none;padding:0;text-decoration:underline;cursor:pointer}
.move{margin-left:16px;border-left:2px dashed var(--line);padding:2px 0 2px 20px;font-size:12px;color:var(--sub);font-variant-numeric:tabular-nums}
.namebox{display:flex;gap:6px;margin-top:6px}
.namebox input{flex:1;min-width:0;font-family:inherit;font-size:16px;padding:5px 8px;border:1px solid var(--line);border-radius:6px}
.maptools{position:absolute;top:10px;right:10px;z-index:500;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.maptools button{box-shadow:0 1px 3px rgba(0,0,0,.2)}
.maptools button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.pin{width:26px;height:26px;border-radius:50%;background:var(--accent);color:#fff;font:700 12px/22px var(--font);text-align:center;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.pin.home{background:var(--sub)}
.pin.sel{background:var(--hot);transform:scale(1.2)}
.leaflet-popup-content{font-family:var(--font);font-size:13px;line-height:1.5}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--ink);color:#fff;padding:8px 14px;border-radius:8px;font-size:13px;z-index:1000;max-width:90vw}
