/* 管理サイト共通スタイル。確定モック v1.8 の管理画面部品を移植 */
:root{
  --bg:#f2f4f8; --surface:#ffffff; --surface2:#e9edf3; --ink:#1d2530; --muted:#5c6878;
  --line:#d7dde6; --accent:#33569b; --accent-ink:#ffffff;
  --sev-full:#c22f2f; --sev-single:#c2551a; --sev-time:#8f4571; --sev-alt:#a8690f;
  --sev-lane:#2a7f7f; --sev-large:#7a5ea8; --sev-chain:#4a7fb5; --sev-caution:#3d7d3d; --sev-other:#5f6b78;
  --ok:#2f7d43;
  --sev-full-bg:#fbeaea; --sev-single-bg:#fbeee2; --sev-time-bg:#f6eaf1; --sev-alt-bg:#f9efdd;
  --sev-lane-bg:#e3f1f1; --sev-large-bg:#efeaf7; --sev-chain-bg:#e6eef7; --sev-caution-bg:#e8f3e8; --sev-other-bg:#eef1f3;
  --ok-bg:#e6f2e9; --draft-bg:#e8ebf0;
}
*{box-sizing:border-box;}
body.internal{margin:0;background:var(--bg);color:var(--ink);
  font-family:"Segoe UI","Yu Gothic UI","Hiragino Sans",Meiryo,sans-serif;line-height:1.7;}

.appbar{display:flex;align-items:center;gap:16px;padding:10px 18px;
  border-bottom:1px solid var(--line);background:var(--surface);}
.appbar .title{font-size:15px;font-weight:600;}
.appbar .sub{font-size:12px;color:var(--muted);}
.appbar .spacer{flex:1;}
.logout-form{margin:0;}
.link-btn{background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;
  font-family:inherit;padding:0;}
/* appbarのシステム切替リンク（通行規制／要望管理）で、今どちらを見ているか分かるようにする */
.appbar a.link-btn.on{color:var(--ink);font-weight:600;text-decoration:none;
  padding:4px 10px;background:var(--surface2);border-radius:6px;}

/* ボタン */
.btn{font-size:13px;border-radius:6px;padding:7px 16px;border:1px solid var(--line);
  background:var(--surface);color:var(--ink);cursor:pointer;font-family:inherit;text-decoration:none;
  display:inline-block;}
.btn:hover{background:var(--surface2);}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600;}
.btn.primary:hover{filter:brightness(1.06);}
.btn.danger{color:var(--sev-full);}
.btn:disabled{opacity:.5;cursor:not-allowed;}

/* 一覧のプリセット（押すと下の条件欄に値を入れるだけで、母集団は固定しない） */
.presetbar{display:flex;align-items:center;gap:10px;padding:10px 18px 0;flex-wrap:wrap;}
.presetlbl{font-size:11.5px;color:var(--muted);font-weight:600;white-space:nowrap;}
.presets{display:inline-flex;gap:2px;background:var(--surface2);border-radius:8px;padding:3px;font-size:13px;}
.presets span{padding:5px 14px;border-radius:6px;color:var(--muted);cursor:pointer;white-space:nowrap;}
.presets span.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(15,23,42,.1);}
/* 受付待ち・担当未定の件数。押さなくても目に入るようにするためのバッジ。 */
.pcount{margin-left:6px;font-size:11px;font-weight:700;background:var(--accent);
  color:var(--accent-ink);border-radius:9px;padding:1px 6px;}
.pcount.zero{background:var(--line);color:var(--muted);}
.presethint{font-size:11.5px;color:var(--muted);}
/* 経過観察の期日超過表示 */
.stale{font-size:10.5px;font-weight:600;color:var(--sev-full);background:var(--sev-full-bg);
  border-radius:3px;padding:0 5px;white-space:nowrap;}

/* ツールバー・タブ・検索 */
.toolbar{display:flex;align-items:center;gap:10px;padding:12px 18px;flex-wrap:wrap;}
.field-inline.chk{gap:5px;cursor:pointer;}
.field-inline.chk input{margin:0;}

/* 表示切替（アイコン） */
.icontoggle{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;
  background:var(--surface2);flex:none;}
.icontoggle button{border:0;background:none;padding:6px 11px;cursor:pointer;color:var(--muted);
  display:flex;align-items:center;font-family:inherit;}
.icontoggle button + button{border-left:1px solid var(--line);}
.icontoggle button.on{background:var(--surface);color:var(--accent);}
.icontoggle svg{width:18px;height:16px;display:block;fill:currentColor;}

