:root{
  --bg:#f4f6f9; --card:#ffffff; --ink:#1d2430; --mut:#626b7b; --line:#e3e7ee;
  --accent:#2563eb; --accent-d:#1d4ed8; --good:#15a34a; --good-bg:#e9f8ef;
  --tint:#eef3ff; --danger:#d1453b; --danger-bg:#fdecea; --warn:#c67a12;
}
*{box-sizing:border-box}
body{margin:0;font-family:"Segoe UI",system-ui,"Hiragino Kaku Gothic ProN","Meiryo",sans-serif;background:var(--bg);color:var(--ink);line-height:1.65}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1000px;margin:0 auto;padding:24px 18px 72px}
header.top{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:14px 18px;background:#fff;position:sticky;top:0;z-index:5}
header.top .brand{font-weight:700}
header.top .brand a{color:var(--ink)}
header.top .brand small{color:var(--mut);font-weight:400;margin-left:8px}
h1{font-size:22px;margin:18px 0 6px}
h2{font-size:17px;margin:26px 0 10px;border-left:4px solid var(--accent);padding-left:10px}
.muted{color:var(--mut)}
.hint{font-size:12px;color:var(--mut);margin-top:4px}
code{background:#eef1f6;border:1px solid var(--line);border-radius:5px;padding:1px 6px;font-size:13px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin:12px 0;box-shadow:0 1px 2px rgba(20,30,50,.04)}
.btn{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:8px;padding:9px 16px;font-size:14px;cursor:pointer}
.btn:hover{background:var(--accent-d);text-decoration:none}
.btn.sec{background:#eef1f6;color:var(--ink);border:1px solid var(--line)}
.btn.sec:hover{background:#e4e8ef}
.btn.xs{padding:5px 10px;font-size:12.5px;border-radius:6px}
.btn.danger{background:var(--danger)}
.btn.danger:hover{background:#b23a31}
.btn.ghost{background:transparent;color:var(--mut);border:1px solid var(--line);padding:5px 8px}
.btn:disabled{opacity:.5;cursor:default}
label{display:block;font-size:13px;color:var(--mut);margin:10px 0 4px}
input[type=text],input[type=number],input[type=date],input[type=month],input[type=tel],input[type=email],input[type=password],textarea,select{width:100%;background:#fff;border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:9px 11px;font-size:14px;font-family:inherit}
input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);border-color:var(--accent)}
.row{display:flex;gap:14px;flex-wrap:wrap}
.row>.col{flex:1;min-width:200px}
table{width:100%;border-collapse:collapse;margin-top:6px;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
th,td{text-align:left;padding:9px 11px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle}
th{color:var(--mut);font-weight:600;font-size:12px;background:#f7f9fc}
tr:last-child td{border-bottom:0}
.badge{display:inline-block;font-size:11px;padding:2px 9px;border-radius:999px;background:#eef1f6;color:var(--ink);border:1px solid var(--line)}
.badge.live{background:#e7f0ff;color:#1d4ed8;border-color:#cfe0ff}
.badge.ok{background:var(--good-bg);color:#0f7a37;border-color:#bfe6cd}
.badge.drop{background:var(--danger-bg);color:var(--danger);border-color:#f3c9c3}
.badge.src{background:#f3eefe;color:#6b3fb0;border-color:#e0d3f5}
.badge.mon{background:#eef6fb;color:#1c6b8c;border-color:#cfe6f2}
.notice{background:var(--good-bg);border:1px solid var(--good);color:#0f7a37;padding:10px 14px;border-radius:8px;margin:10px 0;font-size:14px}
.kpi{font-size:26px;font-weight:700}
.kpi small{font-size:12px;color:var(--mut);font-weight:400}
.flex-between{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.login-card{width:100%;max-width:360px}
.big-cta{width:100%;font-size:16px;padding:12px}

/* 各部門トップ */
.top-card{text-align:center;background:linear-gradient(180deg,#fffdf5,#fff);border-color:#f0e6c8}
.top-name{font-size:20px;font-weight:700;color:var(--ink);margin:4px 0 2px}
.top-rate{color:var(--good);font-size:15px}

/* ファネル */
.funnel{padding:4px 0}
.fstage{margin:0}
.fbar-wrap{display:flex;align-items:center;gap:12px}
.fbar{background:linear-gradient(90deg,var(--accent),#5b8def);color:#fff;border-radius:8px;padding:10px 12px;min-width:64px;display:flex;align-items:center;transition:width .3s;box-shadow:0 1px 2px rgba(20,30,50,.08)}
.fnum{font-weight:700;font-size:15px;white-space:nowrap}
.flabel{font-size:14px;font-weight:600}
.fstep{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px;margin-right:6px;vertical-align:middle}
.ftrans{margin:2px 0 2px 8px;padding:3px 0 3px 14px;border-left:2px dashed var(--line);font-size:13px;color:var(--ink)}
.ftrans .farrow{color:var(--mut);margin-right:4px}
.ftrans.worst{border-left-color:var(--danger);color:var(--danger);font-weight:600}
.ftrans.worst .farrow{color:var(--danger)}

/* AIアクション */
.action{border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:8px;padding:10px 14px;margin:10px 0;background:#fff}
.action-title{font-weight:700;font-size:15px;margin-bottom:4px}
.anum{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px;margin-right:8px}
.action-why{font-size:13.5px;background:var(--tint);border-radius:6px;padding:6px 10px;margin:4px 0}
.action-how{font-size:13.5px;color:var(--ink)}
.advice-doc{white-space:pre-wrap;background:var(--tint);border:1px solid #dbe6ff;border-radius:8px;padding:14px 16px;font-size:14px;line-height:1.8;color:var(--ink)}
.design-wrap{margin-top:14px;border-top:1px dashed var(--line);padding-top:12px}
.design-doc{background:#fdf7ee;border-color:#f0dcb4}

/* フェーズ別 離脱理由トップ3 */
.phase-block{margin:10px 0;padding:8px 0 4px;border-top:1px solid var(--line)}
.phase-block:first-of-type{border-top:0}
.phase-head{font-size:14px;margin-bottom:4px}
.phase-top{list-style:decimal;margin:0;padding-left:22px}
.phase-top li{display:grid;grid-template-columns:1fr auto 90px;align-items:center;gap:8px;font-size:13.5px;margin:3px 0}
.phase-top .pr-count{white-space:nowrap;color:var(--mut)}

/* 比較テーブル */
.rate-low{background:#fdecea;color:var(--danger);font-weight:700}
.minibar{display:inline-block;width:90px;height:8px;background:#eef1f6;border-radius:5px;overflow:hidden;vertical-align:middle;margin-right:6px}
.minibar span{display:block;height:100%;background:var(--accent)}

/* マスタ管理 */
.master-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:14px}
.master-col{min-width:0}
@media (max-width:520px){ .master-grid{grid-template-columns:1fr} }
.master-list{list-style:none;margin:0;padding:0}
.master-list li{display:flex;align-items:center;gap:8px;padding:7px 4px;border-bottom:1px solid var(--line)}
.master-list li:last-child{border-bottom:0}
.master-list .mv{font-weight:600;flex:1}
.master-list .mused{font-size:12px;white-space:nowrap}
.master-list .ord{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#eef1f6;color:var(--mut);font-size:11px;border:1px solid var(--line)}
.master-list .move{display:inline-flex;gap:3px}
.master-list .move .btn.xs{padding:3px 7px}
.al-toggle{display:inline-flex;align-items:center;gap:6px;margin:0;cursor:pointer;color:var(--ink);font-size:13px}
.al-toggle input{width:auto}
td input[type=number]{width:90px}

/* 連絡先（一覧からワンタップでアクション） */
.contacts{display:flex;flex-direction:column;gap:3px;margin:5px 0 4px}
.contact{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;padding:2px 8px;border-radius:6px;border:1px solid var(--line);width:fit-content;max-width:100%}
.contact:hover{text-decoration:none;opacity:.85}
.contact.tel{background:#e9f8ef;color:#0f7a37;border-color:#bfe6cd}
.contact.mail{background:#eef3ff;color:#1d4ed8;border-color:#cfe0ff}
.contact.map{background:#fdf3e0;color:#9a6a16;border-color:#f0dcb4}

/* 滞留アラームバー（画面上部） */
.alert-bar{border-bottom:1px solid var(--line);padding:9px 18px;font-size:14px}
.alert-bar.warn{background:#fff7e6;border-color:#f3e0b8;color:#8a5a12}
.alert-bar.urgent{background:#fdecea;border-color:#f3c9c3;color:#b23a31}
.alert-bar.info{background:#eef6fb;border-color:#cfe6f2;color:#1c6b8c}
.alert-inner{max-width:1000px;margin:0 auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.al-bell{font-size:16px}
.al-tag{display:inline-block;font-size:12px;padding:2px 9px;border-radius:999px;background:#fff;border:1px solid currentColor}
.al-link{margin-left:auto;font-weight:700;background:#fff;border:1px solid currentColor;border-radius:6px;padding:4px 12px;color:inherit}
.al-link:hover{text-decoration:none;opacity:.85}
.stalled-notice{background:#fff7e6;border-color:#e6b95a;color:#8a5a12}

/* 滞留バッジ・行ハイライト */
.badge.stall{margin-top:3px}
.badge.stall.warn{background:#fff3d6;color:#8a5a12;border-color:#eccf8f}
.badge.stall.urgent{background:#fbdad4;color:#b23a31;border-color:#eeb0a7}
.badge.need{background:#eef6fb;color:#1c6b8c;border-color:#cfe6f2;margin-top:3px}
.row-warn{background:#fffaf0}
.row-warn td:first-child{box-shadow:inset 4px 0 0 #e6b95a}
.row-urgent{background:#fdf0ee}
.row-urgent td:first-child{box-shadow:inset 4px 0 0 var(--danger)}

/* ステッパー（応募者一覧） */
.stepper{display:flex;gap:5px;margin-bottom:2px}
.step{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#eef1f6;color:var(--mut);font-size:12px;border:1px solid var(--line)}
.step.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.step.drop{background:var(--danger);color:#fff;border-color:var(--danger)}
.row-dropped{background:#fff7f6}

/* メモ（申し送り・一覧から更新） */
.note-form{display:flex;flex-direction:column;gap:5px}
.note-form textarea{min-height:44px;font-size:12.5px;padding:6px 8px;resize:vertical}
.note-form button{align-self:flex-start}

/* 操作 */
.ops{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.inline{display:inline}
.drop-form{display:inline-flex;gap:4px;align-items:center}
.drop-form select{width:auto;padding:5px 8px;font-size:12.5px}
.drop-form .other-reason{width:150px;padding:5px 8px;font-size:12.5px}

/* ===== 応募者一覧を横スクロールなしで納める ===== */
/* PC・広い画面：固定レイアウトで列幅を配分し、長い文字は折り返す＝コンテナ幅を絶対に超えない（横スクロール無し） */
.cand-table{table-layout:fixed;width:100%}
.cand-table td,.cand-table th{padding:8px 9px;overflow-wrap:anywhere;word-break:break-word}
.cand-table .contact{font-size:12px;padding:2px 7px}
.cand-table .stepper{gap:4px}
.cand-table .step{width:22px;height:22px;font-size:11px}
.cand-table .ops .btn.xs{padding:4px 8px;font-size:12px}
.cand-table .drop-form select{max-width:130px}

/* スマホ・狭い画面（860px以下）：各応募者を「カード」で縦積み＝横スクロールを完全になくす */
@media (max-width:860px){
  .card[style*="overflow"]{overflow-x:visible}
  .cand-table .thead-row{display:none}
  .cand-table,.cand-table tbody,.cand-table tr,.cand-table td{display:block;width:auto}
  .cand-table{border:0;background:transparent}
  .cand-table tr{border:1px solid var(--line);border-radius:10px;margin:0 0 12px;padding:8px 12px;background:#fff;box-shadow:0 1px 2px rgba(20,30,50,.04)}
  .cand-table td{border-bottom:1px dashed var(--line);padding:9px 0}
  .cand-table tr td:last-child{border-bottom:0}
  .cand-table .cell-name{padding-top:2px}
  /* 見出しラベル付きセル（進捗/状態/メモ/操作）はラベルを左に添える */
  .cand-table td[data-label]{display:flex;gap:10px;align-items:flex-start}
  .cand-table td[data-label]::before{content:attr(data-label);flex:0 0 52px;color:var(--mut);font-size:11px;font-weight:600;padding-top:4px}
  .cand-table td[data-label]>*{flex:1;min-width:0}
  .cand-table .note-form textarea{width:100%}
}

/* 更新後、触っていた応募者の行に戻る（#c-<id>）。sticky ヘッダーに隠れない余白＋その行を軽くハイライト */
.cand-table tr[id]{scroll-margin-top:90px}
.cand-table tr:target td{background:#fff7e0}
.cand-table tr:target .cell-name b{color:var(--accent-d)}
#cand-list{scroll-margin-top:80px}
