/* 山商運輸 日次決算・経営管理
   方針：事務所の大型モニターで一日中開いておける落ち着いた画面。
   会社の色：緑（#288462）＝会社・構造、オレンジ（#ff6600）＝今日・強調。
   状態の色：良い＝緑、注意＝黄土色、悪い＝赤（必ず文字でも状態を書く）。
   数字は等幅数字で桁をそろえる。 */
:root{
  --bg:#f2f5f3; --surface:#ffffff; --surface2:#f5f8f6; --ink:#1f2a26; --muted:#5a6762; --line:#d5ded9;
  --green:#1b5e45; --green2:#288462; --green-soft:#e3f2eb; --orange:#ff6600; --orange-ink:#b84a00; --orange-soft:#fff0e5;
  --good:#1e7a43; --good-soft:#e3f3ea; --warn:#946200; --warn-soft:#fbf3dc; --bad:#b4261f; --bad-soft:#fbe8e6;
  --bar:#288462; --bar-muted:#a9c4b8; --grid:#e3ebe7;
  --f:"BIZ UDPGothic","Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic UI","Yu Gothic",Meiryo,sans-serif;
  --fnum:"BIZ UDGothic","Segoe UI","Hiragino Sans",Meiryo,sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--f);font-size:15px;line-height:1.6;font-variant-numeric:tabular-nums}
