/* Bloom — 会社という花を咲かせるプラットフォーム（旧PLai Hub・2026-07-23リブランド）
   LH品質トークン × Salesforce風上タブ（絵文字なし・SVG stroke統一）

   ■ 使う色は4つだけ（2026-07-23 市岡指示「ピンクと緑と黒と白だけで作って」）
     新ロゴ＝2枚の花びら。大きいピンク＝「人」、小さいグリーン＝「AI」。その意味をUIにそのまま持ち込む。
       ピンク  … 人が押すもの・人に見てほしいもの（主操作／選択中／強調／注意・期限切れ）
       グリーン… AIと仕組みの側（AI下書き・via AI・完了・稼働中・応答あり）
       ブラック… 文字と、いちばん重い操作（本番配信のような取り消せないボタン）
       ホワイト… 面。グレーはすべてブラックの薄めで作る（青みグレー・橙・赤・紫は使わない）
     ロゴの実測色そのもの（--petal / --petal-ai / --petal-mix）は明るすぎるので装飾・ロゴ専用。文字色にはしない。
     機械検査= `node qa/06_palette.mjs`（この4系統から外れた色が1つでも入ったらFAIL）

   ■ コントラスト実測（WCAG 2.1 相対輝度・全ペア4.5:1以上を確認して採用）
     白文字 on brand 4.79 ／ brand on 白 4.79 ／ brand on bg 4.52 ／ brand-ink on brand-soft 5.76
     白文字 on green 5.31 ／ green on green-soft 4.94 ／ sub on 白 4.96 ／ 白文字 on ink 17.95 */
:root{
  /* 新ロゴ実測色（装飾・ロゴ専用。文字色にはしない） */
  --petal:#f5709c; --petal-ai:#76d6ae; --petal-mix:#80a090;
  /* ピンク＝人 */
  --brand:#c7406d; --brand-strong:#b23962; --brand-ink:#a8365c; --brand-soft:#fff2f6; --brand-line:#f7d4e1;
  /* グリーン＝AI・仕組み（塗りにも文字にも1つで足りる濃さ） */
  --green:#1b7a53; --green-soft:#ecfaf3; --green-line:#c9ecdb;
  --ai:var(--green); --ai-soft:var(--green-soft); --ai-line:var(--green-line);
  /* ブラック＆ホワイト（グレーはすべて黒の薄め＝色みを持たせない） */
  --ink:#161620; --ink-2:#3a3a45; --sub:#6f6f7b; --line:#e8e8ec; --bg:#f8f8fa; --card:#fff;
  --neutral-soft:#f1f1f4; --neutral-line:#d5d5dc;
  /* 旧トークン互換: 既存ルールを書き換えずに全部この4色に寄る。
     赤（警告）はピンクへ、橙（注意）は黒の薄めへ畳む＝5色目を作らない。 */
  --purple:var(--brand); --purple2:var(--petal); --purple-soft:var(--brand-soft);
  --red:var(--brand-ink); --red-soft:var(--brand-soft);
  --orange:var(--ink-2); --orange-soft:var(--neutral-soft);
  --r:14px; --sh:0 8px 24px rgba(22,22,32,.07);
  --font-brand:"Avenir Next","Segoe UI Variable Display",system-ui,-apple-system,"Helvetica Neue",sans-serif;
}
/* ロゴ本体（index.htmlの<symbol id="bloom-petals">を<use>で参照） */
.brand-sprite{position:absolute;width:0;height:0;overflow:hidden}
.bloom-mark{display:block;width:100%;height:100%}
.wordmark{font-family:var(--font-brand);font-weight:700;letter-spacing:-.015em}
*{box-sizing:border-box}
html,body{margin:0}
/* overscroll-behavior: 図解タブ等のiframe内で横パンした時、スクロール連鎖が親へ伝わって
   ブラウザの「スワイプで戻る」矢印が出るのを遮断（2026-08-15 市岡実機で発生） */
body{font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic",Meiryo,system-ui,sans-serif;background:var(--bg);color:var(--ink);font-size:14px;line-height:1.6;overscroll-behavior-x:none}
.hidden{display:none!important}
a{color:var(--purple);text-decoration:none}
button{font-family:inherit}

/* ---------- ログイン ---------- */
/* 咲く前の淡いピンク→ミント。2枚の花びらの色をそのまま背景の光にしている */
.login{position:fixed;inset:0;background:linear-gradient(140deg,#fff4f8,#f8f8fa 55%,#eefaf4);display:grid;place-items:center;z-index:50;padding:16px}
.login-inner{width:min(92vw,400px)}
.login-card{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 18px 50px rgba(26,26,46,.10);padding:34px 34px 26px}
.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.login-mark{width:50px;height:50px;flex:none}
.login-brand b{font-size:25px;display:block;line-height:1.15}
.login-brand span{font-size:12px;color:var(--sub);font-weight:600}
.login-note{color:var(--sub);font-size:12.5px;margin:0 0 14px}
.login input{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:11px 14px;font-size:15px;margin-bottom:12px}
.login input:focus{outline:none;border-color:var(--brand)}
.login-err{color:var(--red);font-size:12.5px;font-weight:700;min-height:18px;margin:8px 0 0}
.login-tagline{margin:16px 0 0;text-align:center;font-family:var(--font-brand);font-size:11.5px;font-weight:600;letter-spacing:.04em;color:var(--sub)}

.mark{width:28px;height:28px;flex:none}

/* ---------- 左レール（2026-07-24 上タブから移行）----------
   市岡指示「左の一番上がホーム。ホームで部署を選んだら左側も変わる。メッセージ・カレンダーの下にビデオ会議」。
   ホーム／メッセージ／カレンダー／ビデオ会議は常設。その下が“いま選んでいる部署”の道具箱。 */
/* 2026-07-24 市岡指示「カーソルが乗ってる時だけ開く。閉じてれば本文が全幅使える」。
   レールは常時68px（アイコンのみ）。ホバーで236pxへ広がるが、本文の幅は変えず**上に重ねる**
   （広がるたびに本文がガタつくのを避ける）。ラベルはホバー時だけ表示。 */
.app{display:grid;grid-template-columns:68px minmax(0,1fr);align-items:start;min-height:100dvh;transition:grid-template-columns .18s ease}
/* 市岡指示（2026-07-24）: レール展開中は本文を上に覆わず、右側が縮んで全部見える（push型） */
.app:has(.rail:hover),.app:has(.rail:focus-within){grid-template-columns:236px minmax(0,1fr)}
.rail{position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;background:#fff;border-right:1px solid var(--line);z-index:40;
  width:68px;transition:width .18s ease;overflow:hidden}
.rail:hover,.rail:focus-within{width:236px}   /* push型なので覆い影は付けない */
/* ナビをクリックした直後は、カーソルがレール上でも畳む（rail-snap・switchTabが付け、レールmouseleaveで外す）。
   狭い幅のまま新画面が初期描画→幅が戻ってガクッと組み替わるチラつきの恒久対策（2026-07-24 市岡指摘） */
body.rail-snap .app{grid-template-columns:68px minmax(0,1fr)!important}
body.rail-snap .rail{width:68px!important}
body.rail-snap .rail .brand b,body.rail-snap .rail .nav a .sp,body.rail-snap .rail .dept-head .dept-lb,
body.rail-snap .rail .dept-head b,body.rail-snap .rail .dept-head svg,body.rail-snap .rail .rail-foot .chip{opacity:0!important}
/* 折りたたみ時はテキストを隠す（要素は残す＝レイアウト計算が安定） */
.rail .brand b,.rail .nav a .sp,.rail .dept-head .dept-lb,.rail .dept-head b,.rail .dept-head svg,
.rail .rail-foot .chip{opacity:0;transition:opacity .12s ease;white-space:nowrap}
.rail:hover .brand b,.rail:hover .nav a .sp,.rail:hover .dept-head .dept-lb,.rail:hover .dept-head b,.rail:hover .dept-head svg,
.rail:hover .rail-foot .chip,.rail:focus-within .brand b,.rail:focus-within .nav a .sp,.rail:focus-within .dept-head .dept-lb,
.rail:focus-within .dept-head b,.rail:focus-within .dept-head svg,.rail:focus-within .rail-foot .chip{opacity:1}
.rail .nav a{width:216px}          /* 展開時の幅で固定＝畳んでも文字が折り返さない */
.rail .dept-head{width:216px}
.rail .rail-foot{flex-wrap:nowrap;overflow:hidden}
.brand{display:flex;align-items:center;gap:9px;padding:16px 16px 12px}
.brand b{font-size:19px}
.nav{flex:1;overflow-y:auto;padding:2px 10px 10px;scrollbar-width:thin}
.nav-sec + .nav-sec{margin-top:6px}
.nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;font-weight:700;font-size:13px;color:var(--ink-2);white-space:nowrap;cursor:pointer;position:relative}
.nav a svg{width:17px;height:17px;stroke:var(--sub);flex:none}
/* Xロゴだけは塗りのアイコン（線画ではない）ので stroke を無効化する */
.nav a svg[fill="currentColor"]{stroke:none;fill:var(--sub)}
.nav a:hover{background:var(--bg)}
.nav a.on{background:var(--brand-soft);color:var(--brand-ink)}
.nav a.on svg{stroke:var(--brand)}
.nav a.on svg[fill="currentColor"]{fill:var(--brand)}
.nav a .sp{flex:1}
.badge{font-size:10.5px;font-weight:800;background:var(--red-soft);color:var(--red);border-radius:999px;padding:1px 7px}
/* 部署の見出し＝クリックで切替メニュー */
.nav-dept{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}
.dept-head{display:flex;align-items:center;gap:7px;width:100%;border:0;background:transparent;padding:4px 10px 6px;cursor:pointer;text-align:left;font-family:inherit;color:var(--ink)}
.dept-head:hover{color:var(--brand-ink)}
.dept-head .dept-lb{font-size:9.5px;font-weight:800;letter-spacing:.08em;color:var(--sub)}
.dept-head b{font-size:13px;flex:1}
.dept-head svg{width:14px;height:14px;stroke:var(--sub);flex:none}
/* 位置はCSSだけで決める（CSPが style-src 'self' なのでJSからのインラインstyleは弾かれる）。
   レール下部に固定＝ナビの項目数が変わっても位置がずれない。 */
.dept-menu{position:fixed;left:12px;bottom:72px;z-index:60;background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 16px 40px rgba(22,22,32,.16);padding:7px;width:212px}
.dept-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:9px;padding:8px 10px;cursor:pointer;font-family:inherit}
.dept-menu button:hover{background:var(--bg)}
.dept-menu button.on{background:var(--brand-soft)}
.dept-menu button b{display:block;font-size:12.5px;color:var(--ink)}
.dept-menu button span{display:block;font-size:10.5px;color:var(--sub);margin-top:1px}
.nav-bottom{border-top:1px solid var(--line);margin-top:10px;padding-top:8px}

/* ---- 左レール「Claude 使い切る順」ミニパネル（2026-08-16 市岡指示）----
   「設定の下とかに簡易的に見れるやつもついてないし。cc1、cc2とかの簡易的に見れるやつね」。
   レールは畳んでいる時68px・ホバーで236pxなので、**畳んでいる時は「いま開く1口」のピルだけ**、
   ホバーで7口の一覧に開く。畳んだ状態で一覧を出しても68pxで切れて読めないため。
   並びと%の意味は /saasdash/ の順位表と同じ（正本= saas-ops-manager skills/01 dashboard-spec.md）。 */
.nav-claude{border-top:1px solid var(--line);margin-top:10px;padding-top:8px}
.cl-open{display:flex;align-items:center;gap:10px;width:216px;padding:5px 10px;border-radius:9px;
  font-weight:800;font-size:11px;letter-spacing:.02em;color:var(--sub);white-space:nowrap;cursor:pointer}
.cl-open svg{width:15px;height:15px;stroke:var(--sub);flex:none}
.cl-open:hover{background:var(--bg);color:var(--brand-ink)}
.cl-open:hover svg{stroke:var(--brand)}
/* 畳んでいる時だけ出る「いま開く口」ピル。68pxに収まる幅で固定する */
.cl-top{display:flex;align-items:center;justify-content:center;gap:5px;width:46px;margin:3px 0 0 10px;
  padding:3px 6px;border-radius:8px;background:var(--brand-soft);color:var(--brand-ink);
  font-size:11.5px;font-weight:800;overflow:hidden;white-space:nowrap;cursor:default}
.cl-dot{width:6px;height:6px;border-radius:50%;background:var(--green);flex:none}
/* 2つ目のピル（Codex）。Claude=brand(人が押す側の薄面)、Codex=green(AIの側の薄面)で見分ける */
.cl-top + .cl-top{margin-top:3px}
.cl-top-co{background:var(--green-soft);color:var(--green)}
.cl-top-co .cl-dot{background:var(--brand)}
.cl-list{display:none;margin:3px 0 0;padding:0 10px}
.cl-grp{font-size:9px;font-weight:800;color:var(--sub);letter-spacing:.06em;padding:4px 5px 1px;white-space:nowrap}
.cl-ul{list-style:none;margin:0;padding:0}
.cl-row{display:grid;grid-template-columns:32px 34px 34px minmax(0,1fr);align-items:center;gap:5px;
  width:196px;padding:2px 5px;border-radius:6px;font-size:11px}
.cl-row + .cl-row{margin-top:1px}
.cl-row:first-child{background:var(--brand-soft)}
.cl-t1{opacity:.7}
.cl-t2{opacity:.48}
.cl-cc{font-weight:800;color:var(--brand)}
.cl-p{font-style:normal;font-weight:800;font-variant-numeric:tabular-nums;text-align:right;color:var(--ink-2)}
.cl-p.ok{color:var(--green)}
.cl-p.bad{color:var(--brand-ink)}
.cl-p.na,.cl-p.new{color:var(--sub);font-size:9.5px;font-weight:700}
.cl-left{color:var(--sub);font-size:9.5px;font-weight:700;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cl-foot{display:none;width:216px;padding:5px 15px 2px;font-size:9px;color:var(--sub);white-space:nowrap}
.rail:hover .cl-list,.rail:focus-within .cl-list,
.rail:hover .cl-foot,.rail:focus-within .cl-foot{display:block}
.rail:hover .cl-top,.rail:focus-within .cl-top{display:none}
/* ナビをクリックした直後の畳み（rail-snap）でも同じ見え方に戻す */
body.rail-snap .rail .cl-list,body.rail-snap .rail .cl-foot{display:none!important}
body.rail-snap .rail .cl-top{display:flex!important}
.rail-foot{display:flex;align-items:center;gap:7px;padding:10px 12px;border-top:1px solid var(--line);flex-wrap:wrap}
.rail-foot .chip{font-size:10.5px;padding:3px 9px}
.workspace{min-width:0}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 12px;font-size:11.5px;font-weight:700;color:var(--sub);white-space:nowrap}
.chip .dot{width:8px;height:8px;border-radius:50%;background:var(--green)}
.chip.warn{color:var(--brand-ink);border-color:var(--brand-line);background:var(--brand-soft)}
.chip.warn .dot{background:var(--red)}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--brand-soft);color:var(--brand-ink);border:1px solid var(--brand-line);display:grid;place-items:center;font-weight:800;font-size:13px}

/* ---------- まもなくバー ---------- */
/* 2枚の花びらの色を濃度だけ落として横に流す（白文字が両端で4.5:1以上になる濃さ） */
.soonbar{display:flex;align-items:center;gap:14px;background:linear-gradient(90deg,var(--brand-strong),var(--green));color:#fff;padding:11px 22px}
.soonbar svg{width:20px;height:20px;flex:none}
.soon-tx{flex:1;min-width:0}
.soon-tx b{font-size:14.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.soon-tx span{opacity:.85;font-size:12px}

/* ---------- 共通 ---------- */
.main{padding:20px 22px 48px;max-width:1280px;margin:0 auto}
.view{display:none}
.view.on{display:block}
.vhead{display:flex;align-items:end;gap:14px;margin:4px 0 16px;flex-wrap:wrap}
.vhead h1{margin:0;font-size:22px}
.vhead .date{color:var(--sub);font-weight:700;padding-bottom:2px}
.vhead .sp{flex:1}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);min-width:0}
.card .hd{display:flex;align-items:center;gap:10px;padding:13px 18px;border-bottom:1px solid var(--line)}
.card .hd svg{width:17px;height:17px;stroke:var(--purple)}
.card .hd b{font-size:14px}
.card .hd .sp{flex:1}
.card .hd a{font-size:12px;font-weight:700}
.card .bd{padding:10px 18px 14px}
.live{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:800;color:var(--green);background:var(--green-soft);border-radius:999px;padding:2px 10px}
.live .dot{width:7px;height:7px;border-radius:50%;background:var(--green)}
.empty{padding:26px 18px;text-align:center;color:var(--sub);font-size:13px}
.empty b{display:block;color:var(--ink);margin-bottom:4px;font-size:14px}

