/* ホジョパイロット スタイル。
 * index.html から分離（中E）。1ファイル193KBだとCSS/JSがHTMLと同じ寿命になり、
 * 文言を1文字直しただけで全体を再ダウンロードさせていた。
 * 分離により、HTMLだけが変わったときはCSS/JSがキャッシュから使われる。
 */

  :root{--navy:#16202E;--blue:#2B59E0;--gold:#B8893D;--gold-deep:#8B6B2A;--ink:#16202E;--muted:#5b6472;--line:#e4e8ef;--bg:#f6f8fb;--panel:#F1EDE1;--white:#fff;--ok:#128a5b;--warn:#b1631a;--ng:#9aa2ad;--danger:#a12b2b}
  *{box-sizing:border-box}
  body{margin:0;font-family:system-ui,-apple-system,"Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;color:var(--ink);background:var(--bg);line-height:1.7}
  header{background:var(--navy);color:#fff;padding:14px 20px;display:flex;align-items:center;justify-content:space-between}
  header .brand{font-weight:700}
  header .brand small{display:block;font-weight:400;font-size:11px;color:#aebbcf}
  header .who{font-size:12px;color:#cdd7e6}
  header button{background:transparent;border:1px solid #3a4a63;color:#cdd7e6;border-radius:6px;padding:5px 10px;font-size:12px;cursor:pointer}
  main{max-width:900px;margin:0 auto;padding:0 16px 24px}

  /* タブナビ */
  .tabnav{display:flex;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;margin:0 -16px 20px;padding:0 16px}
  .tabnav .t{flex:1;text-align:center;padding:14px 8px 12px;font-size:13.5px;font-weight:600;color:var(--muted);border-bottom:3px solid transparent;cursor:pointer;background:transparent;border-top:none;border-left:none;border-right:none;font-family:inherit}
  .tabnav .t.on{color:var(--navy);border-bottom-color:var(--gold)}
  .tabnav .t:hover{color:var(--navy)}
  .panel{display:none}
  .panel.on{display:block}

  .card{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:16px}
  h1{font-size:19px;margin:.2em 0 .6em}
  h2{font-size:15px;margin:0 0 12px;color:var(--navy)}
  .q{margin:16px 0;padding-top:14px;border-top:1px solid #eef1f6}
  .q:first-of-type{border-top:none;padding-top:0}
  .qlabel{font-size:14px;font-weight:600;margin-bottom:6px}
  .qnote{font-size:12px;color:var(--muted);margin:-2px 0 8px}
  label{font-size:13px;color:var(--muted)}
  input[type=text],input[type=email],input[type=password],input[type=number],select,textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:16px;background:#fff;font-family:inherit}
  textarea{min-height:80px;line-height:1.6}
  .row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .radio,.checks{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:4px}
  .radio label,.checks label{display:flex;align-items:center;gap:6px;font-size:13.5px;color:var(--ink);cursor:pointer}
  .radio input,.checks input{width:auto}
  .btn{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:12px 20px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit}
  .btn:disabled{opacity:.6;cursor:default}
  .btn.sub{background:#fff;color:var(--blue);border:1px solid var(--blue);padding:8px 14px;font-size:13px}
  .btn.warn{background:#fff;color:var(--danger);border:1px solid var(--danger)}
  .btn.gold{background:var(--gold);color:#fff}
  .tabbar{display:flex;gap:8px;margin-bottom:14px}
  .msg{font-size:13px;padding:8px 12px;border-radius:8px;margin-top:10px;display:none}
  .msg.err{background:#fdecec;color:var(--danger);display:block}
  .hidden{display:none}
  .note{font-size:12px;color:var(--muted);background:#fff8ec;border:1px solid #f0e2c4;border-radius:8px;padding:10px 12px;margin-bottom:14px}
  .warn{background:#fdf3e7;border:1px solid #f0d6ad;color:#8a5316;border-radius:8px;padding:10px 12px;margin:10px 0;font-size:13px}
  .item{border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:12px;background:#fff}
  .item .top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
  .item .name{font-weight:700;font-size:15px}
  .badge{font-size:11px;padding:2px 8px;border-radius:20px;font-weight:600}
  .badge.ok{background:#e9f6f0;color:var(--ok)}
  .badge.ng{background:#f0f2f5;color:var(--ng)}
  .score{margin-left:auto;font-weight:700;color:var(--navy)}
  .score small{font-weight:400;color:var(--muted);font-size:11px}
  .rationale{background:#faf6ee;border-left:3px solid var(--gold);padding:8px 12px;border-radius:6px;margin:10px 0;font-size:13.5px}
  .summary{font-size:13px;margin:8px 0 4px;color:#2a3340}
  .kv{display:grid;grid-template-columns:88px 1fr;gap:4px 10px;font-size:12.5px;margin:8px 0;background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:8px 10px}
  .kv .k{color:var(--muted)}
  .kv .v{color:#2a3340}
  .lst{margin:6px 0 0;padding-left:18px;font-size:13px;color:#3a424f}
  .lst.unmet{color:var(--warn)}
  .src{font-size:12px;margin-top:8px}
  .src a{color:var(--blue)}
  .foot{text-align:center;color:var(--muted);font-size:11px;margin:24px 0}
  .foot a{color:var(--blue)}
  .spinner{display:inline-block;width:14px;height:14px;border:2px solid #fff;border-top-color:transparent;border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px;margin-right:6px}
  @keyframes sp{to{transform:rotate(360deg)}}
  .pwrow{position:relative}
  .pwrow .toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer;padding:2px 4px}

  /* ダッシュボード */
  .metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px}
  .metric{background:#fff;border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:10px;padding:16px 18px}
  .metric .label{font-size:11.5px;letter-spacing:.14em;color:var(--muted);font-weight:700}
  .metric .val{font-size:26px;font-weight:700;color:var(--navy);margin-top:4px;font-variant-numeric:tabular-nums}
  .metric .val small{font-size:14px;color:var(--muted);margin-left:2px;font-weight:500}
  .metric .foot-text{font-size:11.5px;color:var(--muted);margin-top:2px}
  .metric.est{border-left-color:var(--blue)}
  .metric.received{border-left-color:var(--ok)}
  .metric.total{border-left-color:var(--gold-deep)}

  .app-row{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:10px;cursor:pointer;transition:box-shadow .15s}
  .app-row:hover{box-shadow:0 4px 12px rgba(22,32,46,.08)}
  .app-row .top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
  .app-row .name{font-weight:700;font-size:14.5px;flex:1;min-width:180px}
  .app-row .meta{font-size:12px;color:var(--muted);display:flex;gap:12px;flex-wrap:wrap}
  .app-row .bar{height:4px;background:#eef1f6;border-radius:2px;margin-top:8px;position:relative;overflow:hidden}
  .app-row .bar i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--blue),var(--gold));border-radius:2px}
  .status-badge{font-size:10.5px;padding:3px 8px;border-radius:12px;font-weight:700;letter-spacing:.04em}
  .status-badge.todo{background:#f0f2f5;color:#5b6472}
  .status-badge.prep{background:#e9f0fe;color:#2b3f5f}
  .status-badge.writing{background:#eef3fa;color:#2B4E5A}
  .status-badge.submitted{background:#e0e7ff;color:#3b3b8f}
  .status-badge.review{background:#fff8ec;color:#8a5316}
  .status-badge.accepted{background:#e9f6f0;color:var(--ok)}
  .status-badge.rejected{background:#fdecec;color:var(--danger)}

  .task-item{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-bottom:8px}
  .task-item .cat{display:inline-block;font-size:10px;padding:2px 8px;border-radius:10px;background:#eef3fe;color:var(--blue);font-weight:700;letter-spacing:.06em;margin-right:8px}
  .task-item .ttl{font-weight:600;font-size:13px;color:var(--ink)}
  .task-item .desc{font-size:12px;color:var(--muted);margin-top:2px;line-height:1.6}

  /* モーダル（チャット/ダイアログ共用） */
  .modal{position:fixed;inset:0;background:rgba(22,32,46,.55);display:none;z-index:1000;align-items:flex-start;justify-content:center;padding:24px;overflow:auto}
  .modal.on{display:flex}
  .modal .box{background:#fff;border-radius:12px;max-width:820px;width:100%;padding:22px;box-shadow:0 12px 40px rgba(0,0,0,.2)}
  .modal .box.wide{max-width:900px}
  .modal .head{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:14px}
  .modal .head h3{margin:0;font-size:16px;color:var(--navy);flex:1}
  .modal .close{background:none;border:none;font-size:22px;color:var(--muted);cursor:pointer;padding:0 4px}
  .modal .disclaim{background:#fff8ec;border:1px solid #f0e2c4;color:#8a5316;border-radius:8px;padding:10px 12px;margin-bottom:12px;font-size:12.5px}

  /* チャット */
  .chat{display:flex;flex-direction:column;gap:8px;max-height:52vh;overflow-y:auto;padding:6px 4px;background:#fafbfc;border:1px solid var(--line);border-radius:8px}
  .chat .msg-row{display:flex;gap:8px;padding:6px 8px}
  .chat .bubble{max-width:80%;padding:10px 14px;border-radius:12px;font-size:13.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word}
  .chat .bubble.ai{background:#fff;border:1px solid var(--line);color:var(--ink);align-self:flex-start;border-top-left-radius:4px}
  .chat .bubble.user{background:var(--blue);color:#fff;align-self:flex-end;border-top-right-radius:4px;margin-left:auto}
  .chat .task-card{background:#faf6ee;border:1px solid #e4d9bf;border-radius:8px;padding:10px 14px;margin-top:4px;font-size:12.5px}
  .chat .task-card .cat{display:inline-block;font-size:10px;padding:2px 8px;border-radius:10px;background:#f6ecd0;color:#8B6B2A;font-weight:700;margin-right:8px}
  .chat .task-card .ttl{font-weight:700;color:var(--ink);margin-top:4px}
  .chat .task-card .desc{color:var(--muted);margin-top:4px;line-height:1.65}
  .chat .task-card .official{display:inline-block;background:#f6d3a8;color:#6b4a1a;font-size:10px;padding:2px 6px;border-radius:10px;margin-left:6px;font-weight:700}
  .chat .draft-card{background:#eef3fa;border:1px solid #d3dfee;border-radius:8px;padding:10px 14px;margin-top:6px;font-size:13px;line-height:1.75;color:var(--ink);white-space:pre-wrap}
  .chat .draft-card .k{display:inline-block;font-size:10px;padding:2px 8px;border-radius:10px;background:#d3dfee;color:#2B4E5A;font-weight:700;margin-bottom:4px}
  .chat-input{margin-top:10px;display:flex;gap:8px;align-items:flex-end}
  .chat-input textarea{flex:1;min-height:52px;max-height:180px;font-size:14px;padding:10px 12px;resize:vertical}
  .chat-choices{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding:10px 12px;background:#faf6ee;border:1px dashed #e4d9bf;border-radius:8px}
  .chat-choices:empty{display:none}
  .chat-choices-hint{width:100%;font-size:11px;color:var(--gold-deep);letter-spacing:.04em;font-weight:600;margin-bottom:4px}
  /* 申請実務ツール。数字が並ぶ画面なので、行の区切りだけをはっきりさせる */
  .ops-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
  .ops-tabs button{background:#fff;color:var(--navy);border:1px solid var(--line);border-radius:14px;padding:6px 13px;font-size:12px;cursor:pointer;font-family:inherit}
  .ops-tabs button.on{background:var(--navy);color:#fff;border-color:var(--navy);font-weight:700}
  .ops-row{border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:6px;font-size:12.5px}
  .ops-row.ng{border-color:var(--danger);background:#fdf5f5}
  .ops-row .sub{color:var(--muted);font-size:11.5px;margin-top:3px}
  .ops-form{background:#faf6ee;border:1px solid #e4d9bf;border-radius:8px;padding:10px 12px;margin-bottom:12px}
  .ops-form label{font-size:11.5px;font-weight:600;color:var(--navy);display:block;margin-bottom:2px}
  .ops-form input,.ops-form select{font-size:13px;padding:6px 8px}
  .ops-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin-bottom:8px}
  .ops-note{font-size:11.5px;color:var(--muted);margin-top:8px;line-height:1.7}
  /* #E-44 回答の根拠度。色は段階の違いが分かる程度に留め、警告色は根拠なしにだけ使う */
  .chat-evidence{font-size:11.5px;line-height:1.6;border-radius:8px;padding:7px 10px;margin-bottom:8px;border:1px solid var(--line)}
  .chat-evidence b{font-weight:700;margin-right:6px}
  .chat-evidence.ev-high{background:#f2f8f5;border-color:var(--ok);color:#0d5c3f}
  .chat-evidence.ev-medium{background:#fbf7ee;border-color:var(--gold-deep);color:#6b4e10}
  .chat-evidence.ev-low{background:#fbf4ee;border-color:#c98a3c;color:#7a4a12}
  .chat-evidence.ev-none{background:#fdf1f1;border-color:var(--danger);color:#8a2020}
  .chat-choices button{background:#fff;color:var(--navy);border:1px solid var(--navy);border-radius:16px;padding:7px 15px;font-size:12.5px;cursor:pointer;font-family:inherit;transition:all .15s;max-width:100%;word-break:break-word;text-align:left}
  .chat-choices button:hover{background:var(--navy);color:#fff}
  .chat-choices button.primary{background:var(--ok);color:#fff;border-color:var(--ok);font-weight:700}
  .chat-choices button.primary:hover{background:#0d6b47;border-color:#0d6b47}

  .modal .btns{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
  .modal .btns .cp{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer;font-family:inherit}
  .modal .btns .cp.ok{background:var(--ok)}
  .modal .btns .cp.sub{background:#fff;color:var(--navy);border:1px solid var(--navy)}
  .modal .loading{color:var(--muted);font-size:13px;padding:20px 0;text-align:center}

  /* 診断根拠実況 */
  .diag-progress{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-top:12px;display:none}
  .diag-progress.on{display:block}
  .diag-progress .row{display:flex;gap:8px;font-size:12.5px;color:var(--ink);margin:6px 0;grid-template-columns:none}
  .diag-progress .row .ic{width:16px;display:inline-block;color:var(--gold)}
  .diag-progress .row.done .ic::before{content:"✓";color:var(--ok)}
  .diag-progress .row.doing .ic::before{content:"◐";color:var(--gold);animation:sp 1s linear infinite;display:inline-block}
  .diag-progress .row.pending .ic::before{content:"○";color:var(--ng)}

  .support-actions{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px}
  .support-actions .sbtn{background:#fff;color:var(--navy);border:1px solid var(--navy);border-radius:8px;padding:6px 11px;font-size:12.5px;cursor:pointer;font-family:inherit}
  .support-actions .sbtn:hover{background:var(--navy);color:#fff}
  .support-actions .sbtn.primary{background:var(--gold);color:#fff;border-color:var(--gold)}
  .support-actions .sbtn.primary:hover{background:var(--gold-deep);border-color:var(--gold-deep)}
  .empty{text-align:center;padding:32px 16px;color:var(--muted);font-size:13.5px}

  @media(max-width:640px){
    header{flex-wrap:wrap;gap:6px;padding:12px 14px}
    main{padding:0 12px 16px}
    .card{padding:16px}
    .row{grid-template-columns:1fr;gap:10px}
    .kv{grid-template-columns:76px 1fr}
    .btn{width:100%}
    .btn.sub,.tabnav .t{width:auto}
    .metrics{grid-template-columns:1fr}

    /* モバイルは下部固定タブバー（中E）。
       従来は5タブ（パートナー表示時）を12pxに縮めて横並びにするだけで、
       文字が潰れて押しづらく、スクロールすると現在地も分からなくなっていた。
       親指の届く下部に固定し、アイコン＋短い文字で判別できるようにする。 */
    .tabnav{
      position:fixed;left:0;right:0;bottom:0;top:auto;
      margin:0;padding:0;border-top:1px solid var(--line);border-bottom:none;
      box-shadow:0 -2px 10px rgba(0,0,0,.06);z-index:50;
      padding-bottom:env(safe-area-inset-bottom,0px); /* iPhone のホームバー分 */
    }
    .tabnav .t{
      padding:8px 2px 6px;font-size:10px;line-height:1.3;
      border-bottom:none;border-top:3px solid transparent;
      display:flex;flex-direction:column;align-items:center;gap:2px;
    }
    .tabnav .t.on{border-top-color:var(--gold);border-bottom-color:transparent}
    .tabnav .t .tabicon{font-size:18px;line-height:1}
    /* 固定バーに隠れないよう本文の下に余白を作る */
    main{padding-bottom:76px}
    .chat .bubble{max-width:92%}
  }

  /* トースト通知。素の alert() はページ全体を止めるうえ、AI生成のように
     数秒かかる処理の結果表示だと「固まった」ように見える。非ブロッキングにする。 */
  #toasts{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:9999;
    display:flex;flex-direction:column;gap:8px;width:min(560px,calc(100vw - 24px));pointer-events:none}
  .toast{pointer-events:auto;background:var(--white);border:1px solid var(--line);
    border-left:4px solid var(--blue);border-radius:8px;padding:12px 40px 12px 14px;
    box-shadow:0 6px 24px rgba(22,32,46,.16);font-size:13.5px;line-height:1.7;color:var(--ink);
    position:relative;white-space:pre-wrap;word-break:break-word;
    animation:toastIn .18s ease-out}
  .toast.err{border-left-color:#a12b2b;background:#fff7f7}
  .toast.ok{border-left-color:var(--ok);background:#f4fbf8}
  .toast .x{position:absolute;top:6px;right:8px;border:0;background:transparent;
    font-size:18px;line-height:1;color:var(--muted);cursor:pointer;padding:4px 6px}
  .toast .x:hover{color:var(--ink)}
  @keyframes toastIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion:reduce){.toast{animation:none}}

  /* 確認ダイアログ。素の confirm() は OS 依存の見た目で、削除など不可逆な操作でも
     肯定ボタンが目立たず誤操作を招く。危険な操作は赤系で明示する。 */
  .modal-back{position:fixed;inset:0;background:rgba(22,32,46,.45);z-index:10000;
    display:flex;align-items:center;justify-content:center;padding:16px}
  .modal{background:var(--white);border-radius:12px;max-width:520px;width:100%;
    box-shadow:0 12px 40px rgba(22,32,46,.28);overflow:hidden}
  .modal .body{padding:20px;font-size:14px;line-height:1.8;color:var(--ink);
    white-space:pre-wrap;word-break:break-word;max-height:60vh;overflow-y:auto}
  .modal .foot{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px;
    background:#fafbfd;border-top:1px solid var(--line)}
  .modal .foot button{padding:9px 18px;border-radius:8px;font-size:13.5px;cursor:pointer;
    border:1px solid var(--line);background:var(--white);color:var(--ink)}
  .modal .foot button.go{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
  .modal .foot button.danger{background:#a12b2b;border-color:#a12b2b;color:#fff;font-weight:600}
  .modal .foot button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}

  /* AI生成の待機表示。Claude は effort=medium でも10秒前後かかるため、
     何も出ないと「固まった」ように見える（従来は送信ボタンが無効化されるだけだった）。
     応答は構造化JSONで部分表示に意味がないため、逐次表示ではなく経過表示にしている。 */
  .thinking{display:flex;align-items:center;gap:10px;padding:10px 14px;margin:8px 0;
    background:var(--panel);border-radius:10px;font-size:13px;color:var(--muted)}
  .thinking .dots{display:inline-flex;gap:3px}
  .thinking .dots i{width:5px;height:5px;border-radius:50%;background:var(--gold);
    animation:blink 1.2s infinite}
  .thinking .dots i:nth-child(2){animation-delay:.2s}
  .thinking .dots i:nth-child(3){animation-delay:.4s}
  .thinking .el{margin-left:auto;font-variant-numeric:tabular-nums;font-size:12px}
  @keyframes blink{0%,60%,100%{opacity:.25}30%{opacity:1}}
  @media (prefers-reduced-motion:reduce){.thinking .dots i{animation:none;opacity:.6}}