/* 状態プルダウン */
.field-inline{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);
  white-space:nowrap;flex:none;}
.field-inline select{font-family:inherit;font-size:13px;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:6px;padding:5px 8px;}
.toolbar .search{flex:1 1 160px;min-width:120px;}
.tabs{display:flex;gap:2px;background:var(--surface2);border-radius:8px;padding:3px;font-size:13px;}
.tabs span{padding:4px 14px;border-radius:6px;color:var(--muted);cursor:pointer;}
.tabs .on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(15,23,42,.1);}
.search{font-size:13px;color:var(--ink);border:1px solid var(--line);border-radius:6px;
  padding:6px 14px;background:var(--surface);min-width:220px;font-family:inherit;}
.toolbar .search{margin-left:auto;}

/* バッジ */
.badge{display:inline-block;font-size:11px;font-weight:600;border-radius:4px;
  padding:1px 8px;white-space:nowrap;}
.b-full{background:var(--sev-full-bg);color:var(--sev-full);}
.b-single{background:var(--sev-single-bg);color:var(--sev-single);}
.b-time{background:var(--sev-time-bg);color:var(--sev-time);}
.b-alternate{background:var(--sev-alt-bg);color:var(--sev-alt);}
.b-lane{background:var(--sev-lane-bg);color:var(--sev-lane);}
.b-large{background:var(--sev-large-bg);color:var(--sev-large);}
.b-chain{background:var(--sev-chain-bg);color:var(--sev-chain);}
.b-caution{background:var(--sev-caution-bg);color:var(--sev-caution);}
.b-other{background:var(--sev-other-bg);color:var(--sev-other);}
.b-open{background:var(--ok-bg);color:var(--ok);}
.b-draft{background:var(--draft-bg);color:var(--muted);}
.b-end{background:transparent;color:var(--muted);border:1px solid var(--line);}

/* 一覧テーブル */
.list-wrap{overflow-x:auto;}
table.list{width:100%;border-collapse:collapse;font-size:13px;background:var(--surface);}
table.list th{font-size:12px;color:var(--muted);text-align:left;font-weight:600;padding:8px 14px;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface2);white-space:nowrap;}
table.list td{padding:9px 14px;border-bottom:1px solid var(--line);vertical-align:top;white-space:nowrap;}
table.list .num{font-variant-numeric:tabular-nums;}
table.list a{color:var(--accent);text-decoration:none;cursor:pointer;}
table.list a.danger{color:var(--sev-full);}
table.list a.disabled{color:var(--muted);pointer-events:none;text-decoration:none;}
table.list .muted-cell{color:var(--muted);font-size:12px;}
/* 「操作」列は先頭に配置し、横スクロールしても左端に固定して常に押せるようにする */
table.list th:first-child,table.list td:first-child{position:sticky;left:0;z-index:1;
  background:var(--surface);white-space:nowrap;}
/* 受付待ち・担当未定が滞留している行（既定3日以上。判定は internal-reports-list.js の
   isStale）。1列目は上のルールで背景を自前で塗っているため、td 全体に指定して上書きする。 */
table.list tr.stale-row td{background:var(--sev-full-bg);}
/* 未読（自部署が担当で、まだ誰も詳細を開いていない案件） */
table.list td.unread-cell{text-align:center;}
.unread-badge{background:var(--sev-full-bg);color:var(--sev-full);}
/* ソート可能な列見出し */
table.list th.sortable{cursor:pointer;user-select:none;}
table.list th.sortable:hover{color:var(--ink);}
table.list th.sortable .sort-arrow{display:inline-block;width:10px;font-size:9px;color:var(--muted);}
table.list th.sortable.sort-asc .sort-arrow::after{content:"▲";}
table.list th.sortable.sort-desc .sort-arrow::after{content:"▼";}
table.list th.sortable.sort-asc,table.list th.sortable.sort-desc{color:var(--ink);}
table.list th:first-child{background:var(--surface2);}
#statusTabs b{font-weight:400;font-variant-numeric:tabular-nums;}

/* 一覧＋地図の並列レイアウト（地図は「一覧＋地図」選択時のみ表示。左右/上下は stacked クラスで切替） */
.admbody{display:flex;align-items:stretch;}
#listView{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;}
#mapView{display:none;}
#app.with-map #listView{flex:0 0 30%;}
#app.with-map #mapView{display:block;flex:1 1 auto;min-width:0;}