a{color:var(--green2)}
a:hover{color:var(--green)}
:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
.modebanner{background:var(--orange-soft);color:#7a3200;border-bottom:1px solid #ffc49c;padding:4px 16px;font-size:13px;text-align:center}

.shell{display:grid;grid-template-columns:208px minmax(0,1fr);min-height:100vh}
.shell.noside{grid-template-columns:1fr}
.shell.noside .side{display:none}
.side{background:var(--green);color:#e3f1ea;display:flex;flex-direction:column;padding:16px 10px 40px;position:sticky;top:0;height:100vh;overflow-y:auto}
.brand{display:flex;flex-direction:column;gap:6px;background:#fff;border-radius:8px;padding:10px 12px 9px;margin:0 2px 16px;color:var(--green);text-decoration:none;font-weight:700;font-size:13px;line-height:1.3;box-shadow:inset 0 -3px 0 var(--orange)}
.brand img{width:100%;height:auto;display:block}
.brandsub{color:var(--green)}
.sidemascot{margin-top:auto;padding:18px 6px 0;text-align:center;font-size:12px;color:#cfe6da;line-height:1.4}
.sidemascot img{width:118px;height:auto;display:block;margin:0 auto 4px}
.navgroup{margin-bottom:14px}
.navlabel{font-size:11px;letter-spacing:.14em;color:#9ccab6;padding:0 10px 4px}
.side a:not(.brand){display:block;color:#e3f1ea;text-decoration:none;padding:6px 10px;border-radius:5px;font-size:14px}
.side a:not(.brand):hover{background:var(--green2);color:#fff}
.side a.on{background:#fff;color:var(--green);font-weight:700;box-shadow:inset 4px 0 0 var(--orange)}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;padding:14px 24px;background:var(--surface);border-bottom:3px solid var(--green2)}
.top h1{font-size:20px;margin:0;flex:1 1 auto;text-wrap:balance;border-left:5px solid var(--orange);padding-left:10px;line-height:1.3}
.topactions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.userbox{display:flex;gap:12px;align-items:center;font-size:13px;color:var(--muted)}
.userbox span{display:flex;flex-direction:column;line-height:1.2;color:var(--ink)}
.userbox small{color:var(--muted)}
.userbox form{margin:0}
.content{padding:18px 24px 48px;display:flex;flex-direction:column;gap:16px;max-width:2200px;width:100%}
.flash{margin:12px 24px 0;background:var(--good-soft);border:1px solid #b6dcc5;color:#174f31;padding:8px 14px;border-radius:6px}

.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:14px 18px;min-width:0}
.panel h2{font-size:16px;margin:0 0 10px}
.panel.narrow{max-width:640px}
.panel.danger{border-color:#e7b2ad;border-top:4px solid var(--bad)}
.phead{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;margin-bottom:8px}
.phead h2{margin:0}
.pnote{font-size:12.5px;color:var(--muted)}
.phead .more{margin-left:auto}
.legend{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--orange-ink);font-weight:700}
.legend i{display:inline-block;width:22px;border-top:2px dashed var(--orange)}
.more{display:inline-block;margin-top:8px;font-size:13px}
h3.sub{font-size:13px;margin:0 0 4px}
.good{color:var(--good)} .warn{color:var(--warn)} .bad{color:var(--bad)}
.hint{font-size:13px;color:var(--muted);margin:6px 0}
.note{background:var(--surface);border-left:4px solid var(--orange);padding:8px 14px;border-radius:0 6px 6px 0;margin:0;font-size:14px}
.note.warnnote{border-left-color:var(--warn)}
.empty{color:var(--muted);font-size:14px;padding:12px 0}

/* KPIカード */
.kgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
@media(min-width:1100px){.kgrid{grid-template-columns:repeat(4,1fr)}}
@media(min-width:2300px){.kgrid{grid-template-columns:repeat(8,1fr)}}
.kgrid.small{grid-template-columns:repeat(auto-fit,minmax(200px,260px))}
.kcard{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:12px 16px;display:flex;flex-direction:column;gap:2px;text-decoration:none;color:inherit;min-width:0}
a.kcard:hover{border-color:var(--green2);box-shadow:0 1px 0 var(--green2)}
.kcard.hero{border-top:4px solid var(--orange);background:linear-gradient(var(--orange-soft),var(--surface) 70%)}
.kcard.good{border-top:4px solid var(--good)} .kcard.warn{border-top:4px solid var(--warn)} .kcard.bad{border-top:4px solid var(--bad)}
.klabel{font-size:13px;color:var(--muted);font-weight:700}
.kvalue{font-family:var(--fnum);font-size:clamp(24px,2.2vw,40px);font-weight:700;line-height:1.2;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kunit{font-size:14px;font-weight:400;color:var(--muted);margin-left:4px}
.ksub{font-size:12.5px;color:var(--muted);line-height:1.45}
.kcard.good .kvalue{color:var(--good)} .kcard.warn .kvalue{color:var(--warn)} .kcard.bad .kvalue{color:var(--bad)}

.grid2{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr))}
.grid3{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))}
.twocol{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}

/* グラフ */
svg.chart{width:100%;height:auto;display:block;max-height:340px}
svg.chart .grid{stroke:var(--grid);stroke-width:1}
svg.chart .ylab,svg.chart .xlab{fill:var(--muted);font-size:12px;font-family:var(--fnum)}
svg.chart .xlab.hl{fill:var(--ink);font-weight:700}
svg.chart .bar{fill:var(--bar)}
svg.chart .bar.muted{fill:var(--bar-muted)}
svg.chart .bar.hl{fill:var(--orange)}
svg.chart a:hover .bar{fill:var(--green)}
svg.chart .refline{stroke:var(--orange);stroke-width:2;stroke-dasharray:6 4}
svg.chart .reflab{fill:var(--orange-ink);font-size:12px;font-weight:700}

ol.hbars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
ol.hbars li{display:grid;grid-template-columns:22px minmax(0,1fr) auto;grid-template-areas:"rank label val" "rank track track" "rank sub sub";column-gap:8px;align-items:center}
.rank{grid-area:rank;align-self:start;font-family:var(--fnum);font-size:12px;color:var(--muted);text-align:right;padding-top:2px}
.hlabel{grid-area:label;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hval{grid-area:val;font-family:var(--fnum);font-weight:700;font-size:14px;white-space:nowrap}
.hval small{font-weight:400;color:var(--muted);margin-left:2px;font-size:11.5px}
.htrack{grid-area:track;height:7px;background:var(--surface2);border-radius:4px;overflow:hidden}
.hfill{display:block;height:100%;background:var(--bar);border-radius:4px}
.hsub{grid-area:sub;font-size:12px;color:var(--muted)}

/* 表 */
.tablewrap{overflow-x:auto;max-width:100%}
table.data{border-collapse:collapse;width:100%;font-size:14px}
table.data th,table.data td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
table.data th{background:var(--surface2);font-size:12.5px;color:var(--muted);font-weight:700;white-space:nowrap;position:sticky;top:0}
table.data th a{color:inherit;text-decoration:none}
table.data th a:hover{color:var(--green)}
table.data tr:hover td{background:#f7fbf9}
table.data.compact td,table.data.compact th{padding:5px 8px;font-size:13px}
table.data .num,td.num,th.num{text-align:right;white-space:nowrap;font-family:var(--fnum)}
table.data tr.total td{font-weight:700;background:var(--green-soft)}
table.data tr.idle td{color:var(--muted)}
td.code,.code,.mono{font-family:var(--fnum);font-size:12.5px;color:var(--muted)}
small.code{margin-left:6px}
td.pos{color:var(--good)} td.neg{color:var(--bad)}
td.center{text-align:center}
table.budget input{width:9.5em}
table.budget small.actual{display:block;color:var(--muted);font-size:11.5px}
.tag{display:inline-block;font-size:11.5px;padding:0 6px;margin:0 4px;border-radius:3px;background:var(--green-soft);color:var(--green);white-space:nowrap}
.status{font-size:12px;padding:1px 8px;border-radius:10px;background:var(--surface2)}
.status.done{background:var(--good-soft);color:var(--good)} .status.cancelled{background:var(--bad-soft);color:var(--bad)} .status.preview{background:var(--orange-soft);color:var(--orange-ink)}

/* 操作部品 */
.btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:14px;padding:7px 14px;border-radius:6px;border:1px solid var(--green2);background:var(--surface);color:var(--green);cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{background:var(--green-soft)}
.btn.primary{background:var(--green);color:#fff;border-color:var(--green)}
.btn.primary:hover{background:var(--green2)}
.btn.ghost{border-color:var(--line);color:var(--ink)}
.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}
.btn.danger.ghost{background:var(--surface);color:var(--bad);border-color:#e7b2ad}
.btn.small{padding:4px 10px;font-size:13px}
.btn.wide{width:100%;justify-content:center;margin-top:14px;padding:10px}
.linkbtn{background:none;border:0;color:var(--green2);text-decoration:underline;cursor:pointer;font:inherit;font-size:13px;padding:0}
input,select{font:inherit;font-size:14px;padding:6px 8px;border:1px solid #b9c9c1;border-radius:5px;background:var(--surface);color:var(--ink);max-width:100%}
input:focus,select:focus{border-color:var(--green2);outline:2px solid var(--green-soft)}
input.num{text-align:right;font-family:var(--fnum)}
label{display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--muted);font-weight:700}
label.check{flex-direction:row;align-items:center;gap:6px;font-weight:400;color:var(--ink);font-size:14px}
.filters{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 14px}
.filters label{flex-direction:row;align-items:center;gap:6px;font-weight:400;color:var(--ink);font-size:14px}
.presets{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.chip{display:inline-block;font-size:13px;padding:3px 10px;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--ink);background:var(--surface)}
.chip:hover{border-color:var(--green2)}
.chip.on{background:var(--green);border-color:var(--green);color:#fff}
.activefilters{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px;color:var(--muted)}
.summaryline{display:flex;flex-wrap:wrap;gap:8px 26px;align-items:baseline;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 16px}
.summaryline div{display:flex;gap:6px;align-items:baseline;font-size:13px;color:var(--muted)}
.summaryline b{font-family:var(--fnum);font-size:19px;color:var(--ink)}
.summaryline b.good{color:var(--good)} .summaryline b.warn{color:var(--warn)} .summaryline b.bad{color:var(--bad)}
.summaryline .btn{margin-left:auto}
.datenav{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0}
.segs{display:inline-flex;border:1px solid var(--green2);border-radius:6px;overflow:hidden}
.seg{padding:5px 14px;text-decoration:none;color:var(--green);font-size:14px}
.seg.on{background:var(--green);color:#fff;font-weight:700}
.pager{display:flex;gap:10px;align-items:center;justify-content:flex-end}
.pageinfo{font-size:13px;color:var(--muted)}

.form{display:flex;flex-direction:column;gap:14px}
.fgrid{display:grid;gap:12px 16px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
fieldset{border:1px solid var(--line);border-radius:6px;padding:10px 14px;margin:0;display:flex;flex-direction:column;gap:8px}
legend{font-weight:700;font-size:14px;padding:0 6px}
.vehiclemode>label.check{display:inline-flex;margin-right:18px}
.lineitem{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1.6fr);gap:10px;max-width:860px}
@media(max-width:600px){.lineitem{grid-template-columns:1fr 1fr}.lineitem select{grid-column:1/-1}}
.formactions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.formactions form{margin:0}
form.inline{display:inline-flex;gap:4px;margin:0 6px 0 0}
.confirmbox{display:flex;flex-direction:column;gap:10px;border-top:4px solid var(--green)}
.confirmbox form{display:flex;flex-direction:column;gap:10px;align-items:flex-start;margin:0}
.errors{background:var(--bad-soft);border:1px solid #e7b2ad;color:#7c1b15;border-radius:6px;padding:10px 16px}
.errors p{margin:0 0 4px;font-weight:700}
.errors ul{margin:0;padding-left:1.3em}
ol.steps{margin:0 0 10px;padding-left:1.4em;display:flex;flex-direction:column;gap:2px}
dl.dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 18px;margin:0}
dl.dl dt{color:var(--muted);font-size:13px}
dl.dl dd{margin:0;overflow-wrap:anywhere}

.loginwrap{min-height:72vh;display:flex;flex-wrap:wrap;gap:8px 40px;align-items:center;justify-content:center}
.loginmascot{width:min(240px,50vw);height:auto}
.panel.login{width:min(100%,380px);display:flex;flex-direction:column;gap:4px;border-top:4px solid var(--green2)}
.loginlogo{width:220px;max-width:100%;height:auto;margin:4px 0 2px}
.loginsub{margin:0 0 10px;font-size:13px;color:var(--muted)}
.msgwrap{display:flex;gap:20px;align-items:flex-end;flex-wrap:wrap}
.msgwrap img{width:120px;height:auto}
.panel.login form{display:flex;flex-direction:column;gap:10px}

@media(max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{position:static;height:auto;display:flex;flex-wrap:wrap;gap:4px 10px;padding:10px 16px}
  .navgroup{display:flex;flex-wrap:wrap;gap:2px;margin:0}
  .navlabel{display:none}
  .brand{padding:6px 10px;margin:0 8px 0 0;width:170px}
  .sidemascot{display:none}
  .top,.content{padding-left:16px;padding-right:16px}
  .presets{margin-left:0}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

.tag.bad{background:var(--bad-soft);color:var(--bad)}
table.data.batch input{padding:4px 6px}
table.data.batch tr.idle td{background:var(--surface2)}
table.data tr.haserr td{background:var(--bad-soft)}
.rowerr{color:var(--bad);font-size:12.5px;margin-top:4px}

[hidden]{display:none!important}

/* 案件・必要運賃 */
.tag.ok{background:var(--good-soft);color:var(--good)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.crit{background:var(--bad-soft);color:var(--bad);font-weight:700}
.jobform fieldset{background:var(--surface)}
.inunit{display:flex;align-items:center;gap:4px}
.inunit input{flex:1 1 auto;min-width:0}
small.unit{font-weight:400;color:var(--muted)}
small.fhint{font-weight:400;color:var(--muted);font-size:11.5px}
.jobform details{margin-top:4px}
.jobform summary,.case summary{cursor:pointer;color:var(--green);font-weight:700;font-size:14px}
textarea{font:inherit;font-size:14px;padding:6px 8px;border:1px solid #b9c9c1;border-radius:5px;width:100%;max-width:640px}
.cases{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,560px),1fr))}
.panel.case{border-top:4px solid var(--green2)}
.fares{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin:4px 0 6px}
.fares>div{border:1px solid var(--line);border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;background:var(--surface2)}
.fares small{font-size:12px;color:var(--muted);font-weight:700;line-height:1.3}
.fares b{font-family:var(--fnum);font-size:24px;line-height:1.25}
.fares span{font-size:12px;color:var(--muted)}
.fares em{font-style:normal;font-size:11.5px;color:var(--muted)}
.fares .hl{border:2px solid var(--orange);background:var(--orange-soft)}
.verdict{border-radius:6px;padding:10px 14px;margin:10px 0 6px;font-size:14px;border-left:5px solid var(--line);background:var(--surface2)}
.verdict.crit{border-left-color:var(--bad);background:var(--bad-soft)}
.verdict.warn{border-left-color:var(--warn);background:var(--warn-soft)}
.verdict.ok{border-left-color:var(--good);background:var(--good-soft)}
.vhead{font-weight:700;margin-bottom:2px}
ul.warnlist{list-style:none;margin:6px 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13.5px}
.timeline{font-size:13.5px;margin:8px 0 0}
td.formula{font-family:var(--fnum);font-size:12.5px}
td.muted,.muted{color:var(--muted);font-size:12.5px}
.lock{border-left:3px solid var(--line);padding-left:8px}
.previewbox{border:2px dashed var(--green2)}
.decide{display:flex;gap:18px;flex-wrap:wrap}
.status.st-accepted{background:var(--good-soft);color:var(--good)}
.status.st-declined{background:var(--bad-soft);color:var(--bad)}
.status.st-hold{background:var(--warn-soft);color:var(--warn)}
.status.st-estimated{background:var(--green-soft);color:var(--green)}
.status.vs-active{background:var(--good-soft);color:var(--good);font-weight:700}
.status.vs-draft{background:var(--orange-soft);color:var(--orange-ink)}
.status.vs-study{background:var(--green-soft);color:var(--green)}
tr.laborrow td{background:#fffaf5}
table.narrowtable{max-width:760px}

/* 見積書 */
table.quotelines td:nth-child(2){min-width:230px}
table.quotelines input.num{width:7.5em}
table.quotelines .internal{background:#fafcfb;color:var(--muted)}
label.reason{margin-top:6px;font-weight:700;color:var(--warn)}
.status.qs-draft{background:var(--orange-soft);color:var(--orange-ink)}
.status.qs-issued{background:var(--green-soft);color:var(--green)}
.status.qs-accepted{background:var(--good-soft);color:var(--good);font-weight:700}
.status.qs-lost{background:var(--bad-soft);color:var(--bad)}
.status.qs-hold{background:var(--warn-soft);color:var(--warn)}

/* 期限アラート・助成金 */
.lv{display:inline-block;font-size:12px;font-weight:700;padding:1px 9px;border-radius:4px;white-space:nowrap;color:#fff;text-decoration:none}
.lv-over{background:var(--bad)} .lv-d7{background:var(--orange-ink)} .lv-d30{background:#1f62a8} .lv-d60{background:#5f6b67} .lv-later{background:#9aa6a1}
table.data tr.hot td{background:var(--bad-soft)}
.alertband{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--orange);border-radius:6px;padding:6px 12px;font-size:13.5px}
.alertband>a:first-child{font-weight:700;margin-right:4px}
.cols2{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr))}
.status{white-space:nowrap}

/* 現場改善ホーム */
.hl{display:inline-block;font-size:12.5px;font-weight:700;padding:1px 9px;border-radius:4px;white-space:nowrap;border:1px solid transparent}
.hl-red{background:var(--bad);color:#fff} .hl-yellow{background:var(--warn-soft);color:var(--warn);border-color:#e3c77a}
.hl-green{background:var(--good-soft);color:var(--good);border-color:#b6dcc5} .hl-blue{background:#e4eefa;color:#1f62a8;border-color:#b5cdea}
.hl-unplanned,.hl-notarget,.hl-off{background:#eef1ef;color:#5f6b67;border-color:#d0d8d4}
.homehero{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:8px 28px;border-top:4px solid var(--orange)}
.hlabel{font-size:13px;color:var(--muted)}
.hbig{font-family:var(--fnum);font-size:44px;font-weight:700;line-height:1.1;color:var(--ink)}
.hbig span{font-size:18px;margin-left:4px;color:var(--muted)}
.hbar{position:relative;display:flex;height:22px;background:var(--surface2);border:1px solid var(--line);border-radius:4px;margin:10px 0 6px;overflow:visible}
.hbar i.done{background:var(--green2)} .hbar i.plan{background:repeating-linear-gradient(45deg,#9fd0b8,#9fd0b8 6px,#c4e3d4 6px,#c4e3d4 12px)}
.hbar i.tgt{position:absolute;top:-5px;bottom:-5px;width:0;border-left:3px solid var(--orange)}
.hlegend{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12.5px;color:var(--muted)}
.hlegend i{display:inline-block;width:12px;height:12px;vertical-align:-1px;margin-right:4px;border-radius:2px}
.hlegend i.done{background:var(--green2)} .hlegend i.plan{background:#9fd0b8} .hlegend i.tgt{background:var(--orange);width:3px}
.hlegend .muted{color:#8a9691}
.short{margin:8px 0 0;color:var(--orange-ink);font-size:16px} .short b{font-size:20px} .short.ok{color:var(--good)}
.hside{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-content:start}
.hnum{font-family:var(--fnum);font-size:24px;font-weight:700} .hnum small{font-size:13px;color:var(--muted);margin-left:2px}
.hsub{font-size:12.5px;color:var(--muted)}
.hfoot{grid-column:1/-1;border-top:1px dashed var(--line);padding-top:6px}
.homeband{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 14px}
.bcount{display:inline-flex;gap:6px;align-items:center;text-decoration:none;color:var(--ink)} .bcount b{font-size:20px;font-family:var(--fnum)}
.bstat{display:flex;flex-direction:column;line-height:1.25;border-left:1px solid var(--line);padding-left:12px}
.bstat span{font-size:12px;color:var(--muted)} .bstat b{font-size:16px}
.bphase{flex-basis:100%;font-size:12.5px;color:var(--muted)}
.vcards{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr))}
.vcard{background:var(--surface);border:1px solid var(--line);border-left:6px solid #c8d1cd;border-radius:8px;padding:10px 14px;display:flex;flex-direction:column;gap:6px}
.vcard.lvl-red{border-left-color:var(--bad)} .vcard.lvl-yellow{border-left-color:#d9a400} .vcard.lvl-unplanned{border-left-color:#8a9691}
.vcard header{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.vcard .drv{font-size:16px;display:block} .vmeta{font-size:12px;color:var(--muted)}
.vnums{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;font-family:var(--fnum)}
.vnums.wide{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.vnums div{display:flex;flex-direction:column;font-size:15px} .vnums span{font-family:var(--f);font-size:11.5px;color:var(--muted)}
.vrate{font-size:13.5px} .vrate b{font-size:16px} .imp{font-size:13px;color:var(--orange-ink)} .imp b{font-size:15px}
.rchips{display:flex;flex-wrap:wrap;gap:4px}
.rchip{font-size:12px;background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:1px 8px}
.checked{margin:0;font-size:12.5px;color:var(--good)}
.vcard footer{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.rowbtns{display:flex;flex-wrap:wrap;gap:4px} .rowbtns form{margin:0}
form.inline{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
tr.muted td{color:#8a9691}
@media (max-width:900px){.homehero{grid-template-columns:1fr}.hbig{font-size:34px}}
details.panel>summary{cursor:pointer;color:var(--green);padding:2px 0} details.panel[open]>summary{margin-bottom:8px}
.drillwrap{display:flex;flex-direction:column;gap:16px} .drillwrap td:first-child{white-space:nowrap}

/* かんたん運賃計算 */
.ezform h2{font-size:15px;color:var(--green);margin:0 0 6px;border-bottom:1px dashed var(--line);padding-bottom:3px}
.ezrow{margin-bottom:12px}
.ezgrid{display:grid;gap:10px 14px;grid-template-columns:repeat(auto-fill,minmax(min(100%,190px),1fr))}
.ezgrid label{display:flex;flex-direction:column;gap:3px;font-size:13px;font-weight:700;color:var(--muted)}
.ezgrid input,.ezgrid select{font-size:15px;padding:6px 8px}
.ezmanual{background:var(--orange-soft);border:1px solid #ffc49c;border-left:5px solid var(--orange);border-radius:6px;padding:10px 14px;margin-bottom:10px}
.ezmsg{margin:0 0 8px;font-weight:700;color:var(--orange-ink);font-size:16px}
.ezresult{border-top:4px solid var(--orange)}
.ezout{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));font-family:var(--fnum)}
.ezout>div{background:var(--surface2);border:1px solid var(--line);border-radius:6px;padding:8px 12px;display:flex;flex-direction:column;font-size:19px;font-weight:700}
.ezout span{font-family:var(--f);font-size:12px;color:var(--muted);font-weight:700}
.ezout small{font-family:var(--f);font-size:11.5px;color:var(--muted);font-weight:400}
.ezout .key{background:var(--orange-soft);border-color:var(--orange);color:var(--orange-ink);font-size:28px}
.ezout .floor{border-color:var(--green2)}
.ezout .buy{border-style:dashed}
.ezjudge{margin-top:10px;padding:8px 12px;border-radius:6px;display:flex;flex-wrap:wrap;gap:4px 16px;align-items:baseline}
.ezjudge.ez-ok{background:var(--good-soft);color:var(--good)} .ezjudge.ez-warn{background:var(--warn-soft);color:var(--warn)} .ezjudge.ez-crit{background:var(--bad-soft);color:var(--bad)}
.ezwarn{margin:10px 0 0;padding-left:1.2em;display:grid;gap:3px;font-size:14px}
.ezwarn .ez-bad{color:var(--bad);font-weight:700} .ezwarn .ez-warn{color:var(--warn)} .ezwarn .ez-info{color:var(--muted)}
.eztl{margin:6px 0;padding-left:1.4em;display:grid;gap:2px} .eztl b{display:inline-block;min-width:8.5em;font-family:var(--fnum)}

/* 社内ルール質問AI（チャット） */
.chatbox{max-width:880px;width:100%;border:1px solid var(--line);border-radius:16px;background:var(--surface2);overflow:hidden;display:flex;flex-direction:column}
.chattop{background:var(--green);color:#fff;padding:12px 16px;display:flex;flex-direction:column;line-height:1.4}
.chattop small{opacity:.85}
.chatbody{padding:14px;display:flex;flex-direction:column;gap:12px}
.examples{display:flex;flex-wrap:wrap;gap:6px}
.examples small{flex-basis:100%;color:var(--muted)}
.examples form{margin:0}
.exq{background:var(--surface);border:1px solid var(--green2);color:var(--green);border-radius:999px;padding:3px 12px;font:inherit;font-size:13px;cursor:pointer}
.exq:hover{background:var(--green-soft)}
.chatbody .me{align-self:flex-end;background:var(--green-soft);border:1px solid var(--green2);border-radius:14px 14px 2px 14px;padding:7px 12px;max-width:80%}
.chatbody .ai{align-self:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:14px 14px 14px 2px;padding:10px 14px;max-width:96%;display:flex;flex-direction:column;gap:8px;min-width:0}
.chatbody .ai .sec b{color:var(--green);display:block;font-size:13px}
.chatbody blockquote{margin:4px 0;padding:6px 10px;border-left:3px solid var(--orange);background:var(--orange-soft);white-space:pre-wrap;font-size:14px}
.chatbody blockquote .src{display:block;font-size:11.5px;color:var(--orange-ink);font-weight:700}
.chatbody .ai ul{margin:0;padding-left:1.2em;font-size:13px;display:grid;gap:4px}
.chatbody .fb{display:flex;gap:6px;align-items:center;border-top:1px dashed var(--line);padding-top:6px;margin:0}
.chatbody .fb .btn.on{background:var(--green);color:#fff}
.chatbody .ctx{align-self:flex-end;font-size:11.5px;color:var(--orange-ink)}
.chatinput{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--surface);border-top:1px solid var(--line);padding:10px 14px;margin:0}
.chatinput input[name=q]{flex:1 1 260px;font-size:16px;padding:8px 10px}
.chatinput .check{flex-basis:100%;font-size:12.5px}
.chatnote{margin:0;padding:6px 14px 10px;font-size:12px;color:var(--muted);background:var(--surface)}
.rulemain{border-left:4px solid var(--orange);padding:4px 12px;margin:8px 0;background:var(--orange-soft)}
.rulenear{border-left:4px solid var(--line);padding:4px 12px;margin:8px 0;color:var(--muted)}
.rulemain h3,.rulenear h3{margin:4px 0;font-size:15px}
.rulebody{white-space:pre-wrap;font-family:var(--f);font-size:14.5px;margin:0}
.kcard.muted{opacity:.6}
.clip{max-width:46ch;font-size:12.5px}

/* 配車見積の表紙 */
.ezcover .ezgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}
.ezro{display:block;border:1px solid var(--line);border-radius:5px;padding:7px 10px;font-size:16px;background:var(--surface2);color:var(--ink);font-family:var(--fnum);font-weight:400}
.ezseg{margin:8px 0 0;font-size:13px}
.ezcond{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}
.ezcond summary{cursor:pointer;color:var(--green);font-size:14px}
.ezfares td,.ezfares th{white-space:nowrap}
.ezfares .ezkey{background:var(--orange-soft);color:var(--orange-ink);font-weight:700;font-size:16px}
.ezlive{margin-top:12px;border-top:3px solid var(--orange);padding-top:10px;min-height:60px;transition:opacity .15s}
.ezlive.busy{opacity:.55}
.ezwait{color:var(--muted);margin:0}
.ezhead{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;margin-bottom:8px}
.ezhead b{font-size:16px}
input.ro{background:var(--surface2);color:var(--ink)}
@media (prefers-reduced-motion:reduce){.ezlive{transition:none}}
/* 配車見積：1行目（必須）・2行目（分かるときだけ）と概算のお知らせ */
.ezrow{margin:10px 0 4px;font-size:13px;color:var(--muted)}
.ezrow b{color:var(--ink,#222);margin-right:8px;font-size:14px}
.ezrow:first-of-type{margin-top:0}
.tag.info{background:var(--surface2);color:var(--muted);border:1px solid var(--line)}
.ezapprox{background:var(--warn-soft);border:1px solid #e3c77a;border-left:5px solid var(--warn);border-radius:6px;padding:8px 12px;margin:0 0 10px}
.ezapprox b{color:var(--warn);font-size:15px}
.ezapprox ul{margin:4px 0 4px 1.2em;padding:0}
.ezapprox li{margin:2px 0}
.ezapprox small{color:var(--muted)}
.ezout .dist{border-color:var(--green2);border-width:2px}
/* 課の切り替え（兼務の人・社長・役員） */
.deptswitch{display:flex;flex-wrap:wrap;gap:4px;padding:8px 6px 10px;margin:0 0 6px;border-bottom:1px solid rgba(255,255,255,.18)}
.deptswitch .navlabel{width:100%}
.side .deptswitch a:not(.brand){display:inline-block;padding:3px 10px;border:1px solid rgba(255,255,255,.45);border-radius:999px;font-size:13px}
.side .deptswitch a.on{background:var(--orange);border-color:var(--orange);color:#fff;box-shadow:none}
.deptcards{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));margin-bottom:14px}
/* 整備管理課のホーム：全車両を色で一覧 */
:root{--st-over:#c0352b;--st-week:#e8730c;--st-month:#f2c14e;--st-ok:#cfe6d8;--st-month-ink:#3a2a00}
.lv-d30{background:var(--st-month);color:var(--st-month-ink)}
.mstats{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));margin-bottom:14px}
.mstat{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:0 6px;padding:12px 16px;border-radius:10px;text-decoration:none;color:#fff;background:var(--st-over)}
.mstat .mlab{grid-column:1/-1;font-size:14px;font-weight:700}
.mstat b{font-size:44px;line-height:1.1;font-family:var(--fnum);font-variant-numeric:tabular-nums}
.mstat .munit{font-size:15px;font-weight:700}
.mstat small{grid-column:1/-1;font-size:12.5px;opacity:.95}
.mstat.st-week{background:var(--st-week)}
.mstat.st-month{background:var(--st-month);color:var(--st-month-ink)}
.mstat.st-ok{background:var(--good-soft);color:var(--good);border:1px solid var(--st-ok)}
.boardhead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px}
.legend2{font-size:13px;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.legend2 i{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:3px}
.legend2 i.st-over{background:var(--st-over)} .legend2 i.st-week{background:var(--st-week)}
.legend2 i.st-month{background:var(--st-month)} .legend2 i.st-ok{background:var(--st-ok)}
.vgroup{margin-top:12px}
.vgroup h3{font-size:15px;margin:0 0 6px}
.vgroup h3 small{font-weight:400;color:var(--muted);font-size:13px}
.vtiles{display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(112px,1fr))}
.vt{display:flex;flex-direction:column;gap:1px;padding:6px 8px;border-radius:6px;text-decoration:none;min-height:66px;border:1px solid transparent}
.vt .vno{font-family:var(--fnum);font-size:20px;font-weight:700;line-height:1.15;font-variant-numeric:tabular-nums}
.vt .vcls{font-size:11px;opacity:.85}
.vt .vwhat{font-size:12px;font-weight:700;line-height:1.3}
.vt .more{font-weight:400;opacity:.9}
.vt.st-over{background:var(--st-over);color:#fff}
.vt.st-week{background:var(--st-week);color:#fff}
.vt.st-month{background:var(--st-month);color:var(--st-month-ink)}
.vt.st-ok{background:var(--surface2);color:var(--muted);border-color:var(--line)}
.vt.st-ok .vwhat{font-weight:400}
.vt:hover,.vt:focus-visible{outline:3px solid var(--green2);outline-offset:1px}
.weeks{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr))}
.wcol{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--surface);min-width:0}
.wcol.late{border-color:var(--st-over);background:var(--bad-soft)}
.wcol.busy{border-color:var(--st-week);box-shadow:inset 0 3px 0 var(--st-week)}
.wcol.busy .wh::after{content:"多い";margin-left:6px;font-size:11px;font-weight:700;color:#fff;background:var(--st-week);padding:0 6px;border-radius:999px}
.wcol .wh{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 6px}
.wcol .wh small{color:var(--muted);font-size:11.5px}
.wcol .wn{font-family:var(--fnum);font-size:26px;font-weight:700;line-height:1.2}
.wcol .wn span{font-size:12px;margin-left:2px}
.wcol .wbar{display:block;height:5px;border-radius:3px;background:var(--st-week);margin:2px 0 6px}
.wcol.late .wbar{background:var(--st-over)}
.wcol ul{list-style:none;margin:0;padding:0;font-size:12.5px;display:grid;gap:2px}
.wcol li.none,.wcol li.more{color:var(--muted)}
details.panel summary{cursor:pointer}
/* 採用・退職 */
.rstages{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));margin-bottom:14px}
.rstage{display:flex;flex-direction:column;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-decoration:none;color:inherit}
.rstage span{font-size:12.5px;color:var(--muted)} .rstage b{font-size:26px;font-family:var(--fnum)}
.rstage.on{border-color:var(--orange);box-shadow:inset 0 3px 0 var(--orange)}
.funnel{display:grid;gap:6px;margin:6px 0 10px}
.fstep{display:grid;grid-template-columns:7em 1fr 5em minmax(0,12em);gap:8px;align-items:center;font-size:14px}
.fstep .ftrack{height:16px;background:var(--surface2);border-radius:4px;overflow:hidden}
.fstep .ffill{display:block;height:100%;background:var(--green2)}
.fstep b{font-family:var(--fnum);text-align:right} .fstep small{color:var(--muted)}
small.ref{margin-left:4px;font-size:11px;color:var(--warn);border:1px solid var(--warn);border-radius:3px;padding:0 3px}
.kv{display:grid;gap:4px 18px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.kv div{display:flex;gap:8px} .kv span{color:var(--muted);min-width:8em;font-size:13px}
.cols2{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr))}
.cols2>*{min-width:0}
fieldset.checks{border:1px solid var(--line);border-radius:6px;padding:8px 12px;margin:10px 0;display:flex;flex-wrap:wrap;gap:4px 14px}
.hint.warnnote{color:var(--warn)}
.muted{color:var(--muted)}
@media(max-width:700px){.fstep{grid-template-columns:6em 1fr 4em}.fstep small{grid-column:1/-1}}
/* 事故の分析：月別の積み上げ */
.mbars{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;align-items:end;height:180px;margin:6px 0}
.mbar{display:flex;flex-direction:column;align-items:center;height:100%;min-width:0}
.mstack{flex:1;width:70%;display:flex;flex-direction:column;justify-content:flex-end}
.mstack i{display:block;width:100%}
.c-veh{background:var(--bad)} .c-cargo{background:var(--orange)} .c-brk{background:#a9c4b8}
.mbar b{font-family:var(--fnum);font-size:13px} .mbar small{font-size:11px;color:var(--muted)}
.legend2 i.c-veh,.legend2 i.c-cargo,.legend2 i.c-brk{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:3px}

/* 見られる範囲・組の表（営業所×課） */
table.scopegrid th, table.scopegrid td { text-align: center; vertical-align: middle; }
table.scopegrid th.r { text-align: left; white-space: nowrap; }
table.scopegrid th small, table.scopegrid td small { display: block; font-weight: 400; color: var(--muted, #667); font-size: 11px; }
table.scopegrid td.on { background: #e8f3ee; }
table.scopegrid td.none { color: #b8c0bd; }
table.scopegrid label.cb { display: inline-block; padding: 4px; cursor: pointer; }
table.scopegrid input[type=checkbox] { width: 18px; height: 18px; }
.scopecell { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 6px; font-size: 12.5px; }

/* ---- AI配車（定期便） ---- */
ul.plain{list-style:none;padding:0;margin:4px 0;font-size:13.5px}
ul.plain li{padding:3px 0;border-bottom:1px dashed var(--grid)}
.adgrid{max-height:72vh;overflow:auto}
table.adtable{border-collapse:separate;border-spacing:0;font-size:12.5px;width:auto}
table.adtable th:first-child{min-width:54px}
table.adtable th,table.adtable td{border-bottom:1px solid var(--grid);border-right:1px solid var(--grid);padding:3px 5px;white-space:nowrap}
table.adtable tr:first-child th{position:sticky;top:0;background:var(--surface2);z-index:2}
table.adtable th:first-child{position:sticky;left:0;background:var(--surface2);z-index:1;text-align:left}
table.adtable tr:first-child th:first-child{z-index:3}
th.adh{vertical-align:bottom;text-align:center;min-width:86px}
th.adh b{display:block;font-size:14px}
th.adh small{display:block;color:var(--muted);font-weight:400;font-size:11px;white-space:normal}
tr.sat th{color:#1d4f9a;background:#eef3fb}
tr.sun th{color:var(--bad);background:var(--bad-soft)}
td.adc{text-align:center}
td.adc a{display:block;color:var(--ink);text-decoration:none;min-height:1.4em}
td.adc a:hover{text-decoration:underline}
.adc.c-exceed{background:var(--warn-soft)}
.adc.c-support{background:#ece7f8}
.adc.c-charter{background:#e6eef8;color:#1d4f9a}
.adc.c-empty{background:var(--bad-soft);color:var(--bad);font-weight:700}
.adc.c-empty a{color:var(--bad)}
.adc.c-issue{box-shadow:inset 0 0 0 2px var(--bad)}
.adc.c-off{color:#9aa7a1;background:#f6f8f7}
td.adc.multi{padding:0}
td.adc.multi table.inner{border-collapse:collapse;width:100%}
td.adc.multi table.inner td{border:0;border-right:1px dotted var(--line);padding:3px 4px}
i.chg{font-style:normal;color:var(--orange);font-size:10px;margin-right:2px;vertical-align:top}
.adlegend{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:12.5px;color:var(--muted);margin:8px 0 0}
.adlegend span.adc{display:inline-block;padding:1px 8px;border-radius:4px;border:1px solid var(--line);color:var(--ink)}
table.wishgrid td.wcell{text-align:center;padding:2px}
table.wishgrid td.wcell input{width:16px;height:16px}
table.wishgrid th{font-size:12px}

/* 印刷用の表（荷主ごと・乗務員ごと） */
body.printpage{background:#fff;padding:16px}
.noprint{margin-bottom:12px}
.sheet{color:#000;font-size:12px}
.sheethead{display:flex;justify-content:space-between;gap:16px;margin-bottom:8px;font-size:13px}
.sheethead .right{text-align:right}
table.sheettable{border-collapse:collapse;width:100%;font-size:11px}
table.sheettable th,table.sheettable td{border:1px solid #555;padding:2px 3px;text-align:center;white-space:nowrap}
table.sheettable th{background:#f0f0f0}
table.sheettable tr.sat th{background:#dfe9f7;color:#000}
table.sheettable tr.sun th{background:#f9dcdc;color:#000}
table.sheettable td.wishoff{background:#ffd9d9}
table.sheettable td.changed{background:#fff2a8;font-weight:700}
table.sheettable td.off{color:#999}
table.sheetpeople{border-collapse:collapse;margin-top:10px;font-size:11px}
table.sheetpeople th,table.sheetpeople td{border:1px solid #555;padding:2px 8px}
.legendline{display:flex;gap:12px;font-size:11px;margin:0 0 6px}
.legendline span{padding:0 6px;border:1px solid #888}
.legendline .wishoff{background:#ffd9d9}.legendline .changed{background:#fff2a8}.legendline .off{color:#999}
@media print{
  .noprint{display:none}
  body.printpage{padding:0}
  @page{size:A4 landscape;margin:8mm}
  table.sheettable{font-size:9.5px}
}

/* AI配車：人ごとの表 */
.viewtabs{margin-bottom:8px}
.pgrid{max-height:76vh;overflow:auto}
table.ptable{border-collapse:separate;border-spacing:0;font-size:11.5px;background:#fff}
table.ptable th,table.ptable td{border-right:1px solid #c9d3ce;border-bottom:1px solid #c9d3ce;padding:2px 3px;text-align:center;vertical-align:middle}
table.ptable td{min-width:78px;max-width:110px;height:40px}
table.ptable th:first-child,table.ptable th:last-child{white-space:nowrap;background:var(--surface2);min-width:44px}
.pgrid table.ptable th:first-child{position:sticky;left:0;z-index:1}
.pgrid table.ptable tr:nth-child(5) th{position:sticky;top:0;z-index:2}
th.pname{background:var(--surface2);font-size:12px;white-space:nowrap}
th.pname small{display:block;color:var(--muted);font-weight:400}
tr.sumrow td,tr.noterow td{font-size:11px;height:auto}
td.pnote{color:var(--muted);font-size:10.5px;white-space:normal}
table.ptable span.pr{display:block;border-radius:3px;padding:1px 2px;margin:1px 0;line-height:1.25;color:#111;white-space:normal}
table.ptable span.pr.iss{box-shadow:inset 0 0 0 2px var(--bad)}
span.pev{display:block;font-size:10px;color:#444;border:1px dashed #999;border-radius:3px;margin:1px 0;padding:0 2px}
span.pev.blk{border-style:solid;border-color:#333;font-weight:700;background:#fff}
table.ptable td.wishoff{background:#ff2b2b}
table.ptable td.restday{background:#ffff66}
table.ptable td a{display:block;color:inherit;text-decoration:none;min-height:34px}
table.ptable td a:hover{outline:2px solid var(--orange)}
table.ptable tr.sat th{background:#dfe9f7;color:#1d4f9a}
table.ptable tr.sun th{background:#f9dcdc;color:var(--bad)}
.plegend{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:11.5px;margin:4px 0 8px;align-items:center}
.plegend span{padding:1px 8px;border:1px solid #999;border-radius:3px}
.plegend .wishoff{background:#ff2b2b;color:#fff}.plegend .restday{background:#ffff66}
@media print{
  table.ptable{font-size:8.5px}
  table.ptable td{min-width:0;height:auto}
}
.adc.c-swap{background:#e2f0d9}
small.pmemo{display:block;font-size:10px;font-weight:700;color:#7a3200}

/* 2段階のログイン・ログインの見張り */
.warnbanner{background:var(--bad-soft);color:var(--bad);border-bottom-color:#e7b2ad}
.warnbanner a{color:var(--bad);font-weight:700}
.panel.login.wide2fa{max-width:520px}
.qrbox{display:flex;justify-content:center;margin:10px 0}
.qrbox svg{width:220px;height:220px;border:1px solid var(--line)}
.keytext{font-family:var(--fnum);font-size:16px;letter-spacing:1px;background:var(--surface2);padding:6px 10px;border-radius:4px;word-break:break-all}
ol.steps2fa{padding-left:20px;font-size:14px}
tr.bad td{color:var(--bad)}

/* 備品の発注（大きなボタン・スマートフォン向け） */
.btn.hugebtn,.hugebtn{background:#1f6f4a;border-color:#1f6f4a;color:#fff;font-weight:700;font-size:20px;padding:16px 28px;min-height:56px;border-radius:12px}
.bigok{background:#1f8a4c;border-color:#1f8a4c;color:#fff}
.btn.small.bigok,.sptable .bigok{padding:10px 16px;font-size:16px}
.sptiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.sptile{display:flex;flex-direction:column;justify-content:center;min-height:76px;padding:12px;border:2px solid var(--line,#d5dbe3);border-radius:12px;background:#fff;cursor:pointer;font-size:17px;line-height:1.3}
.sptile input{position:absolute;opacity:0;pointer-events:none}
.sptile small{color:var(--muted,#667);font-size:13px;margin-top:4px}
.sptile.more{background:#f7f8fa}
.sptile.on,.sptile:has(input:checked){border-color:#1d5fbf;background:#e9f1ff;box-shadow:0 0 0 2px #1d5fbf inset}
.sptile:focus-within{outline:3px solid #8db5ff}
.qtybox{display:flex;align-items:center;gap:12px}
.qtybox input{width:110px;font-size:28px;text-align:center;padding:10px}
.qbtn{width:64px;height:64px;font-size:32px;border-radius:50%;border:2px solid #1d5fbf;background:#fff;color:#1d5fbf;cursor:pointer}
.pricebox input{width:180px;font-size:24px;padding:10px;text-align:right}
.spform .sum{margin-top:10px;font-size:18px}.spform .sum b{font-size:24px}
.req{background:#c62828;color:#fff;border-radius:4px;padding:1px 6px;font-size:12px;margin-left:6px}
.upwarn{margin:10px 0;padding:12px 14px;border-radius:8px;background:#fff6d6;border:2px solid #e0b100;color:#5b4500;font-weight:700;font-size:16px}
.upbadge{margin-top:4px;display:inline-block;padding:2px 8px;border-radius:6px;background:#fff6d6;border:1px solid #e0b100;color:#5b4500;font-size:13px}
.warnpanel{border-left:6px solid #e0b100}
.uplist{margin:0;padding-left:1.2em;line-height:1.9}
.spill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:13px;font-weight:700}
.spill.ok{background:#e3f5ea;color:#1f6b3d}.spill.wait{background:#fdecd7;color:#8a4b00}
.sptotal{display:flex;gap:24px;flex-wrap:wrap;margin:8px 0 14px}
.sptotal span{display:block;color:var(--muted,#667);font-size:13px}.sptotal b{font-size:28px}.sptotal small{font-size:14px;margin-left:2px}
.sptotal b.warn{color:#b35c00}
.monthnav{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.monthnav h2{margin:0}
form.inline{display:inline}
span.up{color:#b3261e;font-weight:700}span.down{color:#1f6b3d}
tr.muted td{color:#999}
@media (max-width:700px){.sptiles{grid-template-columns:1fr 1fr}.hugebtn{width:100%;text-align:center}.sptable th:nth-child(6),.sptable td:nth-child(6),.sptable th:nth-child(7),.sptable td:nth-child(7){display:none}}

/* 稼働率 */
.ptabs{display:inline-flex;border:1px solid var(--line,#d5dbe3);border-radius:8px;overflow:hidden;margin-right:8px}
.ptabs a{padding:6px 16px;text-decoration:none;color:inherit}.ptabs a.on{background:var(--green,#1f6f4a);color:#fff;font-weight:700}
.ucards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin:12px 0}
.ucard{border:1px solid var(--line,#d5dbe3);border-radius:10px;padding:12px 14px;background:#fff}
.ucard span{display:block;font-size:13px;color:var(--muted,#667);margin-bottom:4px}
.ucard b{font-size:28px}.ucard b small{font-size:14px;margin-left:2px}.ucard>small{display:block;color:var(--muted,#667);font-size:12px;margin-top:4px}
.ucard small.bad,.ucard b.bad,.utable small.bad{color:#b3261e;font-weight:700}
.ucard b.warn,.utable .warn,.daytable .warn{color:#b35c00}
.upct{font-weight:700;padding:1px 6px;border-radius:6px}.upct.big{font-size:28px;display:inline-block;padding:2px 8px}
.upct.good{background:#e3f5ea;color:#1f6b3d}.upct.warn{background:#fff3cd;color:#7a5600}.upct.bad{background:#fde3e1;color:#a4251c}
.ubar{height:6px;background:#eef1f4;border-radius:3px;margin-top:4px;min-width:80px}
.ubar i{display:block;height:100%;border-radius:3px;background:#8aa}.ubar i.good{background:#2e9b5c}.ubar i.warn{background:#e0b100}.ubar i.bad{background:#d0453b}
.rbar{display:grid;grid-template-columns:190px 1fr 110px;align-items:center;gap:10px;margin:6px 0}
.rtrack{height:14px;background:#eef1f4;border-radius:7px;overflow:hidden}.rtrack i{display:block;height:100%;background:#3d7fb8}.rtrack i.unset{background:#d0453b}
.rval{text-align:right;font-variant-numeric:tabular-nums}
.sortlink{text-decoration:none;border-bottom:1px dotted}.sortlink.on{font-weight:700;border-bottom:2px solid}
.tag{display:inline-block;margin-left:6px;padding:0 6px;border-radius:4px;background:#eef1f4;font-size:12px}
.daytable td{vertical-align:middle}.daytable .dcol{white-space:nowrap}.daytable tr.sun .dcol{color:#c62828}.daytable tr.sat .dcol{color:#1d5fbf}
.dbar{position:relative;height:18px;background:#fafbfc;border:1px solid #e3e7ec;border-radius:4px;min-width:260px}
.dbar i{position:absolute;top:0;bottom:0}.dbar i.run{background:#2e9b5c}.dbar i.stop{background:#eef1f4}.dbar i.stop.need{background:#f6c4bf}
.dscale{position:relative;height:14px;font-size:11px;color:var(--muted,#667);font-weight:400;min-width:260px}.dscale span{position:absolute;transform:translateX(-50%)}
.legend2 i.run,.legend2 i.stop{display:inline-block;width:14px;height:10px;margin:0 4px 0 12px;vertical-align:middle}
.legend2 i.run{background:#2e9b5c}.legend2 i.stop{background:#eef1f4;border:1px solid #ccd}.legend2 i.stop.need{background:#f6c4bf}
.rin{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:3px 0;padding:4px 6px;border-radius:6px}
.rin.unset{background:#fff1f0}.rin .rtime{min-width:150px;font-weight:700}.rin .rtime small{font-weight:400;color:var(--muted,#667)}
.rin select{min-width:170px}.rin input[type=text]{flex:1;min-width:140px}
.formactions.sticky{position:sticky;bottom:0;background:rgba(255,255,255,.95);padding:10px 0;border-top:1px solid #e3e7ec}
@media (max-width:700px){.rbar{grid-template-columns:110px 1fr 70px}.utable th:nth-child(3),.utable td:nth-child(3){display:none}}

/* 売上・距離・時間／フリー拡大 */
tr.subtotal td{background:#f6f8fa;font-weight:700}
.fcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.fcard{border:1px solid var(--line,#d5dbe3);border-radius:12px;padding:14px 16px;background:#fff}
.fcard h3{margin:0 0 8px}.fline{display:flex;align-items:baseline;gap:8px;margin:6px 0}
.fline span{min-width:110px;color:var(--muted,#667);font-size:13px}.fline b{font-size:26px}.fline small{color:var(--muted,#667)}
.fline b.bad,.fcard p.bad{color:#b3261e}.fline b.good{color:#1f6b3d}.fcard p.bad{margin:4px 0;font-weight:700}
.fsub{margin-top:8px;font-size:13px;color:var(--muted,#667);line-height:1.7}
td.badcell{background:#fde3e1}
.payin{width:120px;text-align:right}
.peergrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 14px}
.check.peer{padding:6px 8px;border:1px solid #e3e7ec;border-radius:8px}
.kindform{margin-left:8px}.kindform select{padding:2px 4px}
p.big{font-size:18px}p.big b{font-size:24px}
.fline{flex-wrap:wrap}.fline b{white-space:nowrap}.fline small{white-space:nowrap}

/* AI整備計画 */
.mstats2{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin:12px 0}
.mstat2{display:block;border:1px solid var(--line,#d5dbe3);border-radius:12px;padding:12px 14px;background:#fff;text-decoration:none;color:inherit}
.mstat2 span{display:block;font-size:13px;color:var(--muted,#667)}.mstat2 b{font-size:30px}.mstat2 small{margin-left:2px}
.mstat2.warn{border-color:#e0b100;background:#fffaf0}.mstat2.bad{border-color:#d0453b;background:#fff3f2}.mstat2.good{border-color:#2e9b5c;background:#f2fbf5}
.dangerpanel{border-left:6px solid #d0453b}.nodlist{margin:0;padding-left:1.2em;line-height:1.9}
.mptable tr.dayhead td{background:#eef3f8;font-weight:700}.mptable tr.dayhead.sun td{color:#c62828}.mptable tr.dayhead.sat td{color:#1d5fbf}
.mptable td.acts{white-space:nowrap}.mptable td.acts form{margin-right:4px}
.kind{display:inline-block;padding:2px 8px;border-radius:6px;font-size:13px;font-weight:700}
.k-shaken{background:#fde3e1;color:#a4251c}.k-inspect3m{background:#e3eefc;color:#1d4f9b}.k-oil{background:#fff3cd;color:#7a5600}.k-tire{background:#e8e3fc;color:#4b2e9b}
.spill.okp{background:#e3eefc;color:#1d4f9b}.spill.done{background:#eef1f4;color:#555}.spill.ng{background:#fde3e1;color:#a4251c}
.teamcal th,.teamcal td{text-align:center;min-width:34px;padding:4px}.teamcal td.toff{background:#eef1f4;color:#999}.teamcal td.tbusy{background:#e3eefc;font-weight:700}
.teamcal th.sun{color:#c62828}.teamcal th.sat{color:#1d5fbf}
.tread{font-weight:700;padding:1px 6px;border-radius:6px}.tread.good{background:#e3f5ea;color:#1f6b3d}.tread.warn{background:#fff3cd;color:#7a5600}.tread.bad{background:#fde3e1;color:#a4251c}
.treadin{width:80px}.oilform input[type=date]{width:150px}.oilform input[type=text]{width:110px}
.kv .spill{align-self:flex-start}
.spill{white-space:nowrap}
/* タイヤの図 */
.tgrid{display:grid;grid-template-columns:260px 1fr;gap:18px;align-items:start}
.tdiagram{border:1px solid #e3e7ec;border-radius:12px;padding:10px;background:#fafbfc}
.tcab{text-align:center;font-size:12px;color:var(--muted,#667);border:1px dashed #ccd;border-radius:8px;padding:4px;margin-bottom:8px}
.trow{display:flex;align-items:center;gap:4px;margin:8px 0}.tname{width:30px;font-size:12px;color:var(--muted,#667)}
.taxle{flex:1;height:4px;background:#ccd;border-radius:2px;min-width:14px}
.tbox{width:42px;min-height:46px;border-radius:8px;border:2px solid #ccd;background:#fff;font-size:12px;font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.2}
.tbox small{font-weight:400;font-size:10px;color:var(--muted,#667)}
.tbox.good{border-color:#2e9b5c;background:#e3f5ea}.tbox.warn{border-color:#e0b100;background:#fff3cd}.tbox.bad{border-color:#d0453b;background:#fde3e1}
.tbox.empty{border-style:dashed;color:#999;font-weight:400;font-size:10px}
td.warn{color:#b35c00;font-weight:700}
@media (max-width:800px){.tgrid{grid-template-columns:1fr}.tdiagram{max-width:320px;margin:0 auto}}
.tgrid>div{min-width:0}
/* 携帯：メニューを畳む */
.navtoggle{display:none}
@media(max-width:900px){
  .side{align-items:center;justify-content:space-between}
  .navtoggle{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:16px;font-weight:700;color:var(--green);background:#fff;border:0;border-radius:10px;padding:10px 16px;min-height:44px;cursor:pointer}
  .navicon{font-size:22px;line-height:1}
  .sidenav{width:100%}
  html.js .sidenav{display:none}
  html.js .side.open .sidenav{display:block;padding-top:8px}
  .side.open .navlabel{display:block;width:100%;margin-top:8px}
  .side.open .sidenav a:not(.brand){padding:10px 12px;font-size:15px}
}
