:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#183047;background:#edf2f4}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0}
button,input,select,textarea{font:inherit}
button{border:0;border-radius:7px;background:#096c92;color:#fff;font-weight:650;padding:7px 10px;min-height:36px;cursor:pointer}
button:hover{filter:brightness(.94)}
button:disabled{opacity:.48;cursor:not-allowed}
button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid #d66a1e;outline-offset:2px}
.secondary{background:#e3ebef;color:#17324d}
.danger{background:#a63835}
input:not([type=checkbox]),select,textarea{border:1px solid #b4c2ca;border-radius:6px;background:#fff;padding:6px 8px;min-height:36px}
input:not([type=checkbox]),textarea{width:100%}
input[type=checkbox]{width:19px;height:19px;margin:2px 0;accent-color:#d66a1e;flex:none}
label{font-size:.78rem;font-weight:600}
label input{margin-top:3px}
.inline{display:flex;align-items:center;gap:6px;font-size:.86rem;font-weight:500}
.inline input{margin:0}
#message:not(:empty){position:fixed;left:50%;bottom:12px;transform:translateX(-50%);z-index:100;background:#17324d;color:#fff;padding:9px 14px;border-radius:8px;box-shadow:0 5px 25px #0004;max-width:min(95vw,600px);font-size:.88rem;text-align:center}
#message.error:not(:empty){background:#a63835}
.toast-undo{background:#fff;color:#17324d;min-height:27px;margin-left:10px;padding:2px 8px;font-size:.8rem}
main{max-width:1800px;margin:auto;padding:8px;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);gap:8px;align-items:start}
.work-column{display:flex;flex-direction:column;gap:8px;min-width:0}
.panel{background:#fff;border:1px solid #d7e1e7;border-radius:10px;padding:10px;box-shadow:0 2px 9px #13314b0a;min-width:0}
.candidate-panel{position:sticky;top:8px;height:calc(100vh - 16px);display:flex;flex-direction:column;min-height:440px}
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:5px}
.map-toolbar{margin-bottom:6px}
#map{height:min(44vh,450px);min-height:290px;background:#dce8ed;border-radius:7px}
#map-unavailable{padding:20px;background:#f6f1dc}
.map-meta{display:flex;gap:12px;align-items:center;justify-content:space-between;min-height:22px;font-size:.75rem;color:#607483;margin-top:4px}
.badge{font-size:.72rem;background:#b3672d;color:#fff;border-radius:20px;padding:4px 8px;margin-left:auto}
.route-head,.list-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px}
.route-head strong,.list-top strong{font-size:1rem}
#selected-count{font-size:.8rem;color:#607483}
.form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.route-toolbar{margin-top:7px}
.route-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:7px}
.route-footer .muted{font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.route-footer button{white-space:nowrap}
.muted{color:#607483}
.options{position:relative;font-size:.8rem}
.options>summary{list-style:none;cursor:pointer;color:#096c92;font-weight:650;padding:5px 6px}
.options>summary::-webkit-details-marker{display:none}
.options[open]{position:absolute;right:10px;top:5px;width:230px;background:#f4f8fa;border:1px solid #d7e1e7;border-radius:6px;padding:4px 6px;box-shadow:0 7px 25px #0002;z-index:5}
.options[open]>summary{margin-bottom:5px}
.options .inline{margin:7px 0}
.options select{min-width:120px}
.place-list{overflow:auto;min-height:0;overscroll-behavior:contain}
.place{border-top:1px solid #dce5e9;padding:6px 2px;scroll-margin:8px;cursor:pointer}
.place:first-child{border-top:0}
.place.selected{background:#fff3e7;border-left:3px solid #d66a1e;padding-left:5px}
.place.focused{box-shadow:inset 0 0 0 1px #d66a1e}
.place-main{display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;gap:6px}
.place-info{min-width:0;display:flex;flex-direction:column;gap:1px}
.place-info strong,.place-name{font-size:.88rem;line-height:1.2}
.place-info>span{font-size:.76rem;line-height:1.2;color:#566c79}
.place-info .hours-line{color:#23495c;font-weight:600;margin-top:2px}
.place-info .place-note{font-style:italic}
.maps-link{color:#096c92;text-decoration:none;font-size:.76rem;font-weight:650;white-space:nowrap;padding:2px 3px}
.place-bottom{display:flex;justify-content:flex-end;align-items:center;gap:6px;min-height:25px;margin-left:26px}
.status{font-size:.7rem;color:#687987;margin-right:auto}
.status.visited{color:#18815b;font-weight:700}
.status.warning{color:#a05b17}
.text-button{background:none;color:#096c92;padding:2px 4px;min-height:27px;font-size:.76rem}
.place-more{font-size:.76rem;color:#096c92}
.place-more>summary{cursor:pointer;padding:3px 5px;list-style:none;font-weight:600}
.place-more>summary::-webkit-details-marker{display:none}
.more-actions{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:6px 0}
.more-actions button{font-size:.76rem;min-height:30px}
.more-actions textarea{flex-basis:100%;min-height:68px;font-size:.8rem}
.empty-list{font-size:.86rem;color:#607483;padding:12px 2px}
#plan-panel .place{cursor:default}
#plan-panel .place small{display:block;font-size:.77rem;color:#607483}
#plan-panel .place-actions{display:flex;gap:6px;margin-top:4px}
#plan-panel .place-actions a{font-size:.78rem;color:#096c92;padding:5px;text-decoration:none}
#plan-panel .place-actions button{font-size:.78rem;min-height:30px}
#plan-summary p{margin:4px 0;font-size:.82rem}
#plan-content>.toolbar{margin:6px 0}
.login-card{max-width:430px;margin:12vh auto 0;background:#fff;border-radius:12px;padding:24px;box-shadow:0 8px 35px #17324d22}
.login-card h1{margin-top:0}
.login-card button{margin-top:12px;width:100%}
.error{color:#a63835}
@media(max-width:900px){main{display:block}.work-column{margin-bottom:8px}.candidate-panel{position:static;height:auto;min-height:0}.candidate-panel .place-list{max-height:55vh}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){main{padding:0 5px}.work-column{gap:0;margin:0}.panel{width:100%;border:0;border-radius:0;box-shadow:none;padding:5px 0}.map-panel,.route-panel,.candidate-panel,#plan-panel{margin:0;border-bottom:1px solid #d7e1e7}#map{height:28vh;min-height:190px;border-radius:4px}.candidate-panel .place-list{max-height:55vh}.list-top{margin-top:2px}.place{padding:5px 0}.place-info strong{font-size:.85rem}.route-toolbar button{flex:1;font-size:.78rem;padding:5px}.route-footer button{font-size:.82rem}.login-card{margin:7vh 5px 0;padding:16px}}