/* 上下（stacked）のときは、ページ全体（appbarを除く）をビューポート実高さのflex列にして
   地図＝5：検索バー＋一覧＝4 の比率で配分する。以前は .admbody に固定px（100vh引く定数）を
   当てていたが、ツールバーを .admbody 内へ移動した現構成とは数値が合わず、一覧の下に
   余白が残る／地図がはみ出るなどズレの原因になっていたため、固定値をやめて実配分にした。 */
body.internal.stacked-page{height:100vh;overflow:hidden;display:flex;flex-direction:column;}
body.internal.stacked-page > main{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}
body.internal.stacked-page #app{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}
#app.stacked .admbody{flex-direction:column;flex:1 1 auto;min-height:0;}
/* 地図＝5 : 検索バー＋一覧（lowerPane）＝4。appbar（タイトル）を差し引いた残りを配分する */
#app.with-map.stacked #mapView{flex:5 1 0;min-height:160px;}
#app.with-map.stacked #lowerPane{flex:4 1 0;min-height:0;display:flex;flex-direction:column;}
#app.stacked #lowerPane > .presetbar,
#app.stacked #lowerPane > .toolbar{flex:0 0 auto;}
#app.stacked #lowerPane > #listView{flex:1 1 auto;min-height:0;}
/* 一覧内部: ページ送りバーは高さ固定、表側だけスクロールさせる（件数が多いときに枠からはみ出さないため） */
#app.stacked #listView .list-wrap{flex:1 1 auto;min-height:0;overflow-y:auto;}
#app.stacked #listView .pager{flex:0 0 auto;}

/* 一覧と地図の境界（ドラッグで幅／高さ変更） */
.splitter{display:none;}
#app.with-map .splitter{display:block;flex:0 0 6px;cursor:col-resize;background:var(--surface2);
  border-left:1px solid var(--line);border-right:1px solid var(--line);position:relative;}
#app.with-map .splitter::before{content:"";position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%);width:2px;height:28px;border-radius:1px;background:var(--line);}
#app.with-map .splitter:hover{background:var(--line);}
#app.stacked .splitter{cursor:row-resize;border-left:0;border-right:0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
#app.stacked .splitter::before{width:28px;height:2px;}
#mapView .map{position:relative;height:calc(100vh - 118px);min-height:420px;}
#app.stacked #mapView .map{height:100%;min-height:200px;}
#mapView #map{position:absolute;inset:0;}

