:root{
 --navy:#0e2f53;--navy2:#173f6d;--blue:#2864df;--green:#23974e;--orange:#d68a22;
 --bg:#eef2f6;--line:#d4dce4;--text:#172238;--muted:#71808c;--warn:#fff7da;--warnline:#edc65a;
}
*{box-sizing:border-box} html,body{margin:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP",sans-serif;background:var(--bg);color:var(--text)}
body{overflow:hidden} button,input,select,textarea{font:inherit}
header{height:70px;background:linear-gradient(90deg,var(--navy),var(--navy2));color:#fff;display:flex;align-items:center;gap:8px;padding:0 14px;position:relative;z-index:20;box-shadow:0 2px 10px #0002}
.iconbtn{width:48px;height:48px;border:0;border-radius:11px;background:transparent;color:#fff;font-size:27px;cursor:pointer}
.iconbtn:hover{background:#ffffff16}.title{font-weight:900;font-size:21px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.contextPill{background:#ffffff12;border:1px solid #ffffff35;padding:8px 10px;border-radius:9px;font-size:13px;font-weight:850;white-space:nowrap}
.topAction{border:1px solid #ffffff45;background:#ffffff0f;color:#fff;border-radius:9px;padding:9px 11px;font-size:13px;font-weight:900;cursor:pointer;white-space:nowrap}
.topProgress{font-size:19px;font-weight:950;min-width:70px;text-align:right}
main{height:calc(100vh - 70px);display:grid;grid-template-columns:58% 42%}
.leftStack{min-height:0;display:grid;grid-template-rows:minmax(0,1fr) 106px;border-right:1px solid var(--line)}
.map{position:relative;overflow:hidden;background:#f3f1eb}.map svg{width:100%;height:100%;display:block}
.mapCard{position:absolute;left:18px;top:16px;background:#fff;border-radius:13px;padding:12px 15px;box-shadow:0 4px 17px #0002;font-weight:900;z-index:5}
.mapCard small{display:block;color:#657483;margin-top:3px}.compass{position:absolute;right:15px;top:15px;width:46px;height:46px;border-radius:50%;background:#fff;box-shadow:0 2px 10px #0002;display:grid;place-items:center;font-size:12px;font-weight:900;z-index:5}
.compass b{color:#d94238;font-size:18px}.zoom{position:absolute;right:15px;bottom:15px;display:flex;flex-direction:column;gap:6px;z-index:5}.zoom button{width:42px;height:42px;border:0;border-radius:9px;background:#fff;box-shadow:0 2px 8px #0002;font-size:23px}
.progressPanel{background:#fff;border-top:1px solid var(--line);display:flex;align-items:center;gap:9px;padding:5px 12px 9px;overflow:hidden}.progressLabel{font-size:13px;font-weight:900;color:#405064;min-width:36px}.progressWrap{position:relative;flex:1;height:88px;overflow:hidden}.progressTrack{position:absolute;left:12px;right:12px;top:30px;height:4px;background:#ced5dc;border-radius:99px}.progressFill{position:absolute;left:12px;top:30px;height:4px;background:linear-gradient(90deg,var(--green),var(--blue));border-radius:99px}.progressNodes{position:relative;height:100%;display:flex;justify-content:space-between}.pnode{width:12.5%;min-width:62px;text-align:center;z-index:2;color:#7b8792;cursor:pointer}.pdot{width:29px;height:29px;border-radius:50%;margin:15px auto 4px;display:grid;place-items:center;background:#9da7b0;color:#fff;font-weight:900;border:4px solid #fff;box-shadow:0 0 0 1px #cbd3da}.pnode.done .pdot{background:var(--green)}.pnode.bad .pdot{background:var(--orange)}.pnode.current{color:var(--blue);font-weight:900}.pnode.current .pdot{width:44px;height:44px;margin-top:8px;background:var(--blue);font-size:18px;box-shadow:0 0 0 6px #dce8ff}.pname{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pnode.current .pname{font-size:16px;color:var(--blue);font-weight:950}.pnode.fade{opacity:.52}.pnode.ellipsis .pdot{background:transparent;border:0;box-shadow:none;color:#8a949d;font-size:23px}
.details{background:#fff;padding:20px 24px;overflow:auto}.placeRow{display:flex;align-items:center;gap:9px}.placeRow h1{font-size:29px;margin:0}.badge{background:#e4edff;color:#1f5ac4;padding:5px 8px;border-radius:7px;font-size:12px;font-weight:900}.label{color:#6f7d89;font-size:13px;margin-top:9px}.address{font-size:18px;font-weight:850;margin-top:3px}.section{border-top:1px solid var(--line);margin-top:15px;padding-top:13px}.sectionTitle{font-size:18px;font-weight:900;margin-bottom:8px}.warning{background:var(--warn);border:1px solid var(--warnline);border-radius:11px;padding:11px 13px;line-height:1.6;font-size:15px}.photo{position:relative;height:162px;border-radius:13px;overflow:hidden;border:1px solid #cbd4dc;background:linear-gradient(180deg,#8fb1c8 0 38%,#728351 38% 48%,#7f7f7f 48% 100%)}.photo:before{content:"";position:absolute;left:36%;bottom:0;width:28%;height:62%;background:linear-gradient(90deg,#707981 0 10%,#e9edf0 10% 90%,#707981 90%);clip-path:polygon(32% 0,68% 0,88% 100%,12% 100%)}.photo:after{content:"停車位置の参考写真";position:absolute;left:10px;bottom:9px;background:#0009;color:#fff;border-radius:7px;padding:5px 8px;font-size:12px;font-weight:850}.nextInfo{display:flex;justify-content:space-between;gap:10px;font-weight:850}.actions{display:grid;grid-template-columns:1fr 1.1fr 1.1fr;gap:10px;margin-top:16px}.btn{border-radius:11px;padding:14px 10px;font-size:16px;font-weight:900;cursor:pointer;border:2px solid var(--navy);background:#fff;color:var(--navy)}.btn:disabled{opacity:.4}.badBtn{border-color:#ce8622;color:#9b6213;background:#fffaf1}.doneBtn{background:linear-gradient(#3eb866,var(--green));border-color:var(--green);color:#fff}
.drawerShade{position:fixed;inset:70px 0 0;background:#0005;z-index:30;display:none}.drawer{position:fixed;left:-410px;top:70px;bottom:0;width:400px;background:#fff;z-index:31;box-shadow:7px 0 24px #0003;transition:left .22s;display:flex;flex-direction:column}.drawer.open{left:0}.drawerShade.open{display:block}.drawerHead{padding:17px;border-bottom:1px solid var(--line)}.drawerHead h2{margin:0;font-size:20px}.drawerSub{font-size:12px;color:#74808b;margin-top:4px}.search{padding:10px 14px;border-bottom:1px solid var(--line)}.search input{width:100%;padding:10px 11px;border:1px solid #cad3db;border-radius:9px;font-size:14px}.stopList{overflow:auto;flex:1}.stop{padding:11px 14px;border-bottom:1px solid var(--line);display:flex;gap:9px;align-items:center;cursor:pointer}.stop.current{background:#edf4ff}.num{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#909aa4;color:#fff;font-weight:900;flex:none}.stop.done .num{background:var(--green)}.stop.bad .num{background:var(--orange)}.stop.current .num{background:var(--blue)}.stopText{flex:1;min-width:0}.stopName{font-size:15px;font-weight:900}.stopAddr{font-size:11px;color:#7a8691;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag{font-size:10px;font-weight:900;padding:4px 6px;border-radius:6px;background:#eef0f2;color:#68737d}.tag.done{background:#e6f5ea;color:#287742}.tag.now{background:#dfeaff;color:#2159bd}.tag.bad{background:#fff0da;color:#9d6110}
.overlay{position:fixed;inset:0;background:linear-gradient(135deg,#eef3f8,#e4ebf2);z-index:100;display:grid;place-items:center;padding:24px}.overlay.hidden{display:none}.setupBox{width:min(850px,94vw);background:#fff;border-radius:20px;padding:30px;box-shadow:0 14px 42px #17334e22}.setupBox h2{margin:0;color:var(--navy);font-size:31px}.setupBox p{color:#687682}.setupGrid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}.choiceCard{border:2px solid #d7e0e8;background:#fff;border-radius:15px;padding:19px;text-align:left;cursor:pointer}.choiceCard:hover{border-color:#7fa5dd;background:#f7fbff}.choiceCard strong{font-size:19px;color:#173b61}.choiceCard small{display:block;color:#77838e;margin-top:4px}.field{margin-top:14px}.field label{display:block;font-size:13px;font-weight:900;margin-bottom:6px;color:#415064}.field input,.field select,.field textarea{width:100%;border:1px solid #c8d1da;border-radius:9px;padding:11px;font-size:15px;background:#fff}.field textarea{min-height:100px;resize:vertical}.stepBtns{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.smallBtn{border:1px solid #c6d0d9;background:#fff;color:#314255;border-radius:9px;padding:10px 15px;font-weight:900;cursor:pointer}.primary{background:var(--navy);border-color:var(--navy);color:#fff}.routeGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:18px}.routeCard{border:0;background:#fff;border-radius:16px;padding:20px;text-align:left;cursor:pointer;box-shadow:0 6px 20px #17334e17;display:flex;align-items:center;gap:15px}.routeLetter{width:56px;height:56px;border-radius:14px;background:linear-gradient(145deg,var(--navy2),var(--blue));color:#fff;display:grid;place-items:center;font-size:25px;font-weight:950}.routeInfo{flex:1}.routeName{font-size:21px;font-weight:950;color:#173251}.routeMeta{font-size:13px;color:#74818d;margin-top:4px}.historyHome{margin-top:18px;border:0;background:#eef5ff;color:#204f91;border-radius:13px;padding:16px;width:100%;font-weight:900;font-size:17px;cursor:pointer}
.modalShade{position:fixed;inset:0;background:#0007;z-index:120;display:none;place-items:center;padding:20px}.modalShade.show{display:grid}.modal{width:min(620px,94vw);max-height:90vh;overflow:auto;background:#fff;border-radius:17px;padding:23px;box-shadow:0 18px 50px #0005}.modal h2{margin:0;color:var(--navy)}.modal p{color:#6f7c88}.formRow{display:grid;grid-template-columns:1fr 1fr;gap:13px}.modalActions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}
.reportScreen{position:fixed;inset:70px 0 0;background:#edf2f6;z-index:60;display:none;overflow:auto}.reportScreen.show{display:block}.reportTop{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid var(--line);padding:12px 18px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.reportTop h2{margin:0;color:var(--navy);margin-right:10px}.reportTop select{border:1px solid #c7d0d9;border-radius:8px;padding:8px 9px;background:#fff;font-weight:800}.reportTop .spacer{flex:1}.reportClose{border:1px solid #c8d1da;background:#fff;border-radius:8px;padding:8px 12px;font-weight:900;cursor:pointer}.tabBtn{border:0;border-radius:8px;padding:8px 12px;background:#edf1f5;color:#52616f;font-weight:900;cursor:pointer}.tabBtn.active{background:var(--navy);color:#fff}.reportBody{width:min(1120px,94vw);margin:18px auto 50px}.summaryGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.summaryCard{background:#fff;border-radius:13px;padding:15px;box-shadow:0 3px 12px #18334a10}.summaryCard .k{font-size:12px;color:#74818d;font-weight:800}.summaryCard .v{font-size:25px;font-weight:950;color:#173654;margin-top:4px}.historyCard{background:#fff;border-radius:14px;margin-top:14px;box-shadow:0 3px 14px #18334a10;overflow:hidden}.historyHead{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center}.historyHead strong{font-size:17px;flex:1}.historyRow{padding:12px 16px;border-bottom:1px solid #edf0f2}.line{display:flex;gap:8px;align-items:flex-start;margin:5px 0;line-height:1.5}.key{min-width:100px;color:#65727d;font-weight:850}.jump{border:0;background:#e8f0ff;color:#205abf;padding:4px 7px;border-radius:6px;font-weight:900;cursor:pointer;margin:2px}.jump.bad{background:#fff0dc;color:#9c6111}
.b5Wrap{display:none}.b5Wrap.show{display:block}.b5Sheet{width:176mm;min-height:250mm;margin:18px auto;background:#fff;color:#111;padding:7mm;box-shadow:0 5px 22px #0002;font-family:"Yu Gothic","Meiryo",sans-serif}.b5Title{text-align:center;font-size:19px;font-weight:900;letter-spacing:2px;margin-bottom:4mm}.paperTable{width:100%;border-collapse:collapse;font-size:11px}.paperTable th,.paperTable td{border:1px solid #555;padding:2.2mm;vertical-align:top}.paperTable th{background:#f4f4f4;font-weight:800}.paperBoxTitle{font-weight:900}.checks{word-spacing:5px}.weightLines{height:72mm}.kgline{height:7mm;border-bottom:1px solid #bbb;display:flex;align-items:end;justify-content:flex-end;padding-right:3mm}.paperFooter{font-size:10px;margin-top:3mm;color:#333}.printBtn{border:0;background:#1d6d3a;color:#fff;border-radius:8px;padding:8px 13px;font-weight:900;cursor:pointer}
.mobileProgressPanel{display:none}
@media(max-width:900px){body{overflow:auto}header{height:62px;padding:0 7px}.iconbtn{width:42px;height:42px}.title{font-size:15px}.contextPill{font-size:10px;padding:6px}.topAction{display:none}.topProgress{font-size:15px;min-width:50px}main{height:auto;display:block}.leftStack{display:block;border-right:0}.leftStack>.progressPanel{display:none}.map{height:39vh;min-height:280px}.details{padding:16px}.actions{grid-template-columns:1fr;gap:7px}.mobileProgressPanel{display:flex;height:90px;position:sticky;bottom:0;z-index:9;background:#fff;border-top:1px solid var(--line);padding:4px 8px}.mobileProgressPanel .progressLabel{display:none}.mobileProgressPanel .progressWrap{overflow-x:auto}.mobileProgressPanel .progressNodes{min-width:620px}.mobileProgressPanel .progressTrack{min-width:595px}.mobileProgressPanel .progressFill{max-width:595px}.drawer{top:62px;width:min(88vw,360px)}.drawerShade{inset:62px 0 0}.reportScreen{inset:62px 0 0}.setupGrid,.routeGrid{grid-template-columns:1fr}.summaryGrid{grid-template-columns:1fr 1fr}.formRow{grid-template-columns:1fr}.b5Sheet{width:94vw;min-height:auto;padding:14px}.reportTop h2{width:100%}}
@media print{
 @page{size:B5 portrait;margin:7mm}
 body *{visibility:hidden!important}
 #b5Sheet,#b5Sheet *{visibility:visible!important}
 #b5Sheet{position:absolute;left:0;top:0;width:100%;min-height:0;margin:0;box-shadow:none;padding:0}
}

.vehicleGrid{grid-template-columns:repeat(4,1fr)}
.adminCard{
 width:100%;margin-top:16px;border:2px solid #c9d7e6;background:linear-gradient(135deg,#f7fbff,#eef5fd);
 border-radius:15px;padding:18px 20px;display:flex;align-items:center;gap:14px;cursor:pointer;text-align:left
}
.adminCard:hover{border-color:#7fa5d7;background:#f1f7ff}
.adminIcon{width:52px;height:52px;border-radius:14px;background:var(--navy);color:white;display:grid;place-items:center;font-size:26px}
.adminCard strong{font-size:19px;color:#17395f}.adminCard small{display:block;color:#6f7f8e;margin-top:3px}.adminArrow{margin-left:auto;font-size:30px;color:#6d7d8b}
.adminScreen{position:fixed;inset:70px 0 0;background:#edf2f6;z-index:70;display:none;overflow:auto}
.adminScreen.show{display:block}
.adminTop{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid var(--line);padding:14px 20px;display:flex;align-items:center}
.adminTop h2{margin:0;color:var(--navy)}.adminTop>div{flex:1}
.adminEyebrow{font-size:11px;letter-spacing:2px;font-weight:900;color:#55718e}
.adminBody{width:min(1120px,94vw);margin:20px auto 50px}
.adminHero{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;border-radius:16px;padding:20px 22px;display:flex;align-items:center;gap:16px}
.adminHero>div{flex:1}.adminHero strong{display:block;font-size:23px}.adminHero span{display:block;margin-top:5px;color:#d7e4f1}
.adminPrimary{border:0;background:#fff;color:var(--navy);border-radius:10px;padding:12px 16px;font-weight:900;cursor:pointer}
.adminStats{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-top:14px}
.adminStat{background:#fff;border-radius:14px;padding:16px;box-shadow:0 3px 13px #18334a10}
.adminStat .k{font-size:12px;color:#76838e;font-weight:850}.adminStat .v{font-size:26px;color:#173654;font-weight:950;margin-top:4px}
.adminPanels{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.adminPanel{background:#fff;border-radius:14px;padding:17px;box-shadow:0 3px 13px #18334a10}.adminPanel h3{margin:0 0 12px;color:#173654}
.ovRow{display:grid;grid-template-columns:120px 1fr 90px;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid #edf0f2}
.ovRow:last-child{border-bottom:0}.ovBar{height:9px;background:#edf1f4;border-radius:99px;overflow:hidden}.ovFill{height:100%;background:linear-gradient(90deg,var(--green),var(--blue));border-radius:99px}.ovVal{text-align:right;font-weight:900;color:#415467}

.paperHeaderTable{width:100%;border-collapse:collapse;font-size:10.5px;margin-bottom:0}
.paperHeaderTable td,.paperHeaderTable th{border:1px solid #555;padding:1.9mm}
.paperTitleBar{display:flex;align-items:center;margin-bottom:2mm}.paperTitleBar .diamond{font-size:18px}.paperTitleBar .titleText{font-size:17px;font-weight:900;letter-spacing:1px;margin-left:2mm}.paperTitleBar .headField{margin-left:auto;font-size:10px}
.paperSmall{font-size:10px}.paperCheckLine{word-spacing:3px;white-space:nowrap}
.paperKgArea{display:grid;grid-template-columns:38% 62%;min-height:92mm;border:1px solid #555;border-top:0}
.paperKgLeft{border-right:1px solid #555;padding:2mm}.paperKgRight{padding:2mm}
.kgHeader{font-size:10px;font-weight:900;margin-bottom:1mm}.paperKgLine{height:10mm;border-bottom:1px solid #777;display:flex;align-items:end;justify-content:flex-end;padding:0 2mm 1mm}.kgSuffix{margin-left:2mm}
.paperRightLine{font-size:10.5px;border-bottom:1px solid #777;padding:2mm 0;line-height:1.6}
.paperNet{border:1px solid #555;border-top:0;padding:2mm;text-align:right;font-weight:900;font-size:11px}
.paperBottom{width:100%;border-collapse:collapse;font-size:10px;margin-top:2mm}.paperBottom td{border:1px solid #555;padding:2mm}
.paperCaption{font-size:9px;color:#444;margin-top:2mm}
@media(max-width:900px){
 .vehicleGrid{grid-template-columns:repeat(2,1fr)}
 .adminScreen{inset:62px 0 0}.adminStats{grid-template-columns:1fr 1fr}.adminPanels{grid-template-columns:1fr}
 .adminHero{align-items:flex-start;flex-direction:column}.adminPrimary{width:100%}
}


.factoryResult{
 margin-top:16px;padding:15px 17px;border-radius:13px;border:2px solid #bcd2e7;
 background:linear-gradient(135deg,#f7fbff,#edf6ff);display:flex;align-items:center;gap:16px
}
.factoryResult>div{flex:1}.factoryResult span{font-weight:900;color:#274c70}.factoryResult small{display:block;margin-top:3px;color:#718293;font-size:12px}
.factoryResult strong{font-size:31px;color:#153f6c;white-space:nowrap}
.paperInput,.paperSelect{
 width:100%;border:0;border-bottom:1px solid #777;background:transparent;
 padding:1px 2px;font:inherit;min-height:21px
}
.paperInput:focus,.paperSelect:focus{outline:2px solid #a9c9ed;background:#f7fbff}
.paperCheck{transform:scale(1.02);vertical-align:middle;margin-right:2px}
.paperInline{display:inline-flex;align-items:center;gap:3px;margin-right:7px;white-space:nowrap}
.reportEditNote{
 background:#eef6ff;border:1px solid #c8daf0;border-radius:10px;padding:10px 12px;
 margin:0 auto 12px;width:176mm;max-width:100%;font-size:12px;color:#42607d
}
.saveReportBtn{border:0;background:#2d6096;color:#fff;border-radius:8px;padding:8px 13px;font-weight:900;cursor:pointer}
.paperAreaText{width:100%;height:100%;min-height:52px;border:0;resize:none;font:inherit;background:transparent}
.paperKgInput{width:80px;border:0;border-bottom:1px solid #777;text-align:right;background:transparent;font:inherit}
.paperKgInput:focus{outline:2px solid #a9c9ed;background:#f7fbff}
.sourceBadge{display:inline-block;border-radius:6px;padding:2px 6px;font-size:10px;font-weight:900;margin-right:5px}
.sourceCenter{background:#e7f0ff;color:#2b5e9b}.sourceFactory{background:#e8f5eb;color:#2d7a45}
@media print{
 .reportEditNote{display:none!important}
 input,select,textarea{-webkit-appearance:none;appearance:none}
 .paperInput,.paperSelect,.paperKgInput{border:0!important}
}


.editorScreen{position:fixed;inset:70px 0 0;background:#edf2f6;z-index:75;display:none;overflow:auto}
.editorScreen.show{display:block}
.editorTop{position:sticky;top:0;z-index:4;background:#fff;border-bottom:1px solid var(--line);padding:14px 20px;display:flex;align-items:center}
.editorTop>div{flex:1}.editorTop h2{margin:0;color:var(--navy)}
.editorBody{width:min(980px,94vw);margin:18px auto 50px}
.editorTabs{display:flex;gap:8px;background:#fff;border-radius:13px;padding:7px;box-shadow:0 3px 12px #18334a10}
.editTab{flex:1;border:0;background:#eef2f6;color:#52616f;border-radius:9px;padding:11px;font-weight:900;cursor:pointer}
.editTab.active{background:var(--navy);color:#fff}
.editPane{display:none}.editPane.active{display:block}
.editCard{background:#fff;border-radius:15px;padding:20px;margin-top:14px;box-shadow:0 3px 14px #18334a10}
.editCard h3{margin:0;color:#173654}.editCard h4{margin:20px 0 8px}
.editCard p{color:#71808d}
.vehicleEditGrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.vehicleEditItem{background:#f7f9fb;border:1px solid #dde4ea;border-radius:10px;padding:10px}
.vehicleEditItem label{display:block;font-size:11px;font-weight:900;color:#6e7a85;margin-bottom:4px}
.vehicleEditItem input{width:100%;border:1px solid #c9d2db;border-radius:8px;padding:9px}
@media(max-width:900px){
 .editorScreen{inset:62px 0 0}
 .vehicleEditGrid{grid-template-columns:repeat(2,1fr)}
}


.csvGuide{background:#f1f7fd;border:1px solid #cbddee;border-radius:11px;padding:13px 14px;margin-top:14px}
.csvGuide strong{display:block;color:#214b73;margin-bottom:6px}.csvGuide code{display:block;background:#fff;border:1px solid #d7e1ea;border-radius:7px;padding:9px;font-size:12px;overflow:auto;white-space:nowrap}
.csvHint{font-size:12px;color:#65788a;margin-top:7px}
.csvActions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.csvDrop{margin-top:14px;border:2px dashed #a9bdd1;border-radius:14px;padding:24px;text-align:center;background:#fbfdff;position:relative;cursor:pointer}
.csvDrop.drag{border-color:#2864df;background:#eef5ff}.csvDropIcon{width:52px;height:52px;margin:0 auto 7px;border-radius:12px;background:#1e5b91;color:#fff;display:grid;place-items:center;font-weight:950;font-size:13px}
.csvDrop strong{display:block;color:#244663}.csvDrop span{display:block;color:#788692;font-size:12px;margin-top:3px}.csvDrop input{position:absolute;inset:0;opacity:0;cursor:pointer}
.csvPreview{margin-top:16px;border-top:1px solid #e0e6ec;padding-top:15px}.csvDetect{border-radius:10px;padding:12px 14px;font-weight:900}.csvDetect.add{background:#e8f6ec;color:#287642}.csvDetect.full{background:#e7f0ff;color:#245ba1}.csvDetect.diff{background:#fff4df;color:#9a6216}.csvDetect.error{background:#ffe9e9;color:#a63131}
.csvStats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.csvStat{background:#f7f9fb;border:1px solid #e1e6eb;border-radius:9px;padding:10px}.csvStat span{display:block;font-size:11px;color:#71808d}.csvStat strong{font-size:20px;color:#1f405f}
.csvWarnings{margin-top:10px;color:#a05e16;font-size:12px;line-height:1.6}.csvTableWrap{overflow:auto;max-height:290px;margin-top:10px;border:1px solid #dce3e9;border-radius:9px}.csvTable{border-collapse:collapse;width:100%;font-size:11px;background:#fff}.csvTable th,.csvTable td{border-bottom:1px solid #e8ecef;padding:7px 8px;text-align:left;white-space:nowrap}.csvTable th{position:sticky;top:0;background:#f2f6f9;color:#43586b}
.csvRuleBox{margin-top:18px;border:1px solid #d9e1e8;border-radius:11px;padding:13px 14px;font-size:12px;line-height:1.7}.csvRuleBox h4{margin:0 0 6px;color:#244763}.csvSafe{margin-top:6px;color:#9a5f11;font-weight:800}
@media(max-width:900px){.csvStats{grid-template-columns:1fr 1fr}}


.mapActualImage{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:none;z-index:2;background:#fff}
.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:none;z-index:2}
.photo:has(img[style*="display: block"])::before,.photo:has(img[style*="display: block"])::after{display:none}


.mapInfoCard{position:absolute;left:14px;top:14px;z-index:500;background:#fff;border-radius:12px;padding:10px 13px;box-shadow:0 4px 16px #0002;max-width:55%}
.mapInfoCard strong{display:block;color:#173654;font-size:16px}.mapInfoCard span{display:block;color:#697986;font-size:11px;margin-top:3px}
.navButtons{position:absolute;left:14px;bottom:14px;z-index:500;display:flex;gap:7px;flex-wrap:wrap}
.navButtons button{border:0;background:#fff;color:#244b6e;border-radius:9px;padding:10px 12px;font-weight:900;box-shadow:0 3px 12px #0002;cursor:pointer}
.navButtons .navPrimary{background:#1d64d8;color:#fff}
.currentDot{width:18px;height:18px;border-radius:50%;background:#2870e3;border:4px solid #fff;box-shadow:0 0 0 2px #2870e3,0 2px 8px #0004}
.destDot{width:28px;height:28px;border-radius:50% 50% 50% 0;background:#d94138;border:4px solid #fff;transform:rotate(-45deg);box-shadow:0 2px 8px #0004}
.routeCard.disabledRoute{display:none}
@media(max-width:900px){
 .mapInfoCard{max-width:78%;left:10px;top:10px}
 .navButtons{left:10px;right:10px;bottom:10px}
 .navButtons button{font-size:12px;padding:9px 10px}
}


.staticPhotoMap{position:relative;overflow:hidden;background:#dfe5e9}
.mapPhotoImage{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:1}
.mapPhotoTop{position:absolute;left:15px;top:14px;z-index:3;background:#fff;border-radius:12px;padding:10px 13px;box-shadow:0 4px 16px #0002;max-width:70%}
.mapPhotoTop strong{display:block;color:#173654;font-size:18px}
.mapPhotoTop span{display:block;color:#6d7b87;font-size:11px;margin-top:3px}
.mapPhotoDemoBadge{position:absolute;right:14px;top:14px;z-index:3;background:#173654e8;color:#fff;padding:7px 10px;border-radius:8px;font-size:11px;font-weight:900}
.googleNavFloat{position:absolute;left:15px;bottom:15px;z-index:3;border:0;background:#1d64d8;color:#fff;border-radius:10px;padding:12px 16px;font-weight:950;box-shadow:0 4px 15px #0003;cursor:pointer}
.googleNavFloat:active{transform:translateY(1px)}
.overlay{z-index:1000!important}
.adminScreen,.editorScreen,.reportScreen{z-index:900!important}
@media(max-width:900px){
 .mapPhotoTop{left:10px;top:10px;max-width:74%}
 .mapPhotoTop strong{font-size:15px}
 .mapPhotoDemoBadge{right:10px;top:10px;font-size:9px}
 .googleNavFloat{left:10px;bottom:10px;padding:10px 13px;font-size:12px}
}


.coordBlock{margin-top:10px;background:#f4f7f9;border:1px solid #d9e1e7;border-radius:10px;padding:10px 12px}
.coordLabel{font-size:11px;font-weight:900;color:#74818d}
.coordValue{font-size:17px;font-weight:900;color:#28445f;margin-top:2px;font-variant-numeric:tabular-nums}
.details .actions{margin-top:18px}
.details .photo{height:178px}

@media print{
 @page{size:B5 portrait;margin:7mm}
 html,body{background:#fff!important}
 body>*{visibility:hidden!important}
 #reportScreen,#reportScreen *{visibility:visible!important}
 #reportScreen{position:absolute!important;inset:0!important;background:#fff!important;overflow:visible!important}
 .reportTop,.reportEditNote{display:none!important}
 .reportBody{padding:0!important;margin:0!important}
 .b5Wrap{display:block!important;padding:0!important;margin:0!important;background:#fff!important}
 .b5Sheet{width:176mm!important;min-height:236mm!important;margin:0 auto!important;box-shadow:none!important}
}

.weightSource{margin-right:auto;font-size:8px;color:#687682;align-self:center;max-width:33mm;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* v18 demo polish */
.mapPhotoImage{filter:saturate(.96) contrast(1.02)}
.mapPhotoDemoBadge{background:#0e2f53e8!important;letter-spacing:.3px}
.photo img{object-fit:cover}
.reportReturnHint{font-size:11px;color:#71808c;margin-left:2px}

/* ===== v19 UX additions ===== */
.undoToast{
 position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(30px);
 z-index:1300;background:#173654;color:#fff;border-radius:12px;padding:11px 12px 11px 16px;
 display:flex;align-items:center;gap:14px;box-shadow:0 8px 28px #0004;opacity:0;pointer-events:none;
 transition:.22s;max-width:min(620px,92vw);font-weight:850
}
.undoToast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
.undoToast button{border:1px solid #ffffff55;background:#fff;color:#173654;border-radius:8px;padding:8px 12px;font-weight:950;cursor:pointer;white-space:nowrap}
.photo img,.mapPhotoImage{cursor:zoom-in}
.photoViewer{position:fixed;inset:0;background:#071522ef;z-index:1400;display:none;align-items:center;justify-content:center;padding:28px}
.photoViewer.show{display:flex}
.photoViewer img{max-width:94vw;max-height:88vh;object-fit:contain;border-radius:12px;box-shadow:0 15px 60px #0009;background:#fff}
.photoViewerClose{position:absolute;right:20px;top:18px;width:48px;height:48px;border-radius:50%;border:1px solid #ffffff55;background:#fff;color:#173654;font-size:26px;font-weight:900;cursor:pointer}
.photoViewerCaption{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);background:#000b;color:#fff;padding:7px 12px;border-radius:8px;font-size:12px;font-weight:850}
.historyDateInput{border:1px solid #c7d0d9;border-radius:8px;padding:7px 9px;background:#fff;font-weight:850}
.adminWidePanel{grid-column:1/-1}
.adminProgressList,.adminProblemList{display:flex;flex-direction:column;gap:8px}
.adminProgressItem{display:grid;grid-template-columns:130px 1fr 105px;gap:12px;align-items:center;border:1px solid #e1e7ec;border-radius:10px;padding:10px 12px;background:#fbfcfd}
.adminProgressMain strong{display:block;color:#173654}.adminProgressMain span{font-size:12px;color:#71808d}
.adminProgressBar{height:9px;background:#e7ecf0;border-radius:99px;overflow:hidden;margin-top:6px}.adminProgressBar>i{display:block;height:100%;background:linear-gradient(90deg,var(--green),var(--blue));border-radius:99px}
.adminProgressVal{text-align:right;font-weight:950;color:#28445f}.statusDone{color:#258044!important}.statusRun{color:#225fc0!important}
.problemItem{border:1px solid #ead9bc;border-left:5px solid var(--orange);border-radius:10px;background:#fffaf2;padding:10px 12px}
.problemTop{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.problemTop strong{color:#684515}.problemMeta{font-size:11px;color:#7b746a;margin-top:4px}.problemDetail{font-size:13px;color:#5d4b31;margin-top:5px;line-height:1.5}
.csvStat.new strong{color:#25763f}.csvStat.update strong{color:#245ca5}.csvStat.same strong{color:#607080}.csvStat.delete strong{color:#9c3f3f}
.csvStatus{display:inline-block;border-radius:6px;padding:3px 6px;font-size:10px;font-weight:900}
.csvStatus.new{background:#e5f5e9;color:#287741}.csvStatus.update{background:#e6efff;color:#255ca5}.csvStatus.same{background:#eef1f3;color:#66737d}
@media(max-width:900px){
 .undoToast{bottom:104px}
 .adminProgressItem{grid-template-columns:95px 1fr 72px}
 .photoViewer{padding:12px}
}


/* ===== v20 ===== */
.routePill{background:#eaf2ff!important;color:#173f6d!important;border-color:#bdd0ec!important}
.systemStatus{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:92px;font-size:10px;font-weight:850;line-height:1.25}
#saveStatus{color:#dbe8f5;white-space:nowrap}
#networkStatus{white-space:nowrap}.networkOnline{color:#a9efbf!important}.networkOffline{color:#ffd18a!important}
.topProgress{min-width:105px!important;font-size:15px!important}
.badPhotoHelp{font-size:11px;color:#74818d;margin-top:5px;line-height:1.5}
.badPhotoPreview{display:none;width:100%;max-height:220px;object-fit:cover;border-radius:10px;margin-top:8px;border:1px solid #ccd5dd}
.completionScreen{position:fixed;inset:0;background:#0b2138df;z-index:1450;display:none;place-items:center;padding:24px}
.completionScreen.show{display:grid}
.completionCard{width:min(720px,94vw);background:#fff;border-radius:22px;padding:30px;box-shadow:0 22px 70px #0006;text-align:center}
.completionIcon{width:72px;height:72px;border-radius:50%;margin:0 auto 10px;display:grid;place-items:center;background:#e4f6e9;color:#23974e;font-size:42px;font-weight:950}
.completionEyebrow{font-size:11px;font-weight:950;letter-spacing:2px;color:#6c8298}
.completionCard h2{color:#173654;font-size:28px;margin:7px 0}.completionCard p{color:#6b7884;margin:0 0 18px}
.completionStats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}
.completionStat{background:#f5f8fa;border:1px solid #dfe6eb;border-radius:12px;padding:14px}
.completionStat span{display:block;font-size:11px;color:#71808d;font-weight:850}.completionStat strong{font-size:25px;color:#173654}
.completionActions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:20px}
.adminOperationLog{display:flex;flex-direction:column;gap:7px}
.adminLogItem{display:grid;grid-template-columns:115px 150px 1fr;gap:10px;border-bottom:1px solid #edf0f2;padding:8px 2px;font-size:12px}
.adminLogTime{color:#71808d}.adminLogAction{font-weight:900;color:#274b6d}.adminLogDetail{color:#52616f}
.problemPhoto{width:110px;height:72px;object-fit:cover;border-radius:8px;border:1px solid #d5c8b5;margin-top:8px;cursor:zoom-in}
.photoHistoryBtn{border:0;background:#edf4ff;color:#245ba1;border-radius:7px;padding:5px 8px;font-weight:850;cursor:pointer;margin-top:5px}
.pinError{min-height:22px;color:#b13a3a;font-size:12px;font-weight:850;margin-top:7px}
@media(max-width:1180px){
 header{gap:5px}.contextPill{padding:7px;font-size:11px}.topAction{padding:8px;font-size:11px}.systemStatus{min-width:78px;font-size:9px}.topProgress{min-width:90px!important;font-size:13px!important}
}
@media(max-width:900px){
 .routePill{display:none}.systemStatus{display:none}
 .completionStats{grid-template-columns:1fr}.completionActions{display:grid;grid-template-columns:1fr}
 .adminLogItem{grid-template-columns:1fr;gap:2px}
}


/* ===== v21 refinements ===== */
.driverHeaderInfo{flex:1;min-width:0;display:flex;align-items:baseline;gap:14px}
.driverHeaderInfo .title{flex:none;font-size:21px}
.driverHeaderMeta{display:flex;align-items:center;gap:7px;color:#d9e5f0;font-size:13px;white-space:nowrap;overflow:hidden}
.driverHeaderMeta span{font-weight:800}.driverHeaderMeta i{font-style:normal;color:#7893ae}.driverHeaderMeta strong{color:#fff;font-size:14px}
.networkHeader{font-size:10px;font-weight:850;white-space:nowrap;margin-left:3px}
.saveHeader{font-size:11px;font-weight:900;color:#e5eef7;white-space:nowrap;margin-left:5px}
body.adminModeUI .driverHeaderMeta,body.adminModeUI .driverOnly,body.adminModeUI #menuBtn,body.adminModeUI #networkStatus{display:none!important}
body.adminModeUI .driverHeaderInfo .title{font-size:20px}
body.adminModeUI #saveStatus{margin-left:auto}
#adminPinModal{z-index:1800!important}
.routeUtilityButtons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.routeUtilityButtons .historyHome{margin-top:0}.reportHome{background:#eef8f1;color:#286d40}
.adminHeroActions{display:flex;gap:8px;flex-wrap:wrap}
.photoChoiceGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.photoChoiceBtn{border:1px solid #cbd6df;background:#f8fafc;border-radius:11px;padding:12px 8px;cursor:pointer;color:#29455f}
.photoChoiceBtn:hover{background:#eef5fc;border-color:#8faccc}.photoChoiceBtn span{display:block;font-size:23px}.photoChoiceBtn strong{display:block;font-size:12px;margin-top:3px}.photoChoiceBtn small{display:block;font-size:10px;color:#7a8791;margin-top:2px}
.problemItem{cursor:pointer;transition:.15s}.problemItem:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0001;border-color:#d4b77c}
.problemItem .problemDetail{display:none}
.problemWasteTag{display:inline-block;background:#e7efff;color:#2459a0;border-radius:6px;padding:3px 7px;font-size:10px;font-weight:900}
.problemDetailHead{display:flex;align-items:flex-start;gap:10px}.problemDetailHead>div{flex:1}.problemDetailHead h2{margin-top:2px}
.problemDetailGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:15px}
.problemDetailCell{background:#f5f8fa;border:1px solid #e0e6eb;border-radius:9px;padding:10px}.problemDetailCell span{display:block;font-size:10px;color:#74818d;font-weight:850}.problemDetailCell strong{display:block;margin-top:3px;color:#244662}
.problemDetailBody{margin-top:12px;border-top:1px solid #e0e6eb}.problemDetailBody>div{padding:11px 0;border-bottom:1px solid #edf0f2}.problemDetailBody span{display:block;font-size:11px;color:#75818b;font-weight:850}.problemDetailBody strong,.problemDetailBody p{display:block;margin:4px 0 0;color:#3b4b58;line-height:1.55}
.problemDetailPhoto{display:none;width:100%;max-height:320px;object-fit:contain;background:#edf1f4;border-radius:10px;margin-top:12px;cursor:zoom-in}
.historyPeriodControls{display:flex;background:#eef2f5;border-radius:9px;padding:3px;gap:2px}
.periodBtn{border:0;background:transparent;color:#5d6d7a;border-radius:7px;padding:7px 10px;font-weight:900;cursor:pointer}.periodBtn.active{background:#fff;color:#173654;box-shadow:0 1px 4px #0001}
.backupIntro{color:#657684!important;margin:6px 0 12px!important}.backupActions{display:flex;gap:8px;flex-wrap:wrap}.backupGuide{margin-top:12px;background:#f4f8fb;border:1px solid #dce5ec;border-radius:9px;padding:11px 13px;font-size:12px;line-height:1.7;color:#536573}
.reportTop input[type="month"]{border:1px solid #c7d0d9;border-radius:8px;padding:7px 9px;background:#fff;font-weight:850}
@media(max-width:1100px){
 .driverHeaderInfo{gap:8px}.driverHeaderInfo .title{font-size:17px}.driverHeaderMeta{font-size:11px;gap:4px}.driverHeaderMeta strong{font-size:11px}
 .saveHeader{font-size:9px}.networkHeader{font-size:9px}.topAction{padding:8px 7px;font-size:10px}
}
@media(max-width:900px){
 .driverHeaderInfo{display:block}.driverHeaderInfo .title{font-size:14px}.driverHeaderMeta{font-size:9px;margin-top:1px}.driverHeaderMeta strong{font-size:9px}
 .routeUtilityButtons,.photoChoiceGrid{grid-template-columns:1fr}
 .historyPeriodControls{width:100%}.periodBtn{flex:1}
 .problemDetailGrid{grid-template-columns:1fr}
}


/* ===== v22 ===== */
.headerStatusStack{
 display:flex;flex-direction:column;align-items:flex-end;justify-content:center;
 gap:1px;min-width:68px;margin-left:4px;line-height:1.05
}
.networkHeader,.saveHeader{font-size:8.5px!important;line-height:1.05!important;white-space:nowrap}
.networkHeader{font-weight:850!important}
.saveHeader{font-weight:750!important;color:#d8e4ef!important}
body.adminModeUI #centerBtn,
body.adminModeUI #factoryBtn,
body.adminModeUI #historyBtn,
body.adminModeUI #reportBtn,
body.adminModeUI #menuBtn{display:none!important}
body.adminModeUI .headerStatusStack{margin-left:auto}
#adminPinModal{
 z-index:2600!important;
 background:linear-gradient(135deg,#eef3f8,#e4ebf2)!important
}
.reportScreen{z-index:1250!important}
#adminBackFromDriver{background:#ffffff14}

/* B5を実寸に近い1枚へ */
.b5Sheet{
 width:176mm!important;height:250mm!important;min-height:0!important;max-height:250mm!important;
 padding:3mm 4mm!important;overflow:hidden!important
}
.paperTitleBar{margin-bottom:1mm!important}
.paperTitleBar .titleText{font-size:15px!important}
.paperTitleBar .diamond{font-size:15px!important}
.paperTitleBar .headField{font-size:8.5px!important}
.paperHeaderTable{font-size:9px!important}
.paperHeaderTable td,.paperHeaderTable th{padding:1.15mm!important}
.paperCheckLine{word-spacing:1px!important}
.paperInline{gap:1px!important;margin-right:4px!important}
.paperKgArea{min-height:0!important;height:62mm!important;grid-template-columns:39% 61%!important}
.paperKgLeft,.paperKgRight{padding:1.2mm!important}
.kgHeader{font-size:8.5px!important;margin-bottom:.5mm!important}
.paperKgLine{height:6.25mm!important;padding:0 1mm .5mm!important}
.paperKgInput{font-size:9px!important}
.weightSource{font-size:7px!important;max-width:30mm!important}
.paperRightLine{font-size:8.6px!important;padding:1.15mm 0!important;line-height:1.35!important}
.paperRightLine[style*="height:55mm"]{height:37mm!important;margin-top:1mm!important}
.paperAreaText{min-height:28mm!important;font-size:8.5px!important}
.paperNet{padding:1.1mm!important;font-size:9.5px!important}
.paperBottom{font-size:8.5px!important;margin-top:1mm!important}
.paperBottom td{padding:1.1mm!important}
.paperCaption{font-size:7.5px!important;margin-top:1mm!important}
.paperInput,.paperSelect{min-height:17px!important;font-size:8.8px!important}
.reportEditNote{font-size:10px!important;padding:7px 9px!important;margin-bottom:7px!important}

/* 全体回収マップ */
.overviewScreen{
 position:fixed;inset:70px 0 0;background:#edf2f6;z-index:940;
 display:none;overflow:hidden
}
.overviewScreen.show{display:block}
.overviewTop{
 height:68px;background:#fff;border-bottom:1px solid var(--line);padding:8px 16px;
 display:flex;align-items:center;gap:10px
}
.overviewHeading{min-width:190px;margin-right:auto}
.overviewHeading h2{margin:0;color:var(--navy);font-size:21px}
.overviewTop label{font-size:11px;color:#62717d;font-weight:850;white-space:nowrap}
.overviewTop input,.overviewTop select{
 border:1px solid #c7d0d9;border-radius:8px;padding:7px 8px;background:#fff;font-weight:800
}
.overviewCheck{display:flex;gap:5px;align-items:center}
.overviewBody{height:calc(100% - 68px);display:grid;grid-template-columns:300px 1fr}
.overviewSide{background:#fff;border-right:1px solid var(--line);padding:13px;overflow:auto}
.overviewStats{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}
.overviewStat{background:#f5f8fa;border:1px solid #e0e6eb;border-radius:10px;padding:10px}
.overviewStat span{display:block;font-size:10px;color:#71808d;font-weight:850}
.overviewStat strong{display:block;font-size:21px;color:#173654;margin-top:2px}
.overviewLegend{
 display:flex;gap:10px;flex-wrap:wrap;font-size:10px;font-weight:850;
 margin:11px 0;padding:9px;border-radius:9px;background:#f7f9fb
}
.overviewLegend span{display:flex;gap:4px;align-items:center}
.legendDot{width:10px;height:10px;border-radius:50%;display:inline-block}
.legendDot.done{background:#23974e}.legendDot.bad{background:#d68a22}.legendDot.todo{background:#d44c43}
.overviewSideTitle{font-size:13px;font-weight:950;color:#294861;margin:8px 0}
.districtProgressList{display:flex;flex-direction:column;gap:6px}
.districtProgressCard{
 border:1px solid #dfe5ea;border-radius:9px;padding:8px 9px;cursor:pointer;background:#fff
}
.districtProgressCard:hover,.districtProgressCard.active{border-color:#7fa4cb;background:#f2f7fc}
.districtProgressTop{display:flex;align-items:center}
.districtProgressTop strong{flex:1;color:#294861}
.districtRemain{font-size:11px;font-weight:950;color:#b24b42}
.districtMini{display:flex;gap:7px;font-size:9px;color:#75818b;margin-top:4px}
.districtBar{height:6px;background:#e8edf1;border-radius:99px;overflow:hidden;margin-top:6px}
.districtBar i{height:100%;display:block;background:#23974e;border-radius:99px}
.overviewMapWrap{position:relative;min-width:0;min-height:0}
#overviewMap{position:absolute;inset:0;background:#dfe6eb}
.overviewMapNotice{
 position:absolute;left:50%;top:15px;transform:translateX(-50%);z-index:800;
 background:#fff;border-radius:9px;padding:8px 11px;box-shadow:0 3px 12px #0002;
 font-size:11px;color:#536574;display:none
}
.overviewPopup{min-width:180px}
.overviewPopup strong{font-size:14px;color:#173654}
.overviewPopup .opMeta{font-size:11px;color:#687984;margin-top:4px;line-height:1.5}
.overviewPopup .opStatus{font-weight:900;margin-top:5px}
.opDone{color:#238047}.opBad{color:#a96814}.opTodo{color:#b4423d}

@media(max-width:900px){
 .overviewScreen{inset:62px 0 0}
 .overviewTop{height:auto;min-height:68px;flex-wrap:wrap}
 .overviewHeading{width:100%}
 .overviewBody{height:calc(100% - 125px);grid-template-columns:1fr}
 .overviewSide{max-height:190px;border-right:0;border-bottom:1px solid var(--line)}
 .overviewMapWrap{min-height:360px}
 .headerStatusStack{display:none}
}
@media print{
 @page{size:B5 portrait;margin:3mm!important}
 .b5Sheet{
  width:170mm!important;height:244mm!important;min-height:0!important;max-height:244mm!important;
  padding:0!important;margin:0 auto!important;overflow:hidden!important;box-shadow:none!important
 }
}


/* ===== v23 ===== */
.inspectBackBtn{border:1px solid #ffffff42;background:#ffffff10;color:#fff;border-radius:9px;padding:8px 11px;font-size:12px;font-weight:900;cursor:pointer;white-space:nowrap}
.inspectBackBtn:hover{background:#ffffff20}
.periodAggregate{background:#fff;border-radius:14px;margin-top:12px;padding:15px 16px;box-shadow:0 3px 14px #18334a10}
.periodAggregateHead{display:flex;align-items:center;gap:12px;margin-bottom:10px}.periodAggregateHead strong{font-size:17px;color:#173654}.periodAggregateHead span{font-size:11px;color:#71808d}
.periodAggregateGrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.periodAggregateStat{background:#f5f8fa;border:1px solid #e0e6eb;border-radius:9px;padding:10px}.periodAggregateStat span{display:block;font-size:10px;color:#71808d;font-weight:850}.periodAggregateStat strong{display:block;margin-top:3px;color:#173654;font-size:19px}
.periodRouteTable{width:100%;border-collapse:collapse;margin-top:11px;font-size:11px}.periodRouteTable th,.periodRouteTable td{padding:7px 8px;border-bottom:1px solid #e8edf1;text-align:right}.periodRouteTable th:first-child,.periodRouteTable td:first-child{text-align:left}.periodRouteTable th{color:#667785;font-size:10px;background:#f8fafb}
.backupSaveModal{width:min(650px,94vw)}.backupSaveHint{margin-top:12px;background:#f3f7fa;border:1px solid #dbe4eb;border-radius:9px;padding:10px 12px;color:#526674;font-size:11px;line-height:1.65}
.systemRecoveryToast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,25px);z-index:3000;background:#173654;color:#fff;padding:9px 13px;border-radius:9px;font-size:11px;font-weight:850;opacity:0;pointer-events:none;transition:.2s;box-shadow:0 6px 22px #0004}.systemRecoveryToast.show{opacity:1;transform:translate(-50%,0)}
/* JIS B5 182×257mm */
.b5Sheet{width:182mm!important;height:257mm!important;min-height:257mm!important;max-height:257mm!important;padding:2mm!important;margin:10px auto!important;overflow:hidden!important;box-sizing:border-box!important}
.paperTitleBar{margin-bottom:.5mm!important;height:6.5mm!important}.paperTitleBar .titleText{font-size:14px!important}.paperTitleBar .diamond{font-size:14px!important}.paperTitleBar .headField{font-size:7.8px!important}
.paperHeaderTable{font-size:8.2px!important}.paperHeaderTable td,.paperHeaderTable th{padding:.8mm 1mm!important;line-height:1.2!important}.paperInput,.paperSelect{min-height:14px!important;font-size:8px!important}.paperInline{margin-right:3px!important;font-size:8px!important}.paperCheck{transform:scale(.88)!important}
/* 下半分を大きく */
.paperKgArea{height:105mm!important;min-height:105mm!important;grid-template-columns:37% 63%!important}.paperKgLeft,.paperKgRight{padding:.9mm!important}.kgHeader{font-size:7.8px!important}.paperKgLine{height:8.45mm!important}.weightSource{font-size:6.5px!important}.paperKgInput{font-size:8px!important}.paperRightLine{font-size:7.9px!important;padding:.9mm 0!important;line-height:1.22!important}.paperRightLine[style*="height:55mm"]{height:81mm!important;margin-top:.6mm!important}.paperAreaText{min-height:72mm!important;font-size:8px!important;line-height:1.32!important}.paperNet{padding:.8mm!important;font-size:8.8px!important}.paperBottom{font-size:7.7px!important;margin-top:.6mm!important}.paperBottom td{padding:.7mm .9mm!important}.paperCaption{font-size:6.8px!important;margin-top:.5mm!important}.reportEditNote{width:182mm!important;font-size:8.8px!important;padding:5px 7px!important;margin:0 auto 5px!important}
@media print{@page{size:182mm 257mm;size:JIS-B5 portrait;margin:2mm!important}html,body{width:182mm!important;height:257mm!important;margin:0!important;padding:0!important}.b5Sheet{width:178mm!important;height:253mm!important;min-height:253mm!important;max-height:253mm!important;margin:0!important;padding:0!important;overflow:hidden!important;box-shadow:none!important}}
@media(max-width:900px){.periodAggregateGrid{grid-template-columns:1fr 1fr}.inspectBackBtn{padding:7px 8px;font-size:11px}.b5Sheet{width:98vw!important;height:auto!important;min-height:0!important;max-height:none!important}.reportEditNote{width:98vw!important}}


/* ===== v24 ===== */
.adminResolveBadBtn{
 width:100%;margin-top:15px;border:2px solid #238b4a;background:#eef9f1;color:#1f7040;
 border-radius:11px;padding:12px 14px;font-weight:950;font-size:15px;cursor:pointer
}
.adminResolveBadBtn:hover{background:#e2f5e8}
.adminResolveBadBtn:active{transform:translateY(1px)}

/* 添付紙の引取管理票に寄せたB5 */
.b5Sheet{
 width:182mm!important;height:257mm!important;min-height:257mm!important;max-height:257mm!important;
 margin:8px auto!important;padding:3.2mm 4.3mm!important;overflow:hidden!important;
 box-sizing:border-box!important;background:#fff!important
}
.paperTitleBar{
 height:10.5mm!important;display:flex!important;align-items:center!important;margin:0!important;
 padding:0 1.5mm!important
}
.paperTitleBar .diamond{font-size:15px!important}
.paperTitleBar .titleText{font-size:16px!important;letter-spacing:.8px!important;margin-left:1.5mm!important}
.paperTitleBar .headField{margin-left:auto!important;font-size:9.2px!important;white-space:nowrap!important}
.paperHeaderTable{
 width:100%!important;border-collapse:collapse!important;table-layout:fixed!important;
 font-size:9.4px!important;margin:0!important
}
.paperHeaderTable td,.paperHeaderTable th{
 border:1px solid #555!important;padding:1.25mm 1.5mm!important;
 height:9.6mm!important;vertical-align:middle!important;line-height:1.25!important
}
.paperHeaderTable tr.paperWorkRow td{height:8.5mm!important}
.paperHeaderTable tr.paperWasteRow td{height:9.2mm!important;background:#fbfbfb!important}
.paperHeaderTable tr.paperUnloadRow td{height:9.3mm!important}
.paperHeaderTable tr.paperItemRow td{height:9.1mm!important}
.paperHeaderTable tr.paperMaterialRow td{height:9mm!important}
.paperInput,.paperSelect{min-height:16px!important;font-size:8.8px!important;border-bottom:1px solid #777!important}
.paperInline{font-size:8.8px!important;margin-right:4px!important}
.paperCheck{transform:scale(.94)!important}
.paperKgArea{
 height:113mm!important;min-height:113mm!important;display:grid!important;
 grid-template-columns:31% 69%!important;border:1px solid #555!important;border-top:0!important
}
.paperKgLeft{padding:1.5mm 1.4mm!important;border-right:1px solid #555!important}
.paperKgRight{padding:1.5mm 2mm!important}
.kgHeader{font-size:9.4px!important;font-weight:900!important;margin:0 0 1mm!important}
.paperKgLine{height:10.7mm!important;padding:0 1mm 1mm!important}
.paperKgInput{font-size:9px!important;width:31mm!important}
.weightSource{font-size:6.8px!important;max-width:24mm!important}
.paperRightLine{font-size:8.9px!important;padding:1.4mm 0!important;line-height:1.4!important}
.paperRightLine.paperRemarks{border-bottom:0!important;margin-top:1.8mm!important;height:83mm!important}
.paperAreaText{min-height:75mm!important;height:75mm!important;font-size:8.8px!important;line-height:1.4!important}
.paperNet{font-size:9.8px!important;padding:1.4mm 2mm!important}
.paperBottom{width:100%!important;border-collapse:collapse!important;font-size:8.6px!important;margin-top:1.1mm!important}
.paperBottom td{border:1px solid #555!important;padding:1.2mm 1.4mm!important;height:7.8mm!important}
.paperCaption{font-size:7.2px!important;margin-top:.7mm!important}
.reportEditNote{width:182mm!important;font-size:8.8px!important;padding:5px 8px!important;margin:0 auto 5px!important}
@media print{
 @page{size:JIS-B5 portrait;margin:2mm!important}
 html,body{width:182mm!important;height:257mm!important;margin:0!important;padding:0!important}
 .b5Sheet{
  width:178mm!important;height:253mm!important;min-height:253mm!important;max-height:253mm!important;
  margin:0!important;padding:1.2mm 2.2mm!important;box-shadow:none!important;overflow:hidden!important
 }
 .reportEditNote{display:none!important}
}
@media(max-width:900px){
 .b5Sheet{width:98vw!important;height:auto!important;min-height:0!important;max-height:none!important;padding:10px!important}
 .reportEditNote{width:98vw!important}
}


/* ===== v25: two-mode driver operation ===== */
.modeSwitchTop{background:#eaf4ff!important;color:#154f87!important;border-color:#bdd5ea!important}
.modeChoiceGrid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:18px}
.modeChoiceCard{
 border:1px solid #d5dfe7;background:#fff;border-radius:17px;padding:22px;text-align:left;
 display:flex;gap:15px;cursor:pointer;box-shadow:0 6px 20px #17334e12;min-height:145px
}
.modeChoiceCard:hover{border-color:#7fa5ce;transform:translateY(-1px)}
.modeChoiceCard .modeChoiceIcon{font-size:35px;line-height:1}
.modeChoiceCard strong{display:block;font-size:21px;color:#173b61}
.modeChoiceCard span{display:block;font-size:13px;font-weight:850;color:#4d6579;margin-top:7px}
.modeChoiceCard small{display:block;font-size:11px;color:#7b8791;line-height:1.55;margin-top:8px}
.modeChoiceCard.freeMap{background:linear-gradient(145deg,#f7fbff,#eef7ff)}
.modeChoiceCard.recommend{background:linear-gradient(145deg,#fff,#f7fbf8)}

.driverMapScreen{
 position:fixed;inset:70px 0 0;z-index:52;background:#edf2f6;display:none;overflow:hidden
}
.driverMapScreen.show{display:block}
.driverMapToolbar{
 min-height:62px;background:#fff;border-bottom:1px solid #d9e1e7;padding:8px 13px;
 display:flex;align-items:center;gap:10px;flex-wrap:wrap
}
.driverMapTitleWrap{min-width:135px;margin-right:auto}
.driverMapTitleWrap strong{display:block;font-size:18px;color:#173654}
.driverMapTitleWrap span{display:block;font-size:11px;color:#70808e;margin-top:2px}
.driverRouteFilters{display:flex;gap:5px;background:#eef2f5;border-radius:10px;padding:4px}
.driverRouteChip{
 border:0;background:transparent;border-radius:8px;padding:8px 12px;font-weight:950;color:#61717f;cursor:pointer
}
.driverRouteChip.active{background:#173654;color:#fff;box-shadow:0 2px 7px #0002}
.driverRouteChip.routeA:not(.active){color:#246cc2}.driverRouteChip.routeB:not(.active){color:#7047b8}
.driverRouteChip.routeC:not(.active){color:#bd711c}.driverRouteChip.routeD:not(.active){color:#27845c}
.driverMapDistrictLabel{font-size:10px;font-weight:900;color:#657582;white-space:nowrap}
.driverMapDistrictLabel select{border:1px solid #c8d2db;border-radius:8px;padding:8px;font-weight:850;background:#fff}
.driverIncompleteToggle{
 display:flex;gap:6px;align-items:center;background:#fff7e8;border:1px solid #efd2a2;
 border-radius:9px;padding:8px 10px;font-size:11px;font-weight:950;color:#8c5c17
}
.driverMapStats{
 height:44px;background:#f8fafc;border-bottom:1px solid #dce4ea;display:flex;align-items:center;
 gap:9px;padding:6px 13px;overflow-x:auto
}
.driverMapStat{background:#fff;border:1px solid #dfe6eb;border-radius:8px;padding:5px 9px;white-space:nowrap}
.driverMapStat span{font-size:9px;color:#73818d;font-weight:850}.driverMapStat strong{font-size:14px;color:#173654;margin-left:5px}
.driverMapStat.remaining strong{color:#b33e36}

.driverMapBody{height:calc(100% - 106px);display:grid;grid-template-columns:minmax(0,1fr) 330px}
.driverMapArea{position:relative;min-width:0;min-height:0}
#driverCollectionMap{position:absolute;inset:0;background:#dfe6eb}
.driverChecklist{background:#fff;border-left:1px solid #dce4ea;display:flex;flex-direction:column;min-height:0}
.driverChecklistHead{padding:11px;border-bottom:1px solid #e0e6eb}
.driverChecklistHead>div{display:flex;justify-content:space-between;align-items:center}
.driverChecklistHead strong{color:#264763;font-size:14px}.driverChecklistHead span{font-size:10px;color:#7c8993}
.driverChecklistHead input{width:100%;border:1px solid #ccd5dc;border-radius:8px;padding:9px;margin-top:8px}
.driverChecklistList{overflow:auto;flex:1}
.driverCheckItem{
 display:grid;grid-template-columns:11px 1fr auto;gap:9px;align-items:center;
 padding:10px 11px;border-bottom:1px solid #edf0f2;cursor:pointer
}
.driverCheckItem:hover,.driverCheckItem.selected{background:#eef5fb}
.driverCheckItem .routeStripe{width:8px;height:36px;border-radius:99px}
.driverCheckItem .main strong{display:block;color:#263f55;font-size:13px}
.driverCheckItem .main span{display:block;color:#7b8792;font-size:10px;margin-top:3px}
.driverCheckState{font-size:9px;font-weight:950;border-radius:6px;padding:4px 6px;background:#f1f3f5;color:#6c7780}
.driverCheckState.bad{background:#fff1dc;color:#a46412}.driverCheckState.done{background:#e9f5ec;color:#287743}

.driverMapPinWrap{background:none!important;border:0!important}
.driverMapPin{
 width:27px;height:27px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);
 border:2px solid #fff;box-shadow:0 1px 5px #0006;display:grid;place-items:center
}
.driverMapPin span{transform:rotate(45deg);font-size:11px;font-weight:950;color:#fff}
.driverMapPin.bad{box-shadow:0 0 0 4px #ef9b2d,0 2px 6px #0005}
.driverMapPin.done{opacity:.38;filter:grayscale(.3)}
.driverMapPin.selected{box-shadow:0 0 0 5px #111b,0 2px 8px #0007}
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:#17365455!important}
.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:#173654!important;color:#fff!important;font-weight:950}

.driverMapLegend{
 position:absolute;left:11px;bottom:11px;z-index:550;background:#fffffff2;border-radius:9px;
 padding:7px 9px;display:flex;gap:9px;flex-wrap:wrap;box-shadow:0 3px 12px #0002;
 font-size:9px;font-weight:850
}
.driverMapLegend span{display:flex;gap:4px;align-items:center}.routeDot{width:9px;height:9px;border-radius:50%;display:inline-block}
.routeDot.a{background:#2672d4}.routeDot.b{background:#7a4fc9}.routeDot.c{background:#e08a24}.routeDot.d{background:#2e9d68}
.driverMapLegend b{display:grid;place-items:center;background:#ef9b2d;color:#fff;border-radius:50%;width:13px;height:13px}
.driverMapNetNotice{
 position:absolute;top:11px;left:50%;transform:translateX(-50%);z-index:560;
 background:#fff8e7;color:#8b5e20;border:1px solid #e5c887;border-radius:8px;padding:7px 10px;
 display:none;font-size:10px;font-weight:850
}

.driverMapDetail{
 position:absolute;left:14px;bottom:48px;z-index:600;width:min(560px,calc(100% - 28px));
 background:#fff;border-radius:15px;padding:15px;box-shadow:0 10px 35px #0004;display:none
}
.driverMapDetail.show{display:block}
.driverMapDetailClose{position:absolute;right:9px;top:8px;border:0;background:#eef1f4;border-radius:50%;width:30px;height:30px;font-size:18px;cursor:pointer}
.driverMapDetailHead{display:flex;gap:7px;align-items:center;padding-right:35px}
.driverMapRouteBadge,.driverMapDetailStatus{font-size:9px;font-weight:950;padding:4px 7px;border-radius:6px}
.driverMapRouteBadge{background:#eaf1f7;color:#33546e}
.driverMapDetailStatus{background:#f0f2f4;color:#66737d}
.driverMapDetailStatus.bad{background:#fff0d7;color:#a46613}.driverMapDetailStatus.done{background:#e7f5eb;color:#287943}
.driverMapDetail h2{font-size:21px;margin:8px 0 4px;color:#173654}
.driverMapDetailMeta{font-size:10px;color:#71808c}
.driverMapDetailRecord{font-size:11px;color:#245b83;font-weight:850;margin-top:6px}
.driverMapDetailNote{font-size:12px;color:#5b4931;background:#fff8e9;border:1px solid #f0d6a7;border-radius:8px;padding:8px;margin-top:8px;line-height:1.5}
.driverMapParking{width:100%;height:115px;object-fit:cover;border-radius:9px;margin-top:8px;background:#e8ecef}
.driverMapDetailActions{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:7px;margin-top:9px}
.mapProblemBtn{border-color:#d39842!important;color:#9b6416!important;background:#fff9ef!important}

.resumeChoiceGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.resumeChoice{border:1px solid #ccd7df;background:#f8fafc;border-radius:12px;padding:16px;cursor:pointer;text-align:left}
.resumeChoice span{font-size:27px}.resumeChoice strong{display:block;font-size:14px;color:#23445e;margin-top:4px}.resumeChoice small{display:block;color:#75828d;font-size:10px;margin-top:4px}

.adminPointLogHead{display:flex;align-items:center;gap:12px}.adminPointLogHead>div{flex:1}
.adminPointLogHead h3{margin-bottom:2px!important}.adminPointLogHead p{font-size:10px!important;color:#7a8791!important;margin:0!important}
.adminPointLogHead select{border:1px solid #ccd5dd;border-radius:8px;padding:7px 9px;background:#fff;font-weight:850}
.adminPointLog{max-height:340px;overflow:auto;border-top:1px solid #e5e9ed;margin-top:9px}
.adminPointLogRow{
 display:grid;grid-template-columns:58px 1.5fr 100px 90px 90px 95px;gap:8px;
 align-items:center;padding:8px 3px;border-bottom:1px solid #edf0f2;font-size:11px
}
.adminPointLogRow .time{font-weight:950;color:#214c70}.adminPointLogRow .point strong{display:block;color:#29475f}.adminPointLogRow .point span{display:block;color:#7b8791;font-size:9px;margin-top:2px}
.adminPointLogRow .doneText{color:#277843;font-weight:950}.adminPointLogRow .badText{color:#a86a16;font-weight:950}

@media(max-width:1000px){
 .modeChoiceGrid{grid-template-columns:1fr}
 .driverMapBody{grid-template-columns:minmax(0,1fr) 280px}
 .driverMapDetail{bottom:45px}
 .adminPointLogRow{grid-template-columns:50px 1fr 85px 75px}.adminPointLogRow .routeCol,.adminPointLogRow .sourceCol{display:none}
}
@media(max-width:760px){
 .driverMapScreen{inset:62px 0 0;overflow:auto}
 .driverMapToolbar{position:sticky;top:0;z-index:700}
 .driverMapBody{display:block;height:auto}
 .driverMapArea{height:58vh}
 .driverChecklist{height:42vh;border-left:0;border-top:1px solid #dce4ea}
 .driverMapDetailActions{grid-template-columns:1fr}
 .resumeChoiceGrid{grid-template-columns:1fr}
}


/* ===== v26 map stability / no clustering ===== */
.driverMapPin{
 width:23px!important;height:23px!important;
 border-width:2px!important
}
.driverMapPin span{font-size:9px!important}
/* v62: LeafletがiconAnchorから設定するmargin-left/margin-topを上書きしない。
   ここを上書きすると、低ズームほど地理的なズレが大きく見える。 */
.driverRouteChip.active{outline:2px solid #fff;outline-offset:-2px}
.driverMapDistrictLabel select{min-width:92px}

/* 地図操作を優先。詳細カード以外はマップのドラッグを邪魔しない */
.driverMapLegend,.driverMapNetNotice{pointer-events:none}
.driverMapDetail{pointer-events:auto}
#driverCollectionMap{touch-action:none}


/* ===== v27 ===== */
.driverMapPin.selected{
 box-shadow:0 0 0 5px #ffffff,0 0 0 8px #173654,0 3px 10px #0007!important;
 z-index:999!important
}

/* 管理者編集画面は必ず管理画面より前面 */
.editorScreen{
 z-index:1850!important;
}
.editorScreen.show{
 display:block!important;
}
body.editorOpen #adminScreen{
 display:none!important;
}


/* ===== v28 selected point placement ===== */
.driverMapDetail{
 left:18px!important;
 bottom:54px!important;
 width:min(560px,58%)!important;
 max-height:calc(100% - 80px)!important;
 overflow:auto!important;
}
.driverMapDetail.show{
 display:block!important;
}
@media(max-width:900px) and (min-width:761px){
 .driverMapDetail{
  width:min(500px,61%)!important;
 }
}
@media(max-width:760px){
 .driverMapDetail{
  left:10px!important;
  right:10px!important;
  bottom:10px!important;
  width:auto!important;
  max-height:65%!important;
 }
}


/* ===== v29 filtered summary ===== */
.driverMapStat.scopeStat{
 background:#eef5fb!important;
 border-color:#bdd1e3!important;
}
.driverMapStat.scopeStat strong{
 color:#245477!important;
 max-width:120px;
 overflow:hidden;
 text-overflow:ellipsis;
 white-space:nowrap;
 display:inline-block;
 vertical-align:bottom;
}


/* ===== v30 report readability ===== */
#historyDateWrap{align-items:center!important}

/*
  B5には収めるが「読めないほど小さくしない」。
  上半分はコンパクト、下半分の重量・未回収/問題あり欄を大きくする。
*/
.b5Sheet{
 width:182mm!important;
 height:257mm!important;
 min-height:257mm!important;
 max-height:257mm!important;
 padding:2.7mm 3.8mm!important;
 box-sizing:border-box!important;
 overflow:hidden!important;
}

/* タイトル・担当者 */
.paperTitleBar{
 height:10.3mm!important;
 padding:0 1.2mm!important;
}
.paperTitleBar .titleText{
 font-size:17px!important;
 font-weight:900!important;
}
.paperTitleBar .diamond{font-size:16px!important}
.paperTitleBar .headField{
 font-size:10.4px!important;
 font-weight:700!important;
}

/* 上半分の表 */
.paperHeaderTable{
 font-size:10.4px!important;
 line-height:1.32!important;
}
.paperHeaderTable td,
.paperHeaderTable th{
 padding:1.15mm 1.45mm!important;
 height:9.1mm!important;
 font-size:10.4px!important;
}
.paperHeaderTable tr.paperWorkRow td{height:8.0mm!important}
.paperHeaderTable tr.paperWasteRow td{height:8.5mm!important}
.paperHeaderTable tr.paperUnloadRow td{height:8.5mm!important}
.paperHeaderTable tr.paperItemRow td{height:8.5mm!important}
.paperHeaderTable tr.paperMaterialRow td{height:8.4mm!important}

.paperInput,.paperSelect{
 min-height:18px!important;
 font-size:10.4px!important;
 font-weight:700!important;
}
.paperInline{font-size:10.1px!important}
.paperCheck{transform:scale(1.02)!important}

/* 下半分を広く・読みやすく */
.paperKgArea{
 height:113mm!important;
 min-height:113mm!important;
 grid-template-columns:36% 64%!important;
}
.paperKgLeft{
 padding:1.6mm 1.7mm!important;
}
.paperKgRight{
 padding:1.6mm 2mm!important;
}
.kgHeader{
 font-size:11.3px!important;
 font-weight:950!important;
 margin-bottom:1mm!important;
}

/* 重量：ここを特に大きく */
.paperKgLine{
 height:10.55mm!important;
 padding:0 .8mm .8mm!important;
 display:flex!important;
 align-items:center!important;
 gap:4px!important;
}
.weightSource{
 font-size:9.3px!important;
 line-height:1.2!important;
 max-width:31mm!important;
 color:#465764!important;
 font-weight:750!important;
}
.paperKgInput{
 width:28mm!important;
 font-size:11.5px!important;
 font-weight:900!important;
}
.kgSuffix{
 font-size:10.5px!important;
 font-weight:850!important;
}

/* 右側の補足と未回収・問題あり */
.paperRightLine{
 font-size:10.2px!important;
 line-height:1.42!important;
 padding:1.3mm 0!important;
}
.paperRightLine .paperInput,
.paperRightLine .paperSelect{
 font-size:10.2px!important;
}

.paperRightLine.paperRemarks{
 height:82mm!important;
 margin-top:1.2mm!important;
}
.paperAreaText{
 height:75mm!important;
 min-height:75mm!important;
 padding:2mm!important;
 font-size:11px!important;
 line-height:1.55!important;
 font-weight:700!important;
 color:#273a49!important;
 background:#fff!important;
}

/* 正味重量は一目で分かるサイズ */
.paperNet{
 padding:1.4mm 2mm!important;
 font-size:11.6px!important;
 font-weight:950!important;
}
#reportNetWeight{
 font-size:13px!important;
}

/* 下端 */
.paperBottom{
 font-size:9.7px!important;
 margin-top:.9mm!important;
}
.paperBottom td{
 padding:1.05mm 1.3mm!important;
 height:7.5mm!important;
 font-size:9.7px!important;
}
.paperBottom .paperInput,
.paperBottom .paperSelect{
 font-size:9.7px!important;
}
.paperCaption{font-size:8px!important}

/* 画面上の説明も読みやすく */
.reportEditNote{
 width:182mm!important;
 padding:7px 10px!important;
 margin:0 auto 6px!important;
 font-size:10.5px!important;
 line-height:1.45!important;
}

/* PC/iPad画面では少し拡大して読みやすく */
@media screen and (min-width:901px){
 .b5Wrap{
  padding:12px 12px 28px!important;
 }
}

/* 印刷時：B5 1枚を維持 */
@media print{
 @page{
  size:JIS-B5 portrait!important;
  margin:2mm!important;
 }
 html,body{
  width:182mm!important;
  height:257mm!important;
 }
 .b5Sheet{
  width:178mm!important;
  height:253mm!important;
  min-height:253mm!important;
  max-height:253mm!important;
  margin:0!important;
  padding:1.2mm 2mm!important;
  overflow:hidden!important;
 }
 .paperTitleBar .titleText{font-size:16px!important}
 .paperTitleBar .headField{font-size:9.6px!important}
 .paperHeaderTable,
 .paperHeaderTable td,
 .paperHeaderTable th{font-size:9.6px!important}
 .paperInput,.paperSelect{font-size:9.6px!important}
 .paperInline{font-size:9.4px!important}
 .kgHeader{font-size:10.4px!important}
 .weightSource{font-size:8.7px!important}
 .paperKgInput{font-size:10.6px!important}
 .kgSuffix{font-size:9.7px!important}
 .paperRightLine{font-size:9.5px!important}
 .paperAreaText{font-size:10.2px!important}
 .paperNet{font-size:10.8px!important}
 #reportNetWeight{font-size:12px!important}
 .paperBottom,.paperBottom td{font-size:9px!important}
 .reportEditNote{display:none!important}
}


/* ===== v31 report: actual font size increase ===== */

/* B5全体。余白を詰め、その分を文字サイズへ回す */
.b5Sheet{
 width:182mm!important;
 height:257mm!important;
 min-height:257mm!important;
 max-height:257mm!important;
 padding:2.1mm 3.1mm!important;
 overflow:hidden!important;
 box-sizing:border-box!important;
}

/* タイトル */
.paperTitleBar{
 height:10mm!important;
 padding:0 .8mm!important;
}
.paperTitleBar .titleText{
 font-size:19px!important;
 font-weight:800!important;
 letter-spacing:.5px!important;
}
.paperTitleBar .diamond{
 font-size:18px!important;
}
.paperTitleBar .headField{
 font-size:11.5px!important;
 font-weight:600!important;
}
.paperTitleBar .paperInput{
 font-size:11.5px!important;
}

/* 上半分の通常文字を明確に拡大 */
.paperHeaderTable{
 font-size:11.5px!important;
 line-height:1.25!important;
}
.paperHeaderTable td,
.paperHeaderTable th{
 font-size:11.5px!important;
 padding:.9mm 1.2mm!important;
 height:8.5mm!important;
 line-height:1.25!important;
}
.paperHeaderTable tr.paperWorkRow td{height:7.5mm!important}
.paperHeaderTable tr.paperWasteRow td{height:8mm!important}
.paperHeaderTable tr.paperUnloadRow td{height:8mm!important}
.paperHeaderTable tr.paperItemRow td{height:8mm!important}
.paperHeaderTable tr.paperMaterialRow td{height:7.8mm!important}

.paperInput,
.paperSelect{
 min-height:19px!important;
 font-size:11.5px!important;
 font-weight:600!important;
 line-height:1.2!important;
}
.paperInline{
 font-size:11px!important;
 font-weight:500!important;
 margin-right:3px!important;
}
.paperCheck{
 transform:scale(1.05)!important;
}

/* 下半分 */
.paperKgArea{
 height:116mm!important;
 min-height:116mm!important;
 grid-template-columns:40% 60%!important;
}
.paperKgLeft{
 padding:1.2mm 1.5mm!important;
}
.paperKgRight{
 padding:1.2mm 1.7mm!important;
}
.kgHeader{
 font-size:12.5px!important;
 font-weight:850!important;
 margin-bottom:.7mm!important;
}

/*
 重量1件を上下2段にする。
 上：荷下ろし場所＋時刻
 下：重量
 */
.paperKgLine{
 height:11.3mm!important;
 padding:.55mm .8mm .7mm!important;
 display:flex!important;
 flex-direction:column!important;
 justify-content:center!important;
 align-items:stretch!important;
 gap:.15mm!important;
 box-sizing:border-box!important;
 overflow:hidden!important;
}

.weightSource{
 display:block!important;
 width:100%!important;
 max-width:none!important;
 white-space:nowrap!important;
 overflow:visible!important;
 text-overflow:clip!important;
 margin:0!important;
 padding:0!important;
 font-size:10.7px!important;
 line-height:1.15!important;
 font-weight:700!important;
 color:#344d61!important;
 min-height:12px!important;
}

.weightValueLine{
 display:flex!important;
 align-items:baseline!important;
 justify-content:flex-end!important;
 gap:4px!important;
 width:100%!important;
 min-width:0!important;
}

.paperKgInput{
 width:35mm!important;
 max-width:35mm!important;
 flex:0 0 35mm!important;
 font-size:16px!important;
 line-height:1.05!important;
 font-weight:800!important;
 text-align:right!important;
 min-height:20px!important;
 padding:0 1mm!important;
}

.kgSuffix{
 flex:none!important;
 font-size:12.5px!important;
 font-weight:750!important;
 line-height:1!important;
}

/* 右側：未回収、問題あり、備考も大きく */
.paperRightLine{
 font-size:11.3px!important;
 line-height:1.35!important;
 padding:1mm 0!important;
 font-weight:500!important;
}
.paperRightLine .paperInput,
.paperRightLine .paperSelect{
 font-size:11.3px!important;
}

.paperRightLine.paperRemarks{
 height:86mm!important;
 margin-top:.7mm!important;
}
.paperAreaText{
 height:80mm!important;
 min-height:80mm!important;
 padding:1.7mm!important;
 font-size:12.2px!important;
 line-height:1.45!important;
 font-weight:600!important;
 color:#1f3444!important;
}

/* 正味重量 */
.paperNet{
 padding:1.1mm 1.7mm!important;
 font-size:13px!important;
 font-weight:800!important;
}
#reportNetWeight{
 font-size:17px!important;
 font-weight:850!important;
}

/* 下部 */
.paperBottom{
 font-size:10.7px!important;
 margin-top:.6mm!important;
}
.paperBottom td{
 font-size:10.7px!important;
 height:7mm!important;
 padding:.8mm 1.1mm!important;
}
.paperBottom .paperInput,
.paperBottom .paperSelect{
 font-size:10.7px!important;
 min-height:17px!important;
}
.paperCaption{
 font-size:8.5px!important;
}

/* 画面上の補足 */
.reportEditNote{
 font-size:11px!important;
 line-height:1.4!important;
 padding:6px 9px!important;
}

/* 印刷時も極端に小さく戻さない */
@media print{
 @page{
  size:JIS-B5 portrait!important;
  margin:1.5mm!important;
 }
 html,body{
  width:182mm!important;
  height:257mm!important;
 }
 .b5Sheet{
  width:179mm!important;
  height:254mm!important;
  min-height:254mm!important;
  max-height:254mm!important;
  padding:.8mm 1.6mm!important;
  margin:0!important;
 }
 .paperTitleBar .titleText{font-size:18px!important}
 .paperTitleBar .headField,
 .paperTitleBar .paperInput{font-size:10.8px!important}

 .paperHeaderTable,
 .paperHeaderTable td,
 .paperHeaderTable th{font-size:10.7px!important}
 .paperInput,.paperSelect{font-size:10.7px!important}
 .paperInline{font-size:10.3px!important}

 .kgHeader{font-size:11.7px!important}
 .weightSource{font-size:10px!important}
 .paperKgInput{font-size:14.5px!important}
 .kgSuffix{font-size:11.5px!important}

 .paperRightLine{font-size:10.6px!important}
 .paperAreaText{font-size:11.3px!important}
 .paperNet{font-size:12px!important}
 #reportNetWeight{font-size:15.5px!important}

 .paperBottom,
 .paperBottom td{font-size:9.9px!important}
 .reportEditNote{display:none!important}
}


/* ===== v32 report typography balance ===== */

/* ---- 固定表示の文字は基本すべて同じ太さ ---- */
.b5Sheet,
.paperHeaderTable,
.paperHeaderTable td,
.paperHeaderTable th,
.paperInline,
.paperRightLine,
.paperBottom,
.paperBottom td,
.kgHeader,
.weightSource,
.paperCaption{
 font-weight:500!important;
}

/* タイトルだけは見出しとして強調 */
.paperTitleBar .titleText{
 font-size:19px!important;
 font-weight:800!important;
}
.paperTitleBar .diamond{
 font-weight:700!important;
}

/* 担当者・同乗者などの固定ラベルは統一 */
.paperTitleBar .headField{
 font-size:11.5px!important;
 font-weight:500!important;
}

/* ---- 入力・自動反映される部分は少し目立たせる ---- */
.paperInput,
.paperSelect{
 font-weight:700!important;
}

/* 車両番号など strong で入る可変値 */
.paperHeaderTable strong:not(.reportDateMain){
 font-weight:700!important;
}

/* ---- 日付：さらに大きく ---- */
.reportDateMain{
 display:inline-block!important;
 font-size:15px!important;
 line-height:1.05!important;
 font-weight:750!important;
 letter-spacing:.1px!important;
}

/* 上半分の固定文字サイズ */
.paperHeaderTable,
.paperHeaderTable td,
.paperHeaderTable th{
 font-size:11.6px!important;
}
.paperInline{
 font-size:11.1px!important;
}

/* ---- 重量欄 ---- */
.kgHeader{
 font-size:12px!important;
 font-weight:500!important;
}

/* 場所・時刻は可変情報なので少しだけ強調。ただし重量より控えめ */
.weightSource{
 font-size:11px!important;
 font-weight:650!important;
 line-height:1.12!important;
}

/* 重量数字をさらに大きく */
.paperKgInput{
 font-size:19px!important;
 line-height:1!important;
 font-weight:800!important;
 min-height:22px!important;
}

/* kg は数字より一段控えめ */
.kgSuffix{
 font-size:13.5px!important;
 font-weight:600!important;
}

/* 正味重量も重要なので拡大 */
.paperNet{
 font-size:13px!important;
 font-weight:500!important;
}
#reportNetWeight{
 font-size:19px!important;
 font-weight:800!important;
}

/* 未回収・問題あり・備考は可変内容として少し目立たせる */
.paperAreaText{
 font-size:12.3px!important;
 font-weight:650!important;
}

/* 固定説明文の太字乱れを抑える */
.paperRightLine{
 font-size:11.3px!important;
 font-weight:500!important;
}
.paperBottom,
.paperBottom td{
 font-size:10.7px!important;
 font-weight:500!important;
}

/* 入力値は下部でも統一して少し強調 */
.paperBottom .paperInput,
.paperBottom .paperSelect,
.paperRightLine .paperInput,
.paperRightLine .paperSelect{
 font-weight:700!important;
}

/* 印刷時も太さのルールを維持 */
@media print{
 .reportDateMain{
  font-size:13.8px!important;
  font-weight:750!important;
 }
 .paperKgInput{
  font-size:17px!important;
  font-weight:800!important;
 }
 #reportNetWeight{
  font-size:17px!important;
  font-weight:800!important;
 }
 .weightSource{
  font-size:10.3px!important;
  font-weight:650!important;
 }
 .kgSuffix{
  font-size:12px!important;
  font-weight:600!important;
 }

 .paperHeaderTable,
 .paperHeaderTable td,
 .paperHeaderTable th,
 .paperInline,
 .paperRightLine,
 .paperBottom,
 .paperBottom td,
 .kgHeader,
 .paperCaption{
  font-weight:500!important;
 }

 .paperInput,
 .paperSelect{
  font-weight:700!important;
 }
}


/* ===== v33 custom date selector ===== */
.customDateWrap{
 display:inline-flex!important;
 align-items:center!important;
 gap:6px!important;
 white-space:nowrap!important;
}
.customDateLabel{
 font-size:11px!important;
 font-weight:850!important;
 color:#526675!important;
}
.customDatePicker{
 position:relative!important;
 display:inline-flex!important;
 align-items:center!important;
 justify-content:space-between!important;
 min-width:132px!important;
 height:34px!important;
 padding:0 10px!important;
 border:1px solid #c7d0d9!important;
 border-radius:8px!important;
 background:#fff!important;
 color:#233f56!important;
 font-size:12px!important;
 font-weight:850!important;
 box-sizing:border-box!important;
 cursor:pointer!important;
}
#historyDateDisplay{
 flex:1!important;
 text-align:left!important;
 pointer-events:none!important;
}
.customDateArrow{
 font-size:8px!important;
 color:#71808d!important;
 margin-left:9px!important;
 pointer-events:none!important;
}
.historyDateNative{
 position:absolute!important;
 inset:0!important;
 width:100%!important;
 height:100%!important;
 opacity:0!important;
 cursor:pointer!important;
 z-index:2!important;
}
.historyDateNative::-webkit-calendar-picker-indicator{
 position:absolute!important;
 inset:0!important;
 width:100%!important;
 height:100%!important;
 opacity:0!important;
 cursor:pointer!important;
}


/* ===== v34 live location + live route navigation ===== */
.routeLiveMapShell{background:#dce5eb!important}
#routeLiveMap{
 position:absolute;inset:0;z-index:1;background:#dce5eb
}
.routeMapFallback{
 z-index:1!important
}
.routeNavInfoCard{
 z-index:510!important;
 max-width:64%!important
}
.routeNavSummary{
 margin-top:7px;
 padding-top:7px;
 border-top:1px solid #e2e7eb;
 font-size:12px!important;
 font-weight:850;
 color:#24577f
}
.routeLiveBadge{
 background:#1e6b47e8!important
}
.routeNavControls{
 position:absolute;
 left:15px;
 bottom:15px;
 z-index:520;
 display:flex;
 align-items:center;
 gap:8px
}
.routeNavControls .googleNavFloat{
 position:static!important;
 left:auto!important;
 bottom:auto!important
}
.routeNavControl{
 border:0;
 background:#fff;
 color:#244b6e;
 border-radius:10px;
 padding:12px 14px;
 font-weight:950;
 box-shadow:0 4px 15px #0003;
 cursor:pointer
}
.routeNavLocationStatus{
 position:absolute;
 right:14px;
 bottom:15px;
 z-index:515;
 background:#fffffff0;
 color:#566b7c;
 border:1px solid #d5dfe6;
 border-radius:8px;
 padding:7px 9px;
 font-size:10px;
 font-weight:850;
 max-width:205px
}
.routeNavLocationStatus.ok{
 color:#236545;
 border-color:#b9d8c6;
 background:#f2fbf5f2
}
.routeNavLocationStatus.warn{
 color:#93601d;
 border-color:#e4c99f;
 background:#fff9eef2
}
.routeNavLocationStatus.error{
 color:#a13d38;
 border-color:#e0b5b2;
 background:#fff3f2f2
}

.currentLocationIcon{
 background:transparent!important;
 border:0!important
}
.liveCurrentMarker{
 position:relative;
 width:28px;height:28px
}
.liveCurrentCore{
 position:absolute;
 left:5px;top:5px;
 width:18px;height:18px;
 border-radius:50%;
 background:#2672e8;
 border:4px solid #fff;
 box-shadow:0 0 0 2px #2672e8,0 2px 9px #0005;
 box-sizing:border-box
}
.liveHeading{
 position:absolute;
 left:9px;
 top:-8px;
 width:0;height:0;
 border-left:5px solid transparent;
 border-right:5px solid transparent;
 border-bottom:13px solid #2672e8;
 transform-origin:5px 22px;
 filter:drop-shadow(0 1px 1px #fff);
 display:none
}
.liveHeading.show{display:block}
.routeDestinationIcon{
 background:transparent!important;border:0!important
}
.routeDestinationPin{
 width:29px;height:29px;
 border-radius:50% 50% 50% 0;
 background:#d94138;
 border:4px solid #fff;
 transform:rotate(-45deg);
 box-shadow:0 2px 8px #0005;
 position:relative
}
.routeDestinationPin::after{
 content:"";
 width:7px;height:7px;
 background:#fff;
 border-radius:50%;
 position:absolute;
 left:7px;top:7px
}

.driverMapLocationControls{
 position:absolute;
 right:12px;
 bottom:12px;
 z-index:570;
 display:flex;
 gap:7px
}
.driverLocationBtn{
 border:1px solid #d1dce4;
 background:#fff;
 color:#284b67;
 border-radius:9px;
 padding:9px 11px;
 font-size:10px;
 font-weight:950;
 box-shadow:0 3px 12px #0002;
 cursor:pointer
}
.driverLocationBtn.active{
 background:#e9f2ff;
 border-color:#98badb;
 color:#165a96
}
.driverLocationBtn.primaryLoc{
 background:#1e5f98;
 color:#fff;
 border-color:#1e5f98
}
.driverMapLocationStatus{
 position:absolute;
 right:12px;
 bottom:54px;
 z-index:568;
 background:#fffffff0;
 border:1px solid #d6dfe6;
 border-radius:8px;
 padding:6px 8px;
 font-size:9px;
 font-weight:850;
 color:#627484;
 pointer-events:none
}
.driverMapLocationStatus.ok{color:#286648;border-color:#bcd8c8;background:#f3fbf6f0}
.driverMapLocationStatus.error{color:#a03e39;border-color:#e1b8b5;background:#fff4f3f0}

@media(max-width:900px){
 .routeNavInfoCard{max-width:75%!important}
 .routeNavControls{left:10px;bottom:10px;gap:5px}
 .routeNavControl,.routeNavControls .googleNavFloat{padding:9px 10px!important;font-size:11px!important}
 .routeNavLocationStatus{right:10px;bottom:54px;max-width:180px}
 .driverMapLocationControls{right:8px;bottom:8px}
 .driverMapLocationStatus{right:8px;bottom:47px}
}


/* ===== v35 map cleanup + robust route line ===== */

/* Leaflet標準のズーム/帰属コントロールはJS側でも無効化。
   もし残った場合も表示しない。 */
.routeLiveMapShell .leaflet-control-zoom,
.driverMapArea .leaflet-control-zoom,
.routeLiveMapShell .leaflet-control-attribution,
.driverMapArea .leaflet-control-attribution{
 display:none!important;
}

/* 左上の地点名カードは廃止。距離/時間だけを小さく中央上へ */
.routeNavInfoCard,
.routeLiveBadge{
 display:none!important;
}
.routeNavSummaryPill{
 position:absolute;
 z-index:540;
 left:50%;
 top:12px;
 transform:translateX(-50%);
 min-width:185px;
 max-width:64%;
 padding:8px 13px;
 border-radius:999px;
 background:#fffffff2;
 border:1px solid #d4dee6;
 box-shadow:0 3px 12px #0002;
 text-align:center;
 color:#244d70;
 font-size:11px;
 font-weight:900;
 white-space:nowrap;
 overflow:hidden;
 text-overflow:ellipsis;
 pointer-events:none;
}

/* ±186m などの位置精度テキストは常時表示しない */
.routeNavLocationStatus,
.driverMapLocationStatus{
 display:none!important;
}

/* OSMクレジットは標準の長い表示を消し、必要最小限だけ残す */
.mapCreditTiny{
 position:absolute;
 z-index:545;
 font-size:7px;
 line-height:1;
 color:#657785;
 background:#ffffffcc;
 padding:3px 4px;
 border-radius:4px;
 text-decoration:none;
 opacity:.78;
}
.mapCreditTiny:hover{opacity:1}
.routeMapCredit{right:7px;top:7px}
.driverMapCredit{left:7px;top:7px}

/* 推奨ルート操作 */
.routeNavControls{
 left:12px!important;
 bottom:12px!important;
 gap:6px!important;
}
.routeNavControl{
 padding:10px 11px!important;
 font-size:10px!important;
}

/* ルート線を道路上でかなり見やすく */
.leaflet-route-casing-pane{
 z-index:425!important;
}
.leaflet-route-main-pane{
 z-index:430!important;
}
.leaflet-route-fallback-pane{
 z-index:420!important;
}

/* マップモードの凡例も少し控えめ */
.driverMapLegend{
 opacity:.9;
}

/* スマホ */
@media(max-width:760px){
 .routeNavSummaryPill{
  top:7px;
  min-width:150px;
  max-width:72%;
  font-size:10px;
  padding:7px 10px;
 }
 .mapCreditTiny{font-size:6px}
}


/* ===== v36 route UI + Leaflet SVG fix ===== */

/* 推奨ルートは 地図 / ナビ操作 / 進捗 の3段 */
.leftStack{
 grid-template-rows:minmax(0,1fr) 52px 106px!important;
}

/* ナビ操作を地図上から完全に外す */
.routeNavToolbar{
 min-width:0;
 height:52px;
 display:flex;
 align-items:center;
 gap:7px;
 padding:6px 10px;
 border-top:1px solid #d4dce4;
 background:#fff;
 overflow:hidden;
}
.routeNavToolbar .routeNavControl,
.routeNavGoogleBtn{
 position:static!important;
 flex:none;
 border:1px solid #c8d4dd;
 border-radius:9px;
 padding:9px 11px;
 font-size:10px;
 line-height:1.1;
 font-weight:900;
 cursor:pointer;
 white-space:nowrap;
 box-shadow:none!important;
}
.routeNavToolbar .routeNavControl{
 background:#f7fafc;
 color:#294c67;
}
.routeNavGoogleBtn{
 background:#1769d2;
 color:#fff;
 border-color:#1769d2;
}
.routeMapAttribution{
 margin-left:auto;
 flex:none;
 font-size:7px;
 color:#87939d;
 white-space:nowrap;
}

/* 以前の地図上ボタンCSSを無効 */
.routeNavControls,
.routeMapCredit,
.driverMapCredit{
 display:none!important;
}

/* マップモードの帰属表示はチェックリスト最下部へ */
.driverMapAttribution{
 flex:none;
 border-top:1px solid #edf0f2;
 padding:4px 8px;
 text-align:right;
 font-size:7px;
 color:#929da6;
 background:#fafbfc;
}

/*
  元の .map svg { width:100%; height:100% } が
  Leafletのルート線SVGまで壊していたため明示的に解除。
*/
#routeLiveMap.leaflet-container .leaflet-overlay-pane svg,
#routeLiveMap .leaflet-overlay-pane svg,
#routeLiveMap .leaflet-pane > svg{
 width:auto!important;
 height:auto!important;
 max-width:none!important;
 max-height:none!important;
 display:block!important;
 overflow:visible!important;
}

/* 道路ルート線のSVGを確実に表示 */
#routeLiveMap .leaflet-overlay-pane{
 z-index:400!important;
}
#routeLiveMap .leaflet-marker-pane{
 z-index:600!important;
}

/* ルート取得中の直線もはっきり見せる */
.routeNavSummaryPill{
 z-index:650!important;
}

/* 小画面でも操作欄と回収ボタンを絶対に重ねない */
@media(max-width:900px){
 .leftStack{
  display:flex!important;
  flex-direction:column!important;
 }
 .leftStack>.map{
  height:39vh!important;
  min-height:280px!important;
  flex:none!important;
 }
 .routeNavToolbar{
  height:auto!important;
  min-height:48px!important;
  flex-wrap:wrap!important;
  padding:6px 8px!important;
 }
 .routeNavToolbar .routeNavControl,
 .routeNavGoogleBtn{
  font-size:10px!important;
  padding:8px 9px!important;
 }
 .routeMapAttribution{
  width:100%;
  text-align:right;
  margin-left:0;
  line-height:1;
 }
}

/* 以前の絶対配置ルールを完全に打ち消す */
#googleNavBtn{
 left:auto!important;
 right:auto!important;
 top:auto!important;
 bottom:auto!important;
}


/* ===== v37: driver buttons + more map space ===== */

.leftStack{
 position:relative!important;
 z-index:1!important;
 grid-template-rows:minmax(0,1fr) 44px 72px!important;
}
.details{
 position:relative!important;
 z-index:10!important;
 isolation:isolate!important;
 pointer-events:auto!important;
}
.details .actions{
 position:relative!important;
 z-index:50!important;
 pointer-events:auto!important;
 background:#fff!important;
}
.details .actions .btn,
#doneBtn,
#badBtn,
#prevBtn{
 position:relative!important;
 z-index:51!important;
 pointer-events:auto!important;
 touch-action:manipulation!important;
}

.routeLiveMapShell{
 isolation:isolate!important;
}
#routeLiveMap{
 z-index:1!important;
 overflow:hidden!important;
}

/* ナビ操作バー 52px -> 44px */
.routeNavToolbar{
 height:44px!important;
 min-height:44px!important;
 padding:4px 8px!important;
 gap:5px!important;
}
.routeNavToolbar .routeNavControl,
.routeNavGoogleBtn{
 padding:7px 9px!important;
 font-size:9.5px!important;
 border-radius:8px!important;
}
.routeMapAttribution{
 font-size:6.5px!important;
}

/* 進捗 106px -> 72px */
.leftStack>.progressPanel{
 height:72px!important;
 min-height:72px!important;
 padding:2px 8px 4px!important;
 gap:6px!important;
}
.leftStack>.progressPanel .progressLabel{
 min-width:30px!important;
 font-size:11px!important;
}
.leftStack>.progressPanel .progressWrap{
 height:64px!important;
}
.leftStack>.progressPanel .progressTrack,
.leftStack>.progressPanel .progressFill{
 top:23px!important;
 height:3px!important;
 left:9px!important;
}
.leftStack>.progressPanel .pnode{
 min-width:52px!important;
}
.leftStack>.progressPanel .pdot{
 width:23px!important;
 height:23px!important;
 margin:12px auto 2px!important;
 border-width:3px!important;
 font-size:10px!important;
}
.leftStack>.progressPanel .pnode.current .pdot{
 width:34px!important;
 height:34px!important;
 margin-top:6px!important;
 font-size:14px!important;
 box-shadow:0 0 0 4px #dce8ff!important;
}
.leftStack>.progressPanel .pname{
 font-size:9px!important;
 line-height:1.05!important;
}
.leftStack>.progressPanel .pnode.current .pname{
 font-size:12px!important;
}

#doneBtn:not(:disabled){
 opacity:1!important;
 cursor:pointer!important;
}

/* iPad横幅付近はさらに少し圧縮 */
@media(min-width:901px) and (max-width:1180px){
 .leftStack{
  grid-template-rows:minmax(0,1fr) 42px 68px!important;
 }
 .routeNavToolbar{
  height:42px!important;
  min-height:42px!important;
 }
 .leftStack>.progressPanel{
  height:68px!important;
  min-height:68px!important;
 }
 .routeNavToolbar .routeNavControl,
 .routeNavGoogleBtn{
  padding:6px 7px!important;
  font-size:9px!important;
 }
}

@media(max-width:900px){
 .leftStack{
  display:flex!important;
  flex-direction:column!important;
 }
 .leftStack>.progressPanel{
  display:none!important;
 }
 .routeNavToolbar{
  min-height:42px!important;
  height:auto!important;
 }
}


/* ===== v38 operation fix ===== */
.details .actions{
 align-items:stretch!important;
}
.details .actions .btn{
 min-height:50px!important;
 height:50px!important;
 max-height:50px!important;
 padding:8px 9px!important;
 line-height:1.15!important;
 white-space:nowrap!important;
 overflow:hidden!important;
 text-overflow:ellipsis!important;
}
#doneBtn{
 font-size:15px!important;
}
@media(max-width:1100px) and (min-width:901px){
 .details .actions{
  grid-template-columns:.9fr 1fr 1.15fr!important;
  gap:7px!important;
 }
 .details .actions .btn{
  font-size:14px!important;
  padding:7px 6px!important;
 }
 #doneBtn{font-size:13.5px!important}
}


/* ===== v39: 問題あり = 処理済み ===== */
.driverProblemFilterBtn{
 border:1px solid #e1b86f;
 background:#fff8e9;
 color:#966018;
 border-radius:9px;
 padding:8px 10px;
 font-size:10px;
 font-weight:900;
 white-space:nowrap;
 cursor:pointer;
 transition:.12s ease;
}
.driverProblemFilterBtn span{
 display:inline-flex;
 align-items:center;
 justify-content:center;
 min-width:20px;
 height:19px;
 margin-left:3px;
 padding:0 5px;
 border-radius:999px;
 background:#f1ce8e;
 color:#75470d;
 font-size:9px;
 font-weight:950;
 box-sizing:border-box;
}
.driverProblemFilterBtn.active{
 background:#e88a17;
 border-color:#d77608;
 color:#fff;
 box-shadow:0 2px 8px #a8622433;
}
.driverProblemFilterBtn.active span{
 background:#fff;
 color:#ad5e09;
}
@media(max-width:900px){
 .driverProblemFilterBtn{
  padding:7px 8px;
  font-size:9.5px;
 }
}


/* ===== v40: 高頻度GPS / 取消 / 履歴から直接戻る ===== */
.cancelPointBtn{
 background:#fff5e8!important;
 border-color:#e3b773!important;
 color:#9a5a0d!important;
}
.cancelPointBtn:hover{
 background:#ffedcf!important;
}

/* 既存3ボタンのままなので、取消機能を増やしても縦に伸ばさない */
.actions .cancelPointBtn,
.driverMapDetailActions .cancelPointBtn{
 min-height:0!important;
}

/* 履歴・日報からワンタップで現場へ戻る */
.reportModeReturn{
 border:1px solid #c9d5df;
 border-radius:8px;
 padding:8px 11px;
 font-weight:900;
 font-size:11px;
 cursor:pointer;
 white-space:nowrap;
}
.reportModeReturn.route{
 background:#edf4ff;
 color:#245b98;
 border-color:#b9cce1;
}
.reportModeReturn.map{
 background:#eef8f3;
 color:#28704b;
 border-color:#bdd9ca;
}

.cancelText{
 color:#8a5c9f;
 font-weight:900;
}

@media(max-width:900px){
 .reportModeReturn{
  flex:1;
  min-width:130px;
  text-align:center;
 }
}


/* ===== v41: 保存強化・2日継続・オフライン・終了チェック ===== */
.syncHeader{font-size:8px;color:#cfdae4;line-height:1.05;white-space:nowrap}
.syncHeader.pending{color:#ffd489;font-weight:900}
.syncHeader.local{color:#bfe8cc}
.syncHeader.error{color:#ffc1be;font-weight:900}

.gpsAccuracyWarning{
 position:fixed;top:76px;left:50%;transform:translateX(-50%);
 z-index:1700;display:none;padding:7px 12px;border-radius:999px;
 background:#fff4d8f5;border:1px solid #e2b85e;box-shadow:0 3px 12px #0002;
 color:#8b5c13;font-size:10px;font-weight:950;pointer-events:none
}
.gpsAccuracyWarning.show{display:block}
.gpsAccuracyWarning.severe{background:#fff0eef6;border-color:#dc8c84;color:#9e4139}

.drawerUtility{padding:9px 12px 0}
.drawerUtility button{
 width:100%;border:1px solid #cbd8e2;background:#f5f9fc;color:#274b68;
 border-radius:9px;padding:10px 12px;font-weight:900;cursor:pointer
}

.shiftCheckBox,.progressResetBox{max-width:540px}
.modalLead{color:#6b7985;font-size:12px;margin-top:-4px}
.shiftCheckSummary{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:14px 0 10px}
.shiftCheckItem{border:1px solid #dce4ea;border-radius:10px;padding:11px 12px;background:#fafcfd}
.shiftCheckItem span{display:block;font-size:10px;color:#788690;font-weight:850}
.shiftCheckItem strong{display:block;font-size:22px;color:#233f59;margin-top:2px}
.shiftCheckItem.warn strong{color:#ad6817}
.shiftCheckNotice{border-radius:9px;padding:10px 12px;background:#f1f8f4;color:#2d6949;font-size:11px;font-weight:800}
.shiftCheckNotice.warn{background:#fff6e8;color:#8e5b18}

.dangerSettings{margin-top:24px;border-top:1px solid #e5e8eb;padding-top:13px}
.dangerSettings summary{cursor:pointer;color:#8a6c6a;font-size:11px;font-weight:900;user-select:none}
.dangerSettingsBody{margin-top:10px;border:1px solid #edd1ce;background:#fff8f7;border-radius:10px;padding:13px}
.dangerSettingsBody h4{margin:0 0 5px;color:#9c4942}
.dangerSettingsBody p{margin:0 0 10px;color:#805f5c;font-size:11px}
.smallBtn.danger{background:#a7443c;color:#fff;border-color:#a7443c}
.resetDangerText{color:#8a5551;background:#fff5f4;border:1px solid #eed0cc;border-radius:9px;padding:10px;font-size:11px}
.resetPreview{margin-top:8px;padding:9px 11px;border-radius:8px;background:#f6f8fa;color:#5b6974;font-size:11px}

.runCarryBadge{
 display:inline-block;margin-left:5px;border-radius:999px;padding:2px 5px;
 background:#e9f2ff;color:#35658f;font-size:7px;font-weight:900;vertical-align:middle
}
@media(max-width:900px){
 .gpsAccuracyWarning{top:66px;max-width:88vw;text-align:center}
 .shiftCheckSummary{grid-template-columns:1fr 1fr}
}


/* ===== v42: GPS表示を地図内だけに / 直近操作 / 画面保持 ===== */
.gpsAccuracyWarning{display:none!important}

/* 地図の左上：直近3操作。上部のルート選択には絶対かぶらない */
.mapRecentActions{
 position:absolute;
 left:11px;
 top:11px;
 z-index:575;
 display:none;
 width:min(255px,42%);
 background:#fffffff0;
 border:1px solid #d5dee5;
 border-radius:9px;
 padding:6px 8px;
 box-shadow:0 3px 12px #0002;
 pointer-events:none;
 backdrop-filter:blur(2px);
}
.mapRecentActions.show{display:block}
.mapRecentTitle{
 font-size:7.5px;
 font-weight:950;
 color:#7a8994;
 margin-bottom:3px;
}
.mapRecentRow{
 display:grid;
 grid-template-columns:34px 1fr auto;
 gap:5px;
 align-items:center;
 min-width:0;
 padding:2px 0;
 font-size:8.5px;
 line-height:1.15;
}
.mapRecentRow+.mapRecentRow{border-top:1px solid #edf0f2}
.mapRecentTime{font-weight:950;color:#315b7a}
.mapRecentName{
 overflow:hidden;
 text-overflow:ellipsis;
 white-space:nowrap;
 color:#384e60;
 font-weight:850;
}
.mapRecentState{
 border-radius:999px;
 padding:2px 5px;
 font-size:7px;
 font-weight:950;
 white-space:nowrap;
 background:#eef2f5;
 color:#68747d;
}
.mapRecentState.done{background:#e9f5ec;color:#277743}
.mapRecentState.bad{background:#fff1dc;color:#a46412}
.mapRecentState.cancel{background:#f3ebf7;color:#80508e}

/* 地図の右上：GPSが悪い状態が続いた時だけ小さく表示 */
.mapGpsQuality{
 position:absolute;
 right:11px;
 top:11px;
 z-index:576;
 display:none;
 max-width:170px;
 padding:5px 7px;
 border-radius:8px;
 background:#fff8eaf2;
 border:1px solid #e5c487;
 color:#8d5a18;
 box-shadow:0 2px 9px #0002;
 font-size:8.5px;
 line-height:1.15;
 font-weight:950;
 pointer-events:none;
 text-align:center;
}
.mapGpsQuality.show{display:block}
.mapGpsQuality.severe{
 background:#fff1eff3;
 border-color:#dfaaa5;
 color:#9d423b;
}

/* ルート中央上の距離表示とぶつからないよう、右上に固定 */
.routeLiveMapShell .mapGpsQuality{right:11px;top:11px}
.driverMapArea .mapGpsQuality{right:11px;top:11px}

/* ドライバー詳細カードを開いていても最近操作は上に残す */
.driverMapDetail.show~.mapRecentActions{display:none}

/* 小画面ではさらに小さく */
@media(max-width:900px){
 .mapRecentActions{
  width:min(220px,46%);
  left:8px;
  top:8px;
  padding:5px 6px;
 }
 .mapRecentRow{grid-template-columns:30px 1fr auto;font-size:7.8px}
 .mapGpsQuality{right:8px;top:8px;font-size:8px;max-width:145px}
}


/* ===== v43: 直近操作を地図外へ / 注意事項全画面＋ドライバー追記 ===== */
.recentActionsDock{margin:10px 0 2px}
.details .mapRecentActions,
.driverChecklistHead .mapRecentActions{
 position:static!important;left:auto!important;top:auto!important;right:auto!important;bottom:auto!important;
 width:100%!important;max-width:none!important;box-sizing:border-box;
 margin:0;background:#f7fafcf7;border-color:#d9e2e8;box-shadow:none;backdrop-filter:none;
 pointer-events:auto;
}
.details .mapRecentActions.show{display:block}
.driverChecklistHead .mapRecentActions.show{display:block;margin-top:8px}
.mapRecentTitle{font-size:9px;margin-bottom:4px}
.mapRecentRow{grid-template-columns:62px minmax(0,1fr) auto;gap:7px;padding:3px 0;font-size:9.5px}
.mapRecentTime{font-variant-numeric:tabular-nums;white-space:nowrap}
.driverChecklistHead .mapRecentRow{grid-template-columns:58px minmax(0,1fr) auto;font-size:8.5px;gap:5px}
.driverChecklistHead .mapRecentTitle{font-size:8px}
.tapHint{font-size:9px;color:#7a8790;font-weight:850;margin-left:6px}
.noteTapTarget,.driverMapDetailNote{cursor:pointer;position:relative;padding-right:34px!important}
.noteTapTarget:after,.driverMapDetailNote:after{
 content:"↗";position:absolute;right:10px;top:50%;transform:translateY(-50%);
 width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
 background:#ffffffb8;color:#7b5c2b;font-size:11px;font-weight:950;
}
.driverCommentInline{margin-top:8px;padding-top:7px;border-top:1px dashed #d8bc8f;color:#6b542f;font-size:.88em}
.driverCommentInline strong{display:block;color:#8b5e20;margin-bottom:2px}
.driverCommentInline .driverCommentMeta{font-size:.82em;color:#8d7d68;margin-top:2px}

.noteViewer{
 position:fixed;inset:0;background:#071522ef;z-index:1450;display:none;
 align-items:center;justify-content:center;padding:28px;
}
.noteViewer.show{display:flex}
.noteViewerClose{
 position:absolute;right:20px;top:18px;width:48px;height:48px;border-radius:50%;
 border:1px solid #ffffff55;background:#fff;color:#173654;font-size:26px;font-weight:900;cursor:pointer;z-index:2
}
.noteViewerCard{
 width:min(860px,94vw);max-height:88vh;overflow:auto;background:#fff;border-radius:18px;
 padding:24px 26px 28px;box-shadow:0 15px 60px #0009;
}
.noteViewerHead{display:flex;align-items:flex-start;gap:16px;border-bottom:1px solid #e1e7ec;padding-bottom:15px}
.noteViewerHead>div{flex:1;min-width:0}
.noteViewerEyebrow{font-size:11px;color:#9a651b;font-weight:950}
.noteViewerHead h2{margin:4px 0 0;color:#173654;font-size:27px}
.noteViewerEditBtn{
 border:1px solid #bd8a3d;background:#fff8e9;color:#8d5a18;border-radius:10px;
 padding:10px 13px;font-weight:950;cursor:pointer;white-space:nowrap
}
.noteViewerSection{margin-top:18px}
.noteViewerLabel{font-size:11px;color:#71808b;font-weight:950;margin-bottom:7px}
.noteViewerBase{background:#fff8e9;border:1px solid #efd2a2;border-radius:12px;padding:15px 16px;line-height:1.75;color:#55452e;font-size:16px}
.noteViewerComments{display:flex;flex-direction:column;gap:8px}
.noteViewerComment{background:#f5f8fa;border:1px solid #dce4ea;border-radius:11px;padding:11px 13px}
.noteViewerCommentText{color:#344b5e;line-height:1.6;font-size:14px;white-space:pre-wrap;word-break:break-word}
.noteViewerCommentMeta{font-size:9.5px;color:#7b8994;margin-top:5px;font-weight:850}
.noteViewerEmpty{color:#8a969f;background:#f8fafb;border:1px dashed #d6dfe5;border-radius:10px;padding:13px;text-align:center;font-size:12px}
.noteViewerEditor{display:none;margin-top:18px;border-top:1px solid #e1e7ec;padding-top:17px}
.noteViewerEditor.show{display:block}
.noteViewerEditor label{display:block;color:#38546c;font-size:12px;font-weight:950;margin-bottom:7px}
.noteViewerEditor textarea{width:100%;min-height:120px;resize:vertical;border:1px solid #c7d2db;border-radius:11px;padding:12px;font:inherit;line-height:1.6;box-sizing:border-box}
.noteViewerEditorActions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.driverMapParking{cursor:zoom-in}

@media(max-width:900px){
 .recentActionsDock{margin-top:8px}
 .mapRecentRow{grid-template-columns:56px minmax(0,1fr) auto!important;font-size:8.7px!important}
 .noteViewer{padding:14px}
 .noteViewerClose{width:42px;height:42px;right:10px;top:10px}
 .noteViewerCard{width:96vw;max-height:91vh;padding:18px 16px 22px;border-radius:14px}
 .noteViewerHead{padding-right:40px;display:block}
 .noteViewerHead h2{font-size:22px}
 .noteViewerEditBtn{margin-top:11px;width:100%}
 .noteViewerBase{font-size:15px}
}


/* ===== v44: GPS安定化 / 履歴ナビ / 当日回収一覧 / マップ即チェック ===== */
.driverCheckItem{
 grid-template-columns:11px minmax(0,1fr) auto auto;
}
.driverQuickCheck{
 width:36px;height:36px;border-radius:9px;border:1px solid #b9d6c3;
 background:#eef9f2;color:#237348;font-size:18px;font-weight:950;
 display:grid;place-items:center;cursor:pointer;flex:0 0 auto;
}
.driverQuickCheck:hover{background:#dff3e6}
.driverQuickCheck:active{transform:scale(.96)}
.driverQuickCheck.done{background:#e5f3e9;color:#247044;border-color:#c5decf}
.driverQuickCheck.bad{background:#fff3e2;color:#a36513;border-color:#ead0a8}
.driverQuickCheck:disabled{cursor:default;opacity:.8;transform:none}
.driverMapPin.recentDone{
 opacity:1!important;filter:none!important;
 box-shadow:0 0 0 5px #3aa66b55,0 2px 8px #0006!important;
}
.mapGpsQuality.good{
 background:#eef9f2f2;border-color:#a9d5ba;color:#266e48;
}
.reportModeReturns{display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
.dailyDoneCard{background:#fff;border-radius:14px;margin-top:14px;box-shadow:0 3px 14px #18334a10;overflow:hidden}
.dailyDoneHead{padding:13px 16px;border-bottom:1px solid #e3e9ee;display:flex;align-items:center;gap:10px}
.dailyDoneHead strong{font-size:15px;color:#173654;flex:1}.dailyDoneHead span{font-size:10px;color:#75828d;font-weight:850}
.dailyDoneList{max-height:310px;overflow:auto}
.dailyDoneRow{display:grid;grid-template-columns:58px minmax(0,1fr) 90px 90px;gap:9px;align-items:center;padding:9px 16px;border-bottom:1px solid #edf0f2;font-size:11px}
.dailyDoneRow:last-child{border-bottom:0}.dailyDoneTime{font-weight:950;color:#1f5f97;font-variant-numeric:tabular-nums}
.dailyDonePoint strong{display:block;color:#263f55;font-size:12px}.dailyDonePoint span{display:block;color:#7b8792;font-size:9.5px;margin-top:2px}
.dailyDoneRoute,.dailyDoneVehicle{color:#607383;font-weight:850}
@media(max-width:900px){
 .reportModeReturns{width:100%;order:2}
 .reportModeReturns .reportModeReturn{flex:1;min-width:0}
 .dailyDoneRow{grid-template-columns:50px minmax(0,1fr) 72px;padding:9px 11px}
 .dailyDoneVehicle{display:none}
 .driverQuickCheck{width:40px;height:40px}
}


/* ===== v45: map usability / compact history / persistent top mode nav ===== */
#modeSwitchBtn{display:none!important}
.modeTopNav{
 display:flex;align-items:center;gap:4px;padding:3px;border:1px solid #ffffff35;
 border-radius:10px;background:#ffffff10;flex:0 0 auto
}
.modeTopNavBtn{
 border:0;border-radius:7px;padding:8px 10px;background:transparent;color:#dce8f4;
 font-size:11px;font-weight:950;cursor:pointer;white-space:nowrap
}
.modeTopNavBtn:hover{background:#ffffff15}
.modeTopNavBtn.active{background:#fff;color:#12375e;box-shadow:0 2px 7px #0002}
body.adminModeUI .modeTopNav{display:none!important}
#topProgress.mapProgressStrong{
 display:inline-flex;align-items:center;background:#fff;color:#12375e;border:2px solid #7fe0a5;
 border-radius:999px;padding:5px 10px;font-size:15px!important;font-weight:950;
 box-shadow:0 0 0 3px #45c77722;white-space:nowrap
}
.driverToolbarFold{
 border:1px solid #c4d1dc;background:#f6f9fc;color:#35546d;border-radius:8px;
 padding:8px 10px;font-size:10px;font-weight:950;cursor:pointer;white-space:nowrap
}
.driverMapScreen.routeFiltersCollapsed .driverRouteFilters{display:none}
.driverMapScreen.checklistCollapsed .driverMapBody{grid-template-columns:minmax(0,1fr)}
.driverMapScreen.checklistCollapsed .driverChecklist{display:none}
.driverChecklistReopen{
 position:absolute;right:12px;top:12px;z-index:575;display:none;border:1px solid #bacbd9;
 background:#fffffff3;color:#264763;border-radius:9px;padding:9px 11px;font-size:10px;font-weight:950;
 box-shadow:0 3px 12px #0002;cursor:pointer
}
.driverMapScreen.checklistCollapsed .driverChecklistReopen{display:block}
.driverChecklistTitleRow{gap:7px}
.driverChecklistTitleRow strong{flex:1}
.driverChecklistClose{
 margin-left:auto;border:1px solid #d0d9e0;background:#f6f8fa;color:#62717d;border-radius:7px;
 padding:5px 7px;font-size:9px;font-weight:950;cursor:pointer;white-space:nowrap
}
.driverQuickCheck{
 width:auto!important;min-width:54px;height:34px!important;padding:0 8px;border-radius:8px!important;
 font-size:10px!important;font-weight:950!important;letter-spacing:.02em
}
.driverQuickCheck.pending{background:#eaf3ff;color:#1e5d9c;border-color:#b9d1e8}
.driverQuickCheck.pending:hover{background:#dcecff}
.driverQuickCheck.undo{background:#fff4df;color:#9a5b0b;border-color:#e2c28d}
.driverQuickCheck.undo:hover{background:#ffeac5}
.driverQuickCheck.review{background:#fff1dc;color:#9b6113;border-color:#e2c28d}
.driverMapPin.recentDone{
 opacity:.58!important;filter:grayscale(.12)!important;
 box-shadow:0 0 0 4px #3aa66b55,0 2px 7px #0005!important
}
.driverMapPin.recentDone.selected{opacity:1!important;filter:none!important}
.historyDoneLine{align-items:center!important}
.historyDoneLine strong{margin-right:4px}
.historyDoneDetailBtn{
 border:1px solid #bfd0df;background:#eef5fb;color:#275d8a;border-radius:7px;padding:4px 9px;
 font-size:10px;font-weight:950;cursor:pointer;white-space:nowrap
}
.historyDoneDetailBtn.open{background:#173654;color:#fff;border-color:#173654}
.historyDoneDetailPanel{display:none;margin:7px 0 8px 108px;border:1px solid #dce5ec;border-radius:9px;background:#f8fafc;overflow:hidden}
.historyDoneDetailPanel.show{display:block}
.historyDoneDetailRow{display:grid;grid-template-columns:58px minmax(0,1fr);gap:8px;padding:7px 10px;border-bottom:1px solid #e8edf1;font-size:10px}
.historyDoneDetailRow:last-child{border-bottom:0}
.historyDoneDetailRow .time{font-weight:950;color:#1f5f97;font-variant-numeric:tabular-nums}
.historyDoneDetailRow .point{font-weight:850;color:#334e64}
#dailyCompletedList{display:none!important}
@media(max-width:900px){
 .modeTopNav{margin-left:auto;gap:2px;padding:2px}
 .modeTopNavBtn{padding:7px 7px;font-size:9px}
 #topProgress.mapProgressStrong{font-size:12px!important;padding:4px 7px}
 .driverToolbarFold{order:3}
 .historyDoneDetailPanel{margin-left:0}
 .driverChecklistReopen{right:8px;top:8px}
}


/* ===== v46: map top-panel collapse / GPS dock / simple progress ===== */
/* 進捗は元のヘッダー内テキストに戻し、数字を大きく・太く */
#topProgress.mapProgressStrong{
 display:block!important;
 background:transparent!important;
 color:#fff!important;
 border:0!important;
 border-radius:0!important;
 padding:0!important;
 box-shadow:none!important;
 font-size:21px!important;
 font-weight:1000!important;
 line-height:1!important;
 letter-spacing:.01em;
 white-space:nowrap;
}

/* ルート選択だけを畳む旧UIは廃止 */
.driverToolbarFold{display:none!important}
.driverMapScreen.routeFiltersCollapsed .driverRouteFilters{display:flex}

/* 濃紺ヘッダーの下〜地図直前までを丸ごと開閉 */
.driverMapScreen.topControlsCollapsed .driverMapToolbar,
.driverMapScreen.topControlsCollapsed .driverMapStats{display:none!important}
.driverMapScreen.topControlsCollapsed .driverMapBody{height:100%!important}
.driverTopPanelToggle{
 position:absolute;
 top:8px;
 left:50%;
 transform:translateX(-50%);
 z-index:578;
 border:1px solid #b9c9d6;
 background:#fffffff2;
 color:#31516b;
 border-radius:999px;
 padding:6px 12px;
 font-size:9.5px;
 line-height:1;
 font-weight:950;
 box-shadow:0 2px 9px #0002;
 cursor:pointer;
 white-space:nowrap;
}
.driverTopPanelToggle:active{transform:translateX(-50%) scale(.97)}

/* GPS精度は追従ボタンがあった右下へ。現在地ボタンと横並び */
.driverMapLocationControls{
 right:11px!important;
 bottom:11px!important;
 align-items:center!important;
 flex-direction:row!important;
}
.driverGpsQualityDock{
 position:static!important;
 right:auto!important;
 top:auto!important;
 bottom:auto!important;
 left:auto!important;
 display:none;
 max-width:185px!important;
 padding:7px 9px!important;
 font-size:9px!important;
 line-height:1.1!important;
 pointer-events:none;
 box-shadow:0 3px 12px #0002!important;
}
.driverGpsQualityDock.show{display:block!important}
.driverMapArea>.mapGpsQuality{top:auto}

/* チェックリスト再表示は右上のまま。GPSは右下なので重ならない */
.driverChecklistReopen{top:12px!important;right:12px!important}

@media(max-width:900px){
 #topProgress.mapProgressStrong{font-size:17px!important}
 .driverTopPanelToggle{top:7px;font-size:9px;padding:6px 10px}
 .driverMapLocationControls{right:8px!important;bottom:8px!important;gap:5px!important}
 .driverGpsQualityDock{max-width:150px!important;font-size:8px!important;padding:6px 7px!important}
 .driverChecklistReopen{top:8px!important;right:8px!important}
}
@media(max-width:760px){
 .driverMapScreen.topControlsCollapsed{overflow:hidden}
 .driverMapScreen.topControlsCollapsed .driverMapBody{height:100%!important;display:block}
 .driverMapScreen.topControlsCollapsed .driverMapArea{height:100%!important}
}


/* ===== Netlify sync fix / mobile map performance ===== */
.syncHeader{font-size:8.5px!important}
@media(max-width:760px){
 .driverMapPin{box-shadow:0 1px 2px #0005!important}
 .driverMapPin.bad{box-shadow:0 0 0 2px #ef9b2d,0 1px 2px #0004!important}
 .driverMapPin.selected{box-shadow:0 0 0 3px #1119,0 1px 3px #0005!important}
 .marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{box-shadow:none!important}
 .driverMapScreen.checklistCollapsed .driverMapArea{height:calc(100vh - 62px)!important}
}


/* ===== 2026-09-05 統合改善版 ===== */

/* 3つの回り方 */
.modeChoiceGrid{grid-template-columns:repeat(3,minmax(0,1fr))}
.modeChoiceCard.checklistOnlyChoice{
 border-color:#c8d7e5;
 background:linear-gradient(145deg,#ffffff,#f4f8fb);
}
.modeChoiceCard.checklistOnlyChoice:hover{border-color:#557fa4;background:#edf5fb}

/* 管理者ワークスペースはドライバー画面から完全に独立 */
body.adminWorkspace{overflow:hidden}
body.adminWorkspace>header,
body.adminWorkspace>main,
body.adminWorkspace>.mobileProgressPanel,
body.adminWorkspace>.drawer,
body.adminWorkspace>.drawerShade,
body.adminWorkspace>#driverMapScreen,
body.adminWorkspace>#driverChecklistOnlyScreen{
 visibility:hidden!important;
 pointer-events:none!important;
}
body.adminWorkspace .adminScreen.show,
body.adminWorkspace .editorScreen.show,
body.adminWorkspace .reportScreen.show,
body.adminWorkspace .overviewScreen.show{
 visibility:visible!important;
 pointer-events:auto!important;
 inset:0!important;
 top:0!important;
 z-index:2100!important;
}
body.adminWorkspace .adminScreen.show{overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}
body.adminWorkspace .editorScreen.show{overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}
body.adminWorkspace .reportScreen.show{overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}
body.adminWorkspace .overviewScreen.show{overflow:hidden;overscroll-behavior:contain}
body.adminWorkspace .adminTop,
body.adminWorkspace .editorTop,
body.adminWorkspace .reportTop,
body.adminWorkspace .overviewTop{top:0}
body.adminWorkspace .modalShade{z-index:2600!important}
body.adminWorkspace .noteViewer,
body.adminWorkspace .photoViewer{z-index:2700!important}

/* 同期状態 */
.syncHeaderBtn{
 border:0;margin:0;padding:2px 7px;border-radius:999px;cursor:pointer;
 font:inherit;text-align:right;background:transparent
}
.syncHeaderBtn:hover{filter:brightness(.96)}
.syncHeaderBtn:focus-visible{outline:2px solid #fff;outline-offset:2px}
.syncPopover{
 position:fixed;right:12px;top:66px;width:min(330px,calc(100vw - 24px));
 background:#fff;border:1px solid #d5dee6;border-radius:14px;padding:14px;
 box-shadow:0 14px 40px #0d27434d;z-index:2500;display:none;color:#31465a
}
.syncPopover.show{display:block}
.syncPopoverHead{display:flex;align-items:center;border-bottom:1px solid #e7ebef;padding-bottom:9px}
.syncPopoverHead strong{flex:1;color:#173654;font-size:16px}
.syncPopoverHead button{width:32px;height:32px;border:0;border-radius:50%;background:#eef2f5;font-size:20px;cursor:pointer}
.syncPopoverGrid{display:grid;grid-template-columns:78px 1fr;gap:9px 10px;padding:12px 2px;font-size:12px}
.syncPopoverGrid span{color:#778590;font-weight:800}
.syncPopoverGrid strong{color:#263f55}
.syncNowBtn{width:100%}

/* 地図モードの一覧は「地点へ移動」専用 */
.driverCheckItem{grid-template-columns:11px minmax(0,1fr) auto auto}
.driverMapJumpBtn{
 border:1px solid #b9ccdc;background:#f3f8fc;color:#315f83;border-radius:9px;
 padding:8px 10px;font-weight:950;cursor:pointer;white-space:nowrap
}
.driverMapJumpBtn:hover{background:#e7f2fa}

/* チェックリストだけで回るモード */
.driverChecklistOnlyScreen{
 position:fixed;inset:70px 0 0;background:#eef3f7;z-index:820;display:none;overflow:hidden
}
.driverChecklistOnlyScreen.show{display:flex;flex-direction:column}
.checkOnlyTop{
 flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:12px 18px;background:#fff;
 border-bottom:1px solid #dce4ea;box-shadow:0 2px 8px #18334a10
}
.checkOnlyTitle{flex:1;min-width:0}
.checkOnlyTitle h2{margin:1px 0 0;color:#173654;font-size:22px}
.checkOnlyTitle>span{display:block;margin-top:2px;color:#71808b;font-size:11px;font-weight:850}
.checkOnlyControls{
 flex:0 0 auto;display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:10px 18px;
 background:#f9fbfc;border-bottom:1px solid #dce4ea
}
.checkOnlyRouteFilters{display:flex;gap:5px}
.checkOnlyRouteChip{
 min-width:42px;border:1px solid #c9d6e1;background:#fff;color:#3b5368;border-radius:9px;
 padding:8px 10px;font-weight:950;cursor:pointer
}
.checkOnlyRouteChip.active{background:#173654;color:#fff;border-color:#173654}
.checkOnlyRouteChip.routeA.active{background:#2f6fbd}.checkOnlyRouteChip.routeB.active{background:#7a5bb3}
.checkOnlyRouteChip.routeC.active{background:#2b8b70}.checkOnlyRouteChip.routeD.active{background:#b56a32}
.checkOnlyControls label{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:900;color:#546777}
.checkOnlyControls select,.checkOnlySearchWrap input{
 border:1px solid #c9d4dd;background:#fff;border-radius:9px;padding:8px 10px;font-weight:800;color:#31475b
}
.checkOnlySearchWrap{flex:1;min-width:180px}.checkOnlySearchWrap input{width:100%;box-sizing:border-box}
.checkOnlyIncomplete{padding:7px 9px;border:1px solid #d4dde5;background:#fff;border-radius:9px}
.checkOnlyProblemFilter{
 border:1px solid #e0c08e;background:#fff8e8;color:#8d5b18;border-radius:9px;padding:8px 10px;
 font-weight:950;cursor:pointer
}
.checkOnlyProblemFilter.active{background:#9a5d15;color:#fff;border-color:#9a5d15}
.checkOnlyStats{
 flex:0 0 auto;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:9px 18px
}
.checkOnlyStat{
 background:#fff;border:1px solid #dfe6eb;border-radius:11px;padding:9px 11px;box-shadow:0 2px 8px #18334a0c
}
.checkOnlyStat span{display:block;color:#7a8791;font-size:9px;font-weight:900}
.checkOnlyStat strong{display:block;margin-top:2px;color:#173654;font-size:18px}
.checkOnlyStat.remaining strong{color:#b05d20}
.checkOnlyBody{flex:1;min-height:0;padding:0 18px 18px}
.checkOnlyList{
 height:100%;overflow:auto;background:#fff;border:1px solid #dce4ea;border-radius:14px;
 box-shadow:0 5px 20px #18334a12;overscroll-behavior:contain
}
.checkOnlyRow{
 display:grid;grid-template-columns:8px 56px minmax(0,1fr) auto auto auto;align-items:center;
 gap:9px;min-height:66px;padding:8px 10px 8px 0;border-bottom:1px solid #edf0f3
}
.checkOnlyRow:last-child{border-bottom:0}
.checkOnlyRow.done{background:#f6fbf7}.checkOnlyRow.bad{background:#fffaf1}
.checkOnlyStripe{align-self:stretch;border-radius:0 4px 4px 0}
.checkOnlyNo{
 width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#eef2f5;color:#526776;
 font-size:12px;font-weight:950
}
.checkOnlyRow.done .checkOnlyNo{background:#dff2e5;color:#267243}
.checkOnlyRow.bad .checkOnlyNo{background:#fff0d8;color:#a36112}
.checkOnlyMain{min-width:0}
.checkOnlyMain strong{display:block;color:#273f53;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.checkOnlyMain span{display:block;color:#7b8791;font-size:10px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.checkOnlyState{
 border-radius:999px;padding:5px 8px;font-size:9px;font-weight:950;background:#eef2f5;color:#66747e;white-space:nowrap
}
.checkOnlyState.done{background:#e1f3e6;color:#287444}.checkOnlyState.bad{background:#fff0db;color:#9d6114}
.checkOnlyAction{
 min-width:64px;border:1px solid #bad5c4;background:#ebf8ef;color:#246d43;border-radius:10px;
 padding:10px 10px;font-weight:950;cursor:pointer
}
.checkOnlyAction.cancel{background:#f2f4f6;border-color:#ced6dc;color:#52616e}
.checkOnlyAction.problem{background:#fff6e8;border-color:#e2c28d;color:#915b13}
.checkOnlyDetailBtn{
 border:1px solid #c8d4de;background:#fff;color:#41586b;border-radius:10px;padding:10px 10px;font-weight:900;cursor:pointer
}
.checkOnlyEmpty{padding:30px;text-align:center;color:#7b8790;font-weight:850}
.checkOnlyDetailModal{width:min(720px,94vw)}
.checkOnlyDetailHead{display:flex;align-items:flex-start;gap:10px}.checkOnlyDetailHead>div{flex:1}
.checkOnlyDetailHead h2{margin:2px 0 0}
.checkOnlyDetailMeta{margin-top:8px;color:#6f7e89;font-size:11px;font-weight:850}
.checkOnlyDetailStatus{margin-top:10px;padding:10px 12px;border-radius:10px;background:#f1f4f6;color:#536573;font-weight:950}
.checkOnlyDetailStatus.done{background:#e8f6ec;color:#287342}.checkOnlyDetailStatus.bad{background:#fff2df;color:#956019}
.checkOnlyDetailSection{margin-top:15px}.checkOnlyDetailSection>strong{display:block;margin-bottom:7px;color:#344d61}
.checkOnlyNote{background:#fff8e9;border:1px solid #eed4a9;border-radius:11px;padding:12px;line-height:1.6}
.checkOnlyParking{width:100%;max-height:260px;object-fit:cover;border-radius:11px;border:1px solid #d2dbe2;background:#eef2f5}
.checkOnlyDetailActions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:16px}

/* 画面が小さい時 */
@media(max-width:1000px){
 .modeChoiceGrid{grid-template-columns:1fr}
 .driverChecklistOnlyScreen{inset:62px 0 0}
 .checkOnlyTop{padding:10px 12px}.checkOnlyControls{padding:8px 12px}
 .checkOnlyStats{padding:8px 12px;grid-template-columns:repeat(3,1fr)}
 .checkOnlyBody{padding:0 10px 10px}
 .checkOnlyRow{grid-template-columns:7px 46px minmax(0,1fr) auto auto;gap:6px;padding-right:7px}
 .checkOnlyNo{width:36px;height:36px}
 .checkOnlyState{display:none}
 .checkOnlyAction,.checkOnlyDetailBtn{min-width:56px;padding:10px 7px;font-size:11px}
}
@media(max-width:640px){
 .checkOnlyTop{align-items:flex-start}.checkOnlyTitle h2{font-size:18px}
 .checkOnlyControls{gap:6px}.checkOnlyRouteFilters{width:100%}.checkOnlyRouteChip{flex:1}
 .checkOnlyControls label{flex:0 0 auto}.checkOnlySearchWrap{order:3;flex-basis:100%}
 .checkOnlyStats{grid-template-columns:repeat(3,1fr);gap:5px}
 .checkOnlyStat{padding:7px 8px}.checkOnlyStat strong{font-size:16px}
 .checkOnlyRow{grid-template-columns:6px 40px minmax(0,1fr) 58px 54px;min-height:62px}
 .checkOnlyMain strong{font-size:13px}.checkOnlyMain span{font-size:9px}
 .checkOnlyAction,.checkOnlyDetailBtn{padding:9px 5px}
 .checkOnlyDetailActions{grid-template-columns:1fr}
 .syncPopover{top:8px;right:8px}
}
/* チェックリスト専用画面より各種確認・問題ありモーダルを必ず前面へ */
.modalShade{z-index:1600}
#adminPinModal{z-index:1800!important}
body.adminWorkspace .modalShade{z-index:2600!important}
.adminSyncStatus{
 margin-right:9px;border:1px solid #c8d6e2;background:#f4f8fb;color:#31556f;border-radius:999px;
 padding:8px 11px;font-size:11px;font-weight:950;cursor:pointer;white-space:nowrap
}
.adminSyncStatus.local{background:#e8f5ec;border-color:#bddcc7;color:#287242}
.adminSyncStatus.pending{background:#fff5e5;border-color:#e4c996;color:#8d5d19}
.adminSyncStatus.error{background:#fff0ef;border-color:#e4b0ac;color:#a23f38}
@media(max-width:700px){.adminSyncStatus{padding:7px 9px;font-size:10px}.adminTop{gap:6px}}


/* ===== v56: smartphone driver shell / admin reset controls ===== */
/*
  iOS/Safariでドライバー画面の濃紺ヘッダーが消え、背面の地図が露出するのを防止。
  ドライバー運用中だけヘッダーを固定し、各画面を必ずその下から始める。
*/
body.driverWorkspaceUI>header{
 position:fixed!important;
 top:0!important;left:0!important;right:0!important;
 width:100%!important;
 z-index:1900!important;
 visibility:visible!important;
 pointer-events:auto!important;
 background:linear-gradient(90deg,var(--navy),var(--navy2))!important;
 transform:translateZ(0);
 -webkit-transform:translateZ(0);
}
body.driverWorkspaceUI>main{
 margin-top:70px!important;
 height:calc(100dvh - 70px)!important;
 max-height:calc(100dvh - 70px)!important;
}
body.driverWorkspaceUI #driverMapScreen,
body.driverWorkspaceUI #driverChecklistOnlyScreen,
body.driverWorkspaceUI .reportScreen{
 top:70px!important;
 bottom:0!important;
}
body.driverWorkspaceUI .modalShade{z-index:2400!important}
body.driverWorkspaceUI .noteViewer,
body.driverWorkspaceUI .photoViewer{z-index:2500!important}

/* 管理者トップ：編集と手動リセットを迷わない場所へ */
.adminVersionTag{
 margin-left:auto;margin-right:7px;border-radius:999px;padding:5px 8px;
 background:#eef3f7;color:#617486;font-size:9px;font-weight:950;white-space:nowrap
}
.adminTopEditBtn,.adminTopResetBtn{
 border:1px solid #c8d6e2;background:#f7fafc;color:#31556f;border-radius:9px;
 padding:8px 11px;font-size:11px;font-weight:950;cursor:pointer;white-space:nowrap
}
.adminTopEditBtn:hover{background:#edf5fb}
.adminTopResetBtn{border-color:#e2c3bd;background:#fff7f5;color:#9b4d43}
.adminTopResetBtn:hover{background:#fff0ed}

@media(max-width:900px){
 body.driverWorkspaceUI>main{
  margin-top:62px!important;
  height:auto!important;
  max-height:none!important;
  min-height:calc(100dvh - 62px)!important;
 }
 body.driverWorkspaceUI #driverMapScreen,
 body.driverWorkspaceUI #driverChecklistOnlyScreen,
 body.driverWorkspaceUI .reportScreen{top:62px!important}
}
@media(max-width:700px){
 .adminTop{flex-wrap:wrap!important}
 .adminTop>div:first-child{min-width:145px}
 .adminVersionTag{margin-left:auto}
 .adminTopEditBtn,.adminTopResetBtn{padding:7px 9px;font-size:10px}
 .adminTopResetBtn{order:4}
 .adminTopEditBtn{order:3}
 #adminExit{order:5}
}

/* ===== v57: checklist / admin dashboard / sync safety / device heartbeat ===== */
.syncAlertBar{
 position:fixed;left:10px;right:10px;top:76px;z-index:2300;display:none;align-items:center;gap:10px;
 background:#fff1ef;border:1px solid #e6b2ac;color:#943e37;border-radius:11px;padding:9px 12px;
 box-shadow:0 5px 18px #0002;font-size:12px;font-weight:900
}
.syncAlertBar.show{display:flex}.syncAlertBar span{flex:1}.syncAlertBar button{border:0;border-radius:8px;background:#9f443c;color:#fff;padding:7px 10px;font-weight:950;cursor:pointer}
.syncPopoverTools{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:9px}.wakeLockToggle.active{background:#eef7ff;border-color:#9cc2e8;color:#235d93}

.adminStat.attention{outline:2px solid #e6b0aa;background:#fff8f7}.adminStat.attention .v{color:#a43e36}
.adminDeviceOverview{display:grid;gap:7px}.deviceStatusRow{display:grid;grid-template-columns:12px 90px minmax(0,1fr) 82px;gap:8px;align-items:center;padding:9px 10px;border:1px solid #e4e9ed;border-radius:10px;background:#fbfcfd;font-size:12px}
.deviceStatusRow strong{color:#27465f}.deviceStatusRow span{color:#6e7c87;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.deviceStatusRow b{text-align:right;font-size:11px}.deviceStatusRow b.online{color:#267746}.deviceStatusRow b.warn{color:#9a641a}.deviceStatusRow b.dead{color:#a6443c}
.deviceDot{width:9px;height:9px;border-radius:50%;display:block}.deviceDot.online{background:#2b9a52;box-shadow:0 0 0 3px #dff1e5}.deviceDot.warn{background:#d18a23;box-shadow:0 0 0 3px #faecd5}.deviceDot.dead{background:#c75047;box-shadow:0 0 0 3px #f6dfdd}.deviceStatusLegend{font-size:9px;color:#73818b;white-space:nowrap}
.problemAdminCounts{display:flex;gap:6px;align-items:center}.problemCountChip{border-radius:999px;padding:5px 8px;font-size:10px;font-weight:950;white-space:nowrap}.problemCountChip.bad{background:#fff0e5;color:#965b17}.problemCountChip.done{background:#e7f5eb;color:#287444}.problemItem.resolved{opacity:.68;background:#f6faf7}.problemResolvedBadge{background:#e2f2e7;color:#267344}.problemDetailActions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:14px}.problemDetailPhoto{cursor:zoom-in}.problemDetailActions .resolved{background:#f3f5f6;color:#5e6b75}

/* チェックリストは未処理を上、問題あり、回収済みの順。回収済みは明確に緑。 */
.checkOnlyRow.done{background:#eaf7ee!important}.checkOnlyRow.done .checkOnlyMain strong{color:#246f40}.checkOnlyRow.bad{background:#fff4e6!important}.checkOnlyRow.bad .checkOnlyMain strong{color:#8f5918}

@media(max-width:900px){
 .syncAlertBar{top:68px;left:7px;right:7px;font-size:11px}
 .deviceStatusRow{grid-template-columns:10px 72px minmax(0,1fr) 70px;padding:8px;font-size:11px}.deviceStatusLegend{display:none}
 .problemDetailActions{grid-template-columns:1fr}
}
@media(max-width:640px){.syncPopoverTools{grid-template-columns:1fr}}


/* ===== v58: compact checklist + responsive driver header + setup isolation ===== */

/* セットアップ中はドライバー用の濃紺ヘッダーを完全に隠す。
   固定ヘッダーのz-indexが残っても車両選択へ漏れない。 */
body.setupWorkspaceUI>header,
body.setupWorkspaceUI>.syncAlertBar{
 display:none!important;
}
body.setupWorkspaceUI>#setupOverlay{
 inset:0!important;
 z-index:2100!important;
}

/* ドライバー画面では「行政回収」等の重複タイトルを省略し、進捗を最優先。 */
body.driverWorkspaceUI .driverHeaderInfo .title{display:none!important}
body.driverWorkspaceUI .driverHeaderInfo{flex:1 1 auto;min-width:120px}
body.driverWorkspaceUI .driverHeaderMeta{
 display:flex!important;align-items:center;gap:6px;min-width:0;overflow:visible;
}
body.driverWorkspaceUI #topProgress{
 order:-1;flex:0 0 auto;min-width:0!important;margin:0!important;
 font-size:15px!important;font-weight:950!important;letter-spacing:.01em;white-space:nowrap;
}
body.driverWorkspaceUI .headerMetaSep{color:#7893ae;font-size:10px}
body.driverWorkspaceUI #vehiclePill,
body.driverWorkspaceUI #wastePill,
body.driverWorkspaceUI #routePill{font-size:11px;max-width:86px;overflow:hidden;text-overflow:ellipsis}
.modeTopNav{gap:2px;padding:2px;border-radius:9px}
.modeTopNavBtn{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:7px 8px}
.modeNavIcon{font-size:13px;line-height:1}.modeNavLabel{font-size:10px}

/* チェックリストは「左に絞り込み、右に一覧」。一覧の縦方向を最大化する。 */
.driverChecklistOnlyScreen{background:#edf2f6}
.checkOnlyLayout{
 height:100%;display:grid;grid-template-columns:238px minmax(0,1fr);min-height:0
}
.checkOnlySidebar{
 min-width:0;min-height:0;background:#f8fafc;border-right:1px solid #d8e1e8;
 display:flex;flex-direction:column;overflow:auto;overscroll-behavior:contain
}
.checkOnlyTop{
 display:flex;align-items:center;gap:7px;padding:10px 11px;background:#fff;
 border-bottom:1px solid #e0e6eb;box-shadow:none
}
.checkOnlyTitle{min-width:0}
.checkOnlyTitle h2{margin:0;color:#173654;font-size:17px;line-height:1.15}
.checkOnlyTitle>span{
 display:block;margin-top:3px;color:#71808b;font-size:9px;font-weight:850;
 white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.checkOnlyBackBtn{margin-left:auto;padding:7px 8px!important;font-size:9px!important;white-space:nowrap}
.checkOnlyControls{
 display:block;padding:10px 10px 7px;background:transparent;border-bottom:0
}
.checkOnlyRouteFilters{
 display:grid;grid-template-columns:1.35fr repeat(4,1fr);gap:4px;margin-bottom:8px
}
.checkOnlyRouteChip{
 min-width:0;border-radius:8px;padding:7px 4px;font-size:10px;line-height:1.1
}
.checkOnlyFilterGrid{display:grid;grid-template-columns:1fr;gap:7px}
.checkOnlyField{display:block!important;font-size:9px!important}
.checkOnlyField>span{
 display:block;margin:0 0 3px;color:#71808b;font-size:8px;font-weight:900
}
.checkOnlyControls select,.checkOnlySearchWrap input{
 width:100%;min-width:0;padding:8px 8px;border-radius:8px;font-size:11px
}
.checkOnlyToggleRow{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:7px}
.checkOnlyIncomplete,.checkOnlyProblemFilter{
 min-width:0;min-height:34px;display:flex!important;align-items:center!important;justify-content:center;
 padding:6px 5px!important;border-radius:8px!important;font-size:9px!important;white-space:nowrap
}
.checkOnlyIncomplete input{margin:0 4px 0 0}
.checkOnlyStats{
 display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:2px 10px 10px
}
.checkOnlyStat{
 min-width:0;border-radius:9px;padding:6px 7px;box-shadow:none
}
.checkOnlyStat span{font-size:7px}.checkOnlyStat strong{font-size:14px;margin-top:0}
.checkOnlyStat:last-child{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between}
.checkOnlyStat:last-child span{font-size:8px}.checkOnlyStat:last-child strong{font-size:13px}

.checkOnlyBody{
 min-width:0;min-height:0;padding:10px;display:flex;flex-direction:column;background:#edf2f6
}
.checkOnlyListBar{
 flex:0 0 auto;min-height:30px;display:flex;align-items:center;gap:8px;padding:0 5px 7px
}
.checkOnlyListBar strong{color:#294861;font-size:12px}.checkOnlyListBar span{margin-left:auto;color:#87939c;font-size:9px;font-weight:800}
.checkOnlyList{
 flex:1;height:auto;min-height:0;overflow:auto;border-radius:12px;background:#fff;
 border:1px solid #dce4ea;box-shadow:0 4px 16px #18334a0d;
 overscroll-behavior:contain;-webkit-overflow-scrolling:touch
}

/* Todo系アプリと同様、行タップ=詳細、右端の独立ボタン=完了操作。 */
.checkOnlyRow{
 display:grid;grid-template-columns:5px 47px minmax(0,1fr) 74px;
 align-items:center;gap:7px;min-height:56px;padding:5px 8px 5px 0;
 border-bottom:1px solid #edf0f3;cursor:pointer;touch-action:manipulation;
 -webkit-tap-highlight-color:transparent
}
.checkOnlyRow:hover{background:#f7fafc}
.checkOnlyRow:active{background:#edf4fa}
.checkOnlyRow.done:hover{background:#e4f4e9!important}
.checkOnlyRow.bad:hover{background:#ffefd9!important}
.checkOnlyNo{
 width:36px;height:36px;border-radius:10px;font-size:10px;margin-left:2px
}
.checkOnlyMain{min-width:0;padding:1px 0}
.checkOnlyMain strong{
 display:block;color:#273f53;font-size:14px;line-height:1.25;
 white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.checkOnlyMetaLine{
 min-width:0;display:flex;align-items:center;gap:5px;margin-top:4px;white-space:nowrap;overflow:hidden
}
.checkOnlyState{
 flex:none;padding:3px 5px;border-radius:999px;font-size:7.5px;line-height:1;font-weight:950
}
.checkOnlySubText{
 min-width:0;overflow:hidden;text-overflow:ellipsis;color:#7b8791;font-size:8.5px;font-weight:750
}
.checkOnlyDetailHint{
 flex:none;margin-left:auto;color:#a0aab2;font-size:8px;font-weight:800
}
.checkOnlyAction{
 min-width:0;width:74px;min-height:38px;border-radius:9px;padding:7px 5px;
 font-size:10px;line-height:1.1;touch-action:manipulation
}
.checkOnlyDetailBtn{display:none!important}

/* iPad縦・小型タブレット：左欄をさらに細くして一覧を優先 */
@media(max-width:980px) and (min-width:701px){
 .checkOnlyLayout{grid-template-columns:205px minmax(0,1fr)}
 .checkOnlyRouteChip{font-size:9px;padding:7px 2px}
 .checkOnlyBody{padding:8px}
 .checkOnlyRow{grid-template-columns:5px 43px minmax(0,1fr) 70px;min-height:54px}
 .checkOnlyAction{width:70px}
}

/* スマホ：上部はコンパクトなフィルターパネル、下をほぼ全部リストに使う。 */
@media(max-width:700px){
 body.driverWorkspaceUI>header{gap:4px!important;padding:0 6px!important}
 body.driverWorkspaceUI .iconbtn{width:36px!important;height:36px!important;font-size:21px!important;border-radius:9px}
 body.driverWorkspaceUI .driverHeaderInfo{flex:1 1 auto;min-width:72px}
 body.driverWorkspaceUI .driverHeaderMeta{gap:3px}
 body.driverWorkspaceUI #topProgress{font-size:13px!important}
 body.driverWorkspaceUI #vehiclePill,
 body.driverWorkspaceUI #wastePill,
 body.driverWorkspaceUI #routePill,
 body.driverWorkspaceUI .headerMetaSep{display:none!important}
 body.driverWorkspaceUI .modeTopNav{margin-left:0;flex:none}
 body.driverWorkspaceUI .modeTopNavBtn{
  width:34px;height:34px;padding:0!important;border-radius:8px
 }
 body.driverWorkspaceUI .modeNavIcon{font-size:14px}
 body.driverWorkspaceUI .modeNavLabel{display:none}

 .driverChecklistOnlyScreen{top:62px!important}
 .checkOnlyLayout{display:flex;flex-direction:column;height:100%}
 .checkOnlySidebar{
  flex:0 0 auto;border-right:0;border-bottom:1px solid #d8e1e8;overflow:visible;background:#f8fafc
 }
 .checkOnlyTop{min-height:38px;padding:5px 8px}
 .checkOnlyTitle h2{font-size:14px}
 .checkOnlyTitle>span{font-size:8px;margin-top:1px}
 .checkOnlyBackBtn{padding:5px 7px!important;font-size:8px!important}
 .checkOnlyControls{padding:5px 7px 4px}
 .checkOnlyRouteFilters{
  display:flex;gap:4px;margin:0 0 5px;overflow-x:auto;scrollbar-width:none
 }
 .checkOnlyRouteFilters::-webkit-scrollbar{display:none}
 .checkOnlyRouteChip{flex:0 0 auto;min-width:38px;padding:6px 9px;font-size:9px}
 .checkOnlyFilterGrid{grid-template-columns:92px minmax(0,1fr);gap:5px}
 .checkOnlyField>span{display:none}
 .checkOnlyControls select,.checkOnlySearchWrap input{height:31px;padding:5px 7px;font-size:10px}
 .checkOnlyToggleRow{grid-template-columns:1fr 1fr;margin-top:5px;gap:5px}
 .checkOnlyIncomplete,.checkOnlyProblemFilter{min-height:29px!important;padding:4px!important;font-size:8px!important}
 .checkOnlyStats{
  display:flex;gap:4px;padding:0 7px 5px;overflow-x:auto;scrollbar-width:none
 }
 .checkOnlyStats::-webkit-scrollbar{display:none}
 .checkOnlyStat,.checkOnlyStat:last-child{
  flex:1 0 58px;min-width:58px;display:block;padding:4px 6px;border-radius:8px
 }
 .checkOnlyStat span,.checkOnlyStat:last-child span{font-size:6.5px}
 .checkOnlyStat strong,.checkOnlyStat:last-child strong{font-size:12px;margin-top:0}
 .checkOnlyBody{flex:1;min-height:0;padding:5px 6px 6px}
 .checkOnlyListBar{min-height:23px;padding:0 3px 3px}
 .checkOnlyListBar strong{font-size:10px}.checkOnlyListBar span{font-size:7.5px}
 .checkOnlyList{border-radius:10px}
 .checkOnlyRow{
  grid-template-columns:4px 39px minmax(0,1fr) 66px;
  gap:5px;min-height:51px;padding:4px 5px 4px 0
 }
 .checkOnlyNo{width:32px;height:32px;border-radius:9px;font-size:9px;margin-left:1px}
 .checkOnlyMain strong{font-size:13px}
 .checkOnlyMetaLine{gap:3px;margin-top:3px}
 .checkOnlyState{font-size:6.7px;padding:2px 4px}
 .checkOnlySubText{font-size:7.5px}
 .checkOnlyDetailHint{font-size:7px}
 .checkOnlyAction{width:66px;min-height:38px;padding:6px 3px;font-size:9px;border-radius:9px}
}

/* 極端に狭いスマホでは進捗を最優先し、モード切替はアイコンだけ維持。 */
@media(max-width:390px){
 body.driverWorkspaceUI>header{padding:0 4px!important;gap:2px!important}
 body.driverWorkspaceUI .iconbtn{width:33px!important;height:34px!important}
 body.driverWorkspaceUI #topProgress{font-size:12px!important}
 body.driverWorkspaceUI .modeTopNavBtn{width:31px;height:32px}
 .checkOnlyFilterGrid{grid-template-columns:82px minmax(0,1fr)}
 .checkOnlyRow{grid-template-columns:4px 36px minmax(0,1fr) 62px}
 .checkOnlyNo{width:29px;height:29px}
 .checkOnlyAction{width:62px;font-size:8.5px}
}

/* v61: セットアップ画面を最優先。車両選択・ごみ選択・モード選択・ルート選択中は
   ドライバー用の濃紺ヘッダーを必ず隠す。 */
body.setupWorkspaceUI>header,
body.setupWorkspaceUI>.syncAlertBar{display:none!important}
body.setupWorkspaceUI>#setupOverlay{display:block!important;inset:0!important;z-index:2200!important}

/* v64: 車両選択はタッチ端末でも1タップで反応させる */
.vehiclePreset{touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
@media (hover:none),(pointer:coarse){.vehiclePreset:hover{border-color:#d7e0e8;background:#fff}.vehiclePreset:active{border-color:#7fa5dd;background:#f7fbff}}


/* ===== v64: map current location / mobile nav / map list / route list ===== */
/* 回り方3種類は同じニュートラルな見た目に統一。 */
.modeChoiceCard,
.modeChoiceCard.recommend,
.modeChoiceCard.freeMap,
.modeChoiceCard.checklistOnlyChoice{
 background:linear-gradient(145deg,#ffffff,#f7f9fb)!important;
 border-color:#d5dfe7!important;
}
.modeChoiceCard:hover,
.modeChoiceCard.recommend:hover,
.modeChoiceCard.freeMap:hover,
.modeChoiceCard.checklistOnlyChoice:hover{background:#f4f8fb!important;border-color:#7fa5ce!important}

/* マップ一覧は行タップ=詳細。独立した「地図へ」ボタンは使わない。 */
.driverCheckItem{grid-template-columns:11px minmax(0,1fr) auto!important}
.driverMapJumpBtn{display:none!important}
.driverMapDetailHint{display:block;margin-top:3px;color:#a0aab2;font-size:8px;font-weight:800;line-height:1}

/* 推奨ルートでは回収済み地点を表示しない。完了時の簡易表示。 */
.routeNoRemaining{width:100%;display:grid;place-items:center;color:#2b7a49;font-size:12px;font-weight:950;padding:24px 10px}

/* スマホの濃紺ヘッダーは62pxに固定し、モードボタンが縦に伸びないようにする。 */
@media(max-width:700px){
 body.driverWorkspaceUI>header{height:62px!important;min-height:62px!important;max-height:62px!important;overflow:hidden!important;align-items:center!important;flex-wrap:nowrap!important}
 body.driverWorkspaceUI .modeTopNav{height:38px!important;min-height:38px!important;max-height:38px!important;align-self:center!important;align-items:center!important;flex-wrap:nowrap!important;overflow:hidden!important}
 body.driverWorkspaceUI .modeTopNavBtn{width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;max-width:34px!important;max-height:34px!important;flex:0 0 34px!important;align-self:center!important;line-height:1!important;margin:0!important}
}


/* ===== v65: smartphone selected-pin visibility above detail ===== */
@media(max-width:760px){
 /* 詳細カードの上側に地図が必ず見える余白を残す。PC/iPad横には影響しない。 */
 .driverMapDetail{
  max-height:min(65%,calc(100% - 118px))!important;
 }
 .driverMapDetail.show{
  overflow:auto!important;
 }
}


/* v67: 車両選択/セットアップ中でも管理者PINを必ず最前面に表示 */
body.setupWorkspaceUI #adminPinModal,
#adminPinModal.show{
  z-index:4000!important;
}
body.setupWorkspaceUI #adminPinModal.show{
  display:grid!important;
  pointer-events:auto!important;
}


/* ===== v70: iPad setup centering / official waste colors / dynamic routes ===== */
/* v61 の display:block が iPad でセットアップを左上寄せにしていたため、常に中央配置へ戻す。 */
body.setupWorkspaceUI>#setupOverlay{
 display:grid!important;
 place-items:center!important;
 align-content:center!important;
 justify-content:center!important;
 overflow:auto!important;
 padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left))!important;
 box-sizing:border-box;
}
body.setupWorkspaceUI .setupBox{
 width:min(920px,calc(100vw - 48px));
 max-height:calc(100dvh - 48px);
 overflow:auto;
 box-sizing:border-box;
 margin:auto;
}
/* iPad縦・横ではカードを小さくし過ぎず、車両/ごみ/ルートは2列を維持。 */
@media (min-width:700px) and (max-width:1180px){
 body.setupWorkspaceUI .setupBox{width:min(920px,calc(100vw - 56px));padding:34px}
 body.setupWorkspaceUI .setupGrid,body.setupWorkspaceUI .routeGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:16px}
 body.setupWorkspaceUI .choiceCard{min-height:76px;padding:20px 22px}
 body.setupWorkspaceUI .choiceCard strong{font-size:21px}
 body.setupWorkspaceUI .routeCard{min-height:86px;padding:20px}
 body.setupWorkspaceUI .modeChoiceCard{min-height:96px}
}
@media (max-width:699px){
 body.setupWorkspaceUI>#setupOverlay{place-items:start center!important;padding:14px!important}
 body.setupWorkspaceUI .setupBox{width:100%;max-height:none;margin:0}
}
/* ごみ袋の指定色を薄いカード色として反映。ビン=紫、ペットボトル=橙。 */
.wastePreset[data-w="可燃"]{background:#eef6ff;border-color:#a9cbed}.wastePreset[data-w="可燃"] strong{color:#175f9e}
.wastePreset[data-w="容器包装プラ"]{background:#eef9f1;border-color:#a9d5b3}.wastePreset[data-w="容器包装プラ"] strong{color:#25723b}
.wastePreset[data-w="不燃"]{background:#fff1f1;border-color:#e8b0b0}.wastePreset[data-w="不燃"] strong{color:#a43b3b}
.wastePreset[data-w="ビン"]{background:#f7f2fb;border-color:#cdb7df}.wastePreset[data-w="ビン"] strong{color:#704b91}
.wastePreset[data-w="ペットボトル"]{background:#fff6ec;border-color:#e8c39a}.wastePreset[data-w="ペットボトル"] strong{color:#a76120}
.wastePreset:hover{filter:brightness(.985)}
.routeCard{border:1px solid color-mix(in srgb,var(--route-color,#315a7a) 28%,#d7e0e8)}
.routeCard .routeLetter{background:var(--route-color,#315a7a)}
.routeNoData{grid-column:1/-1;padding:28px;text-align:center;border:1px dashed #bdcbd6;border-radius:14px;color:#6e7c88;font-weight:850;background:#f8fafb}
.driverRouteChip:not(.active){color:var(--route-color,#3b5368)}
.checkOnlyRouteChip.active{background:var(--route-color,#173654)!important;border-color:var(--route-color,#173654)!important;color:#fff!important}


/* ===== v71: iPad photo / admin layout / schedule / follow mode ===== */
/* iOS/iPadOSは16px未満の入力欄でページ自体を拡大するため、タッチ端末では16px以上を保証。 */
@media (pointer:coarse){
 .field input,.field select,.field textarea,.search input,.driverChecklistHead input,.checkOnlyField input,.checkOnlyField select,
 .scheduleRule input,.scheduleRule select{font-size:16px!important}
}

/* iPhone撮影画像の比率を潰さず、詳細画面だけでも写真全体を確認できるようにする。 */
.details .photo{height:auto!important;min-height:220px;aspect-ratio:4/3;background:#eef2f5}
.details .photo img{object-fit:contain!important;background:#eef2f5}
.driverMapParking,.checkOnlyParking{
 display:block;width:100%;height:auto!important;min-height:180px;max-height:48vh;object-fit:contain!important;
 border-radius:11px;border:1px solid #d2dbe2;background:#eef2f5;margin-top:10px
}
.driverMapDetail{width:min(460px,calc(100% - 24px));max-height:88%;overflow:auto}
.driverMapDetailClose{
 right:12px!important;top:12px!important;width:36px!important;height:36px!important;padding:0!important;
 display:grid!important;place-items:center!important;line-height:1!important;font-size:22px!important;font-family:system-ui,sans-serif;
 z-index:4
}

/* 管理者画面右上ボタンは高さ・間隔を統一。 */
.adminTop{gap:10px}
.adminTopActions{display:flex;align-items:center;gap:8px;margin-left:8px;flex:none!important}
.adminTopEditBtn,.adminTopResetBtn,.adminExitBtn{
 min-height:40px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;
 padding:9px 13px!important;font-size:11px!important;border-radius:10px!important;white-space:nowrap
}
.adminExitBtn{border:1px solid #c8d6e2!important;background:#fff!important;color:#31556f!important}
@media(max-width:1050px){
 .adminTop{flex-wrap:wrap}
 .adminTop>div:first-child{min-width:170px}
 .adminTopActions{width:100%;margin-left:0;display:grid;grid-template-columns:1fr 1fr 1.25fr;gap:8px}
 .adminTopEditBtn,.adminTopResetBtn,.adminExitBtn{width:100%;min-height:44px;font-size:12px!important}
}

/* 回収スケジュール */
.adminScheduleOverview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin-top:8px}
.scheduleOverviewItem{border:1px solid #dce4ea;border-radius:11px;padding:10px;background:#f8fafb;min-width:0}
.scheduleOverviewItem.today{border-color:#8eb7db;background:#eef7ff}
.scheduleOverviewItem .waste{font-weight:950;color:#264965;font-size:12px}
.scheduleOverviewItem .state{margin-top:5px;font-size:13px;font-weight:900;color:#334d61}
.scheduleOverviewItem .next{margin-top:4px;font-size:10px;color:#73818c;line-height:1.4}
.scheduleSettingsBlock{margin-top:24px;padding-top:18px;border-top:1px solid #e0e7ec}
.scheduleSettingsHead{display:flex;align-items:flex-start;gap:12px;justify-content:space-between}
.scheduleSettingsHead h4{margin:0!important}.scheduleSettingsHead p{margin:4px 0 0}
.scheduleResetModeField small{display:block;margin-top:6px;color:#74828d;line-height:1.5}
.scheduleEditList{display:flex;flex-direction:column;gap:9px;margin-top:14px}
.scheduleRule{display:grid;grid-template-columns:36px minmax(110px,1.2fr) minmax(105px,1fr) minmax(90px,.8fr) minmax(90px,.8fr) 70px 42px;gap:7px;align-items:end;border:1px solid #dce4ea;border-radius:11px;padding:10px;background:#fafcfd}
.scheduleRule .ruleEnabled{align-self:center;justify-self:center}.scheduleRule label{font-size:10px;font-weight:900;color:#607382}.scheduleRule label>span{display:block;margin-bottom:4px}
.scheduleRule select,.scheduleRule input[type="number"],.scheduleRule input[type="text"]{width:100%;box-sizing:border-box;border:1px solid #cbd6df;border-radius:8px;padding:9px;background:#fff}
.scheduleNthWrap.hidden{opacity:.32;pointer-events:none}.scheduleRemoveBtn{width:38px;height:38px;border-radius:9px;border:1px solid #e2c3bd;background:#fff7f5;color:#9b4d43;font-weight:950;cursor:pointer}
@media(max-width:1050px){.adminScheduleOverview{grid-template-columns:1fr 1fr}.scheduleRule{grid-template-columns:34px 1fr 1fr;align-items:end}.scheduleRule>*{min-width:0}.scheduleRemoveBtn{justify-self:end}.scheduleRule .ruleDuration,.scheduleRule .scheduleNthWrap{grid-column:auto}}
@media(max-width:650px){.adminScheduleOverview{grid-template-columns:1fr}.scheduleRule{grid-template-columns:34px 1fr}.scheduleSettingsHead{display:block}.scheduleSettingsHead button{margin-top:8px}}

/* 管理者の地点写真アップロード */
.adminPhotoEditGrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:15px}
.adminPhotoEditor>label{display:block;font-size:13px;font-weight:950;color:#415064;margin-bottom:7px}
.photoDropZone{border:2px dashed #aebfcd;border-radius:12px;min-height:94px;padding:15px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;cursor:pointer;background:#f8fbfd;color:#4a657a;transition:.15s}
.photoDropZone strong{font-size:14px}.photoDropZone span{font-size:10px;color:#7c8b97;margin-top:4px}.photoDropZone.dragover{border-color:#4d8abc;background:#eef7ff;transform:translateY(-1px)}
.adminPhotoPreview{display:none;width:100%;height:auto;max-height:280px;object-fit:contain;background:#eef2f5;border:1px solid #d7e0e7;border-radius:10px;margin-top:9px}
.adminPhotoPreview.show{display:block}.compactPhotoUrl{margin-top:8px!important}.compactPhotoUrl label{font-size:10px!important;color:#7b8994!important}
@media(max-width:800px){.adminPhotoEditGrid{grid-template-columns:1fr}}

/* 追従は押した時だけON。現在地ボタンは一度だけ中央寄せ。 */
.driverMapLocationControls{align-items:center;flex-wrap:wrap;justify-content:flex-end;max-width:92%}
#driverMapFollowBtn.active{background:#e9f2ff;border-color:#79a8d4;color:#165a96;box-shadow:0 0 0 2px #fff,0 0 0 4px #79a8d477}

/* 注意事項・ドライバーコメントの編集 */
.noteViewerEditor .newCommentLabel{margin-top:18px}
.baseNoteActions{margin-top:8px}
.noteViewerCommentActions{display:flex;gap:6px;justify-content:flex-end;margin-top:7px}
.noteViewerCommentActions button{border:1px solid #cbd6de;background:#fff;border-radius:7px;padding:5px 8px;font-size:10px;font-weight:900;color:#4b6172;cursor:pointer}
.noteViewerCommentActions button[data-comment-action="delete"]{color:#9b4d43;border-color:#e0c1bc;background:#fff8f6}
.noteViewerCommentEditArea{display:none;width:100%;min-height:86px;box-sizing:border-box;border:1px solid #b9c8d3;border-radius:8px;padding:9px;font:inherit;font-size:16px;margin-top:7px}
.noteViewerComment.editing .noteViewerCommentText{display:none}.noteViewerComment.editing .noteViewerCommentEditArea{display:block}

/* GPS自己診断 */
.gpsSelfCheck{margin-top:16px;border:1px solid #dbe4ea;border-radius:11px;padding:12px;background:#f8fafb}
.gpsSelfCheck strong{color:#284b67}.gpsSelfCheck p{margin:5px 0 8px;font-size:11px}.gpsSelfCheckResult{font-size:11px;line-height:1.6;color:#4f6576;white-space:pre-wrap}


/* ===== v72: follow / shared progress / dynamic vehicles ===== */
.vehicleGrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.vehicleGrid .vehiclePreset{min-height:78px}
.vehicleEditGrid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.vehicleOptionalSlot label{color:#6e7c88}
.pnode.done:not(.current){opacity:.72}
.pnode.done:not(.current) .pdot{background:var(--green)}
@media(max-width:900px){
 .vehicleGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:901px){
 .vehicleGrid[data-vehicle-count="4"]{grid-template-columns:repeat(4,1fr)}
}

/* v72 progress: seven visible nodes */
.progressNodes .pnode{flex:1 0 14.2857%;width:auto}

/* ===== v74: 管理者レイアウト / 車両編集 / 回収スケジュール再設計 ===== */
.settingsSection{margin-top:22px;padding-top:18px;border-top:1px solid #e0e7ec}
.settingsSectionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.settingsSectionHead h4{margin:0!important}.settingsSectionHead p{margin:4px 0 0;color:#71808c;font-size:12px;line-height:1.55}
.vehicleEditGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.vehicleEditRow{display:grid;grid-template-columns:38px minmax(0,1fr) 64px;gap:9px;align-items:end;border:1px solid #dbe3e9;background:#f9fbfc;border-radius:12px;padding:10px}
.vehicleEditNo{width:34px;height:34px;border-radius:9px;background:#eaf0f5;color:#34546c;display:grid;place-items:center;font-weight:950;align-self:end}
.vehicleEditRow label{min-width:0}.vehicleEditRow label span{display:block;font-size:10px;font-weight:900;color:#667986;margin-bottom:4px}
.vehicleEditRow input{width:100%;box-sizing:border-box;border:1px solid #c7d3dc;border-radius:9px;padding:10px 11px;font-size:16px;background:#fff}
.vehicleRemoveBtn{height:40px;border:1px solid #e1c5c0;border-radius:9px;background:#fff8f6;color:#9a5148;font-weight:900;cursor:pointer}
.vehicleRemoveBtn:disabled{opacity:.35;cursor:not-allowed}
.vehicleEditFooter{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:9px;color:#74828e}
.vehicleEditFooter span{font-weight:900;color:#3d5f77}.vehicleEditFooter small{font-size:10px}

.scheduleSettingsBlock{margin-top:26px;padding-top:20px;border-top:2px solid #dce5ec}
.scheduleSettingsHead h4{font-size:18px!important;color:#1f405c}.scheduleSettingsHead p{font-size:12px;line-height:1.55;color:#6e7f8c}
.scheduleQuickGuide{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:13px 0 15px}
.scheduleQuickGuide span{background:#f1f6fa;border:1px solid #d9e4ec;border-radius:10px;padding:9px 10px;font-size:11px;font-weight:850;color:#486174}
.scheduleQuickGuide b{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#2b638f;color:#fff;margin-right:5px;font-size:10px}
.scheduleEditList{display:flex;flex-direction:column;gap:13px;margin-top:0}
.scheduleWasteCard{border:1px solid #dce4ea;border-left:5px solid #8297a8;border-radius:14px;background:#fff;overflow:hidden}
.scheduleWasteCard.burn{border-left-color:#3f84d4}.scheduleWasteCard.plastic{border-left-color:#3e9c5b}.scheduleWasteCard.nonburn{border-left-color:#d4564d}.scheduleWasteCard.bottle{border-left-color:#8b62c4}.scheduleWasteCard.pet{border-left-color:#e49a34}
.scheduleWasteHead{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px;background:#f8fafc;border-bottom:1px solid #e7edf1}
.scheduleWasteHead>div{display:flex;align-items:center;gap:8px;min-width:0}.scheduleWasteHead strong{font-size:15px;color:#29485f}.scheduleWasteHead small{color:#7a8995;font-size:10px;font-weight:800}
.scheduleWasteDot{display:inline-block;width:11px;height:11px;border-radius:50%;flex:0 0 auto;background:#8297a8}.scheduleWasteDot.burn{background:#3f84d4}.scheduleWasteDot.plastic{background:#3e9c5b}.scheduleWasteDot.nonburn{background:#d4564d}.scheduleWasteDot.bottle{background:#8b62c4}.scheduleWasteDot.pet{background:#e49a34}
.scheduleWasteRules{padding:11px;display:flex;flex-direction:column;gap:9px}.scheduleEmpty{padding:14px;border:1px dashed #cfdbe3;border-radius:10px;color:#7d8b96;background:#fbfcfd;font-size:12px;text-align:center}
.scheduleRule{display:block!important;border:1px solid #dce4ea;border-radius:12px;padding:11px;background:#fbfcfd}
.scheduleRuleTop{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.scheduleUseToggle{display:flex!important;align-items:center;gap:7px;font-size:12px!important;font-weight:900!important;color:#405b6e!important}.scheduleUseToggle input{width:18px!important;height:18px!important;margin:0}
.scheduleRemoveBtn{width:auto!important;height:34px!important;padding:0 11px;border-radius:8px!important}
.scheduleRuleControls{display:grid;grid-template-columns:minmax(130px,.9fr) minmax(240px,1.4fr) minmax(130px,.9fr) minmax(120px,.8fr);gap:9px;align-items:end}
.scheduleRuleControls>label,.scheduleNthWrap{min-width:0;font-size:10px;font-weight:900;color:#607382}.scheduleRuleControls>label>span,.scheduleNthWrap>span{display:block;margin-bottom:4px}
.scheduleRuleControls select{width:100%;box-sizing:border-box;border:1px solid #cbd6df;border-radius:9px;padding:10px;background:#fff;font-size:15px}
.scheduleNthWrap.hidden{display:none!important}.scheduleNthChips{display:flex;gap:5px;flex-wrap:wrap;min-height:39px;align-items:center}
.scheduleNthChips label{position:relative;cursor:pointer}.scheduleNthChips input{position:absolute;opacity:0;pointer-events:none}.scheduleNthChips b{display:inline-block;border:1px solid #cbd6df;background:#fff;color:#536979;border-radius:8px;padding:8px 9px;font-size:11px;min-width:34px;text-align:center}
.scheduleNthChips input:checked+b{background:#2b638f;border-color:#2b638f;color:#fff}
.scheduleRuleSummary{margin-top:9px;background:#edf5fb;border-radius:8px;padding:8px 10px;color:#285779;font-size:12px;font-weight:900}
.scheduleUpcoming{margin-top:15px;border:1px solid #dce4ea;border-radius:12px;background:#f9fbfc;padding:12px}.scheduleUpcomingHead{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:8px}.scheduleUpcomingHead strong{color:#294a63}.scheduleUpcomingHead span{font-size:10px;color:#7b8994}
.scheduleUpcomingList{display:grid;grid-template-columns:1fr 1fr;gap:7px}.scheduleUpcomingItem{display:grid;grid-template-columns:12px minmax(90px,.6fr) 1fr;gap:7px;align-items:center;background:#fff;border:1px solid #e3e9ee;border-radius:9px;padding:8px 9px;font-size:11px}.scheduleUpcomingItem strong{color:#334f63}.scheduleUpcomingItem>span:last-child{color:#667986}
.scheduleAdvanced{margin-top:13px;border:1px solid #dce4ea;border-radius:11px;background:#fafcfd}.scheduleAdvanced summary{cursor:pointer;padding:11px 12px;font-size:12px;font-weight:900;color:#4c6475}.scheduleAdvanced .scheduleResetModeField{padding:0 12px 12px}

.adminScheduleOverview{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.scheduleOverviewItem{padding:12px}.scheduleOverviewTop{display:flex;align-items:center;gap:7px}.scheduleOverviewTop .waste{font-size:13px}.scheduleTodayBadge{margin-left:auto;background:#dcefff;color:#1e6198;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:950}.scheduleRuleText{margin-top:6px;color:#607281;font-size:10px;line-height:1.55}

@media(max-width:900px){
 .vehicleEditGrid{grid-template-columns:1fr}
 .scheduleRuleControls{grid-template-columns:1fr 1fr}
 .scheduleQuickGuide{grid-template-columns:1fr}
 .scheduleUpcomingList{grid-template-columns:1fr}
 .adminScheduleOverview{grid-template-columns:1fr}
}
@media(max-width:560px){
 .settingsSectionHead,.scheduleWasteHead,.vehicleEditFooter{align-items:stretch;flex-direction:column}
 .scheduleRuleControls{grid-template-columns:1fr}
 .vehicleEditRow{grid-template-columns:34px minmax(0,1fr)}
 .vehicleRemoveBtn{grid-column:2}
}


/* ===== v75: 推奨ルート画面の不要スクロール / iPadゴム引き抑制 ===== */
html{overscroll-behavior:none}
body.driverWorkspaceUI{overscroll-behavior:none}
body.driverWorkspaceUI main{overscroll-behavior:none}
body.driverWorkspaceUI .details{overscroll-behavior:contain}
/* 内容が表示領域内に収まる時だけスクロール領域を解除する。 */
body.driverWorkspaceUI .details.routeContentFits{
 overflow:hidden!important;
 overscroll-behavior:none!important;
 -webkit-overflow-scrolling:auto!important;
}
/* ページ全体にも実スクロール量がない時は、iPadOSの画面全体の揺れを止める。 */
body.driverWorkspaceUI.routePageFits{
 overflow:hidden!important;
 overscroll-behavior:none!important;
}
@supports(height:100dvh){
 @media(min-width:901px){
  body.driverWorkspaceUI main{height:calc(100dvh - 70px)}
 }
}

/* ===== v76: ルート選択から履歴/日報を開いた時の前面表示保証 ===== */
/* setupWorkspaceUI の強制表示より hidden を優先し、レポートが裏に回らないようにする。 */
body.setupWorkspaceUI>#setupOverlay.hidden{display:none!important}

/* ===== v80: 10.2-inch iPad driver UI / clear point advance / route-first modes ===== */
/* Home icon: Unicode glyph differences on iPadOS caused the button to look deformed. */
.homeIconBtn{
 flex:0 0 auto!important;
 padding:0!important;
 display:grid!important;
 place-items:center!important;
 line-height:1!important;
 overflow:hidden!important;
}
.homeIconBtn svg{
 width:25px;height:25px;display:block;fill:currentColor;pointer-events:none;
}

/* 回収済み操作後、次の地点へ切り替わったことを一目で伝える。 */
.routeAdvanceFlash{
 position:fixed;z-index:1380;top:86px;left:50%;
 width:min(520px,calc(100vw - 36px));
 transform:translate(-50%,-16px) scale(.98);
 opacity:0;pointer-events:none;
 display:flex;align-items:center;gap:13px;
 padding:14px 18px;border-radius:15px;
 background:#e8f7ed;border:2px solid #5eaf78;color:#1d6337;
 box-shadow:0 12px 34px #0e2f5335;
 transition:opacity .15s ease,transform .18s ease;
}
.routeAdvanceFlash.show{opacity:1;transform:translate(-50%,0) scale(1)}
.routeAdvanceFlashIcon{
 width:42px;height:42px;flex:0 0 42px;border-radius:50%;
 display:grid;place-items:center;background:#2b9650;color:#fff;
 font-size:25px;font-weight:1000;box-shadow:0 0 0 5px #d5efdd;
}
.routeAdvanceFlashText{min-width:0;display:flex;flex-direction:column;gap:2px}
.routeAdvanceFlashText strong{font-size:16px;line-height:1.25;color:#205f38}
.routeAdvanceFlashText span{font-size:14px;font-weight:950;color:#173654;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.details.routeAdvancePulse{animation:v80RouteAdvancePulse .9s ease}
@keyframes v80RouteAdvancePulse{
 0%{box-shadow:inset 0 0 0 0 #43a56500;background:#fff}
 22%{box-shadow:inset 0 0 0 5px #43a565;background:#f2fbf5}
 100%{box-shadow:inset 0 0 0 0 #43a56500;background:#fff}
}

/* 10.2インチiPad(810x1080 / 1080x810付近)を基準に、タッチ領域と情報量を調整。 */
@media (pointer:coarse) and (min-width:700px) and (max-width:1180px){
 body.driverWorkspaceUI>header{
  min-height:64px;height:64px;padding-left:max(8px,env(safe-area-inset-left));
  padding-right:max(8px,env(safe-area-inset-right));gap:5px;
 }
 body.driverWorkspaceUI .homeIconBtn,
 body.driverWorkspaceUI #menuBtn{
  width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;
  border-radius:11px!important;
 }
 body.driverWorkspaceUI .homeIconBtn svg{width:24px;height:24px}
 body.driverWorkspaceUI .driverHeaderInfo{min-width:150px}
 body.driverWorkspaceUI #topProgress{font-size:16px!important}
 body.driverWorkspaceUI #vehiclePill,
 body.driverWorkspaceUI #wastePill,
 body.driverWorkspaceUI #routePill{font-size:11px;max-width:94px}
 body.driverWorkspaceUI .modeTopNavBtn{min-height:38px;padding:7px 8px}
 .routeAdvanceFlash{top:78px;width:min(540px,calc(100vw - 42px));padding:15px 18px}

 /* 自由マップの地点詳細は、助手席で読みやすい大きさを優先。 */
 .driverMapDetail{
  left:16px!important;bottom:16px!important;
  width:min(680px,calc(100% - 32px))!important;
  max-height:calc(100% - 34px)!important;
  padding:20px!important;border-radius:18px!important;
 }
 .driverMapDetailClose{
  width:42px!important;height:42px!important;right:13px!important;top:13px!important;font-size:25px!important;
 }
 .driverMapDetailHead{gap:9px;padding-right:48px}
 .driverMapRouteBadge,.driverMapDetailStatus{font-size:11px;padding:6px 9px;border-radius:8px}
 .driverMapDetail h2{font-size:27px;margin:10px 0 6px;line-height:1.2}
 .driverMapDetailMeta{font-size:12px;line-height:1.45}
 .driverMapDetailRecord{font-size:13px;margin-top:7px}
 .driverMapDetailNote{font-size:15px;padding:11px 42px 11px 11px;margin-top:10px;line-height:1.6;border-radius:11px}
 .driverMapParking{min-height:220px;max-height:34vh;margin-top:11px;border-radius:12px}
 .driverMapDetailActions{gap:9px;margin-top:11px}
 .driverMapDetailActions .smallBtn{min-height:48px;font-size:13px;font-weight:950;border-radius:10px}
}

/* 10.2インチiPad縦ではセットアップのルートカードを大きめにして誤操作を減らす。 */
@media (pointer:coarse) and (min-width:768px) and (max-width:900px){
 body.setupWorkspaceUI .setupBox{width:calc(100vw - 44px)!important;max-height:calc(100dvh - 44px)!important;padding:30px!important}
 body.setupWorkspaceUI .routeGrid{gap:14px!important}
 body.setupWorkspaceUI .routeCard{min-height:92px!important}
 body.setupWorkspaceUI .routeCard .routeName{font-size:18px}
 body.setupWorkspaceUI .routeCard .routeMeta{font-size:11px;line-height:1.45}
 .undoToast{bottom:28px}
}

/* ===== v83: Koyanagi branding / once-per-day launch / enforced tablet landscape ===== */
.dailyLaunchSplash,.orientationGuide{
 position:fixed;inset:0;z-index:10000;display:none;place-items:center;
 padding:max(24px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));
 background:#fff;color:#173654;
}
html.dailyIntroPending .dailyLaunchSplash,.dailyLaunchSplash.show,.orientationGuide.show{display:grid}
.launchSplashCard{width:min(720px,88vw);text-align:center;display:flex;flex-direction:column;align-items:center}
.launchFullLogo{display:block;width:min(650px,82vw);height:auto;max-height:180px;object-fit:contain}
.launchDivider{width:min(310px,48vw);height:2px;background:linear-gradient(90deg,transparent,#0d6a39,transparent);margin:20px 0 12px}
.launchAppName{font-size:clamp(25px,3.2vw,38px);font-weight:950;letter-spacing:.03em;color:#11683a}
.launchLoading{margin-top:28px;font-size:13px;font-weight:850;color:#71808c;letter-spacing:.05em}
.launchLoading:after{content:"";display:inline-block;width:13px;height:13px;margin-left:8px;vertical-align:-2px;border:2px solid #c8d7cf;border-top-color:#167140;border-radius:50%;animation:v83Spin .7s linear infinite}
.launchVersion{margin-top:12px;font-size:11px;font-weight:900;color:#8b98a2}
@keyframes v83Spin{to{transform:rotate(360deg)}}

.orientationGuide{background:linear-gradient(145deg,#fbfdfc,#eef7f1);cursor:default;z-index:10020}
.orientationGuideCard{width:min(720px,90vw);text-align:center;background:#fff;border:1px solid #dbe8df;border-radius:24px;padding:26px 34px 24px;box-shadow:0 18px 55px #123b2720}
.orientationBrand{display:flex;align-items:center;justify-content:center;gap:9px;font-weight:950;color:#222;font-size:18px}
.orientationBrand img{width:40px;height:36px;object-fit:contain}
.orientationVisual{height:108px;display:flex;align-items:center;justify-content:center;gap:26px;margin:13px 0 7px}
.orientationDevice{position:relative;border:6px solid #c4ced6;border-radius:9px;background:#f4f7f9;box-shadow:inset 0 0 0 2px #fff}
.portraitDevice{width:48px;height:78px}
.portraitDevice:after{content:"×";position:absolute;inset:0;display:grid;place-items:center;color:#e65368;font-size:32px;font-weight:950}
.landscapeDevice{width:92px;height:60px;border-color:#178047;background:#f3fbf6}
.landscapeDevice:after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;color:#178047;font-size:28px;font-weight:950}
.orientationArrow{font-size:37px;font-weight:950;color:#178047;transform:rotate(-12deg)}
.orientationGuide h2{margin:4px 0 5px;font-size:clamp(24px,3vw,34px);color:#126b3b;line-height:1.25}
.orientationGuide p{margin:0;color:#536673;font-size:14px;font-weight:800;line-height:1.65}
.orientationGuide small{display:block;margin-top:14px;color:#93a09a;font-size:11px;font-weight:850}

/* 通常画面では会社表示を左上へ。既存の操作領域を優先し、10.2インチiPadではマークだけにする。 */
.headerCompanyBrand{
 flex:0 0 auto;height:38px;display:flex;align-items:center;gap:6px;padding:0 3px;
 background:transparent;border:0;border-radius:0;color:#f4f8fb;font-size:11px;font-weight:950;white-space:nowrap;
 box-shadow:none;overflow:hidden;opacity:.96;pointer-events:none
}
.headerCompanyBrand img{width:31px;height:29px;display:block;object-fit:contain;flex:none;background:transparent;filter:none}
.headerCompanyBrand span{line-height:1;color:#f4f8fb;text-shadow:0 1px 1px #001b2d80}
body.setupWorkspaceUI .headerCompanyBrand{display:none!important}

.setupBrandRow{height:32px;display:flex;align-items:center;gap:7px;margin:-5px 0 13px;color:#273830;font-size:12px;font-weight:950;white-space:nowrap}
.setupBrandRow img{width:32px;height:29px;object-fit:contain;display:block}
.setupBrandRow b{font-size:10px;color:#177042;background:#eef8f1;border:1px solid #cde5d5;border-radius:999px;padding:4px 7px;margin-left:2px}

@media(max-width:1180px){
 .headerCompanyBrand{width:36px;padding:0;justify-content:center}
 .headerCompanyBrand img{width:31px;height:30px}
 .headerCompanyBrand span{display:none}
}
@media(max-width:700px){
 /* スマホでは既存の進捗・モード切替領域を優先。 */
 .headerCompanyBrand{display:none!important}
 .orientationGuide{display:none!important}
 .setupBrandRow{margin-top:-2px}
}
@media (pointer:coarse) and (min-width:700px) and (max-width:1180px){
 .setupBrandRow{height:34px;margin-bottom:12px}
 .setupBrandRow img{width:34px;height:31px}
 .setupBrandRow span{font-size:12px}
}


/* ===== v86: station photo / D1 photo capacity ===== */
.stationPhotoFrame{position:relative;background:#eef2f5;overflow:hidden}
.stationPhotoEmpty{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:16px;color:#7d8b96;font-size:13px;font-weight:850;background:linear-gradient(135deg,#f5f8fa,#e9eef2);z-index:1}
.stationPhotoEmpty::before{content:"▧";display:block;font-size:30px;color:#9baab5;margin-bottom:5px}
.stationPhotoFrame img{position:relative;z-index:2}
.driverMapStationFrame{width:100%;min-height:115px;border-radius:9px;margin-top:8px}
.driverMapStationFrame .driverMapParking{margin-top:0;position:relative;z-index:2}
.checkOnlyStationFrame{width:100%;min-height:180px;border-radius:11px;margin-top:8px}
.checkOnlyStationFrame .checkOnlyParking{position:relative;z-index:2;margin:0}
.stationOnlyPhotoGrid{grid-template-columns:minmax(0,1fr)!important;max-width:640px}
.photoStorageCard{margin:10px 0 16px;border:1px solid #d8e2e9;background:#f8fbfd;border-radius:12px;padding:13px 14px}
.photoStorageHead{display:flex;gap:12px;align-items:center;justify-content:space-between}.photoStorageHead>div{min-width:0}.photoStorageHead strong{display:block;color:#244763;font-size:13px}.photoStorageHead span{display:block;color:#7a8995;font-size:10px;margin-top:2px}
.photoStorageValue{margin-top:10px;color:#23445f}.photoStorageValue strong{font-size:24px}.photoStorageValue span{font-size:11px;color:#6f7f8c;font-weight:800}
.photoStorageBar{height:9px;border-radius:999px;background:#e3eaf0;overflow:hidden;margin-top:8px}.photoStorageFill{height:100%;width:0;background:#2d8a54;border-radius:inherit;transition:width .25s}.photoStorageFill.warn{background:#d79a2f}.photoStorageFill.danger{background:#c94a43}
.photoStorageHint{font-size:10px;color:#697b89;margin-top:7px;line-height:1.5}

/* ===== v87: mobile-friendly station photo registration in admin stop editor ===== */
.stopQuickSearch{position:relative;margin:14px 0 16px}.stopQuickSearch>label{display:block;font-size:12px;font-weight:950;color:#415064;margin-bottom:6px}.stopQuickSearch>input{width:100%;box-sizing:border-box;border:1px solid #bccbd6;border-radius:11px;padding:12px 13px;font-size:16px;background:#fff;color:#233e54}.stopQuickSearchResults{display:none;position:absolute;left:0;right:0;top:calc(100% + 5px);z-index:80;max-height:330px;overflow:auto;background:#fff;border:1px solid #cfdbe3;border-radius:11px;box-shadow:0 12px 28px #19354b22;padding:5px}.stopQuickSearchResults.show{display:block}.stopSearchResult{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;border-bottom:1px solid #edf1f4;background:#fff;padding:10px 9px;text-align:left;color:#29455d;cursor:pointer}.stopSearchResult:last-child{border-bottom:0}.stopSearchResult:hover{background:#f3f8fb}.stopSearchResult span{min-width:0}.stopSearchResult strong{display:block;font-size:13px}.stopSearchResult small{display:block;font-size:10px;color:#7b8994;margin-top:2px}.stopSearchResult em{font-style:normal;font-size:10px;font-weight:900;color:#5b758a;white-space:nowrap}.stopSearchEmpty{padding:12px;color:#75838e;font-size:12px}
.stationPhotoQuickBox{border:1px solid #d7e2e9;border-radius:13px;background:#fbfdfe;padding:12px}.stationPhotoQuickStatus{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;background:#eef2f5;color:#687a89;font-size:10px;font-weight:950;margin-bottom:9px}.stationPhotoQuickStatus.registered{background:#e8f7ee;color:#267348}.stationPhotoQuickStatus.pending{background:#fff3dc;color:#9b6618}.stationPhotoLibraryBtn{width:100%;border:0;border-radius:11px;padding:13px 12px;background:#245f8f;color:#fff;font-size:15px;font-weight:950;cursor:pointer;margin-bottom:9px}.stationPhotoLibraryBtn:active{transform:translateY(1px)}.stationPhotoQuickActions{display:grid;grid-template-columns:auto minmax(180px,1fr) auto;gap:8px;margin-top:10px}.photoAdvanced{margin-top:9px;border-top:1px solid #e2e8ed;padding-top:8px}.photoAdvanced summary{cursor:pointer;color:#73828e;font-size:10px;font-weight:850}.photoAdvanced .field{margin-bottom:0!important}
@media(max-width:650px){.stopQuickSearchResults{position:fixed;left:10px;right:10px;top:105px;max-height:55vh;z-index:2900}.stationPhotoQuickBox{padding:10px}.stationPhotoLibraryBtn{font-size:16px;min-height:50px}.stationPhotoQuickActions{grid-template-columns:1fr 1fr}.stationPhotoQuickActions #saveStopPhotoOnly{grid-column:1/-1;grid-row:1;min-height:48px;font-size:14px}.stationPhotoQuickActions #prevStopPhoto{grid-column:1;grid-row:2}.stationPhotoQuickActions #nextStopPhoto{grid-column:2;grid-row:2}.compactPhotoUrl{display:none}.photoDropZone{min-height:68px;padding:10px}.photoDropZone strong{font-size:12px}}
