:root{
  --ink:#152a3f; --ink-2:#1f3b57; --slate:#5b6b7c; --line:#dce3ea;
  --paper:#f4f6f9; --card:#fff; --brass:#b5842f; --brass-soft:#f3e6c9;
  --brass-tint:#fbf4e4; --green:#2f8f6b; --green-soft:#e4f2eb; --red:#c1502e;
  --red-soft:#fbe9e3; --shadow:0 1px 2px rgba(21,42,63,.06),0 8px 24px rgba(21,42,63,.08);
  --radius:14px;
  --fjp:"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic",YuGothic,"Noto Sans JP","Meiryo",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--fjp);background:var(--paper);color:var(--ink);
  -webkit-font-smoothing:antialiased;line-height:1.6}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font-family:inherit;font-size:16px}

.app{max-width:480px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;
  background:var(--paper);box-shadow:0 0 40px rgba(21,42,63,.10)}

/* ---- topbar ---- */
.topbar{background:var(--ink);color:#fff;padding:14px 18px;display:flex;align-items:center;
  justify-content:space-between;position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:.02em}
.brand .mark{width:28px;height:28px;border-radius:8px;
  background:linear-gradient(135deg,var(--brass),#8a641f);display:grid;place-items:center;font-size:15px}
.avatar{width:38px;height:38px;border-radius:50%;background:#274a6b;display:grid;place-items:center;
  font-size:15px;font-weight:700;color:#cfe0f0}

/* ---- scroll body ---- */
.scroll{flex:1;padding:18px 16px 110px}
.page-title{font-size:20px;font-weight:700;margin-bottom:3px}
.page-sub{font-size:13px;color:var(--slate);margin-bottom:18px}
.section-label{font-size:11px;font-weight:700;color:var(--slate);letter-spacing:.08em;
  margin:22px 2px 10px}

/* ---- card ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:16px 17px;margin-bottom:14px}
.card h2{font-size:15px;font-weight:700;margin-bottom:10px}

/* ---- flash ---- */
.flash{border-radius:11px;padding:11px 14px;font-size:13.5px;font-weight:600;margin-bottom:14px}
.flash-ok{background:var(--green-soft);color:var(--green);border:1px solid #bfe3d3}
.flash-err{background:var(--red-soft);color:var(--red);border:1px solid #f0cabb}

/* ---- forms ---- */
.field{margin-bottom:16px}
.field label{display:block;font-size:12px;font-weight:700;color:var(--slate);
  letter-spacing:.04em;margin-bottom:7px}
.field input[type=text],.field input[type=email],.field input[type=password],
.field input[type=tel],.field textarea{
  width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:11px;
  background:var(--paper);color:var(--ink)}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--brass);background:#fff}
.field textarea{min-height:110px;resize:vertical;line-height:1.7}
.field .hint{font-size:11.5px;color:var(--slate);margin-top:7px}

/* ---- buttons ---- */
.btn{display:block;width:100%;padding:15px;border:none;border-radius:12px;font-size:16px;
  font-weight:700;cursor:pointer;text-align:center;transition:transform .1s,filter .15s}
.btn:active{transform:scale(.99)}
.btn-primary{background:var(--brass);color:#fff}
.btn-ink{background:var(--ink);color:#fff}
.btn-ghost{background:var(--paper);color:var(--ink-2);border:1px solid var(--line)}
.btn+.btn{margin-top:10px}

/* ---- 都道府県 選択グリッド（タップ式・大きめ） ---- */
.region-block{margin-bottom:14px}
.region-name{font-size:12px;font-weight:700;color:var(--brass);margin:0 2px 8px;letter-spacing:.04em}
.pref-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pref-grid.c3{grid-template-columns:repeat(3,1fr)}
.pref-btn{padding:12px 4px;border:1px solid var(--line);border-radius:10px;background:#fff;
  font-size:13px;font-weight:600;color:var(--ink-2);text-align:center;cursor:pointer;
  user-select:none;transition:all .12s;min-height:46px;display:flex;align-items:center;justify-content:center}
.pref-btn:active{transform:scale(.95)}
.pref-btn.on{background:var(--brass);color:#fff;border-color:#8a641f;box-shadow:0 2px 6px rgba(181,132,47,.4)}

/* ---- 国 選択 ---- */
.country-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.country-btn{padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:#fff;
  display:flex;align-items:center;gap:9px;font-size:14px;font-weight:600;color:var(--ink-2);
  cursor:pointer;transition:all .12s;min-height:48px}
.country-btn:active{transform:scale(.97)}
.country-btn.on{border-color:var(--brass);background:var(--brass-tint);color:var(--ink)}
.country-btn .flag{font-size:20px}
.country-btn .ck{margin-left:auto;color:var(--brass);font-weight:700;opacity:0}
.country-btn.on .ck{opacity:1}

/* ---- tags（表示用） ---- */
.tag{display:inline-block;padding:5px 11px;border-radius:8px;background:var(--paper);
  font-size:12.5px;font-weight:600;margin:0 6px 7px 0;color:var(--ink-2);border:1px solid var(--line)}
.tag.area{background:#eef4fa;border-color:#d6e4f1;color:#2f5b86}
.price{font-weight:700;color:var(--brass)}

/* ---- ダッシュボード 宣伝枠 ---- */
.ad-banner{display:block;border:1px solid var(--brass-soft);border-radius:var(--radius);
  overflow:hidden;box-shadow:var(--shadow);margin-bottom:14px;background:#fff}
.ad-banner img{display:block;width:100%;height:auto}
.ad-banner .ad-cap{padding:12px 15px}
.ad-banner .ad-ttl{font-weight:700;font-size:14px;margin-bottom:3px}
.ad-banner .ad-body{font-size:12.5px;color:var(--slate)}
.ad-banner .ad-badge{display:inline-block;font-size:10px;font-weight:700;color:#8a641f;
  background:var(--brass-tint);border:1px solid var(--brass-soft);border-radius:20px;
  padding:2px 9px;margin-bottom:8px}
.ad-msg{background:linear-gradient(135deg,var(--ink),#0f2233);color:#fff;border-radius:var(--radius);
  padding:16px 18px;margin-bottom:14px;box-shadow:var(--shadow)}
.ad-msg .ad-badge{display:inline-block;font-size:10px;font-weight:700;color:var(--brass-soft);
  letter-spacing:.1em;margin-bottom:8px}
.ad-msg .ad-ttl{font-weight:700;font-size:15px;margin-bottom:5px}
.ad-msg .ad-body{font-size:13px;color:#d3e0ee;line-height:1.75}
.ad-msg a.ad-link{display:inline-block;margin-top:10px;font-size:12.5px;font-weight:700;
  color:#fff;background:var(--brass);padding:8px 14px;border-radius:9px}

/* ---- プロフィール要約 ---- */
.prof-sum{display:flex;gap:14px;align-items:center}
.prof-face{width:60px;height:60px;border-radius:15px;background:#274a6b;color:#cfe0f0;
  display:grid;place-items:center;font-size:22px;font-weight:700;flex-shrink:0;overflow:hidden}
.prof-face img{width:100%;height:100%;object-fit:cover}
.prof-name{font-size:17px;font-weight:700}
.prof-meta{font-size:12.5px;color:var(--slate);margin-top:2px}
.lock-note{font-size:11.5px;color:var(--slate);margin-top:7px}

/* ---- tabbar ---- */
.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;
  background:#fff;border-top:1px solid var(--line);display:flex;
  padding:7px 4px calc(7px + env(safe-area-inset-bottom));z-index:20}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 0;
  font-size:10.5px;font-weight:600;color:#9aa8b6;background:none;border:none;cursor:pointer;width:100%}
.tab-form{flex:1;display:flex;margin:0}
.tab .ti{font-size:20px}
.tab.on{color:var(--brass)}

/* ---- ログイン/登録（中央寄せ） ---- */
.auth-wrap{min-height:100vh;display:flex;flex-direction:column;justify-content:center;
  padding:40px 26px;max-width:440px;margin:0 auto}
.auth-logo{width:60px;height:60px;border-radius:17px;margin:0 auto 18px;
  background:linear-gradient(135deg,var(--brass),#8a641f);display:grid;place-items:center;
  font-size:28px;box-shadow:0 10px 30px rgba(21,42,63,.18)}
.auth-title{text-align:center;font-size:22px;font-weight:700;margin-bottom:4px}
.auth-sub{text-align:center;font-size:12px;color:var(--slate);letter-spacing:.12em;margin-bottom:30px}
.auth-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:22px 20px}
.auth-foot{text-align:center;font-size:13px;color:var(--slate);margin-top:20px}
.auth-foot a{color:var(--brass);font-weight:700}

/* ============ 第2弾：検索 ============ */
.seg{display:flex;background:#e7ecf1;border-radius:12px;padding:3px;margin-bottom:15px}
.seg button{flex:1;padding:11px 4px;font-size:13.5px;font-weight:700;color:var(--slate);
  border:none;background:none;border-radius:9px;cursor:pointer;transition:all .18s;min-height:44px}
.seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(21,42,63,.12)}

.map-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 10px 12px;box-shadow:var(--shadow);margin-bottom:12px}
.map-hint{font-size:12px;color:var(--slate);text-align:center;margin-bottom:10px}
.toggle-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:14px;
  font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;min-height:44px}
.switch{width:46px;height:26px;border-radius:20px;background:#cbd5df;position:relative;
  transition:background .2s;flex-shrink:0}
.switch.on{background:var(--brass)}
.switch .dot{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;
  background:#fff;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch.on .dot{transform:translateX(20px)}

.jpmap{display:grid;grid-template-columns:repeat(13,1fr);gap:3px;max-width:380px;margin:0 auto}
.tile{aspect-ratio:1;border-radius:5px;background:#eef2f6;border:1px solid #e0e7ee;
  display:flex;align-items:center;justify-content:center;text-align:center;
  font-size:8.5px;font-weight:700;color:#7d8da0;line-height:1.05;
  position:relative;transition:all .12s;user-select:none;padding:1px;cursor:pointer}
.tile.has{background:#dbe6f1;color:#496486}
.tile.nb{background:var(--brass-soft);color:#8a641f;border-color:#e6d3a3}
.tile.sel{background:var(--brass);color:#fff;border-color:#8a641f;
  box-shadow:0 2px 6px rgba(181,132,47,.45)}
.tile .cnt{position:absolute;top:-4px;right:-4px;background:var(--ink);color:#fff;font-size:7.5px;
  min-width:13px;height:13px;border-radius:7px;display:flex;align-items:center;justify-content:center;padding:0 2px}
.tile.sel .cnt,.tile.nb .cnt{background:#fff;color:var(--ink)}

.legend{display:flex;justify-content:center;gap:14px;margin-top:14px;font-size:10.5px;color:var(--slate)}
.legend span{display:flex;align-items:center;gap:5px}
.legend i{width:11px;height:11px;border-radius:3px;display:inline-block}

.pref-list{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:4px 16px 14px;margin-bottom:12px}
.pref-list summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--ink-2);
  padding:13px 0;min-height:44px;display:flex;align-items:center}
.pref-list .region-block{margin-top:10px}

.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:11px 15px;border-radius:22px;font-size:13px;font-weight:600;background:#fff;
  border:1px solid var(--line);color:var(--slate);transition:all .15s;cursor:pointer;min-height:44px;
  display:flex;align-items:center}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}

.selbar{background:var(--brass-tint);border:1px solid var(--brass-soft);border-radius:11px;
  padding:11px 14px;margin-bottom:14px;font-size:12.5px;color:#8a641f;line-height:1.75}
.selbar b{color:var(--ink)}

.result-head{font-size:12.5px;color:var(--slate);margin:20px 2px 10px}
.result-head b{color:var(--brass);font-size:15px}
.empty{text-align:center;color:var(--slate);font-size:13.5px;padding:34px 20px;background:var(--card);
  border:1px dashed var(--line);border-radius:var(--radius);line-height:1.8}
.empty .big{font-size:28px;margin-bottom:10px}

a.card.result{display:flex;align-items:center;gap:13px;padding:14px 15px;color:inherit}
.r-face{width:52px;height:52px;border-radius:13px;background:#274a6b;color:#cfe0f0;flex-shrink:0;
  display:grid;place-items:center;font-size:19px;font-weight:700;overflow:hidden}
.r-face img{width:100%;height:100%;object-fit:cover}
.r-body{flex:1;min-width:0}
.r-name{font-weight:700;font-size:15px}
.r-meta{font-size:12px;color:var(--slate);margin-top:1px}
.r-jobs{font-size:12px;color:var(--brass);font-weight:600;margin-top:3px}
.r-price{font-size:12px;color:var(--ink-2);margin-top:2px}
.chev{color:#c2cdd8;font-size:20px;flex-shrink:0}

/* 調査員詳細 */
.backbtn{display:inline-flex;align-items:center;gap:4px;font-size:15px;font-weight:700;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:10px 16px;
  margin-bottom:16px;min-height:44px}
.backbtn .ar{font-size:22px;line-height:1;margin-top:-2px}
.prof-head{display:flex;gap:14px;align-items:center}
.prof-loc{font-size:12.5px;color:var(--slate);margin-top:3px}
.pb-label{font-size:11px;font-weight:700;color:var(--slate);letter-spacing:.06em;margin-bottom:10px}
.intro{font-size:13.5px;color:#3d4d5e;line-height:1.8}
.btn-disabled{background:#e7ecf1;color:#9aa8b6;cursor:not-allowed}
.btn-note{font-size:11.5px;color:var(--slate);text-align:center;margin-top:8px}

/* ============ パスワード表示切り替え ============ */
.pw-wrap{position:relative;display:flex;align-items:center}
.pw-wrap input{width:100%;padding-right:74px}
.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);
  min-height:40px;min-width:58px;padding:0 12px;border-radius:9px;background:#fff;
  border:1px solid var(--line);color:var(--ink-2);font-size:13px;font-weight:700;
  cursor:pointer;font-family:inherit}
.pw-toggle:active{background:#eef2f6}
.pw-toggle.on{background:var(--brass-tint);border-color:var(--brass-soft);color:#8a641f}

/* バージョン表示 */
.app-ver{text-align:center;font-size:11px;color:#9aa8b6;margin-top:24px;letter-spacing:.04em}

/* ============ 第3弾：メッセージ・案件・チャット ============ */
.tab{position:relative}
.ti{position:relative;display:inline-block}
.tab-badge{position:absolute;top:-6px;right:-12px;background:var(--red);color:#fff;font-size:10px;
  font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;
  justify-content:center;padding:0 5px;line-height:1;font-style:normal}

.badge{display:inline-block;font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;
  background:var(--brass-tint);color:#8a641f;border:1px solid var(--brass-soft);margin:0 5px 3px 0;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.badge.gray{background:#eef2f6;color:var(--slate);border-color:var(--line)}
.badge.ok{background:var(--green-soft);color:var(--green);border-color:#bfe3d3}
.badge.warn{background:var(--red-soft);color:var(--red);border-color:#f0cabb}
.th-tags{margin-top:4px}

.notice{display:flex;align-items:center;gap:12px;padding:14px 16px;color:inherit}
.notice .n-ico{font-size:22px}
.notice .n-body{flex:1;font-size:13.5px;line-height:1.6}
.notice .n-body small{color:var(--slate)}
.notice.warn{border-color:#f0cabb;background:var(--red-soft)}

/* 受信箱 */
a.card.thread{align-items:flex-start}
.th-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.th-when{font-size:11.5px;color:var(--slate);flex-shrink:0}
.th-last{font-size:12.5px;color:var(--slate);margin-top:3px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.thread.has-unread .r-name,.thread.has-unread .th-last{color:var(--ink);font-weight:700}
.unread-badge{align-self:center;background:var(--red);color:#fff;font-size:12px;font-weight:700;
  min-width:24px;height:24px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  padding:0 7px;flex-shrink:0}

/* 詳細画面：案件を選んで打診 */
.case-pick{width:100%;display:flex;align-items:center;gap:12px;text-align:left;padding:14px 15px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  cursor:pointer;font-family:inherit;color:var(--ink);min-height:60px}
.case-pick:active{transform:scale(.99)}
.cp-ico{font-size:22px}
.cp-body{flex:1;min-width:0;display:flex;flex-direction:column}
.cp-title{font-weight:700;font-size:14.5px}
.cp-meta{font-size:12px;color:var(--slate);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-go{font-size:12px;font-weight:700;color:#fff;background:var(--brass);border-radius:9px;
  padding:9px 12px;flex-shrink:0}
.hint{font-size:11.5px;color:var(--slate)}

/* 案件の表示行 */
.case-rows{margin-top:10px}
.cc-row{display:flex;gap:10px;font-size:13px;padding:6px 0;border-bottom:1px solid var(--line)}
.cc-row:last-child{border-bottom:none}
.cc-row .k{color:var(--slate);flex-shrink:0;width:5.5em}
.cc-row .v{font-weight:600;word-break:break-word}

/* ---- チャット画面 ---- */
.chat-page .scroll{padding-bottom:230px}
.chat-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.chat-head .backbtn{margin-bottom:0;flex-shrink:0}
.chat-who{display:flex;align-items:center;gap:10px;min-width:0;color:inherit}
.r-face.sm{width:40px;height:40px;border-radius:11px;font-size:15px}
.chat-name{font-weight:700;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.case-strip{display:flex;align-items:center;gap:6px;background:var(--brass-tint);
  border:1px solid var(--brass-soft);border-radius:11px;padding:11px 14px;font-size:12.5px;
  color:#8a641f;margin-bottom:10px;min-height:44px}
.case-strip b{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}

.status-bar{border-radius:12px;padding:12px 14px;font-size:13px;margin-bottom:10px;line-height:1.6}
.status-bar.wait{background:#eef2f6;color:var(--slate)}
.status-bar.ok{background:var(--green-soft);color:var(--green);font-weight:700}
.status-bar.ng{background:var(--red-soft);color:var(--red);font-weight:700}
.status-bar.ask{background:#fff;border:2px solid var(--brass);box-shadow:var(--shadow)}
.status-bar.ask .sb-text{font-weight:700;margin-bottom:10px;color:var(--ink)}
.sb-btns{display:flex;gap:10px}
.sb-btns .btn{margin:0;flex:1;padding:13px}

.msgs{display:flex;flex-direction:column;gap:10px;padding:4px 0}
.msgs-loading,.msgs-empty{text-align:center;color:var(--slate);font-size:13px;padding:30px 10px}
.day{align-self:center;font-size:11px;color:var(--slate);background:#e4eaf0;padding:3px 12px;
  border-radius:20px;margin:6px 0 2px}
.sysmsg{align-self:center;font-size:12px;color:var(--slate);background:#fff;border:1px dashed var(--line);
  padding:7px 14px;border-radius:20px;text-align:center;max-width:90%}
.msg{max-width:80%;display:flex;flex-direction:column;gap:3px}
.msg.me{align-self:flex-end;align-items:flex-end}
.msg.you{align-self:flex-start}
.bubble{padding:10px 14px;border-radius:16px;font-size:14.5px;line-height:1.65;word-break:break-word;
  white-space:pre-wrap}
.msg.you .bubble{background:#fff;border:1px solid var(--line);border-bottom-left-radius:5px}
.msg.me .bubble{background:var(--ink);color:#fff;border-bottom-right-radius:5px}
.msg.me .bubble a{color:#f3e6c9}
.bubble a{text-decoration:underline;word-break:break-all}
.bubble.img{padding:0;overflow:hidden;background:none!important;border:none!important;display:block}
.bubble.img img{display:block;max-width:240px;max-height:320px;width:auto;height:auto;border-radius:14px;
  border:1px solid var(--line);background:#fff}
.bubble.file{display:flex;align-items:center;gap:10px;background:#fff!important;color:var(--ink)!important;
  border:1px solid var(--line)!important;white-space:normal;min-width:200px}
.bubble.file .fi{width:38px;height:38px;border-radius:9px;background:var(--brass-tint);display:grid;
  place-items:center;font-size:18px;flex-shrink:0}
.finfo{display:flex;flex-direction:column;min-width:0}
.finfo .fn{font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.finfo .fz{font-size:11px;color:var(--slate)}
.bank-card{background:linear-gradient(135deg,var(--ink),#0f2233);color:#fff;padding:14px 16px;
  border-radius:16px;min-width:230px}
.msg.you .bank-card{border-bottom-left-radius:5px}
.msg.me .bank-card{border-bottom-right-radius:5px}
.bank-card .bt{font-size:11px;color:var(--brass-soft);font-weight:700;letter-spacing:.04em;margin-bottom:8px}
.bank-card .bv{font-size:15px;font-weight:700;white-space:pre-wrap;word-break:break-word;line-height:1.6}
.bank-card .bank-note{font-size:10.5px;color:#8fa6bd;margin-top:9px;border-top:1px solid #2a4460;padding-top:7px}
.case-card{background:#fff;border:2px solid var(--brass-soft);border-radius:16px;padding:14px 16px;min-width:240px}
.case-card .cc-head{font-size:11px;font-weight:700;color:#8a641f;margin-bottom:6px}
.case-card .cc-title{font-weight:700;font-size:15px;margin-bottom:6px}
.case-card .cc-detail{font-size:13px;color:#3d4d5e;margin-top:8px;white-space:pre-wrap;line-height:1.7}
.msg .meta{font-size:10.5px;color:var(--slate);padding:0 4px}
.rd.read{color:var(--green);font-weight:700}

.composer{position:fixed;left:50%;transform:translateX(-50%);width:100%;max-width:480px;
  bottom:calc(80px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);
  padding:9px 10px 8px;z-index:15;box-shadow:0 -4px 16px rgba(21,42,63,.06)}
.composer.locked{opacity:.55}
.quick{display:flex;gap:8px;margin-bottom:8px}
.qbtn{flex:1;font-size:12.5px;font-weight:700;color:var(--ink-2);background:var(--paper);
  border:1px solid var(--line);padding:10px 8px;border-radius:11px;cursor:pointer;min-height:42px;
  font-family:inherit}
.qbtn.bank{color:#8a641f;border-color:var(--brass-soft);background:var(--brass-tint)}
.qbtn.bank.armed{background:var(--brass);color:#fff;border-color:#8a641f}
.qbtn:disabled{cursor:not-allowed}
.cinput{display:flex;align-items:flex-end;gap:8px}
.cinput textarea{flex:1;padding:11px 14px;border-radius:20px;border:1px solid var(--line);
  background:var(--paper);font-size:16px;line-height:1.5;resize:none;max-height:140px;min-height:46px;
  font-family:inherit;color:var(--ink)}
.cinput textarea:focus{outline:none;border-color:var(--brass);background:#fff}
.cinput .send{width:48px;height:46px;border-radius:14px;background:var(--brass);color:#fff;border:none;
  font-size:19px;cursor:pointer;flex-shrink:0}
.cinput .send:disabled{background:#cbd5df}
.composer-msg{font-size:12px;color:var(--slate);min-height:0;margin-top:4px;text-align:center}
.composer-msg:empty{display:none}
.composer-msg.err{color:var(--red);font-weight:700}

/* iPhoneでキーボードを開いている間は下部メニューを隠し、入力欄をキーボードの真上に置く */
body.chat-page.typing .tabbar{display:none}

/* ============ 管理画面（本部） ============ */
body.admin{background:#eef1f5}
.adm{max-width:960px;margin:0 auto;min-height:100vh;background:#eef1f5}
.adm-top{background:var(--ink);color:#fff;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;z-index:10}
.adm-tag{font-size:11px;font-weight:700;background:var(--brass);color:#fff;border-radius:20px;padding:2px 9px;margin-left:6px}
.adm-back{font-size:13px;font-weight:700;color:#cfe0f0;border:1px solid #2c4a68;border-radius:10px;padding:8px 12px}
.adm-nav{display:flex;gap:6px;padding:10px 12px;background:#fff;border-bottom:1px solid var(--line);overflow-x:auto;
  position:sticky;top:60px;z-index:9}
.adm-nav a{flex-shrink:0;display:flex;align-items:center;gap:6px;padding:10px 14px;border-radius:10px;font-size:13.5px;
  font-weight:700;color:var(--slate);min-height:44px}
.adm-nav a.on{background:var(--ink);color:#fff}
.adm-main{padding:20px 16px 60px}
.adm-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:6px}
.adm-stats.sm{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}
.adm-stat{margin-bottom:0;color:inherit;display:block}
.adm-stat .n{font-size:26px;font-weight:700;line-height:1.2}
.adm-stat .n small{font-size:12px;color:var(--slate);margin-left:3px;font-weight:600}
.adm-stat .l{font-size:12px;color:var(--slate);margin-top:3px}
a.adm-stat:active{transform:scale(.99)}
.adm-list{padding:4px 16px}
.adm-log{display:flex;flex-wrap:wrap;gap:4px 12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.adm-log:last-child{border-bottom:none}
.adm-log .when{color:var(--slate);font-size:12px;min-width:110px}
.adm-log .what{flex:1;min-width:180px}
.adm-log .why{color:var(--slate)}
.adm-log .who{color:var(--slate);font-size:12px}
.adm-filter .chips{gap:6px}
.adm-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:10px}
.adm-pager .btn{width:auto;padding:11px 18px}
.adm-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:520px){.adm-2col{grid-template-columns:1fr}}
.field input[type=datetime-local],.field input[type=number]{width:100%;padding:13px 14px;border:1px solid var(--line);
  border-radius:11px;background:var(--paper);color:var(--ink);font-family:inherit}
.adm-ad img{display:block;width:100%;max-height:200px;object-fit:cover;border-radius:10px;margin-bottom:10px}
.adm-ad-btns{display:flex;gap:10px;margin-top:12px}
.adm-ad-btns > *{flex:1}
.adm-ad-btns .btn{margin:0}
.adm-del{margin-top:6px}
.btn-danger{background:var(--red);color:#fff}

/* ============ 届出 ============ */
.select{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:11px;background:var(--paper);
  color:var(--ink);font-family:inherit;font-size:16px;min-height:48px}
.lic-no{display:flex;align-items:center;gap:8px;font-weight:700}
.lic-no input{flex:1;letter-spacing:.12em;font-size:18px!important}
.badge.lic{white-space:normal}
.case-pick.disabled{opacity:.55;cursor:not-allowed;margin-bottom:10px;box-shadow:none;background:#f4f6f9}
.nav-badge{background:var(--red);color:#fff;font-size:11px;font-weight:700;min-width:20px;height:20px;border-radius:10px;
  display:inline-flex;align-items:center;justify-content:center;padding:0 6px;margin-left:4px}
.seg a{flex:1;padding:11px 4px;font-size:13px;font-weight:700;color:var(--slate);border-radius:9px;text-align:center;min-height:44px;
  display:flex;align-items:center;justify-content:center}
.seg a.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(21,42,63,.12)}
.cert-img{display:block;width:100%;max-height:520px;object-fit:contain;background:#f4f6f9;border:1px solid var(--line);border-radius:10px}
.lic-big{font-size:17px;letter-spacing:.06em}
.chip.disabled{opacity:.45;pointer-events:none;background:#eef1f5}
.hint.warn-text{color:#a5531b}
.dup-list .cc-row .v a{color:inherit}
/* ---- v6.0 本部からの公募 ---- */
.badge.official{background:#16324f;color:#fff}
.notice.official{border-left:4px solid var(--brass)}
.tender-link{margin-bottom:12px}
.bid-card .bid-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.bid-card .bid-who{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none;min-width:0}
.bid-card .bid-who small{color:#6b7a8c}
.bid-card .bid-amount{font-size:20px;font-weight:700;white-space:nowrap}
.bid-card.off{opacity:.55}
/* 管理画面のメニュー：スマホでは折り返して全項目を表示（横スクロールで隠れないように） */
@media (max-width:560px){.adm-nav{flex-wrap:wrap;overflow-x:visible}.adm-nav a{padding:9px 12px}}
/* ---- v7.0 連絡先の検知：送る前の確認 ---- */
.detect-warn{background:#fff7e8;border:1px solid #e8c27a;border-radius:12px;padding:12px;margin:0 0 8px}
.detect-warn .dw-title{font-weight:700;color:#8a5a12;margin-bottom:4px}
.detect-warn .dw-text{font-size:13px;line-height:1.6;color:#5b4520;margin-bottom:10px}
.detect-warn .dw-btns{display:flex;gap:8px}
.detect-warn .dw-btns .btn{flex:1;margin:0;min-height:46px}
.det-msg{white-space:pre-wrap;word-break:break-word;background:#f4f6f9;border-radius:10px;padding:10px 12px;margin:8px 0;font-size:14px;line-height:1.6}
.det-hit{background:#fdecc8;color:#7a4d06}
.word-row{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}
.word-row:last-child{border-bottom:0}
.word-row .word{flex:1;font-weight:600;word-break:break-all}
.word-row .who{font-size:12px;color:#6b7a8c}
.word-row form{margin:0}
.btn.btn-sm{min-height:36px;padding:6px 14px;font-size:13px;width:auto;margin:0}
/* ---- v8.0 成約報告と手数料 ---- */
a.qbtn{display:flex;align-items:center;justify-content:center;text-decoration:none}
.qbtn.deal{color:#2f5d3a;border-color:#bcd9c2;background:#eef7f0}
.deal-amount{font-size:26px;font-weight:800;margin:6px 0 4px}
.deal-amount small{font-size:13px;font-weight:600;color:#6b7a8c;margin-left:4px}
.fee-box{background:#f6f8fb;box-shadow:none;border:1px dashed #c9d3de;margin:6px 0 14px}
.chip.check-line{display:flex;align-items:center;gap:6px;width:100%;justify-content:flex-start;margin-bottom:14px;padding:12px 14px;line-height:1.5}
.deal-cancel summary{cursor:pointer;font-weight:700;color:#8b3a3a;padding:4px 0}
.adm-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.adm-table{width:100%;border-collapse:collapse;font-size:13px}
.adm-table th,.adm-table td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.adm-table td.num,.adm-table th.num{text-align:right;white-space:nowrap}
.adm-scroll{overflow-x:auto}
.month-pick{display:flex;align-items:center;gap:10px}
.month-pick .pb-label{margin:0;white-space:nowrap}
.month-pick select{flex:1;font-size:16px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;min-height:48px}