/* ---- 地図の重ね物（住民向け公開マップ・道路台帳図と同じ部品を管理画面用に複製） ---- */
.searchbox{position:absolute;right:16px;top:14px;display:flex;background:#fff;
  border:1px solid #cfd6df;border-radius:8px;overflow:hidden;z-index:5;}
.searchbox input{border:0;padding:6px 12px;font-size:12.5px;width:190px;font-family:inherit;
  color:#3c4654;background:#fff;outline:none;}
.searchbox button{border:0;background:#eef2f6;padding:6px 14px;font-size:12px;color:#3c4654;
  cursor:pointer;border-left:1px solid #cfd6df;font-family:inherit;}

/* 縮尺表示・指定（左上）。画面①・道路台帳図と同じ挙動。 */
.scalebox{position:absolute;left:16px;top:14px;display:flex;align-items:center;gap:6px;
  background:#fff;border:1px solid #cfd6df;border-radius:8px;padding:6px 10px;
  font-size:12.5px;color:#3c4654;z-index:5;}
.scalebox label{font-weight:600;white-space:nowrap;}
.scale-combo{position:relative;}
.scalebox input{width:80px;border:1px solid #cfd6df;border-radius:6px;padding:4px 6px;
  font-family:inherit;font-size:12.5px;color:#3c4654;text-align:right;}
.scale-options{position:absolute;left:0;top:100%;margin-top:4px;width:80px;
  background:#fff;border:1px solid #cfd6df;border-radius:8px;
  box-shadow:0 4px 16px rgba(15,23,42,.15);overflow:hidden;z-index:6;}
.scale-options[hidden]{display:none;}
.scale-options button{display:block;width:100%;border:0;background:#fff;color:#3c4654;
  font-family:inherit;font-size:12.5px;text-align:right;padding:6px 10px;cursor:pointer;}
.scale-options button:hover{background:#eef2f6;}
.scale-options button+button{border-top:1px solid #e3e8ee;}

/* ズームコントロールを検索窓の下に配置（画面①と同じ位置合わせ） */
#mapView .maplibregl-ctrl-top-right .maplibregl-ctrl{margin:58px 16px 0 0;}
#mapView .maplibregl-ctrl-top-right .maplibregl-ctrl-group button{width:42px;height:42px;}
#mapView .maplibregl-ctrl-top-right .maplibregl-ctrl-icon{background-size:22px 22px;}

/* 右端の縦アイコン列（距離計測・座標で移動・印刷・画像出力・現在地） */
.toolbar-right{position:absolute;right:16px;top:157px;
  display:flex;flex-direction:column;background:#fff;border:1px solid #cfd6df;
  border-radius:8px;z-index:6;box-shadow:0 1px 4px rgba(15,23,42,.12);}
.tool-item{position:relative;border-bottom:1px solid #e3e8ee;}
.tool-item:last-child{border-bottom:0;}
.tool-item:first-child button{border-radius:7px 7px 0 0;}
.tool-item:last-child button{border-radius:0 0 7px 7px;}
.toolbar-right button{width:42px;height:42px;border:0;background:#fff;color:#3c4654;
  font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;
  justify-content:center;padding:0;font-family:inherit;}
.toolbar-right button:hover{background:#eef2f6;}
.toolbar-right button.active{background:var(--accent);color:var(--accent-ink);}

.tool-flyout{position:absolute;right:100%;top:0;margin-right:8px;background:#fff;
  border:1px solid #cfd6df;border-radius:8px;padding:10px 12px;width:220px;
  box-shadow:0 4px 16px rgba(15,23,42,.15);}
.tool-flyout[hidden]{display:none;}
.tool-flyout label{font-size:11px;color:#8b96a5;display:block;margin-bottom:4px;}
.tool-flyout .center-coord{font-size:11.5px;color:#3c4654;background:#f5f7f9;
  border-radius:6px;padding:5px 8px;margin-bottom:6px;font-variant-numeric:tabular-nums;}
.tool-flyout .csrow{display:flex;gap:4px;}
.tool-flyout input{flex:1;min-width:0;font-family:inherit;font-size:12px;
  border:1px solid #cfd6df;border-radius:6px;padding:6px 8px;color:#3c4654;}
.tool-flyout .csrow button{width:auto;height:auto;font-family:inherit;font-size:12px;
  border:1px solid #cfd6df;background:#eef2f6;border-radius:6px;padding:6px 10px;
  color:#3c4654;cursor:pointer;white-space:nowrap;}

/* 地図中心の十字マーク */
.center-mark{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  pointer-events:none;z-index:5;}
.center-mark[hidden]{display:none;}

.measurebox{position:absolute;left:50%;transform:translateX(-50%);bottom:20px;
  background:rgba(29,37,48,.9);color:#fff;font-size:12.5px;border-radius:999px;
  padding:8px 8px 8px 18px;display:flex;align-items:center;gap:8px;z-index:9;white-space:nowrap;}
.measurebox[hidden]{display:none;}
.measurebox button{font-family:inherit;font-size:12px;border:1px solid rgba(255,255,255,.4);
  background:transparent;color:#fff;border-radius:999px;padding:3px 12px;cursor:pointer;}

.toast{position:absolute;left:50%;transform:translateX(-50%);top:14px;
  background:rgba(29,37,48,.88);color:#fff;font-size:12px;border-radius:999px;
  padding:6px 18px;z-index:9;display:none;}

/* ---- 印刷 ---- */
.print-head{display:none;}
@media print{
  .appbar,.toolbar,#listView,.splitter,.searchbox,.toolbar-right,.measurebox,.toast,
  .center-mark,.maplibregl-ctrl-top-left{display:none !important;}
  .admbody{display:block !important;}
  #mapView{display:block !important;}
  #mapView .map{position:static;height:100vh;display:flex;flex-direction:column;}
  #mapView #map{position:relative;flex:1;inset:auto;}
  .print-head{display:block;padding:6px 4px 10px;font-size:13px;color:#1d2530;flex:none;}
}

/* ページ送りバー */
.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 18px;border-top:1px solid var(--line);font-size:13px;color:var(--muted);flex-wrap:wrap;}
.pager-size{display:flex;align-items:center;gap:6px;}
.pager-size select{font-family:inherit;font-size:13px;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:6px;padding:4px 8px;}
.pager-nav{display:flex;align-items:center;gap:10px;}
.pager-range,.pager-page{font-variant-numeric:tabular-nums;}
.pager .btn{padding:5px 12px;font-size:12px;}
.pager .btn:disabled{opacity:.45;cursor:not-allowed;}

/* フォーム */
.fld{display:grid;gap:4px;font-size:13px;}
/* .fld の display:grid が [hidden] の既定スタイル（display:none）より詳細度で勝ってしまうため、
   hidden 属性の効果を明示的に取り戻す（担当部署に応じて出し入れする引継ぎ理由欄などで使う）。 */
.fld[hidden]{display:none;}
.fld label{font-size:12px;color:var(--muted);font-weight:600;}
.fld label em{color:var(--sev-full);font-style:normal;margin-left:4px;font-size:11px;}
.fld input:not([type=checkbox]):not([type=radio]),.fld select,.fld textarea{font-family:inherit;
  font-size:13px;color:var(--ink);background:var(--surface);border:1px solid var(--line);
  border-radius:6px;padding:7px 10px;width:100%;}
.fld textarea{resize:vertical;}
/* date/time/datetime-local は既定でブラウザ独自の枠が付き、他の入力欄と揃わない
   （特にiOS Safariでdatetime-localの見た目が浮く）。appearanceを消して上のボーダー等を
   効かせる。 */
.fld input[type=date],.fld input[type=time],.fld input[type=datetime-local]{
  -webkit-appearance:none;appearance:none;}
/* チェックボックス自体は装飾しない（上のルールが適用されると width:100% 等で巨大化する）。 */
.fld input[type=checkbox],.fld input[type=radio]{width:auto;padding:0;border:0;background:none;}
.fld .err{color:var(--sev-full);font-size:11.5px;}
.fld.has-error input,.fld.has-error select,.fld.has-error textarea{border-color:var(--sev-full);}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
/* 日付＋時刻の横並び（規制開始・終了日時） */
.dt-row{display:flex;gap:6px;}
.dt-row input[type=date]{flex:1 1 auto;min-width:0;}
.dt-row input[type=time]{flex:0 0 auto;width:92px;}
.form-error{background:var(--sev-full-bg);color:var(--sev-full);border-radius:6px;
  padding:8px 14px;font-size:13px;}

/* ログイン */
.login-wrap{max-width:380px;margin:60px auto;background:var(--surface);
  border:1px solid var(--line);border-radius:10px;padding:28px 32px;}
.login-wrap h1{font-size:18px;margin:0 0 6px;}
.login-note{font-size:12.5px;color:var(--muted);margin:0 0 16px;}
.login-wrap .fld{margin-bottom:12px;}
.login-wrap .btn{width:100%;}

.home-wrap{max-width:960px;margin:24px auto;padding:0 20px;}

/* 画面③ 登録・編集 */
.edit-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 6px;}
.edit-head h1{font-size:18px;margin:0;}
.edit-head-actions{display:flex;align-items:center;gap:14px;}
/* 「← 一覧へ戻る」。共通の .link-btn（12px）はヘッダーのナビにも使うため、
   見落としやすいこのリンクだけ大きくする。 */
.edit-head .link-btn{font-size:14px;}
.edit{display:flex;align-items:stretch;border-top:1px solid var(--line);}
/* 要望詳細画面の地図の開閉（.form が参照・更新の唯一の画面である要望詳細のみに出す
   ボタン。新規受付は地図が必須のため対象外）。地図を隠すとフォームが全幅になる。 */
#app.map-hidden .esplitter,#app.map-hidden .detmap{display:none;}
#app.map-hidden .form{flex:1 1 auto;border-right:0;}
.form{flex:0 0 560px;min-width:0;border-right:1px solid var(--line);background:var(--surface);
  padding:16px 20px 20px;display:grid;gap:12px;max-height:calc(100vh - 130px);
  overflow-y:auto;align-content:start;}
/* 地図パネル（.esplitter）が無い画面（現場対応システムの案件詳細）は .form を全幅にする。
   地図がある画面はドラッグ幅調整のため既定の flex:0 0 560px のままにする。 */
.edit:has(.report-fields):not(:has(.esplitter)) .form{flex:1 1 auto;border-right:0;}
/* 要望詳細画面は参照項目が多いため、新規受付画面より少し広めの初期幅にする
   （ドラッグでの調整は引き続き可能）。 */
.edit:has(.report-fields):has(.esplitter) .form{flex:0 0 640px;}
/* フォームと地図の幅をドラッグで変更するつまみ */
.esplitter{flex:0 0 6px;cursor:col-resize;background:var(--surface2);position:relative;}
.esplitter::before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:2px;height:28px;background:var(--line);border-radius:1px;}
.esplitter:hover{background:var(--line);}
.form h3{font-size:14px;margin:0;font-weight:600;}
.dept-block{display:grid;gap:12px;}
/* 対応担当部署が未確定の間は目に留まるよう淡いピンクで強調する。 */
.dept-block.dept-unconfirmed{background:var(--sev-full-bg);border-radius:8px;padding:12px 14px;}
.form .checks{flex-direction:row;display:flex;gap:16px;align-items:center;flex-wrap:wrap;}
.form .checks label{display:flex;gap:6px;align-items:center;color:var(--ink);font-weight:400;}
.photo-drop{border:1px dashed var(--line);border-radius:6px;background:var(--surface2);
  color:var(--muted);font-size:12px;padding:16px;text-align:center;cursor:pointer;}
.photo-drop.has-file{color:var(--ink);border-style:solid;}
.formfoot{display:flex;gap:10px;justify-content:flex-end;padding-top:10px;border-top:1px solid var(--line);}
/* サブウィンドウ（Excel出力の出力範囲選択など） */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;
  align-items:center;justify-content:center;z-index:200;padding:20px;}
/* [hidden]と.modal-overlayは詳細度が同点で、作成者スタイルがUA既定の
   [hidden]{display:none}に勝ってしまうため、明示的に閉じた状態を優先させる。 */
.modal-overlay[hidden]{display:none;}
.modal-box{background:var(--surface);border-radius:10px;padding:20px 24px;
  max-width:480px;width:100%;box-shadow:0 8px 30px rgba(0,0,0,.3);display:grid;gap:12px;}
.modal-box h3{margin:0;font-size:16px;}
.modal-box #exportCountMsg.stale{background:none;font-size:13px;padding:0;white-space:normal;}
/* 公開するチェック */
.publish-check{background:var(--surface2);border-radius:6px;padding:10px 12px;}
.publish-check label{display:flex;align-items:center;gap:8px;font-weight:600;white-space:nowrap;}
.publish-check input{width:auto;}
/* 登録・更新情報 */
.meta-block{border-top:1px solid var(--line);padding-top:12px;}
.meta-block h3{margin:0 0 8px;}
.meta-block .meta{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;margin:0;
  font-size:12.5px;}
.meta-block .meta dt{color:var(--muted);}
.meta-block .meta dd{margin:0;color:var(--ink);}

/* 詳細画面：受付フォーム等はタブより上に置く（常にどのタブからも見える）。 */
.detail-top{background:var(--surface);}
.detail-top .meta-block{padding:12px 18px;}
.meta-inline{display:flex;align-items:center;gap:10px;}

/* 編集画面のタブ（編集／変更履歴）。値はDOMに残したまま表示だけ切り替える。 */
.edit-tabs{margin-bottom:2px;}
.tab-panel{display:grid;gap:12px;align-content:start;}
.tab-panel[hidden]{display:none;}

/* 変更履歴（画面③） */
.history-block{display:grid;gap:10px;}
.history-block h3{margin:0;}
.history-list{display:grid;gap:10px;}
.history-empty{margin:0;font-size:12.5px;color:var(--muted);}
.history-item{background:var(--surface2);border-radius:8px;padding:10px 12px;font-size:12.5px;display:grid;gap:6px;}
.history-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.history-badge{display:inline-block;font-size:11px;font-weight:600;border-radius:4px;padding:1px 8px;white-space:nowrap;}
.history-badge.hist-created{background:var(--ok-bg);color:var(--ok);}
.history-badge.hist-changed{background:#e6eef7;color:var(--accent);}
.history-badge.hist-deleted{background:var(--sev-full-bg);color:var(--sev-full);}
.history-when{color:var(--muted);}
.history-note{color:var(--muted);}
.history-diff{margin:0;padding-left:18px;display:grid;gap:3px;}
.history-toggle{font-size:11.5px;justify-self:start;}
.history-full{border-collapse:collapse;width:100%;}
.history-full[hidden]{display:none;}
.history-full th{text-align:left;color:var(--muted);font-weight:600;padding:4px 8px 4px 0;white-space:nowrap;vertical-align:top;width:120px;}
.history-full td{padding:4px 0;word-break:break-word;}

.report-fields{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0 0 4px;font-size:13px;}
.report-fields dt{color:var(--muted);}
.report-fields dd{margin:0;color:var(--ink);}
.report-photos{display:flex;gap:10px;flex-wrap:wrap;}
.report-photos img{width:90px;height:90px;object-fit:cover;border-radius:6px;border:1px solid var(--line);}
.attachment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13px;}
/* multiFilePicker() の選択済み一覧（ファイル選択のたびに追加され、一覧から個別に削除できる） */
.picked-files{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:2px;font-size:13px;}
.picked-files li{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:3px 8px;background:var(--surface2);border-radius:4px;}
.picked-files li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.picked-files li .link-btn{flex:0 0 auto;font-size:12px;}
.history-full tr.history-changed{background:var(--sev-alt-bg);}
.history-full tr.history-changed th,.history-full tr.history-changed td{color:var(--ink);}

/* 路線から区間を指定 */
.route-pick-fld{background:var(--surface2);border-radius:8px;padding:10px 12px;}
.route-pick-fld select{font-family:inherit;font-size:13px;color:var(--ink);background:var(--surface);
  border:1px solid var(--line);border-radius:6px;padding:6px 8px;width:100%;}
.route-hint-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;}
.route-hint{font-size:12px;color:var(--accent);min-height:16px;}
.route-hint-row .link-btn{font-size:12px;}

.emap{flex:1 1 auto;min-width:0;position:relative;min-height:calc(100vh - 130px);
  background:#dfe5ea;overflow:hidden;}
.detmap{flex:1 1 auto;min-width:0;position:relative;min-height:calc(100vh - 130px);
  background:#dfe5ea;overflow:hidden;}
.detmap #map{position:absolute;inset:0;}
.drawbar{position:absolute;left:14px;top:14px;display:grid;gap:4px;background:#fff;
  border:1px solid #cfd6df;border-radius:8px;padding:6px;color:#3c4654;z-index:5;}
.drawbar button{font-family:inherit;font-size:12px;border:1px solid transparent;background:none;
  border-radius:6px;padding:5px 10px;text-align:left;cursor:pointer;color:inherit;white-space:nowrap;}
.drawbar button.on{background:#e8eefb;border-color:#b6c6e6;color:#2c4d8f;font-weight:600;}
.drawhint{position:absolute;left:50%;transform:translateX(-50%);top:14px;
  background:rgba(29,37,48,.85);color:#fff;font-size:12px;border-radius:999px;padding:5px 18px;z-index:5;}

/* 下書き自動保存の復元バナー（画面③） */
.draft-banner{background:var(--sev-alt-bg);border:1px solid var(--sev-alt);border-radius:8px;
  padding:10px 12px;font-size:12.5px;color:var(--ink);display:grid;gap:8px;}
.draft-banner[hidden]{display:none;}
.draft-banner-actions{display:flex;gap:8px;}
.draft-banner-actions .btn{padding:5px 12px;font-size:12px;}

/* 自動ログアウト警告バー（manage-session.js が生成） */
.session-warn{position:fixed;left:50%;transform:translateX(-50%);bottom:24px;z-index:50;
  display:flex;align-items:center;gap:14px;background:var(--surface);color:var(--ink);
  border:1px solid var(--sev-alt);border-radius:10px;padding:12px 18px;font-size:13px;
  box-shadow:0 8px 24px rgba(15,23,42,.25);}
.session-warn[hidden]{display:none;}
.session-warn b{font-variant-numeric:tabular-nums;color:var(--sev-full);}
.session-warn .btn{white-space:nowrap;}

/* 地図の概要カード（ポップアップ） */
.maplibregl-popup-content{font-family:inherit;padding:12px 14px;border-radius:10px;
  box-shadow:0 4px 16px rgba(15,23,42,.18);}
.pop{font-size:12.5px;display:grid;gap:7px;color:var(--ink);}
.pop .ph{display:flex;justify-content:space-between;align-items:start;gap:8px;}
.pop .ph b{font-size:14px;}
.mc-sub{color:var(--muted);font-size:12px;}
.mc-actions{display:flex;gap:8px;margin-top:2px;}
.mc-actions .btn{padding:5px 12px;font-size:12px;}

/* ---- 対応フロー図（案件詳細。_report_flow.html） ---- */
.flowbox{margin:0;padding:12px 18px;background:var(--surface2);border-bottom:1px solid var(--line);}
.flowbox h3{margin:0;font-size:13px;}
.flowhead{display:flex;align-items:center;gap:10px;}
.flowsum{flex:1;font-size:12.5px;color:var(--muted);}
.flowsum strong{color:var(--ink);}
.flowtoggle{font-family:inherit;font-size:12px;border:1px solid var(--line);background:var(--surface);
  color:var(--accent);border-radius:6px;padding:3px 12px;cursor:pointer;flex:none;}
.flow-body{margin-top:10px;}
.flow-steps{display:flex;list-style:none;margin:0 0 10px;padding:0;gap:6px;flex-wrap:wrap;}
.flow-step{flex:1 1 96px;min-width:96px;position:relative;background:var(--surface);
  border:1px solid var(--line);border-radius:8px;padding:8px 10px;text-align:center;}
/* 段階の間の矢印。折り返した行の先頭には出さない */
.flow-step + .flow-step::before{content:"›";position:absolute;left:-9px;top:50%;
  transform:translateY(-50%);color:var(--muted);font-size:16px;line-height:1;}
.flow-step .fs-name{display:block;font-size:12.5px;font-weight:600;color:var(--muted);}
.flow-step .fs-actor{display:block;font-size:11px;color:var(--muted);margin-top:2px;}
.flow-step.done{background:var(--ok-bg);border-color:var(--ok);}
.flow-step.done .fs-name{color:var(--ok);}
.flow-step.on{background:var(--accent);border-color:var(--accent);}
.flow-step.on .fs-name,.flow-step.on .fs-actor{color:var(--accent-ink);}

.flow-notes{margin:8px 0;}
.flow-note{margin:4px 0;font-size:12.5px;color:var(--ink);}
.flow-note.warn{color:var(--sev-full);}
.flow-legend{margin:10px 0 0;font-size:11.5px;color:var(--muted);
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.fl-item{display:inline-flex;align-items:center;gap:4px;}
.fl-box{width:12px;height:12px;border-radius:3px;border:1px solid var(--line);
  background:var(--surface);display:inline-block;}
.fl-box.on{background:var(--accent);border-color:var(--accent);}
.fl-box.done{background:var(--ok-bg);border-color:var(--ok);}
.fl-sep{color:var(--line);}

/* 入力欄の補助説明・引継ぎフォーム */
.field-hint{display:block;font-size:11.5px;color:var(--muted);margin-top:3px;}
.handover-form{margin-top:8px;}
.handover-form textarea{width:100%;font-family:inherit;}

/* ---- 新規受付の登録画面（report_new.html） ---- */
.toolbar-action{margin-left:auto;white-space:nowrap;}
.req{font-size:10.5px;color:var(--sev-full);border:1px solid var(--sev-full);
  border-radius:3px;padding:0 4px;margin-left:4px;vertical-align:middle;}
.inline-row{display:flex;gap:8px;align-items:center;}
.inline-row input{flex:1 1 auto;}
.newmap-wrap{position:relative;height:320px;border:1px solid var(--line);
  border-radius:8px;overflow:hidden;margin:6px 0;}
.newmap-wrap #map{position:absolute;inset:0;}
.checkline{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:400;
  color:var(--ink);margin-bottom:4px;}
.checkline input{margin:0;}
.checkline-box{padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:var(--surface2);}
.frow3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
/* 自動確定・読み取り専用の項目（受付事務所・受付部署・位置など） */
.fld input.auto{background:var(--surface2);color:var(--muted);}

/* ---- 緊急度・担当部署の読み取り専用表示・状態変更フォーム ---- */
/* 部署名と「引継ぎ」ボタンが近すぎるという指摘（スペース2つぶん≒全角2文字相当）。 */
.ro{display:flex;align-items:center;gap:1.4em;}
.pri{display:inline-block;font-size:11px;font-weight:600;border-radius:3px;padding:0 6px;border:1px solid;}
.pri-high{color:var(--sev-full);border-color:var(--sev-full);background:var(--sev-full-bg);}
.pri-normal{color:var(--muted);border-color:var(--line);}
.pri-low{color:var(--muted);border-color:var(--line);opacity:.7;}
.ro-field{font-size:13px;padding:7px 10px;border:1px solid var(--line);border-radius:6px;
  background:var(--surface2);color:var(--ink);}
.status-action-form,.response-new-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px;}
.response-new-form{flex-direction:column;align-items:stretch;max-width:480px;}
.response-new-form .fld{margin-bottom:0;}
.status-action-form input[type=text]{flex:1 1 220px;font-family:inherit;font-size:13px;
  border:1px solid var(--line);border-radius:6px;padding:6px 10px;}