.btn{display:inline-flex;align-items:center;gap:8px;border:none;border-radius:10px;padding:9px 16px;font-size:13px;font-weight:800;cursor:pointer;text-decoration:none}
.btn svg{width:15px;height:15px}
.btn.primary{background:var(--purple);color:#fff}
.btn.primary:hover{background:var(--brand-strong)}
.btn.white{background:#fff;color:var(--purple)}
.btn.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn.ghost svg{stroke:var(--sub)}
.btn.wide{width:100%;justify-content:center}
.btn:disabled{opacity:.5;cursor:default}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}
.kpis.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 18px;box-shadow:var(--sh);min-width:0}
.kpi .lb{font-size:11.5px;color:var(--sub);font-weight:700;display:flex;align-items:center;gap:7px}
.kpi .lb svg{width:15px;height:15px;stroke:var(--purple);flex:none}
.kpi .v{font-size:24px;font-weight:800;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kpi .v small{font-size:12.5px;color:var(--sub);font-weight:700}
/* カード内の小KPI（マーケ/財務/SaaSのミニカード）。4列のままだと「¥1,234,567」が「¥…」に潰れる（2026-07-23修正） */
.kpis.mini{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:8px}
.kpis.mini .kpi{padding:10px 12px;box-shadow:none;background:var(--bg)}
.kpis.mini .kpi .lb{font-size:11px}
.kpis.mini .kpi .v{font-size:17px;white-space:normal;overflow-wrap:anywhere}
.kpi .note{font-size:11px;color:var(--sub);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.cols{display:grid;grid-template-columns:1.5fr 1fr;gap:14px;align-items:start;margin-bottom:14px}
/* グリッド子は必ず縮められるように（nowrap+ellipsisの中身はmin-content寄与が全文幅のままなので、
   min-width:0が無い子が1つでもあるとトラックがビューポートを突き破る — 2026-07-17モバイル223pxはみ出しの真因） */
.cols>*{min-width:0}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}

/* タイムライン行 */
.tl{list-style:none;margin:0;padding:0}
.tl li{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px dashed var(--line)}
.tl li:last-child{border-bottom:none}
.tl .tm{font-weight:800;font-size:13px;text-align:right;color:var(--ink)}
.tl .tm.allday{font-size:10.5px;color:var(--sub)}
.tl .tt{min-width:0}
.tl .tt b{display:block;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 直下の<span>だけに効かせる。子孫セレクタのままだと中の .tag まで巻き込んで、
   MTG/セミナー/予定タグの文字色が全部 --sub に上書きされていた（2026-07-23 発見・元からのバグ） */
.tl .tt>span{font-size:11.5px;color:var(--sub)}
.tl li.hot{background:linear-gradient(90deg,var(--purple-soft),transparent 75%);border-radius:10px;padding-left:8px;padding-right:8px}
.tl li.past{opacity:.45}
.tag{display:inline-block;font-size:10px;font-weight:800;border-radius:6px;padding:1px 7px;margin-right:6px}
.tag.mtg{background:var(--neutral-soft);color:var(--ink-2)}
.tag.sem{background:var(--red-soft);color:var(--red)}
.tag.wk{background:var(--green-soft);color:var(--green)}
.tag.allday{background:var(--bg);color:var(--sub)}
.join{display:inline-flex;align-items:center;gap:6px;background:var(--purple);color:#fff;border-radius:9px;padding:6px 12px;font-size:12px;font-weight:800}
.join svg{width:13px;height:13px;stroke:#fff}
.join.meet{background:var(--green)}
button.join{border:0;cursor:pointer;font-family:inherit;white-space:nowrap}   /* Bloomビデオ会議の「Bloomで入室」（aでなくbutton） */

/* ToDo */
.todo{list-style:none;margin:0;padding:0}
.todo li{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px}
.todo li:last-child{border-bottom:none}
.todo .cb{width:18px;height:18px;border:2px solid var(--neutral-line);border-radius:5px;flex:none;cursor:pointer;background:#fff;padding:0}
.todo li.done .cb{background:var(--green);border-color:var(--green);position:relative}
.todo li.done .cb::after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(42deg)}
.todo li.done .tx{color:var(--sub);text-decoration:line-through}
.todo .tx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.todo .due{font-size:11px;color:var(--red);font-weight:700;flex:none}
.todo .src{font-size:10px;color:var(--sub);background:var(--bg);border-radius:6px;padding:1px 7px;font-weight:700;flex:none}
.todo-add{display:flex;gap:8px;margin-top:12px}
.todo-add input[type=text]{flex:1;border:1.5px solid var(--line);border-radius:10px;padding:8px 12px;font-size:13px}
.todo-add input[type=date]{border:1.5px solid var(--line);border-radius:10px;padding:8px;font-size:12px}
.todo-add input:focus{outline:none;border-color:var(--purple)}
/* 予定タブ内ToDoの見出し（期限切れ／今日／その他） */
.todo-group + .todo-group{margin-top:14px}
.todo-group-l{display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.02em;border-radius:999px;padding:2px 9px;margin-bottom:4px}
.todo-group-l.bad{background:var(--red-soft);color:var(--red)}
.todo-group-l.warn{background:var(--orange-soft);color:var(--orange)}
.todo-group-l.muted{background:var(--bg);color:var(--sub)}

/* 週カレンダー */
.wnav{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.wnav b{font-size:15px}
.wnav .sp{flex:1}
.wgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;padding:14px 16px 16px}
.day{background:var(--bg);border-radius:10px;padding:7px;min-height:110px;min-width:0;cursor:pointer;border:2px solid transparent}
.day:hover{border-color:var(--purple2)}
.day .dh{font-size:10.5px;font-weight:800;color:var(--sub);display:flex;justify-content:space-between}
.day.today{outline:2px solid var(--purple);background:var(--purple-soft)}
.day.today .dh{color:var(--brand-ink)}
.day.sel{border-color:var(--purple)}
.day .sat{color:var(--sub)}.day .sun{color:var(--red)}
.ev{margin-top:5px;background:#fff;border-left:3px solid var(--purple);border-radius:6px;padding:2px 6px;font-size:10px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev.sem{border-left-color:var(--red)}
.ev.allday{border-left-color:var(--neutral-line);color:var(--sub)}
.ev.more{background:transparent;color:var(--sub);border-left-color:transparent}

/* リスト行（マーケ・リンク台帳） */
.rows{list-style:none;margin:0;padding:0}
.rows li{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px dashed var(--line);font-size:13px}
.rows li:last-child{border-bottom:none}
.rows .tx{flex:1;min-width:0}
.rows .tx b{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rows .tx span{font-size:11.5px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.pill{font-size:10.5px;font-weight:800;border-radius:999px;padding:2px 9px;flex:none}
.pill.p{background:var(--neutral-soft);color:var(--ink-2)}
.pill.g{background:var(--green-soft);color:var(--green)}
.pill.o{background:var(--neutral-soft);color:var(--ink-2)}
.pill.r{background:var(--red-soft);color:var(--red)}

/* Team Harnessで開催中のミーティング（ホーム上部・そのまま参加できる） */
.meet-live-bar{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,var(--green),#166644);color:#fff;border-radius:var(--r);padding:12px 16px;margin-bottom:14px;box-shadow:var(--sh);flex-wrap:wrap}
.meet-live-bar .mlb-dot{width:9px;height:9px;border-radius:50%;background:#fff;flex:none;animation:mlb 1.6s infinite}
@keyframes mlb{0%,100%{opacity:1}50%{opacity:.25}}
.meet-live-bar .mlb-tx{flex:1;min-width:180px;line-height:1.4}
.meet-live-bar .mlb-tx b{display:block;font-size:14px}
.meet-live-bar .mlb-tx span{font-size:11.5px;opacity:.92}
.meet-live-bar .btn.white{color:var(--green)}

/* ---------- アプリ・ランチャー（2026-07-23: PLaiの全SaaS面の入口をここに集約） ---------- */
.apps-note{font-size:11.5px;color:var(--sub);margin:2px 0 12px}
.apps-group + .apps-group{margin-top:14px}
.apps-gh{font-size:11px;font-weight:800;color:var(--sub);letter-spacing:.06em;margin-bottom:7px}
.apps{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:10px}
.app-card{display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-areas:"ic tx" "meta meta" "act act";gap:4px 11px;border:1px solid var(--line);border-radius:12px;padding:12px 13px;background:#fff;transition:border-color .15s,box-shadow .15s}
.app-card:hover{border-color:var(--brand-line);box-shadow:0 10px 22px rgba(26,26,46,.07)}
.app-card .ac-ic{grid-area:ic;width:38px;height:38px;border-radius:11px;background:var(--purple-soft);display:grid;place-items:center}
.app-card .ac-ic svg{width:19px;height:19px;stroke:var(--purple)}
.app-card .ac-tx{grid-area:tx;min-width:0}
.app-card .ac-tx b{display:block;font-size:13.5px}
.app-card .ac-tx span{display:block;font-size:11.5px;color:var(--sub);line-height:1.5}
.app-card .ac-meta{grid-area:meta;margin-top:8px}
.app-card .ac-act{grid-area:act;display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}
.btn.sm{padding:6px 12px;font-size:11.5px;border-radius:9px}
.btn.sm svg{width:12px;height:12px}
#open-origin{display:inline-flex;font-size:10.5px;padding:3px 9px}
#open-origin svg{width:14px;height:14px;stroke:var(--sub)}

/* ---------- ホームの部署カード（ここで選ぶと左レールの道具箱が入れ替わる） ---------- */
.depts{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:11px;margin-bottom:16px}
.dept-card{display:block;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:13px;padding:13px 15px;cursor:pointer;font-family:inherit;transition:border-color .15s,box-shadow .15s}
.dept-card:hover{border-color:var(--brand-line);box-shadow:0 8px 20px rgba(22,22,32,.06)}
.dept-card.on{border-color:var(--brand);background:linear-gradient(150deg,var(--brand-soft),#fff 70%)}
.dept-card .dc-top{display:flex;align-items:center;gap:8px}
.dept-card .dc-top svg{width:16px;height:16px;stroke:var(--brand);flex:none}
.dept-card .dc-top b{font-size:13.5px}
.dept-card .dc-top .dc-n{margin-left:auto;font-size:10.5px;font-weight:800;color:var(--sub)}
.dept-card p{margin:4px 0 0;font-size:11.5px;color:var(--sub);line-height:1.6}
.dept-card .dc-tools{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.dept-card .dc-tools span{font-size:10px;font-weight:700;background:var(--neutral-soft);color:var(--ink-2);border-radius:6px;padding:1px 7px}

/* ---------- メッセージ（Team Harnessのチャットを最新順で） ---------- */
.msg2{display:grid;grid-template-columns:328px minmax(0,1fr);min-height:calc(100dvh - 140px)}
.msg2>*{min-width:0}
.conv-col{border-right:1px solid var(--line);max-height:calc(100dvh - 140px);overflow-y:auto}
.conv-item{display:flex;gap:11px;align-items:flex-start;padding:11px 14px;border-bottom:1px dashed var(--line);cursor:pointer;width:100%;border-left:0;border-right:0;border-top:0;background:#fff;text-align:left;font-family:inherit}
.conv-item:hover{background:var(--bg)}
.conv-item.on{background:var(--brand-soft)}
.conv-item .ci-av{width:38px;height:38px;border-radius:12px;background:var(--brand-soft);color:var(--brand-ink);display:grid;place-items:center;font-weight:800;font-size:14px;flex:none}
.conv-item.grp .ci-av{background:var(--green-soft);color:var(--green)}
.conv-item .ci-tx{flex:1;min-width:0}
.conv-item .ci-hd{display:flex;align-items:baseline;gap:8px}
.conv-item .ci-hd b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.conv-item .ci-hd time{font-size:10px;color:var(--sub);flex:none}
.conv-item .ci-last{display:block;font-size:11.5px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}
.conv-item .ci-meta{display:block;font-size:10px;color:var(--sub);margin-top:3px}
.msg-thread{display:flex;flex-direction:column;max-height:calc(100dvh - 140px)}
.msg-hd{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--line)}
.msg-hd b{font-size:14.5px}
.msg-hd .sp{flex:1}
.msg-hd span{font-size:11.5px;color:var(--sub)}
.msg-body{flex:1;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:14px;background:var(--bg)}
.msg-row{display:flex;gap:10px}
.msg-row .mr-av{width:32px;height:32px;border-radius:10px;background:var(--brand-soft);color:var(--brand-ink);display:grid;place-items:center;font-weight:800;font-size:12.5px;flex:none;overflow:hidden}
.msg-row .mr-av img{width:100%;height:100%;object-fit:cover}
.msg-row .mr-tx{min-width:0;flex:1}
.msg-row .mr-who{font-size:12px;font-weight:800}
.msg-row .mr-who time{font-weight:600;color:var(--sub);font-size:10.5px;margin-left:7px}
.msg-row .mr-b{font-size:13.5px;line-height:1.75;white-space:pre-wrap;word-break:break-word;margin-top:2px}
.msg-row .mr-file{display:inline-block;font-size:11px;color:var(--sub);background:#fff;border:1px solid var(--line);border-radius:8px;padding:2px 9px;margin-top:5px}
.msg-send{border-top:1px solid var(--line);padding:12px 18px;background:#fff;display:flex;gap:9px;align-items:flex-end}
.msg-send textarea{flex:1;border:1.5px solid var(--line);border-radius:11px;padding:10px 13px;font:inherit;font-size:13.5px;resize:vertical;min-height:44px;max-height:160px}
.msg-send textarea:focus{outline:none;border-color:var(--brand)}
.msg-empty{display:grid;place-items:center;color:var(--sub);font-size:13px;min-height:320px;text-align:center;line-height:1.9}

/* ---------- ビデオ会議 ---------- */
.meet-live{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,var(--green),#166644);color:#fff;border-radius:var(--r);padding:13px 17px;margin-bottom:11px;flex-wrap:wrap}
.meet-live .ml-dot{width:9px;height:9px;border-radius:50%;background:#fff;flex:none;animation:mlb 1.6s infinite}
.meet-live .ml-tx{flex:1;min-width:180px;line-height:1.45}
.meet-live .ml-tx b{display:block;font-size:14.5px}
.meet-live .ml-tx span{font-size:11.5px;opacity:.92}
.meet-live .btn.white{color:var(--green)}
/* 今日のMTG予定リスト（.meet-today / .meet-rows）は 2026-07-27 市岡指示でビデオ会議から撤去。
   予定は「カレンダー」タブが正。 */

/* ---------- 開発（作ったもの・出したもの） ---------- */
.dev-group + .dev-group{margin-top:18px}
.dev-gh{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.dev-gh h2{margin:0;font-size:15px}
.dev-gh span{font-size:11.5px;color:var(--sub)}
.dev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(292px,1fr));gap:11px}
.dev-card{border:1px solid var(--line);border-radius:13px;background:#fff;padding:13px 15px;min-width:0;display:flex;flex-direction:column;gap:5px}
.dev-card:hover{border-color:var(--brand-line)}
.dev-hd{display:flex;align-items:center;gap:8px}
.dev-hd b{font-size:13.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dev-hd .pill{margin-left:auto}
.dev-card p{margin:0;font-size:11.5px;color:var(--sub);line-height:1.65}
.dev-workspace{margin-bottom:16px}
.dev-editor-tools select{width:100%;max-width:680px;border:1px solid var(--line);border-radius:9px;padding:9px 11px;background:#fff;color:var(--ink);font:inherit}
#dev-file-editor{margin-top:12px}
.dev-file-head,.dev-save-row{display:flex;align-items:center;gap:10px;justify-content:space-between;margin:7px 0}
.dev-file-head span{font-size:11px;color:var(--sub)}
#dev-source{display:block;width:100%;min-height:460px;resize:vertical;border:1px solid var(--line);border-radius:10px;background:#15151d;color:#f5f3f7;padding:14px;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;tab-size:2}
.dev-meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}
.dev-meta code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px;background:var(--neutral-soft);color:var(--ink-2);border-radius:6px;padding:2px 7px;max-width:100%;overflow-wrap:anywhere}
.dev-act{display:flex;gap:7px;flex-wrap:wrap;margin-top:7px}
.dev-url{font-size:11px;color:var(--brand);overflow-wrap:anywhere}

/* ---------- Bloom について（設定タブ・ブランドの正本） ---------- */
.bloom-about{background:linear-gradient(135deg,#fffafc,#fff 45%,#faf7ff)}
.bloom-about .bd{padding:20px 22px 18px}
.ba-head{display:flex;align-items:center;gap:14px}
.ba-mark{width:46px;height:46px;flex:none}
.ba-tx{min-width:0}
.ba-tx b{display:block;font-size:22px;line-height:1.2}
.ba-tx span{display:block;font-family:var(--font-brand);font-size:11.5px;font-weight:600;letter-spacing:.03em;color:var(--sub);margin-top:2px}
.ba-lead{margin:14px 0 0;font-size:13px;line-height:1.95;color:var(--ink);max-width:62em}
.ba-petals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}
.ba-petal{display:grid;grid-template-columns:12px minmax(0,1fr);gap:4px 11px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff}
.ba-petal i{grid-row:span 2;width:12px;height:12px;border-radius:50% 0 50% 50%;margin-top:4px}
.ba-petal.human i{background:var(--petal)}
.ba-petal.ai i{background:var(--petal-ai);width:10px;height:10px}
.ba-petal b{font-size:12.5px}
.ba-petal span{font-size:11.5px;color:var(--sub);line-height:1.7}
.ba-note{margin:14px 0 0;font-size:11px;color:var(--sub)}
@media(max-width:760px){.ba-petals{grid-template-columns:1fr}}

/* テーブル */
table.tb{width:100%;border-collapse:collapse;font-size:13px}
.tb th,.tb td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.tb th{background:var(--bg);font-size:11px;color:var(--sub);font-weight:800}
.tb th.num,.tb td.num{text-align:right}
.tb td.num{font-weight:800;white-space:nowrap}
.tb tr:last-child td{border-bottom:none}
.tbwrap{overflow-x:auto}

/* モーダル */
.modal{position:fixed;inset:0;background:rgba(26,26,46,.45);display:grid;place-items:center;z-index:40;padding:16px}
.modal-card{background:#fff;border-radius:16px;box-shadow:var(--sh);padding:22px 24px;width:min(94vw,520px);max-height:90vh;overflow-y:auto}
.modal-card h3{margin:0 0 14px;font-size:17px}
.modal-card label{display:block;font-size:12px;font-weight:700;color:var(--sub);margin-bottom:10px}
.modal-card input,.modal-card textarea{display:block;width:100%;border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;font-size:14px;margin-top:4px;font-family:inherit}
.modal-card input:focus,.modal-card textarea:focus{outline:none;border-color:var(--purple)}
.row2{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}
.modal-note{font-size:11px;color:var(--sub);margin:12px 0 0}
.conflict{border:1.5px solid var(--brand-line);background:var(--red-soft);border-radius:10px;padding:10px 14px;font-size:12.5px;margin-bottom:10px}
.conflict b{color:var(--red)}
.zm-result{border:1.5px solid var(--green-line);background:var(--green-soft);border-radius:10px;padding:12px 14px;font-size:13px;margin-bottom:10px;word-break:break-all}
.zm-result b{display:block;color:var(--green);margin-bottom:4px}

/* スケルトン */
.skel{background:linear-gradient(90deg,#ededf1 25%,#f8f8fa 50%,#ededf1 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:10px;min-height:80px}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ---------- 返信インボックス複製（LH風2ペイン） ---------- */
.inbox2{display:grid;grid-template-columns:330px 1fr;gap:0;min-height:420px}
.conv-list{border-right:1px solid var(--line);max-height:560px;overflow-y:auto}
.conv{display:flex;gap:10px;align-items:center;padding:11px 14px;border-bottom:1px dashed var(--line);cursor:pointer}
.conv:hover{background:var(--bg)}
.conv.on{background:var(--purple-soft)}
/* アバターはどの場所でも固定サイズ（スレッドヘッダー等で原寸爆発させない・2026-07-17バグ修正） */
.cav{width:36px;height:36px;border-radius:50%;background:var(--purple-soft);color:var(--brand-ink);display:grid;place-items:center;font-weight:800;font-size:14px;flex:none;overflow:hidden}
.cav img{width:100%;height:100%;object-fit:cover;display:block}
.thread-hd .cav{width:32px;height:32px}
.thread-msgs img{max-width:100%;max-height:320px;border-radius:10px}
.conv .ctx{flex:1;min-width:0}
.conv .ctx b{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv .ctx span{display:block;font-size:11.5px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv .cmeta{text-align:right;flex:none}
.conv .cmeta time{display:block;font-size:10px;color:var(--sub)}
.thread{display:flex;flex-direction:column;max-height:560px}
.thread-hd{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
.thread-hd b{font-size:14px}
.thread-msgs{flex:1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:8px;background:var(--bg)}
.bubble{max-width:78%;border-radius:14px;padding:8px 13px;font-size:13px;line-height:1.55;white-space:pre-wrap;word-break:break-word}
.bubble.in{align-self:flex-start;background:#fff;border:1px solid var(--line);border-top-left-radius:4px}
.bubble.out{align-self:flex-end;background:var(--purple);color:#fff;border-top-right-radius:4px}
.bubble time{display:block;font-size:9.5px;opacity:.65;margin-top:3px}
.draft-box{border-top:1px solid var(--line);padding:12px 16px;background:#fff}
/* AIが書いたもの＝小さい紫の花びらの色。人の操作（ピンク）と一目で見分けられるようにする */
.draft-box .dhd{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800;color:var(--green);margin-bottom:6px}
.draft-box .dbody{border:1.5px dashed var(--green-line);background:var(--green-soft);border-radius:10px;padding:10px 13px;font-size:13px;white-space:pre-wrap;max-height:130px;overflow-y:auto}
.draft-box .dact{display:flex;gap:8px;margin-top:10px;align-items:center}
.thread-empty{display:grid;place-items:center;color:var(--sub);font-size:13px;min-height:300px}

/* チャット複製（TH風ストリーム） */
.chatrow{display:flex;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line);font-size:13px}
.chatrow:last-child{border-bottom:none}
.chatrow .cav{width:30px;height:30px;border-radius:8px;background:var(--brand-soft);color:var(--brand-ink);display:grid;place-items:center;font-weight:800;font-size:12px;flex:none}
.chatrow .cb2{flex:1;min-width:0}
.chatrow .cb2 .who{font-size:12px;font-weight:800}
.chatrow .cb2 .who .ch{color:var(--sub);font-weight:700;margin-left:6px;font-size:11px}
.chatrow .cb2 .body{white-space:pre-wrap;word-break:break-word}
.viaai{display:inline-block;font-size:9.5px;font-weight:800;background:var(--green-soft);color:var(--green);border-radius:5px;padding:0 6px;margin-left:6px;vertical-align:1px}

/* 棒グラフ（財務 月次推移） */
.bars{display:flex;flex-direction:column;gap:7px}
.bar-item{display:grid;grid-template-columns:74px 1fr 110px;gap:10px;align-items:center;font-size:12px}
.bar-item .bl{color:var(--sub);font-weight:700;text-align:right}
.bar-track{height:16px;background:var(--bg);border-radius:8px;overflow:hidden}
.bar-fill{height:100%;border-radius:8px;background:linear-gradient(90deg,var(--brand),var(--petal))}
.bar-item .bv{font-weight:800;text-align:right;white-space:nowrap}

/* ローンチチェックリスト複製 */
.launch-card{border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:10px;min-width:0}
.launch-card .lhd{display:flex;align-items:center;gap:8px 10px;margin-bottom:6px;flex-wrap:wrap;min-width:0}
.launch-card .lhd b{font-size:13.5px;min-width:0;overflow-wrap:anywhere}
.launch-card .note{overflow-wrap:anywhere}
.chk{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:4px 0;min-width:0}
.chk span{min-width:0;overflow-wrap:anywhere}
.chk .box{width:15px;height:15px;border:2px solid var(--neutral-line);border-radius:4px;flex:none}
.chk.done .box{background:var(--green);border-color:var(--green);position:relative}
.chk.done .box::after{content:"";position:absolute;left:3px;top:0;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(42deg)}
.chk.done span{color:var(--sub)}
.chk a{font-size:11px;margin-left:auto}

@media(max-width:1000px){
  /* 狭い画面ではレールを上の横並びに畳む。項目は全部残す（隠さない＝押せなくならない） */
  /* desktop用の :hover / rail-snap は詳細度と!importantが強く、そのままだとスマホでも
     68pxの左レール＋本文の2列に戻って大きな空白ができる。狭幅では常に1列へ固定する。 */
  .app,.app:has(.rail:hover),.app:has(.rail:focus-within),body.rail-snap .app{grid-template-columns:minmax(0,1fr)!important}
  .rail,.rail:hover,.rail:focus-within,body.rail-snap .rail{position:sticky;top:0;width:100%!important;height:auto;flex-direction:row;align-items:center;gap:8px;border-right:0;border-bottom:1px solid var(--line);padding:0 10px;overflow-x:auto}
  .brand{padding:8px 4px 8px 0;flex:none}
  .nav{display:flex;align-items:center;gap:6px;padding:0;overflow:visible;flex:none}
  .nav-sec{display:flex;align-items:center;gap:4px;margin:0!important}
  #nav-dept-items{display:flex;align-items:center;gap:4px}
  .nav-sec + .nav-sec{margin-left:6px!important}
  .nav-dept,.nav-bottom,.nav-claude{border-top:0;border-left:1px solid var(--line);padding:0 0 0 8px;margin-top:0}
  /* 横並びレールでは一覧は開かない（幅が無い）。「いま開く口」のピルだけ残す＝ここでも答えは判る */
  .nav-claude .cl-open,.nav-claude .cl-list,.nav-claude .cl-foot,
  .rail:hover .nav-claude .cl-list,.rail:focus-within .nav-claude .cl-foot{display:none!important}
  .rail:hover .nav-claude .cl-top,.rail:focus-within .nav-claude .cl-top{display:flex!important}
  .cl-top{margin:0}
  .dept-head{width:auto;padding:4px 8px;gap:5px}
  .dept-menu{left:auto;right:10px;top:56px;bottom:auto}
  .dept-head .dept-lb{display:none}
  .rail-foot{border-top:0;padding:0 0 0 6px;flex:none;flex-wrap:nowrap;margin-left:auto}
  .frame-wrap{height:calc(100dvh - 53px)}
  .inbox2{grid-template-columns:1fr}
  .conv-list{max-height:260px;border-right:none;border-bottom:1px solid var(--line)}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cols,.grid3,.kpis.three{grid-template-columns:1fr}
  .topnav{gap:8px;padding:0 10px}
  .row2{grid-template-columns:1fr 1fr}
  .wgrid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:10px}
  .day{min-height:74px;padding:4px}
  .ev{font-size:9px}
}

/* ---------- サブタブ（ビュー内切替・LH/TH機能フル移植用） ---------- */
.subtabs{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px}
.stab{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;font-size:12.5px;font-weight:800;color:var(--sub);cursor:pointer}
.stab:hover{color:var(--ink)}
.stab.on{background:var(--purple);border-color:var(--purple);color:#fff}
.stab .sbadge{font-size:10px;font-weight:800;background:var(--red-soft);color:var(--red);border-radius:999px;padding:1px 6px}
.stab.on .sbadge{background:rgba(255,255,255,.25);color:#fff}
.sub-sec{display:none;margin-top:14px}
.sub-sec.on{display:block}
.stack{display:grid;gap:14px}
.hd2{font-size:12px;color:var(--sub);font-weight:800;margin:2px 0 6px}

/* チャンネル絞り込みチップ（CS社内チャット） */
.chfilter{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.chf{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 12px;font-size:11.5px;font-weight:700;color:var(--sub);cursor:pointer}
.chf.on{background:var(--purple-soft);border-color:var(--purple);color:var(--brand-ink)}

/* Claude並列アカウント使用量（~/.claude/dashboard移植） */
.utb td{vertical-align:middle;white-space:nowrap}
.ubar{display:inline-block;width:96px;height:10px;background:var(--bg);border:1px solid var(--line);border-radius:6px;overflow:hidden;vertical-align:middle;margin-right:7px}
.ubar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--green),var(--petal-ai))}
.ubar.warn i{background:var(--brand)}
.ubar.hot i{background:var(--brand-ink)}
.upct{font-weight:800;font-size:12px}


/* ---------- 埋込ビュー（本体UI複製の全画面iframe） ---------- */
/* frameビューがONのときは.mainの余白と幅制限を外し、本体UIをedge-to-edgeで見せる */
.main:has(.view.frame.on){padding:0;max-width:none}
.view.frame{padding:0}
.frame-wrap{height:100dvh;position:relative}
.frame-wrap iframe{width:100%;height:100%;border:0;display:block;background:var(--bg);opacity:0}
/* Bloomの化粧（テーマ・ブランド隠し）が入ってから見せる。それまでは小さなスピナー */
.frame-wrap iframe.on{opacity:1;transition:opacity .14s ease}
.frame-wrap:has(iframe:not(.on))::after{content:'';position:absolute;inset:0;margin:auto;width:22px;height:22px;border-radius:50%;
  border:2.5px solid #ecebf0;border-top-color:var(--brand);animation:bloomspin .7s linear infinite}
@keyframes bloomspin{to{transform:rotate(360deg)}}

/* ---------- 会議フローティング小窓（2026-08-03 市岡指示「別のページまでビデオ会議がついてくる」） ----------
   会議中に他タブへ移ると、会議iframeを含むビューを右下に縮めて出し続ける（Zoomミニウィンドウの翻訳）。
   iframeをDOMで動かすと再読み込み＝会議が切れるため、ビューごとCSSで縮めるだけにする。 */
.view.meet-floating{display:block;position:fixed;right:18px;bottom:18px;width:384px;height:238px;z-index:1200;
  padding:0;border-radius:14px;overflow:hidden;background:#0f0f13;border:1px solid rgba(255,255,255,.16);
  box-shadow:0 18px 48px rgba(15,20,30,.45)}
.view.meet-floating .meet-live{display:none}
.view.meet-floating .frame-wrap{height:100%}
.view.meet-floating .frame-wrap iframe{opacity:1}
@media (max-width:700px){.view.meet-floating{width:280px;height:176px;right:10px;bottom:10px}}
.mt14{margin-top:14px}.no-margin{margin:0}.mail-note{display:block;margin:12px 2px 0}.x-fill{stroke:none;fill:var(--purple)}

/* ---------- Mail Harness ---------- */
.main:has(#view-mail.on){max-width:none;padding:0}
.mail-shell{--mail-blue:var(--brand);--mail-navy:var(--ink);--mail-soft:var(--brand-soft);display:grid;gap:14px}
.mail-hero{display:flex;align-items:center;gap:13px;min-width:0}
.mail-hero-mark{width:42px;height:42px;border-radius:12px;background:linear-gradient(145deg,var(--petal),var(--petal-ai));display:grid;place-items:center;box-shadow:0 8px 18px rgba(199,64,109,.22);flex:none}
.mail-hero-mark svg{width:21px;height:21px;stroke:#fff}
.mail-hero-copy{min-width:0}
.mail-hero h1{margin:0;font-size:23px;line-height:1.25;letter-spacing:-.02em}
.mail-hero p{margin:3px 0 0;color:var(--sub);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-hero-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex:none}
.mail-live{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--green-line);background:var(--green-soft);color:var(--green);border-radius:999px;padding:5px 10px;font-size:11px;font-weight:800}
.mail-live i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(27,122,83,.15)}
.btn.mail-new svg,.btn.mail-refresh svg{stroke:currentColor}
.btn.danger{background:var(--ink);color:#fff}
.btn.danger:hover{background:#000}

.mail-tabs{display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.mail-tabs::-webkit-scrollbar{display:none}
.mail-tab{position:relative;display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border:0;background:transparent;color:var(--sub);font-size:12.5px;font-weight:800;cursor:pointer;white-space:nowrap}
.mail-tab svg{width:16px;height:16px;stroke:currentColor}
.mail-tab:hover{color:var(--ink)}
.mail-tab.on{color:var(--mail-blue)}
.mail-tab.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:3px;background:var(--mail-blue);border-radius:3px 3px 0 0}
.mail-tab b{font-size:10px;background:#ececf5;color:#6f7282;border-radius:999px;padding:1px 6px}
.mail-tab.on b{background:var(--mail-soft);color:var(--mail-blue)}
.mail-panel{display:none}
.mail-panel.on{display:block}

.mail-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.mail-kpi-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 16px;box-shadow:0 5px 18px rgba(26,26,46,.045);min-width:0}
.mail-kpi-top{display:flex;align-items:center;gap:8px;color:var(--sub);font-size:11.5px;font-weight:800}
.mail-kpi-top span{width:28px;height:28px;border-radius:9px;background:var(--mail-soft);display:grid;place-items:center;flex:none}
.mail-kpi-top svg{width:15px;height:15px;stroke:var(--mail-blue)}
.mail-kpi-value{font-size:25px;line-height:1.25;font-weight:850;letter-spacing:-.03em;margin-top:7px}
.mail-kpi-note{margin-top:2px;font-size:11px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.mail-health{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;background:linear-gradient(100deg,#fff,#fffafc);border:1px solid var(--brand-line);border-radius:13px;padding:13px 15px}
.mail-health-icon{width:36px;height:36px;border-radius:11px;background:var(--green-soft);display:grid;place-items:center}
.mail-health-icon svg{width:18px;height:18px;stroke:var(--green)}
.mail-health-copy b{display:block;font-size:13px}
.mail-health-copy span{display:block;color:var(--sub);font-size:11.5px;margin-top:1px}
.mail-domain{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:800;color:var(--ink-2);white-space:nowrap}
.mail-domain code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#fff;border:1px solid var(--line);padding:3px 8px;border-radius:7px;color:var(--mail-navy)}

.mail-pool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.mail-pool-card{appearance:none;border:1px solid #e3e5ee;background:#fff;border-radius:12px;padding:11px 12px;display:grid;grid-template-columns:34px minmax(0,1fr) auto 15px;align-items:center;gap:9px;text-align:left;color:var(--ink);cursor:pointer;box-shadow:0 4px 14px rgba(28,31,51,.035)}
.mail-pool-card:hover{border-color:var(--brand-line);background:#fffafc;transform:translateY(-1px)}
.mail-pool-card.main{border-color:var(--brand-line);background:linear-gradient(115deg,#fff,var(--brand-soft))}
.mail-pool-card>svg{width:15px;height:15px;stroke:#999db0}
.mail-pool-icon{width:34px;height:34px;border-radius:10px;background:var(--brand-soft);display:grid;place-items:center}
.mail-pool-icon svg{width:17px;height:17px;stroke:var(--mail-blue)}
.mail-pool-copy{min-width:0}
.mail-pool-copy b{display:block;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-pool-copy small{display:block;color:var(--sub);font-size:9.5px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-pool-card strong{font-size:15px;letter-spacing:-.02em}

.mail-overview-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(310px,.65fr);gap:14px;margin-top:14px;align-items:start}
.mail-section-card{background:#fff;border:1px solid var(--line);border-radius:13px;min-width:0;box-shadow:0 5px 18px rgba(26,26,46,.04)}
.mail-section-head{display:flex;align-items:center;gap:9px;padding:12px 15px;border-bottom:1px solid var(--line)}
.mail-section-head svg{width:16px;height:16px;stroke:var(--mail-blue)}
.mail-section-head b{font-size:13px}
.mail-section-head span{font-size:11px;color:var(--sub)}
.mail-section-head .mail-sp{flex:1}
.mail-section-body{padding:13px 15px}
.mail-segments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.mail-segment{display:flex;align-items:center;gap:10px;border:1px solid #ececf3;background:#fcfcfe;border-radius:11px;padding:10px;min-width:0}
.mail-segment-dot{width:9px;height:9px;border-radius:50%;background:var(--mail-blue);box-shadow:0 0 0 4px var(--mail-soft);flex:none}
.mail-segment-copy{min-width:0;flex:1}
.mail-segment-copy b{font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-segment-copy span{font-size:10.5px;color:var(--sub);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-segment-copy span em{display:inline-block;font-style:normal;font-size:8.5px;font-weight:850;letter-spacing:.02em;background:var(--green-soft);color:var(--green);border-radius:999px;padding:1px 5px;margin-right:5px}
.mail-segment.plai .mail-segment-copy span em{background:var(--ai-soft);color:var(--ai)}
.mail-segment.aircle .mail-segment-dot{background:var(--green);box-shadow:0 0 0 4px var(--green-soft)}
.mail-segment-count{font-size:13px;font-weight:850;white-space:nowrap}
.mail-segment-action{border:0;background:transparent;color:var(--mail-blue);font-size:11px;font-weight:800;padding:3px;cursor:pointer}

.mail-feed{list-style:none;padding:0;margin:0}
.mail-feed li{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;padding:9px 0;border-bottom:1px solid #eff0f5}
.mail-feed li:last-child{border-bottom:0}
.mail-feed-icon{width:30px;height:30px;border-radius:9px;background:#f2f3f8;display:grid;place-items:center}
.mail-feed-icon svg{width:14px;height:14px;stroke:var(--sub)}
.mail-feed-copy{min-width:0}
.mail-feed-copy b{font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-feed-copy span{font-size:10.5px;color:var(--sub);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-feed-meta{font-size:10.5px;color:var(--sub);white-space:nowrap}
.mail-empty-mini{padding:18px 8px;text-align:center;color:var(--sub);font-size:12px}

.mail-compose-grid{display:grid;grid-template-columns:minmax(440px,1.05fr) minmax(390px,.95fr);gap:14px;align-items:start}
.mail-editor{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 6px 20px rgba(26,26,46,.05)}
.mail-editor-head{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line);background:#fcfcfe}
.mail-editor-head svg{width:17px;height:17px;stroke:var(--mail-blue)}
.mail-editor-head b{font-size:13.5px}
.mail-draft-state{margin-left:auto;font-size:10.5px;color:var(--sub);font-weight:800;background:#f1f2f7;border-radius:999px;padding:2px 8px}
.mail-form{padding:15px 16px;display:grid;gap:13px}
.mail-route-banner{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;border:1px solid var(--brand-line);background:var(--brand-soft);border-radius:11px;padding:9px 11px}
.mail-route-banner>span{width:32px;height:32px;border-radius:9px;background:#fbe4ee;display:grid;place-items:center}
.mail-route-banner>span svg{width:16px;height:16px;stroke:var(--mail-blue)}
.mail-route-banner b{display:block;font-size:11.5px}
.mail-route-banner small{display:block;font-size:9.5px;color:var(--sub);margin-top:1px}
.mail-route-banner strong{font-size:13px}
.mail-route-banner.aircle{border-color:var(--green-line);background:var(--green-soft)}
.mail-route-banner.aircle>span{background:var(--green-line)}
.mail-route-banner.aircle>span svg{stroke:var(--green)}
.mail-field{display:grid;gap:5px}
.mail-field label{font-size:11.5px;font-weight:800;color:var(--ink-2)}
.mail-field label small{font-weight:600;color:var(--sub);margin-left:5px}
.mail-field input,.mail-field select,.mail-field textarea,.mail-toolbar input,.mail-toolbar select,.mail-contact-tools input,.mail-contact-tools select{width:100%;border:1.5px solid #dfe1ea;border-radius:9px;background:#fff;color:var(--ink);font:inherit;font-size:13px;padding:9px 11px}
.mail-field textarea{resize:vertical;min-height:210px;line-height:1.8}
.mail-field input:focus,.mail-field select:focus,.mail-field textarea:focus,.mail-toolbar input:focus,.mail-contact-tools input:focus,.mail-contact-tools select:focus{outline:none;border-color:var(--mail-blue);box-shadow:0 0 0 3px rgba(192,64,112,.13)}
.mail-field-help{font-size:10.5px;color:var(--sub)}
.mail-form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mail-test-box{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end;background:#f8f8fc;border:1px solid #e8e9f0;border-radius:11px;padding:10px}
.mail-test-box .mail-field{min-width:0}
.mail-test-box .btn{height:38px}
.mail-safety{border:1px solid #e3e4ec;border-radius:11px;padding:10px 11px;display:grid;gap:7px}
.mail-safety-row{display:flex;align-items:flex-start;gap:8px;color:#656a7d;font-size:11px}
.mail-safety-row svg{width:15px;height:15px;stroke:#9b9fb0;flex:none;margin-top:1px}
.mail-safety-row.ok{color:var(--green)}
.mail-safety-row.ok svg{stroke:var(--green)}
.mail-editor-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--line);background:#fcfcfe}
.mail-editor-actions .mail-action-sp{flex:1}
.mail-editor-actions .btn svg{stroke:currentColor}
.mail-save-status{font-size:11px;color:var(--sub);min-height:18px}

.mail-preview-wrap{position:sticky;top:16px;min-width:0}
.mail-preview-head{display:flex;align-items:center;gap:8px;margin:0 0 8px 2px;color:var(--sub);font-size:11.5px;font-weight:800}
.mail-preview-head svg{width:15px;height:15px;stroke:var(--sub)}
.gmail-window{background:#fff;border:1px solid #dfe2e8;border-radius:14px;overflow:hidden;box-shadow:0 12px 34px rgba(32,36,58,.12)}
.gmail-topbar{height:44px;background:#f6f8fc;border-bottom:1px solid #e5e8ee;display:flex;align-items:center;gap:7px;padding:0 13px}
.gmail-dot{width:8px;height:8px;border-radius:50%;background:#d2d6df}
.gmail-search{height:26px;border-radius:7px;background:#e9edf5;margin-left:9px;flex:1;max-width:260px;display:flex;align-items:center;padding:0 9px;color:#8c92a2;font-size:10px}
.gmail-message{padding:17px 20px 22px}
.gmail-subject{font-size:17px;line-height:1.4;font-weight:650;color:#202124;margin-bottom:15px;overflow-wrap:anywhere}
.gmail-meta{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:9px;align-items:center;margin-bottom:22px}
.gmail-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(145deg,var(--brand),var(--green));color:#fff;display:grid;place-items:center;font-size:12px;font-weight:850}
.gmail-avatar.aircle{background:linear-gradient(145deg,var(--green),var(--petal-ai))}
.gmail-from{min-width:0;color:#202124;font-size:11.5px;line-height:1.35}
.gmail-from b{font-size:12px}
.gmail-from span{display:block;color:#6d7280;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gmail-from #gmail-preview-from{display:inline;color:#202124;overflow:visible;white-space:normal}
.gmail-time{font-size:10px;color:#747986}
.gmail-body-copy{font-size:13px;color:#292b35;line-height:1.9;overflow-wrap:anywhere;min-height:190px}
.gmail-body-copy p{margin:0 0 15px}
.gmail-body-copy .gmail-placeholder{color:#a0a4b2}
.gmail-footer{margin-top:28px;padding-top:14px;border-top:1px solid #e5e7ed;color:#7a7f8e;font-size:10.5px;line-height:1.65}
.gmail-footer a{color:#6d7280;text-decoration:underline}
.mail-preview-note{margin:9px 2px 0;color:var(--sub);font-size:10.5px;line-height:1.6}

.mail-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.mail-toolbar .mail-search{flex:1;min-width:220px;max-width:420px}
.mail-toolbar select{width:auto;min-width:150px}
.mail-table-wrap{overflow:auto}
.mail-table{width:100%;border-collapse:collapse;font-size:12px}
.mail-table th{position:sticky;top:0;background:#f7f8fb;color:var(--sub);text-align:left;font-size:10.5px;font-weight:850;letter-spacing:.02em;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.mail-table td{padding:10px;border-bottom:1px solid #eceef3;vertical-align:middle}
.mail-table tbody tr:hover{background:#fffafc}
.mail-table tr:last-child td{border-bottom:0}
.mail-table-subject{font-weight:750;max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-table-sub{display:block;color:var(--sub);font-size:10.5px;font-weight:500;margin-top:1px}
.mail-status{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:2px 8px;font-size:10px;font-weight:850;background:#f0f1f5;color:#686d7f;white-space:nowrap}
.mail-status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.mail-status.sent{background:var(--green-soft);color:var(--green)}
.mail-status.scheduled{background:var(--neutral-soft);color:var(--ink-2)}
.mail-status.draft{background:var(--ai-soft);color:var(--ai)}
.mail-status.failed,.mail-status.partial{background:var(--brand-soft);color:var(--brand-ink)}
.mail-row-actions{display:flex;align-items:center;gap:5px;justify-content:flex-end}
.mail-icon-btn{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;color:#656a7d}
.mail-icon-btn:hover{border-color:var(--brand-line);color:var(--brand);background:#fffafc}
.mail-icon-btn svg{width:14px;height:14px;stroke:currentColor}

.mail-contact-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:14px;align-items:start}
.mail-contact-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.mail-contact-tools input{flex:1;min-width:210px}
.mail-contact-tools select{width:auto;min-width:180px}
.mail-directory-summary{display:flex;align-items:center;gap:10px;background:#f7f7fb;border:1px solid #e8e9f0;border-radius:10px;padding:9px 11px;margin-bottom:9px}
.mail-directory-summary b{font-size:12px}
.mail-directory-summary span{color:var(--sub);font-size:10.5px}
.mail-route-pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:3px 8px;font-size:9.5px;font-weight:850;background:var(--ai-soft);color:var(--ai);white-space:nowrap}
.mail-route-pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.mail-route-pill.aircle{background:var(--green-soft);color:var(--green)}
.mail-route-pill.both{background:var(--neutral-soft);color:var(--ink-2)}
.mail-route-pill.blocked{background:#f2f3f6;color:#7b7f8d}
.mail-block-reason{display:block;color:var(--brand-ink);font-size:9px;margin-top:3px;white-space:nowrap}
.mail-contact-table td:nth-child(2){min-width:110px}
.mail-contact-table td:nth-child(3){min-width:180px}
.mail-contact-table td:nth-child(4){min-width:150px}
.mail-contact-name{font-weight:750}
.mail-contact-name span{display:block;font-weight:500;color:var(--sub);font-size:10.5px}
.mail-tag-pills{display:flex;gap:4px;flex-wrap:wrap}
.mail-tag-pill{display:inline-flex;align-items:center;gap:4px;background:var(--ai-soft);color:var(--ai);border-radius:999px;padding:2px 7px;font-size:9.5px;font-weight:800;max-width:180px}
.mail-tag-pill.source{background:#f2f3f7;color:#696e80}
.mail-tag-pill button{border:0;background:transparent;color:inherit;padding:0;line-height:1;cursor:pointer;font-weight:900}
.mail-add-tag{display:flex;align-items:center;gap:5px}
.mail-add-tag select{width:120px;border:1px solid var(--line);border-radius:7px;padding:5px;font:inherit;font-size:10.5px}
.mail-tag-manager{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px;position:sticky;top:16px}
.mail-tag-manager h3{font-size:13px;margin:0 0 4px}
.mail-tag-manager>p{font-size:10.5px;color:var(--sub);margin:0 0 12px;line-height:1.6}
.mail-create-tag{display:flex;gap:6px}
.mail-create-tag input{min-width:0;flex:1;border:1.5px solid var(--line);border-radius:8px;padding:8px 9px;font:inherit;font-size:11.5px}
.mail-create-tag input:focus{outline:none;border-color:var(--brand)}
.mail-create-tag .btn{padding:7px 10px}
.mail-manual-list{display:grid;gap:7px;margin-top:12px}
.mail-manual-row{display:flex;align-items:center;gap:8px;border-top:1px solid #eff0f5;padding-top:8px;font-size:11.5px}
.mail-manual-row i{width:8px;height:8px;border-radius:50%;background:var(--brand)}
.mail-manual-row b{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mail-manual-row span{color:var(--sub);font-size:10px}
.mail-pagination{display:flex;align-items:center;justify-content:space-between;padding-top:11px;color:var(--sub);font-size:11px}
.mail-pagination div{display:flex;gap:6px}

.mail-confirm-card{width:min(94vw,560px);text-align:left}
.mail-confirm-icon{width:42px;height:42px;border-radius:12px;background:var(--red-soft);display:grid;place-items:center;margin-bottom:11px}
.mail-confirm-icon svg{width:21px;height:21px;stroke:var(--red)}
.mail-confirm-lead{font-size:12.5px;color:var(--sub);margin:-7px 0 14px;line-height:1.7}
.mail-confirm-summary{margin:0;border:1px solid var(--line);border-radius:11px;overflow:hidden}
.mail-confirm-summary div{display:grid;grid-template-columns:76px 1fr;gap:10px;padding:9px 11px;border-bottom:1px solid var(--line)}
.mail-confirm-summary div:last-child{border-bottom:0}
.mail-confirm-summary dt{font-size:10.5px;color:var(--sub);font-weight:800}
.mail-confirm-summary dd{margin:0;font-size:11.5px;font-weight:700;overflow-wrap:anywhere}
.mail-confirm-check{display:flex!important;align-items:flex-start;gap:9px;margin:13px 0!important;border:1px solid #e3e4ec;border-radius:10px;padding:10px;color:var(--ink)!important;font-size:11.5px!important;cursor:pointer}
.mail-confirm-check input{width:16px!important;height:16px;margin:1px 0 0;flex:none}
.mail-confirm-error{background:var(--red-soft);color:var(--red);border-radius:9px;padding:8px 10px;font-size:11.5px;margin-bottom:10px}
.app-toast{position:fixed;right:20px;bottom:20px;z-index:60;background:var(--ink);color:#fff;border-radius:10px;padding:10px 14px;box-shadow:0 12px 30px rgba(20,23,39,.25);font-size:12px;font-weight:700;max-width:min(420px,calc(100vw - 40px))}
.app-toast.bad{background:var(--brand-ink)}

@media(max-width:1100px){
  .mail-pool-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mail-compose-grid{grid-template-columns:1fr}
  .mail-preview-wrap{position:static}
  .mail-overview-grid{grid-template-columns:1fr}
  .mail-contact-layout{grid-template-columns:1fr}
  .mail-tag-manager{position:static}
}
@media(max-width:760px){
  /* スマホだけロゴタイプを隠す（タブの横幅を優先）。タブレット幅では "Bloom" を出す */
  .brand b{display:none}
  .main:has(#view-mail.on){padding:12px 10px 34px}
  .mail-hero p,.mail-live{display:none}
  .mail-hero-actions .mail-refresh{display:none}
  .mail-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mail-kpi-value{font-size:21px}
  .mail-health{grid-template-columns:auto 1fr}
  .mail-domain{display:none}
  .mail-segments{grid-template-columns:1fr}
  .mail-pool-grid{grid-template-columns:1fr}
  .mail-compose-grid{display:block}
  .mail-preview-wrap{margin-top:12px}
  .mail-form-row{grid-template-columns:1fr}
  .mail-test-box{grid-template-columns:1fr}
  .mail-editor-actions .mail-action-sp{display:none}
  .mail-editor-actions .btn{flex:1;justify-content:center}
  .mail-table-subject{max-width:210px}
  .mail-contact-tools select{width:100%}
  .mail-directory-summary{align-items:flex-start;flex-direction:column;gap:2px}
}

/* ---------- カレンダー（Googleカレンダー型・2026-07-24） ---------- */
.gcal-top{display:flex;align-items:center;gap:10px;margin:2px 0 14px;flex-wrap:wrap}
.gcal-title{margin:0 4px;font-size:21px;font-weight:700}
.icon-nav{width:34px;height:34px;border:0;background:transparent;border-radius:50%;display:grid;place-items:center;cursor:pointer;color:var(--ink-2)}
.icon-nav:hover{background:var(--neutral-soft)}
.icon-nav svg{width:19px;height:19px;stroke:currentColor}
.icon-nav.sm{width:26px;height:26px}
.icon-nav.sm svg{width:15px;height:15px}
.seg{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.seg button{border:0;background:transparent;padding:7px 16px;font:inherit;font-size:12.5px;font-weight:700;color:var(--ink-2);cursor:pointer}
.seg button + button{border-left:1px solid var(--line)}
.seg button.on{background:var(--brand-soft);color:var(--brand-ink)}
.gcal{display:grid;grid-template-columns:216px minmax(0,1fr);gap:16px;align-items:start}
.gcal-side{position:sticky;top:14px}
.gcal-create{border-radius:12px;padding:11px 20px;font-size:13.5px;box-shadow:0 6px 16px rgba(199,64,109,.25)}
.gcal-ver{display:inline-block;margin-left:6px;font-size:9px;color:#b9b9c4;font-weight:700}
.gcal-note{font-size:10.5px;color:var(--sub);line-height:1.7;margin:12px 2px 0}
#mini-month{margin-top:16px}
.mm-hd{display:flex;align-items:center;gap:2px;padding:0 2px 6px}
.mm-hd b{font-size:12.5px}
.mm-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.mm-w{font-size:9.5px;color:var(--sub);text-align:center;font-weight:700;padding:2px 0}
.mm-d{border:0;background:transparent;border-radius:50%;aspect-ratio:1;font-size:10.5px;font-weight:600;color:var(--ink);cursor:pointer;padding:0}
.mm-d:hover{background:var(--neutral-soft)}
.mm-d.out{color:var(--neutral-line)}
.mm-d.sel{outline:1.5px solid var(--brand);outline-offset:-1.5px}
.mm-d.today{background:var(--brand);color:#fff;font-weight:800}
.gcal-main{overflow:hidden}
.gcal-main.grid-mode{display:flex;flex-direction:column;height:calc(100dvh - 120px)}
/* 時間グリッド */
.tg-head{display:grid;grid-template-columns:56px repeat(auto-fit,minmax(0,1fr));border-bottom:1px solid var(--line)}
.tg-day{border:0;background:transparent;padding:8px 0 6px;text-align:center;cursor:pointer}
.tg-day .w{display:block;font-size:10.5px;font-weight:700;color:var(--sub)}
.tg-day .w.sat{color:var(--sub)}.tg-day .w.sun{color:var(--brand-ink)}
.tg-day b{display:inline-grid;place-items:center;min-width:34px;height:34px;border-radius:50%;font-size:17px;margin-top:2px}
.tg-day:hover b{background:var(--neutral-soft)}
.tg-day.today b{background:var(--brand);color:#fff}
.tg-allday{display:grid;grid-template-columns:56px repeat(auto-fit,minmax(0,1fr));border-bottom:1px solid var(--line);min-height:4px}
.tg-adcell{padding:2px 3px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ad-chip{border:0;text-align:left;background:var(--petal-ai);color:#0f4a31;border-radius:6px;font-size:10.5px;font-weight:700;padding:2px 8px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:inherit}
.tg-gutter{font-size:9px;color:var(--sub);text-align:right;padding:4px 6px 0 0}
.tg-scroll{overflow-y:auto;flex:1;scrollbar-width:thin}
.tg-body{display:grid;grid-template-columns:56px repeat(auto-fit,minmax(0,1fr));position:relative;height:1152px}
.tg-hours{position:relative}
.tg-hours span{position:absolute;right:6px;transform:translateY(-50%);font-size:9.5px;color:var(--sub);background:#fff;padding:0 2px}
.tg-hours span:nth-child(1){top:0}.tg-hours span:nth-child(2){top:48px}.tg-hours span:nth-child(3){top:96px}.tg-hours span:nth-child(4){top:144px}.tg-hours span:nth-child(5){top:192px}.tg-hours span:nth-child(6){top:240px}.tg-hours span:nth-child(7){top:288px}.tg-hours span:nth-child(8){top:336px}.tg-hours span:nth-child(9){top:384px}.tg-hours span:nth-child(10){top:432px}.tg-hours span:nth-child(11){top:480px}.tg-hours span:nth-child(12){top:528px}.tg-hours span:nth-child(13){top:576px}.tg-hours span:nth-child(14){top:624px}.tg-hours span:nth-child(15){top:672px}.tg-hours span:nth-child(16){top:720px}.tg-hours span:nth-child(17){top:768px}.tg-hours span:nth-child(18){top:816px}.tg-hours span:nth-child(19){top:864px}.tg-hours span:nth-child(20){top:912px}.tg-hours span:nth-child(21){top:960px}.tg-hours span:nth-child(22){top:1008px}.tg-hours span:nth-child(23){top:1056px}.tg-hours span:nth-child(24){top:1104px}
.tg-col{position:relative;border-left:1px solid var(--line);cursor:pointer;min-width:0;
  background:repeating-linear-gradient(to bottom,transparent 0 47px,var(--line) 47px 48px)}
.cv-ev{position:absolute;border:0;text-align:left;border-radius:7px;padding:3px 7px;font-family:inherit;cursor:pointer;overflow:hidden;min-width:0;border-left:3px solid transparent}
.cv-ev b{display:block;font-size:11px;font-weight:700;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cv-ev span{display:block;font-size:9.5px;opacity:.85}
.cv-ev.c-mtg{background:var(--brand-soft);border-left-color:var(--brand);color:var(--brand-ink)}
.cv-ev.c-sem{background:var(--brand);color:#fff}
.cv-ev.c-plain{background:var(--green-soft);border-left-color:var(--green);color:var(--green)}
.cv-ev.past{opacity:.55}
.cv-ev:hover{filter:brightness(.97);box-shadow:0 3px 10px rgba(22,22,32,.15);z-index:3}
.now-line{position:absolute;left:0;right:0;height:2px;background:var(--brand);z-index:4;pointer-events:none}
.now-line i{position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--brand)}
/* 月グリッド */
.mg-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line)}
.mg-head span{text-align:center;font-size:10.5px;font-weight:700;color:var(--sub);padding:7px 0}
.mg-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line)}
.mg-week:last-child{border-bottom:0}
.mg-cell{min-height:112px;border-left:1px solid var(--line);padding:3px;min-width:0;cursor:pointer}
.mg-cell:first-child{border-left:0}
.mg-cell.out{background:var(--bg)}
.mg-num{display:inline-grid;place-items:center;min-width:24px;height:24px;border:0;background:transparent;border-radius:50%;font-size:11px;font-weight:700;cursor:pointer;font-family:inherit;margin:1px auto 2px;color:var(--ink)}
.mg-cell.out .mg-num{color:var(--sub)}
.mg-num:hover{background:var(--neutral-soft)}
.mg-num.today{background:var(--brand);color:#fff}
.mg-cell{display:flex;flex-direction:column;align-items:stretch}
.mg-ev{border:0;text-align:left;background:transparent;font-family:inherit;font-size:10.5px;font-weight:700;color:var(--ink);border-radius:5px;padding:1px 5px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mg-ev i{font-style:normal;color:var(--sub);font-weight:600;margin-right:3px}
.mg-ev:hover{background:var(--neutral-soft)}
.mg-ev.ad{background:var(--petal-ai);color:#0f4a31}
.mg-ev.c-sem:not(.ad){color:var(--brand-ink)}
.mg-more{border:0;background:transparent;font-family:inherit;font-size:10px;font-weight:700;color:var(--sub);text-align:left;padding:1px 5px;cursor:pointer}
.mg-more:hover{color:var(--ink)}
/* 予定ポップオーバー */
.ev-pop{position:fixed;z-index:70;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 50px rgba(22,22,32,.22);padding:14px 16px}
.ep-hd{display:flex;align-items:center;gap:9px}
.ep-hd b{flex:1;font-size:14px;min-width:0}
.ep-dot{width:12px;height:12px;border-radius:4px;flex:none}
.ep-dot.c-mtg{background:var(--brand)}.ep-dot.c-sem{background:var(--brand-ink)}.ep-dot.c-plain{background:var(--green)}
.ep-when{font-size:12px;color:var(--ink-2);margin:6px 0 0 21px}
.ep-row{font-size:11.5px;color:var(--sub);margin:4px 0 0 21px}
.ep-desc{font-size:11px;color:var(--sub);margin:8px 0 0 21px;line-height:1.7;max-height:190px;overflow:auto;white-space:pre-wrap;word-break:break-all}
.ep-desc a{color:var(--brand);text-decoration:underline}
.ep-desc.dim{color:#9a9aa6}
.ep-kind{font-size:9.5px;font-weight:800;letter-spacing:.04em;background:rgba(255,255,255,.22);border-radius:999px;padding:2px 7px;margin-left:7px}
.ep-act{display:flex;gap:8px;margin:12px 0 0 21px;flex-wrap:wrap}
@media(max-width:1000px){
  .msg2{grid-template-columns:1fr}
  .conv-col{max-height:38dvh;border-right:0;border-bottom:1px solid var(--line)}
  .msg-thread{max-height:none}
  .msg-body{max-height:44dvh}
}
@media(max-width:1000px){.gcal{grid-template-columns:1fr}.gcal-side{position:static;display:flex;gap:14px;align-items:flex-start}.gcal-ver{display:inline-block;margin-left:6px;font-size:9px;color:#b9b9c4;font-weight:700}
.gcal-note{display:none}.gcal-main.grid-mode{height:calc(100dvh - 170px)}}
@media(max-width:600px){
  /* サイドバー4部品を1行に並べると390px画面を超える。スマホは縦積みにし、
     本体と重複するミニ月間カレンダーだけ省略する。 */
  .gcal-side{display:grid;grid-template-columns:minmax(0,1fr);gap:0;min-width:0;max-width:100%}
  .gcal-create{justify-self:start}
  #mini-month{display:none}
  #side-meet,#gcal-conn{min-width:0;max-width:100%}
  .conn-card{min-width:0;flex-wrap:wrap}
  .gcal-main.grid-mode{height:calc(100dvh - 220px)}
}

/* ---------- 共通アバター基底（メッセージ・設定のロゴプレビューの両方で使う） ---------- */
.ci-av{width:38px;height:38px;border-radius:12px;background:var(--brand-soft);color:var(--brand-ink);display:grid;place-items:center;font-weight:800;font-size:14px;flex:none;overflow:hidden}
.ci-av img{width:100%;height:100%;object-fit:contain;display:block;background:#fff}
.ci-av.grp{background:#fff;border:1px solid var(--line)}

/* ---------- メッセージ: DM吹き出し・グループロゴ ---------- */
.conv-item .ci-av img,.msg-hd .ci-av img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.conv-item .ci-av.grp,.msg-hd .ci-av.grp{background:#fff;border:1px solid var(--line)}
.msg-hd{gap:11px}
.msg-hd .ci-av{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-weight:800;background:var(--brand-soft);color:var(--brand-ink);overflow:hidden;flex:none}
.msg-hd .mh-t{min-width:0}
.msg-hd .mh-t b{display:block;font-size:14.5px}
.msg-hd .mh-t span{display:block;font-size:11px;color:var(--sub)}
.dm-row{display:flex;gap:9px;align-items:flex-end}
.dm-row.me{justify-content:flex-end}
.dm-row .mr-av{width:30px;height:30px;border-radius:10px;overflow:hidden;background:var(--brand-soft);color:var(--brand-ink);display:grid;place-items:center;font-weight:800;font-size:12px;flex:none}
.dm-row .mr-av img{width:100%;height:100%;object-fit:cover}
.dm-b{max-width:72%;background:#fff;border:1px solid var(--line);border-radius:14px;border-bottom-left-radius:5px;padding:8px 13px;font-size:13.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
.dm-row.me .dm-b{background:var(--brand);border-color:var(--brand);color:#fff;border-radius:14px;border-bottom-right-radius:5px}
.dm-b time{display:block;font-size:9px;opacity:.6;margin-top:3px}

/* ---------- ビデオ会議 ---------- */
.meet-frame{border-radius:var(--r);overflow:hidden;border:1px solid var(--line);height:calc(100dvh - 130px)}
#tabs a.meeting-live{color:var(--green);background:var(--green-soft)}
#tabs a.meeting-live svg{stroke:var(--green)}
#view-meet .meet-live + .meet-frame{height:calc(100dvh - 240px)}

/* ---------- 開発ロゴ ---------- */
.dev-logo{width:34px;height:34px;border-radius:9px;overflow:hidden;flex:none;border:1px solid var(--line);background:#fff;display:grid;place-items:center}
.dev-logo img{width:100%;height:100%;object-fit:contain}

/* ---------- 設定: 招待・ガイド・ロゴ ---------- */
.invite-box{border-top:1px dashed var(--line);margin-top:14px;padding-top:12px}
.invite-row{display:flex;gap:8px;flex-wrap:wrap}
.invite-row input{flex:1;min-width:220px;border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;font:inherit;font-size:13px}
.invite-row input:focus{outline:none;border-color:var(--brand)}
.invite-row select{border:1.5px solid var(--line);border-radius:10px;padding:9px;font:inherit;font-size:12.5px;background:#fff}
.guide{margin:8px 0 12px;padding-left:20px;font-size:12.5px;line-height:2}
.guide li{margin-bottom:4px}
.logo-row{display:flex;gap:10px;align-items:center}
.logo-row .ci-av{width:52px;height:52px;border-radius:14px}
.logo-row input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:10px;padding:8px 11px;font:inherit;font-size:12px}

/* ---------- MCP / API 接続（設定） ---------- */
.mcp-issue{border:1px dashed var(--line);border-radius:12px;padding:12px 14px;margin-top:8px}
.mcp-issue select,#mcp-label{border:1.5px solid var(--line);border-radius:10px;padding:8px 11px;font:inherit;font-size:12.5px;background:#fff}
#mcp-member{max-width:340px}
#mcp-label{flex:1;min-width:180px}
/* ---- ナレッジ（左=階層 × [議事録|記事]・2026-07-24） ---- */
.kn-split{display:grid;grid-template-columns:230px minmax(0,1fr);gap:14px;align-items:start}
@media(max-width:980px){.kn-split{grid-template-columns:1fr}}
.kn-tree{padding:10px 8px;position:sticky;top:14px}
.kn-cat-row{display:flex;align-items:center}
.kn-cat{flex:1;display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;font:inherit;font-size:12.5px;font-weight:700;color:var(--sub);padding:8px 10px;border-radius:9px;cursor:pointer;text-align:left;min-width:0}
.kn-cat b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}
.kn-cat i{font-style:normal;font-size:10px;background:#f1eef3;border-radius:99px;padding:1px 7px;color:var(--sub)}
.kn-cat.on{background:#fdeef4;color:var(--brand)}
.kn-cat.on i{background:#fff;color:var(--brand)}
.kn-cat svg{width:15px;height:15px}
.kn-dot{width:7px;height:7px;border-radius:50%;background:#d9d2e5;flex:none}
.kn-cat.on .kn-dot{background:var(--brand)}
.kn-catmenu{border:0;background:none;color:#c9c2d4;font-size:11px;cursor:pointer;opacity:0;padding:4px}
.kn-cat-row:hover .kn-catmenu{opacity:1}
.kn-addcat{width:100%;border:1px dashed var(--line);background:none;font:inherit;font-size:11.5px;font-weight:700;color:var(--sub);border-radius:9px;padding:8px;margin-top:8px;cursor:pointer}
.kn-addcat:hover{color:var(--brand);border-color:var(--brand)}
.kn-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:14px;align-items:start}
@media(max-width:1200px){.kn-main{grid-template-columns:1fr}}
.kn-list{overflow:hidden}
.kn-listhd{padding:10px 12px;border-bottom:1px solid var(--line)}
.kn-rows{list-style:none;margin:0;padding:6px;max-height:calc(100dvh - 250px);overflow:auto}
.kn-rows li{padding:10px 12px;border-radius:10px;cursor:pointer}
.kn-rows li:hover{background:#faf7f9}
.kn-rows li.on{background:#fdeef4}
.kn-rows .tx b{display:block;font-size:12.5px;color:var(--ink);line-height:1.45}
.kn-rows .tx span{display:block;font-size:10.5px;color:var(--sub);margin-top:2px}
.kn-rows .empty{color:#9a9aa6;text-align:center;padding:22px 10px;font-size:12px;cursor:default}
.kn-doc{padding-bottom:6px}
.kn-doc .hd b{font-size:15px}
.kn-meta{font-size:11px;color:var(--sub);padding:0 16px 8px}
.kn-move{font-size:11px;font-weight:700;color:var(--sub);display:flex;align-items:center;gap:6px}
.kn-move select{border:1px solid var(--line);border-radius:8px;padding:5px 8px;font:inherit;font-size:12px}
.kn-sec{padding:4px 16px 10px}
.kn-sec ul{margin:4px 0 0 18px;font-size:12.5px;line-height:1.8}
.kn-sec p{font-size:12.5px;line-height:1.8;margin:4px 0 0}
.kn-md{font-size:13px;line-height:1.85;color:var(--ink);max-height:min(58dvh,640px);overflow:auto;border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:#fdfcfe}
.kn-md h2{font-size:16px;margin:14px 0 6px;border-bottom:1px solid var(--line);padding-bottom:4px}
.kn-md h3{font-size:14px;margin:12px 0 4px}
.kn-md h4{font-size:13px;margin:10px 0 3px;color:var(--sub)}
.kn-md ul{margin:4px 0 8px 20px}
.kn-md p{margin:5px 0}
.kn-md pre{background:#f4f2f6;border-radius:9px;padding:10px 12px;font-size:11.5px;overflow:auto;margin:8px 0}
.kn-md a{color:var(--brand)}
.kn-md blockquote{border-left:3px solid var(--line);padding-left:10px;color:var(--sub);margin:6px 0}
.kn-title-in{flex:1;min-width:0;border:1px solid var(--line);border-radius:9px;padding:9px 12px;font:inherit;font-size:14px;font-weight:800}
.kn-body-in{width:calc(100% - 32px);margin:8px 16px 14px;min-height:46dvh;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font:inherit;font-size:13px;line-height:1.8;resize:vertical}
.kn-doc .hd select{border:1px solid var(--line);border-radius:8px;padding:6px 8px;font:inherit;font-size:12px}
.kn-ai{display:flex;align-items:center;gap:9px;background:#fdeef4;border:1px solid #f3cddd;border-radius:12px;padding:10px 14px;margin-bottom:12px;font-size:12.5px;font-weight:700;color:var(--brand)}
.kn-ai.err{background:#fdeaea;border-color:#eccfcf;color:#b03e3e}
.kn-ai .spin{width:14px;height:14px;border-radius:50%;border:2px solid #f3cddd;border-top-color:var(--brand);animation:bloomspin .7s linear infinite;flex:none}
.kn-mdwrap{padding:4px 16px 16px;max-height:calc(100dvh - 210px);overflow:auto}
.kn-mn .hd b{font-size:13px;color:var(--sub)}

/* ---- カレンダー: 長押しドラッグ・削除・会議まとめ（2026-07-24） ---- */
.cv-ev,.mg-ev{touch-action:none}
.cv-ev.lifting,.mg-ev.lifting{opacity:.45;outline:2px dashed var(--brand);outline-offset:1px;cursor:grabbing}
body.ev-dragging{cursor:grabbing;user-select:none}
body.ev-dragging .cv-ev:not(.lifting),body.ev-dragging .mg-ev:not(.lifting){pointer-events:none}
.drop-hint{position:absolute;left:2px;right:2px;background:rgba(199,64,109,.14);border:2px dashed var(--brand);border-radius:8px;z-index:5;pointer-events:none;
  font-size:10px;font-weight:800;color:var(--brand);padding:2px 6px}
.mg-cell.drop{outline:2px dashed var(--brand);outline-offset:-2px;background:#fdeef4}
/* Googleカレンダー連携カード（2026-07-25 市岡指示） */
#gcal-conn{margin-top:14px}
.conn-card{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff}
.conn-card .dot{width:8px;height:8px;border-radius:50%;flex:none}
.conn-card .dot.ok{background:#3f8f5f}
.conn-tx{min-width:0;flex:1}
.conn-tx b{display:block;font-size:11.5px;font-weight:800}
.conn-tx span{display:block;font-size:10.5px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conn-card .btn{padding:6px 12px;font-size:11px}
.conn-note{font-size:10.5px;color:var(--sub);margin:8px 0 0;line-height:1.7}
.conn-note.warn{color:var(--brand-ink)}
#gcal-conn .btn.wide{display:block;text-align:center;text-decoration:none}
.cal-link-banner{margin:14px;padding:18px 20px;border:1.5px dashed var(--brand-line);background:var(--brand-soft);border-radius:14px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.cal-link-banner b{font-size:14px;font-weight:800}
.cal-link-banner span{font-size:12px;color:var(--ink-2);line-height:1.9}
.cal-link-banner .btn{text-decoration:none;margin-top:4px}
/* 空きスロットをドラッグして新規作成する時の選択帯（2026-07-25 市岡指示「長押し→ドラッグで時間を選んで予定を入力」） */
.sel-hint{position:absolute;left:2px;right:2px;background:rgba(199,64,109,.20);border:1.5px solid var(--brand);border-radius:8px;z-index:6;pointer-events:none;color:var(--brand);overflow:hidden;box-shadow:0 6px 16px rgba(199,64,109,.22)}
.sel-hint b{display:block;font-size:11px;font-weight:800;padding:3px 7px;line-height:1.3;white-space:nowrap}
body.ev-selecting{cursor:ns-resize;user-select:none;-webkit-user-select:none}
body.ev-selecting .cv-ev{pointer-events:none}
/* 追加しようとしている時間帯の未確定プレビュー（点線ゴースト・モーダルの背後にも残る） */
.sel-ghost{position:absolute;left:2px;right:2px;border:2px dashed var(--brand);border-radius:8px;z-index:5;pointer-events:none;color:var(--brand-ink);overflow:hidden;
  background:repeating-linear-gradient(45deg,rgba(199,64,109,.10) 0 6px,rgba(199,64,109,.045) 6px 12px)}
.sel-ghost b{display:block;font-size:11px;font-weight:800;padding:3px 7px 0;line-height:1.3;white-space:nowrap}
.sel-ghost span{display:block;font-size:9px;font-weight:700;padding:0 7px;opacity:.75;white-space:nowrap}
.mg-cell.pending-day{outline:2px dashed var(--brand);outline-offset:-2px;background:var(--brand-soft)}
/* スワイプ/前後送り時の軽いスライド演出 */
@keyframes cal-in-l{from{opacity:.35;transform:translateX(26px)}to{opacity:1;transform:none}}
@keyframes cal-in-r{from{opacity:.35;transform:translateX(-26px)}to{opacity:1;transform:none}}
.gcal-main.slide-l{animation:cal-in-l .17s ease}
.gcal-main.slide-r{animation:cal-in-r .17s ease}
.ep-act .sp{flex:1}
.ep-danger{color:#b03e3e;border-color:#eccfcf}
.ep-danger:hover{background:#fdeaea}
/* 会議URLまとめ（ミニ月の下） */
#side-meet{margin-top:14px}
.sm-cap{font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--sub);margin:10px 0 6px}
.sm-none{font-size:11px;color:#9a9aa6;margin:0}
.sm-row{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:11px;padding:8px 10px;margin-bottom:7px;text-decoration:none;background:#fff}
.sm-row:hover{border-color:var(--brand)}
.sm-t{font-size:10.5px;font-weight:800;color:var(--sub)}
.sm-title{font-size:12px;font-weight:700;color:var(--ink);line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.sm-join{align-self:flex-start;font-size:10px;font-weight:800;border-radius:99px;padding:2px 9px;margin-top:3px;color:#fff;background:var(--brand)}
.sm-join.meet{background:var(--green)}

/* ---- 営業CRM（Salesforce型・2026-07-24）----
   Lightningの画面文法（オブジェクトタブ/ハイライトパネル/Path/かんばん/活動タイムライン）をBloomの4色で。 */
.crm-tabs{display:flex;gap:2px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:5px;margin-bottom:14px;width:max-content;max-width:100%;overflow-x:auto}
.crm-tabs button{border:0;background:none;font:inherit;font-size:12.5px;font-weight:700;color:var(--sub);padding:8px 16px;border-radius:8px;cursor:pointer;white-space:nowrap}
.crm-tabs button.on{background:var(--brand);color:#fff}
.crm-tabs button i{font-style:normal;font-size:10px;background:rgba(255,255,255,.25);border-radius:99px;padding:1px 6px;margin-left:3px}
.crm-tabs button:not(.on) i{background:#f1eef3;color:var(--brand)}
.pipe-row{display:flex;align-items:center;gap:10px;padding:6px 0;cursor:default}
.pipe-row .pr-lb{width:110px;flex:none;font-size:11.5px;font-weight:700;color:var(--sub);text-align:right}
.pipe-row .pr-bar{flex:1;height:14px;border-radius:99px;background:#f4f2f6;overflow:hidden}
.pipe-row .pr-bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--brand),#e075a0)}
.pr-bar i.w5{width:5%}
.pr-bar i.w10{width:10%}
.pr-bar i.w15{width:15%}
.pr-bar i.w20{width:20%}
.pr-bar i.w25{width:25%}
.pr-bar i.w30{width:30%}
.pr-bar i.w35{width:35%}
.pr-bar i.w40{width:40%}
.pr-bar i.w45{width:45%}
.pr-bar i.w50{width:50%}
.pr-bar i.w55{width:55%}
.pr-bar i.w60{width:60%}
.pr-bar i.w65{width:65%}
.pr-bar i.w70{width:70%}
.pr-bar i.w75{width:75%}
.pr-bar i.w80{width:80%}
.pr-bar i.w85{width:85%}
.pr-bar i.w90{width:90%}
.pr-bar i.w95{width:95%}
.pr-bar i.w100{width:100%}
.pipe-row .pr-v{width:150px;flex:none;font-size:12px;font-weight:800;color:var(--ink)}
.pipe-row .pr-v small{font-weight:600;color:var(--sub)}
.rowlink{cursor:pointer}
.rowlink:hover{background:#faf7f9}
/* 2ペイン（リスト+詳細） */
.crm-split{display:grid;grid-template-columns:340px minmax(0,1fr);gap:14px;align-items:start}
@media(max-width:980px){.crm-split{grid-template-columns:1fr}}
.crm-list .hd2p{display:flex;gap:8px;align-items:center;padding:12px 12px 8px}
.crm-list .hd2p input[type=search]{flex:1;min-width:0;border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-size:12.5px;background:var(--bg)}
.crm-list .chips{display:flex;gap:6px;flex-wrap:wrap;padding:0 12px 10px}
.chip2{border:1px solid var(--line);background:#fff;border-radius:99px;font:inherit;font-size:11px;font-weight:700;color:var(--sub);padding:4px 10px;cursor:pointer}
.chip2.on{background:var(--ink);border-color:var(--ink);color:#fff}
.chip2 i{font-style:normal;opacity:.75}
.crm-rows{list-style:none;margin:0;padding:4px 6px 8px;max-height:calc(100dvh - 320px);overflow:auto}
.crm-rows li{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;cursor:pointer}
.crm-rows li:hover{background:#faf7f9}
.crm-rows li.on{background:#fdeef4}
.crm-rows .tx{flex:1;min-width:0}
.crm-rows .tx b{display:block;font-size:12.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.crm-rows .tx span{display:block;font-size:10.5px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.crm-rows .empty,.rows .empty{padding:18px 10px;color:#9a9aa6;font-size:12px;text-align:center}
.lst{flex:none;font-size:9.5px;font-weight:800;border-radius:99px;padding:3px 8px;background:#f1eef3;color:var(--sub)}
.lst.open{background:#fdeef4;color:var(--brand)}
.lst.contacted{background:var(--brand-soft);color:var(--brand-ink)}
.lst.qualified{background:#e7f6ef;color:#1b7a53}
.lst.converted{background:var(--green);color:#fff}
.lst.lost{background:#ececf0;color:#8d8d98}
/* レコード詳細（ハイライトパネル+Path） */
.rec-hd .rec-ic{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;flex:none;color:#fff}
.rec-hd .rec-ic.lead{background:var(--brand)}
.rec-hd .rec-ic.opp{background:var(--green)}
.rec-hd .rec-ic.acc{background:var(--ink)}
.rec-hd .tx i{display:block;font-style:normal;font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--sub)}
.rec-hd .tx b{font-size:15.5px}
.rec-hl{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0;border-bottom:1px solid var(--line);padding:10px 16px 12px}
.rec-hl .hl{padding:4px 10px 4px 0;min-width:0}
.rec-hl .hl span{display:block;font-size:10px;font-weight:700;color:#9a9aa6}
.rec-hl .hl b{display:block;font-size:12.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rate-btns{display:flex;gap:4px}
.rateb{border:1px solid var(--line);background:#fff;border-radius:99px;font:inherit;font-size:10.5px;font-weight:700;color:var(--sub);padding:2px 9px;cursor:pointer}
.rateb.on.hot{background:#fdeef4;border-color:var(--brand);color:var(--brand)}
.rateb.on.warm{background:var(--brand-soft);border-color:var(--brand-line);color:var(--brand-ink)}
.rateb.on.cold{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}
/* Path（シェブロン） */
.path{display:flex;gap:3px;padding:12px 16px;flex-wrap:wrap}
.pstep{border:0;font:inherit;font-size:11.5px;font-weight:800;padding:8px 14px 8px 20px;cursor:pointer;color:var(--sub);background:#f1eef3;
  clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%,10px 50%)}
.pstep:first-child{clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%);padding-left:14px;border-radius:8px 0 0 8px}
.pstep.done{background:var(--green);color:#fff}
.pstep.cur{background:var(--brand);color:#fff}
.pstep:disabled{cursor:default;opacity:.9}
.pstep.lostbtn{background:#fff;border:1px dashed var(--line);clip-path:none;border-radius:99px;padding:7px 13px;margin-left:6px}
.pstep.lostbtn.cur{background:#ececf0;color:#6b6b76;border-style:solid}
.lead-msg{padding:4px 16px 12px}
.lead-msg p{font-size:12.5px;line-height:1.8;color:var(--ink);white-space:pre-wrap;word-break:break-word;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:12px 14px;max-height:220px;overflow:auto}
.lead-msg a{color:var(--brand)}
/* 活動タイムライン */
.act-block{padding:4px 16px 16px}
.act-add{display:flex;gap:7px;margin:8px 0 10px;flex-wrap:wrap}
.act-add select,.act-add input{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font:inherit;font-size:12px;background:#fff}
.act-add input#act-body{flex:1;min-width:180px}
.act-list{list-style:none;margin:0;padding:0}
.act-list li{display:flex;align-items:flex-start;gap:9px;padding:8px 0;border-bottom:1px dashed var(--line)}
.act-list li:last-child{border-bottom:0}
.act-list .ak{flex:none;font-size:9.5px;font-weight:800;border-radius:6px;padding:3px 7px;margin-top:1px;background:#f1eef3;color:var(--sub)}
.act-list .ak.call{background:#fdeef4;color:var(--brand)}
.act-list .ak.email{background:var(--green-soft);color:var(--green)}
.act-list .ak.meeting{background:#e7f6ef;color:#1b7a53}
.act-list .ak.task{background:var(--brand-soft);color:var(--brand-ink)}
.act-list .tx{flex:1;min-width:0}
.act-list .tx b{display:block;font-size:12.5px;font-weight:600;color:var(--ink);white-space:pre-wrap;word-break:break-word}
.act-list .tx span{display:block;font-size:10.5px;color:#9a9aa6;margin-top:2px}
/* かんばん */
.kb-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.kanban{display:grid;grid-template-columns:repeat(6,minmax(180px,1fr));gap:10px;overflow-x:auto;align-items:start;padding-bottom:6px}
@media(max-width:1200px){.kanban{grid-template-columns:repeat(6,220px)}}
.kb-col{background:#f4f2f6;border-radius:13px;min-height:180px}
.kb-col.won{background:#e7f6ef}
.kb-col.lost{background:#ececf0}
.kb-hd{padding:10px 12px 6px}
.kb-hd b{display:block;font-size:12px;color:var(--ink)}
.kb-hd span{display:block;font-size:10px;font-weight:700;color:var(--sub);margin-top:2px}
.kb-cards{min-height:120px;padding:4px 8px 10px;display:flex;flex-direction:column;gap:7px;border-radius:0 0 13px 13px}
.kb-cards.over{outline:2px dashed var(--brand);outline-offset:-4px}
.kb-card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:9px 11px;cursor:grab;box-shadow:0 1px 2px rgba(22,22,32,.05)}
.kb-card.drag{opacity:.45}
.kb-card b{display:block;font-size:12px;color:var(--ink);line-height:1.4}
.kb-card .kc-acc{display:block;font-size:10.5px;color:var(--sub);margin-top:2px}
.kb-card .kc-meta{display:block;font-size:11px;font-weight:800;color:var(--brand);margin-top:4px}
.kb-col.won .kb-card .kc-meta{color:var(--green)}
.kb-card .kc-next{display:block;font-size:10px;color:var(--brand-ink);background:var(--brand-soft);border-radius:6px;padding:2px 7px;margin-top:5px}
.opp-edit{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;padding:2px 16px 12px}
.opp-edit label{display:flex;flex-direction:column;gap:4px;font-size:10px;font-weight:800;color:#9a9aa6}
.opp-edit label.grow{flex:1;min-width:200px}
.opp-edit input{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font:inherit;font-size:12.5px}
.hd2 .pill.r{margin-left:8px}
.hd2.nom{margin:0}
.mt8{margin-top:8px}
.grpav{background:var(--ink)!important;color:#fff}

/* ---- メンバーごとのページ権限（2026-07-24） ---- */
.perm-row{background:#fbfafc}
.perm-editor{padding:4px 0 8px;width:100%}
.perm-editor .note{margin:0 0 8px}
.perm-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px}
.developer-toggle{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:12px;font-weight:700;cursor:pointer}
.developer-toggle input{accent-color:var(--brand)}
.perm-editor .dev-perm-note{margin:8px 0 0}
.pg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:7px;margin-bottom:10px}
.pg-item{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:9px;padding:7px 10px;font-size:12px;font-weight:700;color:var(--ink);cursor:pointer;background:#fff}
.pg-item i{display:block;font-style:normal;font-size:10px;font-weight:600;color:#9a9aa6}
.pg-item span{line-height:1.25}
.pg-item input{accent-color:var(--brand)}
.pg-item.lock{background:#f6f6f8;color:#8d8d98;cursor:default}
.pg-item.lock input{accent-color:#b9b9c2}
.inv-perms{margin:10px 0 4px}
.inv-perms summary{font-size:12px;font-weight:700;color:var(--brand);cursor:pointer;margin-bottom:8px}
.mcp-self{display:flex;align-items:center;font-size:12.5px;font-weight:800;color:var(--ink);background:#f6f6f8;border:1px solid var(--line);border-radius:9px;padding:9px 12px}
.login-alt{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line);display:flex;flex-direction:column;gap:8px}
.login-or{font-size:11px;font-weight:700;color:#9a9aa6}
/* Googleでログイン: 公式Gマークは4色fillなので .btn.ghost svg の stroke を必ず打ち消す（付くと輪郭で色が濁る）。
   セレクタは .btn.ghost .google-g（クラス3個）にして .btn.ghost svg（クラス2個+要素1）に詳細度で勝たせる。
   svg側だけだと将来 path 指定が消えたとき輪郭が復活するので path にも明示する。
   サイズはGoogleの規定に合わせて18px（.btn svg の15pxより大きい）。 */
.google-btn{padding-top:10px;padding-bottom:10px}
.btn.ghost .google-g{width:18px;height:18px;stroke:none;flex:0 0 auto}
.btn.ghost .google-g path{stroke:none}

/* MCP発行モード（全部わたす / 面を選んで絞る）。既定は「全部」でチェックボックス群は隠す。 */
.mcp-mode{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px}
.mcp-mode .mcp-perm{cursor:pointer}
.mcp-mode input[type=radio]{accent-color:var(--brand)}
.mcp-perms{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:6px;margin:10px 0 12px}
.mcp-perm{display:flex;align-items:center;gap:7px;font-size:11.5px;border:1px solid var(--line);border-radius:9px;padding:6px 9px;cursor:pointer}
.mcp-perm input{accent-color:var(--brand)}
.mcp-perm span{flex:1;min-width:0}
.mcp-perm select{border:1px solid var(--line);border-radius:7px;font-size:10.5px;padding:2px 4px;background:#fff}
.mcp-perm .mcp-r{font-style:normal;font-size:10px;color:var(--sub)}

/* ================= AIをつなぐ（接続コード・2026-08-03） =================
   合鍵URLは画面に出さない。主役は「12文字のコード」と「貼るだけの1行」。
   コードは離れて見ても読める大きさ・等幅・字間広めにして、口頭でも伝えられるようにする。 */
.aic{border:1px dashed var(--line);border-radius:12px;padding:12px 14px;margin-top:8px}
.aic-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
/* ⚠️ 型で絞らない（2026-08-04 市岡指摘）。以前は input[type=text] だけを指定していたため、
   type="email" の欄にスタイルが1つも当たらず、そこだけブラウザ既定の細い枠で浮いていた。
   新しい入力欄を足すたびに同じ事故が起きるので、以後この行は型を書かない。 */
.aic-row input:not([type=checkbox]):not([type=radio]),.aic-row select{flex:1;min-width:190px;border:1.5px solid var(--line);border-radius:10px;padding:9px 12px;font:inherit;font-size:12.5px;background:#fff}
.aic-row input:not([type=checkbox]):not([type=radio]):focus,.aic-row select:focus{outline:none;border-color:var(--brand)}
.aic-row .btn{flex:0 0 auto}
.aic-unsafe{display:flex;align-items:flex-start;gap:7px;margin-top:10px;font-size:11.5px;color:var(--sub);cursor:pointer}
.aic-unsafe input{accent-color:var(--brand);margin-top:1px}
.aic-result{margin-top:12px;border:1.5px solid var(--green-line);background:var(--green-soft);border-radius:12px;padding:14px}
.aic-result.expired{opacity:.5}
.aic-code-box{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.aic-code-lb{font-size:11px;font-weight:800;color:var(--green);letter-spacing:.08em}
.aic-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:26px;font-weight:800;letter-spacing:.14em;color:var(--ink);background:#fff;border:1.5px solid var(--green-line);border-radius:10px;padding:6px 14px;line-height:1.25}
.aic-left{margin-left:auto;font-size:12px;font-weight:800;color:var(--sub);font-variant-numeric:tabular-nums}
.aic-steps{margin:12px 0 0;padding-left:20px;font-size:12.5px;color:var(--ink-2);line-height:1.75}
.aic-steps li+li{margin-top:8px}
.aic-cmd{display:flex;gap:8px;align-items:center;margin-top:6px;background:#fff;border:1px solid var(--green-line);border-radius:9px;padding:8px 10px}
.aic-cmd code{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;color:var(--ink);word-break:break-all}
.aic-warn{margin:10px 0 0;font-size:11.5px;color:var(--brand-ink)}
.aic-rawurl{display:block;margin-top:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;word-break:break-all}
.aic-guard,.aic-url{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px}
.aic-guard>summary,.aic-url>summary,.aic-manual>summary{font-size:12px;font-weight:700;color:var(--brand);cursor:pointer}
.aic-manual{margin-top:10px}
.aic-manual .aic-cmd code{white-space:pre-wrap}
.aic-guard-bd{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin-top:10px}
.aic-guard-bd>div{border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.aic-can{background:var(--green-soft);border-color:var(--green-line)!important}
.aic-cant{background:var(--brand-soft);border-color:var(--brand-line)!important}
.aic-can>b{color:var(--green)}
.aic-cant>b{color:var(--brand-ink)}
.aic-guard-bd b{font-size:11px;letter-spacing:.06em}
.aic-guard-bd ul{margin:6px 0 0;padding-left:16px;font-size:11.5px;color:var(--ink-2);line-height:1.7}
.aic-full{color:var(--brand-ink)}

/* ===== AIに許可する操作（グラント・2026-08-04 市岡指示） =====
   申請カード（上）→ メンバー別のスイッチ（折りたたみ）の2段。
   ★外部送信・★危険は .hot でブランド赤に寄せる（既存の .aic-cant と同じ言語）。 */
.gr-box{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px}
.gr-box .gr-req-n{display:inline-block;background:var(--red);color:#fff;border-radius:999px;font-size:10px;font-weight:900;padding:1px 7px;vertical-align:1px}
.gr-none{color:var(--sub)}
.gr-lv{display:inline-block;font-size:10px;font-weight:900;letter-spacing:.04em;border-radius:999px;padding:2px 9px;background:var(--neutral-soft,#f2f2f5);color:var(--ink-2);flex:none}
.gr-lv.hot{background:var(--brand-soft);color:var(--brand-ink)}
.gr-lv.wait{background:var(--green-soft);color:var(--green)}
.gr-reqs{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:10px}
.gr-req{border:1.5px solid var(--brand-line);background:var(--brand-soft);border-radius:12px;padding:12px 14px}
/* 社内データの申請まで赤くすると「全部が危険」に見えて、★外部送信の重みが伝わらなくなる。
   危険度が inside の申請は白いカードに落とす（目視で判断・2026-08-04） */
.gr-req.calm{border-color:var(--line);background:#fff}
.gr-req.calm code{border-color:var(--line)}
.gr-req-hd{display:flex;align-items:center;gap:9px;font-size:13px}
.gr-req-hd b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gr-req-bd{margin-top:8px;display:grid;gap:5px;font-size:12.5px;color:var(--ink-2)}
.gr-req-bd .gr-k{display:inline-block;min-width:8.5em;font-size:11px;font-weight:800;color:var(--sub)}
.gr-req-bd i{display:block;margin-left:8.5em;font-style:normal;font-size:11.5px;color:var(--sub)}
.gr-req-bd code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;background:#fff;border:1px solid var(--brand-line);border-radius:6px;padding:1px 7px;word-break:break-all}
.gr-warn{margin:8px 0 0;font-size:11.5px;font-weight:700;color:var(--brand-ink)}
.gr-req-ac{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:10px;flex-wrap:wrap}
.gr-req-ac select{border:1.5px solid var(--brand-line);border-radius:9px;padding:6px 10px;font:inherit;font-size:12px;background:#fff}
.gr-matrix{margin-top:12px}
.gr-matrix>summary{font-size:12px;font-weight:700;color:var(--brand);cursor:pointer}
.gr-member{margin-top:12px;border:1px solid var(--line);border-radius:12px;padding:11px 13px}
.gr-member-hd{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap}
.gr-member-hd b{font-size:13px}
.gr-member-hd span{font-size:11px;color:var(--sub)}
.gr-packs{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:7px;margin-top:9px}
.gr-pack{display:flex;align-items:flex-start;gap:8px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;cursor:pointer;background:#fff}
.gr-pack:hover{border-color:var(--brand-line)}
.gr-pack.hot{border-color:var(--brand-line);background:var(--brand-soft)}
.gr-pack.off{opacity:.5;cursor:not-allowed;background:var(--bg)}
.gr-pack input{accent-color:var(--brand);margin-top:2px;width:15px;height:15px;flex:none}
.gr-pack-tx{min-width:0}
.gr-pack-tx b{display:block;font-size:12px;font-weight:700;color:var(--ink-2)}
.gr-pack-tx i{display:block;font-style:normal;font-size:10.5px;color:var(--sub);margin-top:2px;line-height:1.5}
.gr-pack input:checked + .gr-pack-tx i{color:var(--green);font-weight:700}
.gr-mine{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:7px}
.gr-mine li{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:8px 11px}
.gr-mine .tx{flex:1;min-width:0}
.gr-mine .tx b{display:block;font-size:12.5px}
.gr-mine .tx span{display:block;font-size:11px;color:var(--sub)}
.gr-exp{font-style:normal;font-size:11px;font-weight:700;color:var(--sub);flex:none}
/* 端末アイコンは絵文字を使わずSVGで（市岡標準SaaS設計v2「UI絵文字禁止・SVG統一」） */
.cav.ic svg{width:17px;height:17px;stroke:currentColor;fill:none}
/* 外部ゲスト（2026-08-03）: 共通面のレールが空になるので、区切り線と余白を畳んで
   「消えた枠が残っている」ように見えないようにする。 */
/* 外部ゲストの招待フォーム（2026-08-04 市岡「フォームの見た目を良く・他のUIと同じに・お名前だけでいい」）。
   入力欄は既存の .invite-row をそのまま使う＝メンバー招待と同じ見た目・同じ触り心地になる。 */
.gst-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px}
.gst-opt{display:flex;align-items:flex-start;gap:8px;cursor:pointer;flex:1;min-width:240px}
.gst-opt input{accent-color:var(--brand);margin-top:2px;width:15px;height:15px;flex:none}
.gst-opt span{font-size:12.5px;color:var(--ink-2);line-height:1.5}
.gst-opt i{display:block;font-style:normal;font-size:11px;color:var(--sub);margin-top:2px}
.gst-foot .btn{flex:0 0 auto}

/* 🚨 2026-08-15: ここは `.is-guest #nav-common{display:none}` だった＝**ゲストの共通レールを一律に殺す**。
   図解がナレッジの下（共通レール）へ移り、図解は個別権限で外部ゲストにも渡せる面なので、
   一律に殺すと「権限を付けたのにタブが出ない」になる。判定は renderRail の pageAllowed 1本に統一した
   （ゲストは common_pages が空＝ホーム〜ナレッジは構造的に落ちる）。 */
/* 🚨 2026-08-14: ここは以前 `.is-guest .dept-head{pointer-events:none}` だった＝**ゲストは部署を切り替えられない**。
   「ゲストは1部署しか無い」という前提でそう書いたが、実際にはマーケ・営業・CS・開発をまたいで14ページ
   渡したゲストが居て、最初の部署（マーケティング）から一生動けず、渡した権限の大半が見えなかった。
   前提を消し、**見える部署が1つの時だけ**畳む（ゲストかどうかは関係ない）。クラスは renderRail が付ける。 */
.dept-locked .dept-head{pointer-events:none}       /* 部署が1つだけの人には切替メニューを出さない */
.dept-locked .dept-head svg{display:none}
.is-guest #sync-chip{display:none}                 /* 社内向けの同期状況はゲストに見せない */
.aic-rawurl{user-select:all}

/* ホームの「今日のタイムライン」— 誰のカレンダーかを出す／未連携は連携CTA */
.tl-who{margin-left:8px;font-size:10.5px;color:var(--sub);font-weight:600}
.empty.cal-cta .btn{margin-top:10px}

/* ================= 会議を予約（Spir型・空き時間リンク管理） ================= */
.meet-actions{display:flex;align-items:center;justify-content:space-between;gap:14px;background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:14px 18px;margin-bottom:14px}
.meet-actions .ma-tx b{display:block;font-size:14.5px}
.meet-actions .ma-tx span{font-size:12px;color:var(--sub)}
.meet-actions .btn svg{width:16px;height:16px}
.bkg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.bkg-title{margin:0 0 4px;font-size:19px}
.bkg-lead{margin:0;font-size:12.5px;color:var(--sub);line-height:1.7}
.bkg-head2{display:flex;align-items:center;justify-content:space-between;margin:20px 0 10px}
.bkg-head2 h3{margin:0;font-size:15px}
.bkg-scope{display:flex;gap:4px;background:var(--bg);border-radius:9px;padding:3px}
.bkg-scope button{border:none;background:none;padding:5px 14px;border-radius:7px;font-size:12px;font-weight:700;color:var(--sub);cursor:pointer}
.bkg-scope button.on{background:#fff;color:var(--ink);box-shadow:0 1px 4px rgba(26,26,46,.09)}
.bkg-tblwrap{overflow-x:auto}
.bkg-table{width:100%;border-collapse:collapse;font-size:13px}
.bkg-table th{text-align:left;font-size:11px;color:var(--sub);font-weight:700;padding:4px 10px 8px;border-bottom:1.5px solid var(--line);white-space:nowrap}
.bkg-table td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.bkg-table tr:last-child td{border-bottom:none}
.bkg-dur{font-weight:800;white-space:nowrap;color:var(--purple)}
.bkg-t b{display:block}
.bkg-t span{font-size:11.5px;color:var(--sub)}
.bkg-n{white-space:nowrap}
.bkg-pill{display:inline-block;padding:2px 10px;border-radius:99px;font-size:11px;font-weight:700;background:var(--bg);color:var(--sub)}
.bkg-pill.on{background:#e8f7ef;color:#1e9e6a}
.bkg-acts{white-space:nowrap;text-align:right}
.bkg-acts .btn{margin-left:6px}
.bkg-menu{display:inline-block;position:relative;margin-left:6px}
.bkg-menu summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:1.5px solid var(--line);font-weight:800;color:var(--sub)}
.bkg-menu summary::-webkit-details-marker{display:none}
.bkg-menu[open] summary{background:var(--bg)}
.bkg-pop{position:absolute;right:0;top:34px;background:#fff;border:1.5px solid var(--line);border-radius:12px;box-shadow:var(--sh);padding:6px;z-index:30;min-width:170px;display:flex;flex-direction:column}
.bkg-pop button{border:none;background:none;text-align:left;padding:8px 12px;border-radius:8px;font-size:13px;cursor:pointer;color:var(--ink)}
.bkg-pop button:hover{background:var(--bg)}
.bkg-pop button.danger{color:#d43c3c}
.bkg-books{list-style:none;margin:0;padding:0}
.bkg-books li{display:flex;align-items:center;gap:14px;padding:11px 4px;border-bottom:1px solid var(--line)}
.bkg-books li:last-child{border-bottom:none}
.bkg-books .bt{min-width:150px;font-weight:800;font-size:13px}
.bkg-books .bt small{display:block;font-weight:600;color:var(--sub);font-size:10.5px}
.bkg-books .bx{flex:1;min-width:0}
.bkg-books .bx b{display:block;font-size:13.5px}
.bkg-books .bx span{font-size:11.5px;color:var(--sub)}
.bkg-err{display:block;color:#d43c3c;font-size:12px;font-style:normal;margin-top:10px}
.bkg-hint{display:block;color:var(--sub);font-size:10.5px;margin-top:3px}
/* 編集ドロワー */
.bkg-edmodal{align-items:flex-start;padding-top:4vh}
.modal-card.bkg-editor{width:min(96vw,980px);max-height:92vh}
.bkg-ed-cols{display:grid;grid-template-columns:1fr 380px;gap:22px}
.bkg-ed-form label{margin-bottom:12px}
.bkg-ed-form em{color:#d43c3c;font-style:normal}
.bkg-ed-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.bkg-ed-form select{display:block;width:100%;border:1.5px solid var(--line);border-radius:10px;padding:9px 10px;font-size:13.5px;margin-top:4px;font-family:inherit;background:#fff}
.bkg-check{display:flex!important;align-items:center;gap:8px;font-size:13px!important;font-weight:600!important;color:var(--ink)!important}
.bkg-check input{width:auto!important;display:inline-block!important;margin:0!important}
/* ペインター */
.bkg-paint-head b{font-size:13px}
.bkg-paint-head span{display:block;font-size:11px;color:var(--sub);margin:2px 0 8px}
.bkg-paint-presets{display:flex;gap:6px;margin-bottom:8px}
.bkg-paint{display:grid;grid-template-columns:44px repeat(7,1fr);gap:0;border:1.5px solid var(--line);border-radius:10px;overflow:hidden;user-select:none;touch-action:none;background:#fff}
.bkg-paint-gut{display:flex;flex-direction:column}
.bkg-paint-gut span{height:26px;font-size:9.5px;color:var(--sub);text-align:right;padding-right:5px;line-height:1;padding-top:1px;border-top:1px solid #f0f1f4}
.bkg-paint-gut span:first-child{border-top:none}
.bkg-pcol{display:flex;flex-direction:column;border-left:1px solid #f0f1f4}
.bkg-pcol b{height:20px;text-align:center;font-size:10.5px;color:var(--sub);line-height:20px;background:var(--bg)}
.bkg-pcol b.we{color:#d43c3c}
.bkg-paint-gut::before{content:'';height:20px;background:var(--bg)}
.bkg-pcol i{height:13px;border-top:1px dashed #f4f5f7;cursor:crosshair}
.bkg-pcol i:nth-child(odd){border-top:1px solid #eceef1}
.bkg-pcol i.on{background:var(--purple);opacity:.85;border-top-color:rgba(255,255,255,.35)}
.bkg-paint-sum{font-size:11px;color:var(--sub);margin-top:8px;line-height:1.7}
@media(max-width:900px){.bkg-ed-cols{grid-template-columns:1fr}.bkg-acts .btn{margin-left:0;margin-top:4px}}

/* ===== メッセージ: Bloom Bot バッジ・ヒント・回答待ち（2026-07-25） ===== */
.msg-row .mr-av.bot,.dm-row .mr-av.bot{background:#fff;border:1.5px solid var(--pinkLine,#f7d4e1);padding:4px}
.msg-row .mr-av.bot .botmark,.dm-row .mr-av.bot .botmark{width:100%;height:100%;object-fit:contain}
.msg-hint{display:flex;align-items:center;gap:8px;padding:8px 18px 12px;color:var(--sub);font-size:11.5px;background:#fff;border-top:1px dashed var(--line)}
.msg-hint svg{width:14px;height:14px;stroke:var(--brand);flex:none}
/* ==== メッセージのTH機能リンク（2026-07-25: 添付・リアクション・既読・未読バッジ） ==== */
.ci-unread{box-sizing:border-box;flex:none;align-self:center;width:28px;min-width:28px;max-width:28px;height:28px;min-height:28px;max-height:28px;aspect-ratio:1;border-radius:50%;background:var(--brand);color:#fff;font-size:10.5px;font-weight:800;display:grid;place-items:center;padding:0;line-height:1;white-space:nowrap;font-style:normal;font-variant-numeric:tabular-nums}
.mr-imglink{display:block;margin-top:6px;max-width:340px}
.mr-img{max-width:100%;max-height:260px;border-radius:10px;border:1px solid var(--line);display:block;background:#fff}
.dm-row.me .mr-img{border-color:rgba(255,255,255,.4)}
.mr-filechip{display:inline-flex;align-items:center;gap:7px;margin-top:6px;font-size:12px;font-weight:700;color:var(--ink-2);background:#fff;border:1px solid var(--line);border-radius:10px;padding:7px 12px;text-decoration:none;max-width:340px}
.mr-filechip svg{width:15px;height:15px;stroke:var(--brand);flex:none}
.mr-filechip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mr-filechip i{font-style:normal;color:var(--sub);font-size:10.5px;margin-left:6px}
.mr-filechip:hover{border-color:var(--brand-line);background:var(--brand-soft)}
.dm-row.me .mr-filechip{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.35);color:#fff}
.dm-row.me .mr-filechip i{color:rgba(255,255,255,.7)}
/* リアクション */
.re-row{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px;align-items:center}
.re-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:2px 8px;font-size:12px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:4px;line-height:1.4}
.re-chip i{font-style:normal;font-size:10.5px;font-weight:800;color:var(--sub)}
.re-chip.on{border-color:var(--brand);background:var(--brand-soft)}
.re-chip.on i{color:var(--brand-ink)}
.re-add{border:1px dashed var(--line);background:#fff;border-radius:999px;padding:2px 8px;font-size:11px;color:var(--sub);cursor:pointer;font-family:inherit;opacity:0;transition:opacity .15s;line-height:1.4}
.re-add i{font-style:normal;font-weight:800;margin-left:1px}
.msg-row:hover .re-add,.dm-row:hover .re-add,.re-row:hover .re-add{opacity:1}
.re-palette{display:inline-flex;gap:2px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px 6px;box-shadow:0 8px 24px rgba(22,22,32,.14);z-index:5}
.re-palette button{border:0;background:none;font-size:16px;cursor:pointer;padding:2px 4px;border-radius:6px}
.re-palette button:hover{background:var(--brand-soft)}
.dm-row.me .re-chip,.dm-row.me .re-add{background:rgba(255,255,255,.9)}
/* 既読 */
.mr-read{font-size:9px;color:var(--sub);font-weight:700;margin-right:6px}
.dm-b time .mr-read{opacity:.9;margin-right:6px}
.mr-who .mr-read{margin:0 0 0 8px}
/* 送信待ちの添付チップ */
.msg-pend{display:flex;flex-wrap:wrap;gap:6px;padding:8px 18px 0;background:#fff}
.pend-chip{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;border:1px solid var(--brand-line);background:var(--brand-soft);color:var(--brand-ink);border-radius:999px;padding:4px 10px}
.pend-chip i{font-style:normal;color:var(--sub);font-size:10px}
.pend-chip .pend-x{border:0;background:none;cursor:pointer;font-size:13px;color:var(--brand-ink);padding:0 0 0 2px;line-height:1}
.pend-chip.up{opacity:.7}
.msg-clip{flex:none;align-self:flex-end;border:1px solid var(--line);background:#fff;border-radius:10px;width:36px;height:36px;display:grid;place-items:center;cursor:pointer;color:var(--sub)}
.msg-clip:hover{color:var(--brand);border-color:var(--brand-line);background:var(--brand-soft)}
.msg-file-input{display:none}
/* ドラッグ&ドロップの受け皿表示 */
.msg-thread.dnd{outline:2px dashed var(--brand);outline-offset:-8px;border-radius:14px;position:relative}
.msg-thread.dnd::after{content:'ここにドロップして添付';position:absolute;inset:0;display:grid;place-items:center;background:rgba(255,242,246,.85);color:var(--brand-ink);font-weight:800;font-size:14px;z-index:9;pointer-events:none;border-radius:14px}
/* ==== 既読インジケータ（TH方式: 自分の全メッセージに✓/✓既読N・0人でも✓） ==== */
.read-ind{border:0;background:none;font-family:inherit;font-size:9.5px;font-weight:800;color:#b9b9c4;cursor:pointer;padding:0;margin:0 6px 0 8px;white-space:nowrap}
.read-ind.some{color:var(--brand)}
.read-ind.all{color:#3f8f5f}
.dm-b time .read-ind{margin:0 6px 0 0;font-size:9px}
.dm-row.me .dm-b .read-ind{color:rgba(255,255,255,.75)}
.dm-row.me .dm-b .read-ind.some,.dm-row.me .dm-b .read-ind.all{color:#fff}
/* ==== @メンション（TH方式: 補完ポップ＋本文ハイライト） ==== */
.msg-send{position:relative}
.mention-pop{position:absolute;left:56px;bottom:calc(100% + 6px);z-index:30;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 40px rgba(22,22,32,.18);padding:5px;display:flex;flex-direction:column;min-width:240px;max-width:340px}
.mention-pop button{border:0;background:none;text-align:left;font-family:inherit;font-size:12.5px;font-weight:700;color:var(--ink-2);padding:8px 11px;border-radius:8px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mention-pop button.hot,.mention-pop button:hover{background:var(--brand-soft);color:var(--brand-ink)}
.mention-hit{color:var(--brand-ink);background:var(--brand-soft);border-radius:5px;padding:0 3px;font-weight:800}
.mention-hit.ai{color:#0f4a31;background:var(--petal-ai)}
.dm-row.me .mention-hit{background:rgba(255,255,255,.22);color:#fff}
/* ==== 左下プロフィール（ミニ設定） ==== */
.rail-foot .avatar.clickable{cursor:pointer;transition:box-shadow .15s}
.rail-foot .avatar.clickable:hover{box-shadow:0 0 0 3px var(--brand-soft)}
.rail-foot .avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.profile-pop{position:fixed;left:14px;bottom:60px;z-index:80;width:270px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 22px 60px rgba(22,22,32,.22);padding:16px}
.pp-head{display:flex;gap:11px;align-items:center;margin-bottom:12px}
.pp-av{position:relative;width:52px;height:52px;border-radius:50%;border:1px solid var(--line);background:var(--brand-soft);color:var(--brand-ink);font-size:20px;font-weight:800;display:grid;place-items:center;cursor:pointer;overflow:hidden;flex:none;font-family:inherit}
.pp-av img{width:100%;height:100%;object-fit:cover}
.pp-cam{position:absolute;right:-2px;bottom:-2px;font-size:12px;background:#fff;border:1px solid var(--line);border-radius:50%;width:20px;height:20px;display:grid;place-items:center}
.pp-id{min-width:0}
.pp-id b{display:block;font-size:13.5px;font-weight:800}
.pp-id span{display:block;font-size:10.5px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pp-f{display:block;font-size:10.5px;font-weight:800;color:var(--sub);margin-bottom:9px}
.pp-f input{width:100%;box-sizing:border-box;margin-top:3px;border:1.5px solid var(--line);border-radius:9px;padding:8px 10px;font-size:13px;font-family:inherit}
.pp-f input:focus{outline:none;border-color:var(--brand)}
.pp-actions{display:flex;gap:8px;align-items:center;margin-top:4px}
.pp-actions .btn{padding:7px 13px;font-size:12px}
.pp-note{margin:10px 0 0;font-size:10px;color:var(--sub);line-height:1.7}
.msg-hint b{color:var(--brand)}
.bloom-wait .mr-b .spin{margin-right:6px}
/* ===== ナレッジ: AIに質問モーダル（2026-07-25） ===== */
.vhead .btn svg{width:15px;height:15px;margin-right:5px;vertical-align:-2px}
.kn-ask-card{width:min(94vw,640px);max-height:88vh;display:flex;flex-direction:column}
.kn-ask-card h3 svg{width:18px;height:18px;stroke:var(--brand);vertical-align:-3px;margin-right:6px}
.kn-ask-lead{color:var(--sub);font-size:12.5px;margin:2px 0 14px}
.kn-ask-log{flex:1;overflow-y:auto;min-height:120px;max-height:52vh;display:flex;flex-direction:column;gap:12px;padding:2px}
.kn-ask-log:empty::before{content:'質問するとここに答えが並びます';color:var(--grey,#a8a8b2);font-size:12px;display:block;padding:22px 0;text-align:center}
.kn-q{align-self:flex-end;max-width:80%;background:var(--brand);color:#fff;border-radius:13px 13px 3px 13px;padding:9px 14px;font-size:13.5px;white-space:pre-wrap}
.kn-a{align-self:flex-start;max-width:92%;background:var(--bg);border:1px solid var(--line);border-radius:13px 13px 13px 3px;padding:11px 15px;font-size:13.5px}
.kn-a .md{font-size:13.5px;line-height:1.75}
.kn-a-src{margin-top:9px;padding-top:8px;border-top:1px dashed var(--line);color:var(--sub);font-size:11px}
.kn-ask-in{display:flex;gap:9px;align-items:flex-end;margin-top:14px}
.kn-ask-in textarea{flex:1;border:1.5px solid var(--line);border-radius:11px;padding:10px 13px;font:inherit;font-size:13.5px;resize:vertical;min-height:46px;max-height:150px}
.kn-ask-in textarea:focus{outline:none;border-color:var(--brand)}

/* 裏読み用の使い捨てiframe（キャッシュ温め・画面外・不可視・2026-07-25） */
.frame-warm{position:fixed;left:-99999px;top:0;width:2px;height:2px;opacity:0;border:0;pointer-events:none}

/* ===== CS未対応の赤バッジ（2026-07-30 市岡指示: 左サイドバーに未対応件数を赤で） ===== */
/* 畳んだレールでは丸い点、開くと丸い件数。文字の状態ラベルは別扱い。 */
.nav a .nav-red:not([data-navbadge]){position:absolute;left:24px;top:5px;width:9px;height:9px;padding:0;border-radius:50%;background:var(--red);color:transparent;font-size:0;overflow:hidden}
.rail:hover .nav a .nav-red:not([data-navbadge]),.rail:focus-within .nav a .nav-red:not([data-navbadge]){position:static;margin-left:auto;width:auto;height:auto;min-width:17px;text-align:center;padding:1px 7px;border-radius:999px;color:#fff;font-size:10px;font-weight:900;overflow:visible;font-variant-numeric:tabular-nums}
body.rail-snap .rail .nav a .nav-red:not([data-navbadge]){position:absolute!important;left:24px;top:5px;width:9px!important;height:9px!important;padding:0!important;border-radius:50%;color:transparent!important;font-size:0!important;overflow:hidden}
/* Notification geometry is shared by the dot and count states. Reset the
   size itself on rail-snap so an expanded minimum width cannot survive. */
.nav a .nav-red[data-navbadge]{--nav-badge-size:9px;position:absolute;left:24px;top:5px;box-sizing:border-box;flex:none;display:inline-flex;align-items:center;justify-content:center;width:var(--nav-badge-size);min-width:var(--nav-badge-size);max-width:var(--nav-badge-size);height:var(--nav-badge-size);min-height:var(--nav-badge-size);max-height:var(--nav-badge-size);aspect-ratio:1;padding:0;border-radius:50%;background:var(--red);color:transparent;font-size:0;line-height:1;white-space:nowrap;overflow:hidden;font-weight:900;font-variant-numeric:tabular-nums}
/* Unread counts must not change row height or move neighboring items. */
.nav a:has(.nav-red[data-navbadge]:not(.hide)){padding-right:48px}
.rail:hover .nav a .nav-red[data-navbadge],.rail:focus-within .nav a .nav-red[data-navbadge]{--nav-badge-size:28px;position:absolute;left:auto;right:10px;top:50%;transform:translateY(-50%);margin-left:0;color:#fff;font-size:10px}
body.rail-snap .rail .nav a .nav-red[data-navbadge]{--nav-badge-size:9px;position:absolute;left:24px;right:auto;top:5px;transform:none;margin-left:0;color:transparent;font-size:0}
.nav a .nav-red.hide{display:none}
/* 24時間以内に相手から届いた未対応がある間だけ点滅（2026-08-10 市岡「向こうから来たらすぐ赤で分かるように」） */
.nav a .nav-red.fresh{animation:navRedPulse 1.5s ease-in-out infinite;box-shadow:0 0 0 0 rgba(214,69,69,.55)}
@keyframes navRedPulse{0%{box-shadow:0 0 0 0 rgba(214,69,69,.55)}70%{box-shadow:0 0 0 6px rgba(214,69,69,0)}100%{box-shadow:0 0 0 0 rgba(214,69,69,0)}}
@media(prefers-reduced-motion:reduce){.nav a .nav-red.fresh{animation:none}}
#dept-menu .nav-red{display:inline-block;background:var(--red);color:#fff;border-radius:999px;font-size:10px;font-weight:900;padding:1px 7px;vertical-align:1px}
.dept-card{position:relative}
.dc-alert{position:absolute;top:10px;right:12px;background:var(--red);color:#fff;border-radius:999px;font-size:10.5px;font-weight:900;padding:2px 9px;z-index:1}
.dc-alert.hide{display:none}

/* 面談後の決済案内ステップ（予約カード・2026-08-28） */
.bkg-books .bx .bkg-fu{display:block;margin-top:3px;font-size:10.5px;color:var(--sub);font-weight:600}
.bkg-books .bx .bkg-fu.active b,.bkg-books .bx .bkg-fu.bank_requested b{color:#1e9e6a}
.bkg-books .bx .bkg-fu.expired b{color:var(--red)}
.bkg-books .bx .bkg-fu.paid b{color:#2f6fed}
.bkg-fu-acts{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:640px){.bkg-books li{flex-wrap:wrap}.bkg-fu-acts{width:100%;justify-content:flex-start}}

/* 画像ライトボックス（2026-08-31 大地さん要望: スマホのPWAで画像を閉じるボタンが無い） */
#img-lightbox{position:fixed;inset:0;z-index:400;display:none}
#img-lightbox.on{display:grid;place-items:center}
#img-lightbox .lb-back{position:absolute;inset:0;background:rgba(22,22,32,.78)}
#img-lightbox figure{position:relative;margin:0;max-width:min(92vw,1100px);max-height:86vh;display:grid;gap:8px;justify-items:center}
#img-lightbox img{max-width:100%;max-height:78vh;border-radius:12px;background:#fff}
#img-lightbox figcaption{display:flex;gap:14px;align-items:center;color:#fff;font-size:12px;max-width:92vw}
#img-lightbox .lb-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60vw}
#img-lightbox .lb-open{color:#fff;text-decoration:underline}
#img-lightbox .lb-close{position:fixed;top:calc(env(safe-area-inset-top,0px) + 14px);right:16px;width:40px;height:40px;border-radius:50%;border:none;background:rgba(255,255,255,.16);color:#fff;font-size:17px;cursor:pointer}
#img-lightbox .lb-close:hover{background:rgba(255,255,255,.3)}
/* チャットのURLリンク（2026-08-31 リンク化に合わせ、ピンク吹き出しでも読める色＋長いURLの折返し） */
.dm-b a,.mr-b a{color:inherit;text-decoration:underline;overflow-wrap:anywhere;word-break:break-all}

/* ---- メッセージのリアルタイム層・送信状態（2026-09-02） ---- */
.msg-hd .mh-tools{margin-left:auto;display:flex;align-items:center;gap:10px;flex:none}
.live-dot{width:9px;height:9px;border-radius:50%;background:#c4c4c4;display:inline-block;flex:none;box-shadow:0 0 0 3px rgba(0,0,0,.04)}
.live-dot.open{background:var(--green)}
.live-dot.connecting{background:#e0a100}
.live-dot.closed{background:#c4c4c4}
.msg-bell{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12px;font-weight:700;color:var(--sub);background:#fff;border:1px solid var(--line);border-radius:999px;padding:4px 10px;cursor:pointer}
.msg-bell svg{width:14px;height:14px;stroke:currentColor}
.msg-bell:hover{background:var(--bg)}
.msg-bell.on{color:var(--green);border-color:var(--green-soft);background:var(--green-soft);cursor:default}
.msg-row.pending,.dm-row.pending{opacity:.6}
.msg-row.failed,.dm-row.failed{opacity:1}
.msg-state{font-size:11px;color:var(--sub);margin-left:6px;font-weight:600}
.msg-state.bad{color:#c62828;font-weight:800}
.msg-state button{font:inherit;font-size:11px;font-weight:800;margin-left:6px;padding:1px 8px;border-radius:999px;border:1px solid #c62828;background:#fff;color:#c62828;cursor:pointer}
.msg-state button.ms-drop{border-color:var(--line);color:var(--sub)}
.dm-row.failed .dm-b{border:1px solid #f1b8b8}

/* Work-calendar source selector; private appointments never enter shared payloads. */
.cal-sources{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px}
.cal-sources .btn{white-space:normal;text-align:left}
.cal-sharing-note{width:100%;margin:0;color:var(--sub);font-size:12px;line-height:1.6}
.ep-sharing{padding:12px 0;border-top:1px solid var(--line);display:grid;gap:7px}
.ep-sharing label{font-size:12px;color:var(--sub)}
.ep-sharing select{width:100%;min-width:0;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px}
.cal-sources-error{width:100%;color:var(--brand-ink);font-size:13px;margin:0}
.cal-color-legend{display:grid;gap:7px;margin:14px 0;font-size:12px;color:var(--ink-2)}
.cal-color-legend span{display:flex;align-items:center;gap:7px;line-height:1.4}
.cal-color-legend i{display:inline-block;width:11px;height:11px;flex:none;border-radius:3px}
.cal-color-help{font-size:12px;line-height:1.5;color:var(--sub);margin:5px 0 10px}
.cv-ev.past[class*="c-cat-"]{opacity:1}
.cv-ev.c-cat-9,.mg-ev.c-cat-9,.ad-chip.c-cat-9{background:#80d8ee;color:#154653;border-left:3px solid #2899b4}
.ep-dot.c-cat-9,.cal-color-legend .c-cat-9{background:#80d8ee;box-shadow:inset 0 0 0 1px #2899b4}
.cv-ev.c-cat-10,.mg-ev.c-cat-10,.ad-chip.c-cat-10{background:#9de3b2;color:#235332;border-left:3px solid #40a766}
.ep-dot.c-cat-10,.cal-color-legend .c-cat-10{background:#9de3b2;box-shadow:inset 0 0 0 1px #40a766}
.cv-ev.c-cat-11,.mg-ev.c-cat-11,.ad-chip.c-cat-11{background:#ffe17a;color:#594813;border-left:3px solid #c09b22}
.ep-dot.c-cat-11,.cal-color-legend .c-cat-11{background:#ffe17a;box-shadow:inset 0 0 0 1px #c09b22}
.cv-ev.c-cat-3,.mg-ev.c-cat-3,.ad-chip.c-cat-3{background:#f5aed2;color:#662947;border-left:3px solid #c65b90}
.ep-dot.c-cat-3,.cal-color-legend .c-cat-3{background:#f5aed2;box-shadow:inset 0 0 0 1px #c65b90}
.cv-ev.c-cat-5,.mg-ev.c-cat-5,.ad-chip.c-cat-5{background:#8dbbfa;color:#234775;border-left:3px solid #4b83cf}
.ep-dot.c-cat-5,.cal-color-legend .c-cat-5{background:#8dbbfa;box-shadow:inset 0 0 0 1px #4b83cf}
.cv-ev.c-cat-6,.mg-ev.c-cat-6,.ad-chip.c-cat-6{background:#ced6df;color:#3e4a59;border-left:3px solid #8997a8}
.ep-dot.c-cat-6,.cal-color-legend .c-cat-6{background:#ced6df;box-shadow:inset 0 0 0 1px #8997a8}

/* Bloom visible navigation targets: keep the existing expanding rail. */
@media (min-width:1001px) {
  .rail .nav { overflow-x:hidden; }
  .rail .nav a,.rail .dept-head { width:100%;min-width:0;box-sizing:border-box; }
  .rail .nav a .sp { min-width:0; }
}
.rail .nav a:focus-visible,.rail .dept-head:focus-visible {
  outline:2px solid var(--brand);outline-offset:-2px;
}
@media (prefers-reduced-motion:reduce) {
  .app,.rail { transition:none; }
}

/* bloom-login-ui-v1 */
.btn:focus-visible{outline:3px solid #9e3458;outline-offset:3px}
.btn:not(:disabled):not([aria-disabled="true"]):active{transform:translateY(1px)}
.btn:disabled,.btn[aria-disabled="true"]{transform:none}
@media(prefers-reduced-motion:reduce){.btn:not(:disabled):not([aria-disabled="true"]):active{transform:none}}

/* Shared private appointments show only a solid, inert gray time block. */
.cv-ev.c-busy,.ad-chip.c-busy,.mg-ev.c-busy{background:#ced6df;border:1px solid #8997a8;color:transparent;cursor:default;box-shadow:none;opacity:1}
.ad-chip.c-busy,.mg-ev.c-busy{min-height:22px}
.cal-sharing-actions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}

/* Keep the diagram editor below navigation, AI status and live meeting banners. */
.app:has(#view-diagrams.on){height:100dvh;min-height:0;overflow:hidden}
.app:has(#view-diagrams.on)>.workspace{display:flex;flex-direction:column;min-height:0;overflow:hidden;align-self:stretch}
.workspace:has(#view-diagrams.on)>.main{flex:1;min-height:0;width:100%;overflow:hidden}
#view-diagrams.on,#view-diagrams.on>.frame-wrap{height:100%;min-height:0}
@media(max-width:1000px){
  .app:has(#view-diagrams.on){grid-template-rows:auto minmax(0,1fr)}
}

/* Calendar navigation remains available while the new range is fetched. */
.cal-load-state{font-size:12px;color:var(--sub);line-height:1.7}
.cal-loading{background:linear-gradient(100deg,#fff,#f8f8fa);position:relative}
.cal-loading .tg-body{opacity:.5;pointer-events:none}
.cal-loading .mg-cell{background:#f8f8fa}
@media(max-width:760px){.gcal-top{flex-wrap:wrap}.cal-load-state{order:5;width:100%}.cal-load-state:empty{display:none}#cal-refresh{min-height:40px}}
@media(max-width:600px){
  .gcal-side{display:contents}
  .gcal-create{grid-row:1;justify-self:start;margin:0}
  .gcal-main{grid-row:2;min-width:0}
  .cal-color-legend{grid-row:3}
  #side-meet{grid-row:4;min-width:0}
  #gcal-conn{grid-row:5;min-width:0}
}

/* Keep navigation targets fixed while appointments update in place. */
.nav a .calendar-link-badge{background:#805100;white-space:nowrap}
#cal-connection-notice:empty{display:none}
#cal-connection-notice .cal-link-banner{margin:0 0 16px;padding:16px 18px;border:1px solid var(--brand-line);border-radius:12px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:20px}
#cal-connection-notice .cal-link-banner>div{min-width:0}
#cal-connection-notice .cal-link-banner b{font-size:15px;color:var(--ink)}
#cal-connection-notice p{font-size:13px;line-height:1.8;color:var(--ink);margin:6px 0 0}
#cal-connection-notice .cal-link-privacy{font-size:12px;color:var(--sub)}
#cal-connection-notice .btn{flex:none;white-space:nowrap;margin:0;min-height:44px}
#cal-fetch-error:empty{display:none}
@media(max-width:760px){#cal-connection-notice .cal-link-banner{flex-direction:column;align-items:stretch;gap:12px;padding:14px}#cal-connection-notice .btn{text-align:center;justify-content:center;white-space:normal}}
@media(prefers-reduced-motion:reduce){.gcal-main.slide-l,.gcal-main.slide-r{animation:none}}

/* Codex reset balances: all slots, separate from the scheduled weekly reset. */
.cl-reset{grid-column:1/-1;font-size:10px;line-height:1.4;color:var(--ink-2);padding:0 0 2px}
.cl-list{max-height:48vh;overflow-y:auto;scrollbar-width:thin;overscroll-behavior:contain}
.cl-foot{white-space:normal;line-height:1.5}

/* D1 inbox: leave the mobile Bloom navigation visible above its own frame. */
@media(max-width:1000px){.frame-wrap:has(>iframe[src="/cs-inbox.html"]){box-sizing:border-box;padding-top:45px}}

/* bloom-responsive-af-20261004 */
/* Desktop A / mobile F. Labels remain visible; mobile never scrolls the rail sideways. */
.bloom-mobile-header,.bloom-mobile-tabs,.bloom-navigation-close,.bloom-navigation-backdrop{display:none}
@media(min-width:1001px){
  #app.bloom-responsive,#app.bloom-responsive:has(.rail:hover),body.rail-snap #app.bloom-responsive{grid-template-columns:220px minmax(0,1fr)!important;transition:none}
  #app.bloom-responsive>.rail,#app.bloom-responsive>.rail:hover,body.rail-snap #app.bloom-responsive>.rail{width:220px!important;transition:none}
  #app.bloom-responsive .rail :is(.brand b,.nav a .sp,.dept-head .dept-lb,.dept-head b,.dept-head svg,.rail-foot .chip){opacity:1!important}
  #app.bloom-responsive .rail .nav a{width:100%;min-height:44px;padding:10px 12px;gap:10px}
  #app.bloom-responsive .rail .nav a .sp{font-size:13px;line-height:1.5;white-space:normal}
  #app.bloom-responsive .rail .nav a:has(.nav-red:not(.hide)){padding-right:43px}
  #app.bloom-responsive .rail .nav-red[data-navbadge]{--nav-badge-size:26px;position:absolute;left:auto;right:8px;top:50%;transform:translateY(-50%);font-size:10px;color:#fff}
  #app.bloom-responsive .rail .dept-head{width:100%;min-height:48px}
  #app.bloom-responsive .rail .rail-brand-frame{width:auto;margin:0;border:0;background:#fff}
  #app.bloom-responsive .rail .brand{width:auto;height:auto;padding:20px 18px}
  #app.bloom-responsive .rail .rail-foot{flex-wrap:wrap;gap:7px}
  #app.bloom-responsive .rail .cl-top{display:flex!important} #app.bloom-responsive .rail :is(.cl-list,.cl-foot){display:none!important}
}
@media(max-width:1000px){
  #app.bloom-responsive{display:flex;flex-direction:column;align-items:stretch;min-height:100dvh;padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
  #app.bloom-responsive>.workspace{width:100%;min-width:0}
  #app.bloom-responsive>.workspace>.main{width:100%;max-width:none;padding:12px}
  #app.bloom-responsive .bloom-mobile-header{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:42;flex:none;height:60px;padding:6px max(12px,env(safe-area-inset-right)) 6px max(12px,env(safe-area-inset-left));background:#fff;border-bottom:1px solid var(--line)}
  .bloom-mobile-mark{width:28px;height:28px;flex:none}
  .bloom-department-label{display:flex;flex:1;min-width:0;flex-direction:column;color:var(--sub);font-size:10px;line-height:1.2}
  .bloom-department-label select{width:100%;min-width:0;min-height:32px;border:0;background:#fff;color:var(--ink);font-family:inherit;font-size:16px;font-weight:600;line-height:1.4;padding:2px 2px 2px 0;text-overflow:ellipsis}
  .bloom-department-label:has(select:disabled) select{opacity:1;color:var(--ink)}
  .bloom-mobile-header button{display:flex;align-items:center;justify-content:center;gap:4px;min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font-family:inherit;font-size:12px;font-weight:600;flex:none;cursor:pointer}
  .bloom-mobile-header button[data-mobile-ai]{color:var(--green);background:var(--green-soft);border-color:var(--green-line)}
  .bloom-mobile-header button[aria-pressed=true]{box-shadow:inset 0 0 0 1px var(--green)}
  .bloom-mobile-header [hidden]{display:none!important}
  .bloom-mobile-header svg,.bloom-mobile-tabs svg{width:22px;height:22px;flex:none}
  #app.bloom-responsive .bloom-mobile-tabs{position:fixed;bottom:0;left:0;right:0;z-index:42;display:flex;align-items:stretch;gap:4px;padding:4px max(12px,env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom,0px)) max(12px,env(safe-area-inset-left));min-height:64px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -5px 20px #16162005}
  #app.bloom-responsive .bloom-mobile-tabs[hidden]{display:none}
  .bloom-mobile-tabs button{display:flex;position:relative;flex:1;min-width:0;min-height:56px;align-items:center;justify-content:center;flex-direction:column;gap:3px;border:0;border-radius:12px;background:#fff;color:#555560;font-family:inherit;font-size:12px;font-weight:500;line-height:1.4;cursor:pointer}
  .bloom-mobile-tabs button[aria-current]{color:var(--brand-ink);background:var(--brand-soft);font-weight:700}
  .bloom-mobile-tabs button[data-mobile-view="bloom-ai"]{color:var(--green)}
  .bloom-mobile-tabs button[data-mobile-view="bloom-ai"][aria-current]{color:var(--green);background:var(--green-soft)}
  .bloom-mobile-tabs .nav-red{position:absolute;top:2px;left:calc(50% + 7px);min-width:20px;padding:1px 5px;border-radius:10px;background:var(--brand);color:#fff;font-size:10px;line-height:18px}
  .bloom-mobile-tabs .nav-red.hide{display:none}
  #app.bloom-responsive>.rail{display:none}
  #app.bloom-responsive.bloom-menu-open>.rail{display:flex;position:fixed;inset:var(--bloom-visible-top,0px) 0 auto auto;z-index:101;flex-direction:column;align-items:stretch;width:min(360px,100%)!important;height:var(--bloom-visible-height,100dvh);gap:0;padding:0;background:#fff;border-left:1px solid var(--line);overflow:visible}
  #app.bloom-responsive.bloom-menu-open .bloom-navigation-backdrop{display:block;position:fixed;inset:0;z-index:100;border:0;background:#16162066}
  #app.bloom-responsive .bloom-navigation-close{display:block;flex:none;align-self:flex-end;min-height:44px;margin:8px 12px 0;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit}
  #app.bloom-responsive .rail .brand{padding:8px 20px 16px}
  #app.bloom-responsive .rail :is(.brand b,.nav a .sp,.dept-head .dept-lb,.dept-head b,.dept-head svg,.rail-foot .chip){opacity:1!important}
  #app.bloom-responsive .rail .nav{display:block;flex:1;min-height:0;padding:0 12px 12px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
  #app.bloom-responsive .rail :is(.nav-sec,#nav-dept-items){display:block;margin:0!important;max-width:100%}
  #app.bloom-responsive .rail :is(.nav-dept,.nav-bottom,.nav-claude){border-left:0;border-top:1px solid var(--line);padding:10px 0;margin-top:10px!important}
  #app.bloom-responsive .rail .nav a{display:flex;width:100%;min-height:48px;padding:12px;gap:12px}
  #app.bloom-responsive .rail .nav a .sp{white-space:normal;font-size:14px}
  #app.bloom-responsive .rail .nav a:has(.nav-red:not(.hide)){padding-right:44px}
  #app.bloom-responsive .rail .nav-red[data-navbadge]{--nav-badge-size:26px;left:auto;right:10px;top:50%;transform:translateY(-50%);font-size:10px;color:#fff}
  #app.bloom-responsive .rail .dept-head{display:flex;width:100%;min-height:44px;padding:8px 12px}
  #app.bloom-responsive #dept-menu{position:static;width:100%;box-shadow:none;margin:4px 0;max-height:none}
  #app.bloom-responsive #dept-menu button{min-height:52px}
  #app.bloom-responsive .rail-foot{flex:none;margin:0;border-top:1px solid var(--line);padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));flex-wrap:wrap}
  #app.bloom-responsive .bmn-mobile-menu,body:has(#app.bloom-responsive)>.bmn-mobile-menu{display:none!important}
  #app.bloom-responsive button:focus-visible,#app.bloom-responsive select:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
  /* Constrain the conversation chain to the visible viewport, not 100vh behind
     the keyboard. Each history owns its scroll; the composer never overlaps it. */
  #app.bloom-responsive.bloom-chat-screen{position:fixed;inset:var(--bloom-visible-top,0px) 0 auto 0;height:var(--bloom-visible-height,100dvh);min-height:0;padding-bottom:0}
  #app.bloom-chat-screen>.workspace{display:flex;flex:1;flex-direction:column;min-height:0}
  #app.bloom-chat-screen>.workspace>.main{display:flex;flex:1;min-height:0;padding:0}
  #app.bloom-chat-screen .view.on{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;width:100%}
  #app.bloom-chat-screen .bloom-mobile-tabs{position:static;flex:none}
  #app.bloom-chat-screen .bai-workspace.bai-console{height:100%;min-height:0;border:0;border-radius:0;flex:1}
  #app.bloom-chat-screen :is(.bai-layout,.bai-main,.bai-console-area,.bai-pane-grid,.bai-pane,.bai-pane-body,.bai-content){min-height:0}
  #app.bloom-chat-screen .bai-layout{grid-template-columns:minmax(0,1fr)}
  #app.bloom-chat-screen .bai-console .bai-sidebar{display:none;position:absolute;inset:0 auto 0 0;width:min(320px,100%);z-index:12}
  #app.bloom-chat-screen .bai-console.bai-sidebar-open .bai-sidebar{display:flex}
  #app.bloom-chat-screen .bai-console .bai-sidebar-brand{display:flex;align-items:center;justify-content:flex-end;min-height:48px;padding:4px 10px}
  #app.bloom-chat-screen .bai-sidebar [data-close-sidebar]{display:block;min-width:44px;min-height:44px;margin-left:auto;border:0;background:transparent}
  #app.bloom-chat-screen .bai-console.bai-sidebar-open .bai-backdrop:not([hidden]){display:block;position:absolute;inset:0;width:100%;height:100%;z-index:11;background:#25203050;border:0;border-radius:0;padding:0}
  #app.bloom-chat-screen .bai-console .bai-header>[data-sidebar]{display:block;min-width:44px;border:0}
  #app.bloom-chat-screen .bai-conversation{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:16px;font-size:16px;scroll-padding-block:12px}
  #app.bloom-chat-screen :is(.bai-answer p,.bai-user){font-size:16px;line-height:1.75}
  #app.bloom-chat-screen .bai-compose{flex:none;padding:8px 10px;background:#fff;width:100%;max-width:none;margin:0}
  #app.bloom-chat-screen .bai-compose form{display:grid;grid-template-columns:40px minmax(0,1fr) 44px;align-items:end;gap:4px;border-radius:16px;padding:6px;background:#fff}
  #app.bloom-chat-screen .bai-compose textarea{grid-column:2;grid-row:1;min-width:0;min-height:28px!important;max-height:min(112px,24dvh)!important;font-family:inherit;font-size:16px!important;line-height:1.6;padding:8px 0;resize:none}
  #app.bloom-chat-screen .bai-compose :is(.bai-compose-actions,.bai-compose-actions>div){display:contents}
  #app.bloom-chat-screen .bai-compose [data-attach]{grid-column:1;grid-row:1;width:40px;height:44px;align-self:end;margin:0}
  #app.bloom-chat-screen .bai-compose button[type=submit]{grid-column:3;grid-row:1;width:44px;height:44px;margin:0;border-radius:12px}
  #app.bloom-chat-screen .bai-compose :is(.bai-compose-actions span,[data-key-hint]){display:none}
  #app.bloom-chat-screen .bai-compose form>[data-attachments]{grid-column:1/-1;grid-row:2;max-height:110px;overflow:auto}
  #app.bloom-chat-screen .bai-compose [role=status]{max-height:64px;overflow:auto}
  #app.bloom-chat-screen .bai-console-status{min-height:24px;height:24px}
  #app.bloom-chat-screen .bai-pane-grid[data-count="2"],#app.bloom-chat-screen .bai-pane-grid[data-count="4"]{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-auto-rows:minmax(360px,1fr);overflow:auto}
  #app.bloom-chat-screen.bloom-keyboard-open .bai-pane-grid:has(.bai-pane:focus-within){display:flex;flex-direction:column;overflow:hidden}
  #app.bloom-chat-screen.bloom-keyboard-open .bai-pane-grid:has(.bai-pane:focus-within)>.bai-pane:not(:focus-within){display:none}
  #app.bloom-chat-screen.bloom-keyboard-open .bai-pane-grid>.bai-pane:focus-within{flex:1;min-height:0;height:100%}
  #app.bloom-chat-screen.bloom-keyboard-open .bai-pane-layout{display:none}
  #app.bloom-chat-screen .bai-console.bai-preview-open:not([data-session-mode=preview]) .bai-console-area{flex-direction:column}
  #app.bloom-chat-screen .bai-console.bai-preview-open:not([data-session-mode=preview]) .bai-console-preview{position:relative;inset:auto;width:100%;min-width:0;min-height:0;max-height:45%;flex:0 1 45%;border-left:0;border-top:1px solid var(--line)}
  #app.bloom-chat-screen.bloom-keyboard-open .bai-console.bai-preview-open:not([data-session-mode=preview]) .bai-console-preview{display:none}
  #app.bloom-chat-screen #view-messages>.vhead{flex:none;margin:0;padding:8px 12px;gap:8px}
  #app.bloom-chat-screen #view-messages>.vhead h1{font-size:18px}
  #app.bloom-chat-screen #view-messages>.vhead .btn{min-height:40px}
  #app.bloom-chat-screen #view-messages>.card{display:flex;flex-direction:column;flex:1;min-height:0;margin:0;border-radius:0;overflow:hidden}
  #app.bloom-chat-screen #view-messages .msg2{display:flex;flex-direction:column;flex:1;min-height:0;height:auto;margin:0;border-radius:0}
  #app.bloom-chat-screen .bmn-sidebar{display:flex;flex:1;min-height:0;max-height:none;border:0}
  #app.bloom-chat-screen .bmn-sidebar #conv-col{flex:1;min-height:0;overflow:auto;max-height:none}
  #app.bloom-chat-screen #view-messages:not(.bt-mobile-thread) #msg-thread{display:none}
  #app.bloom-chat-screen #view-messages.bt-mobile-thread>.vhead,#app.bloom-chat-screen #view-messages.bt-mobile-thread .bmn-sidebar{display:none}
  #app.bloom-chat-screen #msg-thread{display:flex;flex:1;flex-direction:column;min-width:0;min-height:0;overflow:hidden}
  #app.bloom-chat-screen #view-messages.on.bt-mobile-thread #msg-thread{position:static;inset:auto;height:auto;max-height:none;z-index:auto}
  #app.bloom-chat-screen .bt-back{display:inline-flex;min-width:44px;min-height:44px}
  #app.bloom-chat-screen .msg-body{flex:1;min-height:0;max-height:none;overflow:auto}
  #app.bloom-chat-screen .podcast-dm-header{padding:8px 12px;gap:8px;flex-wrap:nowrap}
  #app.bloom-chat-screen .podcast-dm-header strong{font-size:14px}
  #app.bloom-chat-screen .podcast-dm-header span{display:none}
  #app.bloom-chat-screen .podcast-dm-header button{font-size:11px;min-height:44px;white-space:normal;padding:6px 8px}
  #app.bloom-chat-screen .podcast-dm-chat{height:auto;min-height:0;border:0;border-radius:0;flex:1}
  #app.bloom-chat-screen .podcast-dm-chat .bai-content{height:auto;min-height:0;max-width:none;flex:1;padding:0}
  #app.bloom-chat-screen.bloom-keyboard-open .bloom-mobile-tabs{display:none}
  #app.bloom-chat-screen.bloom-keyboard-open .bloom-mobile-header{height:48px;padding-block:2px}
  #app.bloom-chat-screen.bloom-keyboard-open .bloom-department-label>span{display:none}
  #app.bloom-chat-screen.bloom-keyboard-open .bai-console-status{display:none}
  #app.bloom-chat-screen.bloom-keyboard-open .bai-compose{padding-bottom:6px}
}
