/* SOZO CONNECT 共通スタイル。layouts/app.blade.php から外部化しブラウザキャッシュを効かせる。Produced by Sozolink Inc. */
        :root { --bg:#f4f5f7; --card:#fff; --line:#e2e5ea; --ink:#1f2430; --sub:#6b7280; --brand:#2a6df4; --brand-d:#1b4fbf; }
        * { box-sizing: border-box; }
        body { margin:0; font-family: system-ui, "Hiragino Kaku Gothic ProN", "Noto Sans JP", sans-serif; background:var(--bg); color:var(--ink); }
        a { color:var(--brand); text-decoration:none; }
        header { background:var(--card); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:300; }
        .bar { display:flex; align-items:center; gap:16px; max-width:1080px; margin:0 auto; padding:10px 16px; }
        .bar .brand { font-weight:800; font-size:16px; letter-spacing:.04em; color:var(--ink); text-decoration:none; }
        .bar a.brand:hover { opacity:.8; }
        .bar .brand-sub { font-weight:500; font-size:10px; color:var(--sub); letter-spacing:.08em; display:block; line-height:1; margin-top:1px; }
        @media (max-width:480px) { .bar .brand-sub { display:none; } }
        .navtoggle { display:none; margin-left:auto; background:none; border:1px solid var(--line); border-radius:8px; padding:8px 12px; cursor:pointer; font-size:18px; line-height:1; color:var(--ink); }
        nav.main { display:flex; gap:4px; flex-wrap:wrap; align-items:center; }
        nav.main > a { padding:6px 10px; border-radius:6px; color:var(--ink); font-size:14px; }
        nav.main > a:hover { background:var(--bg); }
        nav.main > a.active { background:var(--brand); color:#fff; }
        .grp { position:relative; }
        .grp > summary { list-style:none; cursor:pointer; padding:6px 10px; border-radius:6px; font-size:14px; color:var(--ink); }
        .grp > summary::-webkit-details-marker { display:none; }
        .grp[open] > summary, .grp > summary.on { background:var(--bg); font-weight:600; }
        .grp .panel { position:absolute; top:calc(100% + 4px); left:0; z-index:60; background:var(--card); border:1px solid var(--line); border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.10); padding:6px; min-width:190px; display:flex; flex-direction:column; gap:2px; }
        .grp .panel a { padding:8px 10px; border-radius:6px; color:var(--ink); font-size:14px; white-space:nowrap; }
        .grp .panel a:hover { background:var(--bg); }
        .grp .panel a.active { background:var(--brand); color:#fff; }
        .spacer { margin-left:auto; }
        .who { color:var(--sub); font-size:13px; }
        .navhome .hicon { font-size:18px; }
        .navhome .hlabel { display:none; }
        nav.main > a.navhome { padding:6px 8px; }
        .navchat { position:relative; }
        .nav-badge { position:absolute; top:-2px; right:-4px; background:#e01e5a; color:#fff; font-size:10px; font-weight:700; min-width:16px; height:16px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; padding:0 4px; line-height:1; }
        /* ユーザー名メニュー（右寄せパネル） */
        .usermenu { position:relative; }
        .usermenu > summary { list-style:none; cursor:pointer; padding:6px 10px; border-radius:6px; font-size:14px; color:var(--ink); }
        .usermenu > summary::-webkit-details-marker { display:none; }
        .who-summary { display:inline-flex; align-items:center; gap:7px; }
        .who-ava { width:24px; height:24px; border-radius:6px; object-fit:cover; vertical-align:middle; }
        .usermenu[open] > summary, .usermenu > summary:hover { background:var(--bg); }
        .usermenu .panel-right { left:auto; right:0; max-height:calc(100vh - 70px); overflow-y:auto; z-index:9999; }
        .panel-sep { font-size:11px; color:var(--sub); padding:8px 10px 2px; border-top:1px solid var(--line); margin-top:4px; }
        .panel-logout { width:100%; text-align:left; background:none; border:0; padding:8px 10px; border-radius:6px; cursor:pointer; font-size:14px; color:#c0392b; }
        .panel-logout:hover { background:#fdecea; }
        /* チャット固定ボタン（右下） */
        .fab-chat { position:fixed; right:18px; bottom:calc(18px + env(safe-area-inset-bottom)); z-index:120; width:58px; height:58px; border-radius:50%; background:var(--pink,#ff5fa2); color:#fff; display:flex; align-items:center; justify-content:center; font-size:26px; box-shadow:0 8px 22px rgba(255,95,162,.45); text-decoration:none; }
        .fab-chat:hover { transform:translateY(-2px); }
        :root { --pink:#ff5fa2; }
        /* --- スマホ対応：820px以下はハンバーガーで縦展開 --- */
        @media (max-width: 820px) {
            .bar { flex-wrap:wrap; gap:10px; }
            .navtoggle { display:inline-block; margin-left:auto; }
            nav.main { display:none; order:4; flex-basis:100%; flex-direction:column; flex-wrap:nowrap; align-items:stretch; gap:2px; padding-top:8px; border-top:1px solid var(--line); margin-top:4px; }
            nav.main.open { display:flex; }
            nav.main > a { padding:12px 12px; font-size:15px; }
            .navhome .hlabel { display:inline; }
            nav.main .grp { position:static; }
            nav.main .grp > summary { padding:12px 12px; font-size:15px; }
            nav.main .grp > summary::after { content:'▾'; float:right; color:var(--sub); }
            nav.main .grp[open] > summary::after { content:'▴'; }
            nav.main .grp .panel { position:static; box-shadow:none; border:0; border-radius:0; padding:2px 0 6px 12px; min-width:0; background:transparent; }
            nav.main .grp .panel a { padding:11px 12px; font-size:15px; }
            .usermenu { order:3; }
        }
        main { max-width:1080px; margin:20px auto; padding:0 16px; }
        /* メインメニュー以下を全面表示（チャット等）：余白・最大幅を外す */
        main.main-flush { max-width:none; margin:0; padding:0; }
        /* スマホ/PC出し分けユーティリティ（一覧のカード表示に使う） */
        .only-mobile { display:none; }
        /* --- スマホ全体の使い勝手：横溢れ防止・タップ領域・入力ズーム抑制 --- */
        /* --- モバイル下部タブバー（ネイティブアプリ風・常時表示） --- */
        .mobilebar { display:none; }
        @media (max-width: 640px) {
            /* ヘッダーのハンバーガーと上部ナビ・右下チャットFABは廃止（下部バーに集約） */
            .navtoggle { display:none !important; }
            nav.main { display:none; }
            .fab-chat { display:none !important; }
            main { padding-bottom:calc(76px + env(safe-area-inset-bottom)) !important; }
            .mobilebar { display:flex; position:fixed; left:0; right:0; bottom:0; z-index:200; background:var(--card);
                border-top:1px solid var(--line); padding-bottom:env(safe-area-inset-bottom);
                box-shadow:0 -2px 10px rgba(0,0,0,.05); }
            /* タップ領域を Apple 推奨(44px+)より広めに確保して押しやすくする */
            .mb-item { flex:1 1 0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
                min-height:58px; padding:8px 2px 9px; color:var(--sub); font-size:11px; background:none; border:0;
                cursor:pointer; position:relative; -webkit-tap-highlight-color:rgba(42,109,244,.12); touch-action:manipulation; }
            .mb-item:active { background:rgba(42,109,244,.08); }
            .mb-item .mb-ico { font-size:24px; line-height:1; }
            .mb-item.active { color:var(--brand); font-weight:700; }
            .mb-badge { position:absolute; top:2px; right:calc(50% - 20px); background:#e01e5a; color:#fff; font-size:9px;
                font-weight:700; min-width:15px; height:15px; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; padding:0 3px; }
            /* 「全て」ドロワー：上部ナビをオーバーレイで全画面表示 */
            nav.main.open { display:flex; position:fixed; left:0; right:0; top:0; bottom:0; z-index:250; overflow-y:auto; overflow-x:hidden;
                background:var(--card); flex-direction:column; flex-wrap:nowrap; align-items:stretch; gap:2px; padding:14px 14px calc(80px + env(safe-area-inset-bottom));
                margin:0; border:0; }
            nav.main.open .drawer-close { display:flex; }
        }
        /* 既定は非表示。.btn（display:inline-block）に負けないよう nav.main で詳細度を上げる */
        nav.main .drawer-close { display:none; }
        @media (max-width: 640px) {
            main { margin:14px auto; padding:0 12px; }
            .card { padding:14px; overflow-x:auto; }              /* カード表示未対応のテーブルはカード内で横スクロール */
            .only-desktop { display:none !important; }
            .only-mobile { display:block; }
            .grid3 { grid-template-columns:1fr; }
            .row > .field { flex:1 1 100%; }
            .btn { padding:10px 16px; }
            /* iOSで入力時にズームしないよう16px確保 */
            .field input, .field select, .field textarea, input[type=text], input[type=email], input[type=date], input[type=number], input[type=url], select, textarea { font-size:16px; }
            /* 潰れ防止（横スクロールで読む） */
            main table { min-width:520px; }
            .tbl-wrap { overflow-x:auto; }
        }
        /* 一覧のスマホ用カード（案件・哲学・見積 等で共用） */
        .lcards { display:flex; flex-direction:column; gap:10px; }
        .lcard { display:block; border:1px solid var(--line); border-radius:12px; padding:12px 14px; background:var(--card); color:var(--ink); }
        .lcard:active { background:#f7f9fc; }
        .lcard .lc-top { display:flex; align-items:flex-start; gap:10px; }
        .lcard .lc-code { font-family:ui-monospace,monospace; font-size:12px; color:var(--brand-d); background:#eef2fb; border-radius:6px; padding:2px 7px; white-space:nowrap; flex:0 0 auto; }
        .lcard .lc-main { flex:1 1 auto; min-width:0; }
        .lcard .lc-name { font-weight:600; font-size:15px; line-height:1.35; }
        .lcard .lc-sub { color:var(--sub); font-size:12px; margin-top:2px; }
        .lcard .lc-due { flex:0 0 auto; text-align:right; font-size:12px; color:var(--sub); white-space:nowrap; }
        .lcard .lc-foot { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:8px; padding-top:8px; border-top:1px dashed var(--line); }
        .lcard .lc-amts { display:flex; flex-direction:column; gap:1px; }
        .lcard .lc-amt { font-size:13px; }
        .lcard .lc-amt b { font-variant-numeric:tabular-nums; }
        .lcard .lc-amt .lc-lab { display:inline-block; min-width:1.2em; color:var(--sub); font-size:11px; margin-right:3px; }
        .card { background:var(--card); border:1px solid var(--line); border-radius:10px; padding:18px; margin-bottom:16px; overflow-x:auto; }
        /* PC でも横幅を超えるテーブル等は main（最大1080px）からはみ出さず、カード内で横スクロールさせる */
        main table { max-width:100%; }
        h1 { font-size:20px; margin:0 0 14px; }
        h2 { font-size:16px; margin:0 0 10px; }
        table { width:100%; border-collapse:collapse; }
        th, td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--line); font-size:14px; vertical-align:top; }
        th { color:var(--sub); font-weight:600; background:#fafbfc; }
        .btn { display:inline-block; padding:8px 14px; border-radius:6px; background:var(--brand); color:#fff; border:0; cursor:pointer; font-size:14px; white-space:nowrap; }
        .btn:hover { background:var(--brand-d); }
        .btn.sub { background:#eef1f6; color:var(--ink); }
        .btn.danger { background:#e0483d; }
        .field { margin-bottom:12px; }
        .field label { display:block; font-size:13px; color:var(--sub); margin-bottom:4px; }
        .field input[type=text], .field input[type=email], .field input[type=date], .field input[type=number], .field select, .field textarea {
            width:100%; padding:8px 10px; border:1px solid var(--line); border-radius:6px; font-size:14px; font-family:inherit;
        }
        .row { display:flex; gap:14px; flex-wrap:wrap; }
        .row > .field { flex:1 1 220px; }
        /* ページ先頭のタイトル＋操作ボタン列（スマホで縦文字に潰れないよう折り返す） */
        .page-head { display:flex; align-items:center; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
        .page-head h1 { margin:0; min-width:0; overflow-wrap:anywhere; }
        .page-head form { margin:0; }
        @media (max-width:640px) {
            .page-head { gap:8px; }
            .page-head h1 { flex-basis:100%; }
            .page-head .spacer { display:none; }
            .page-head .btn { padding:9px 13px; font-size:13px; }
        }
        /* ページネーション（Tailwind 無し環境で矢印SVGが巨大化しないよう自前スタイル） */
        .pgn { display:flex; align-items:center; justify-content:center; gap:6px; margin:14px 0 4px; flex-wrap:wrap; }
        .pgn a, .pgn span.cur, .pgn span.dot, .pgn span.dis { min-width:36px; height:36px; display:inline-flex; align-items:center; justify-content:center; padding:0 10px; border:1px solid var(--line); border-radius:8px; font-size:14px; background:var(--card); color:var(--ink); }
        .pgn a:hover { border-color:var(--brand); }
        .pgn span.cur { background:var(--brand); border-color:var(--brand); color:#fff; font-weight:600; }
        .pgn span.dis { color:#c2c7d1; }
        .pgn span.dot { border:0; background:none; min-width:auto; }
        .pgn-info { text-align:center; color:var(--sub); font-size:12px; margin-bottom:10px; }
        /* 万一デフォルトのページネーションが出た場合も矢印SVGを暴走させない保険 */
        nav[role="navigation"] svg { width:20px; height:20px; }
        .flash { background:#e7f5ee; border:1px solid #b7e0c9; color:#1c7a46; padding:10px 14px; border-radius:8px; margin-bottom:16px; }
        .errors { background:#fdecea; border:1px solid #f5c2bd; color:#a3271b; padding:10px 14px; border-radius:8px; margin-bottom:16px; }
        .muted { color:var(--sub); font-size:13px; }
        .tag { display:inline-block; padding:2px 8px; border-radius:999px; background:#eef1f6; font-size:12px; margin:0 4px 4px 0; }
        .grid3 { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; }
        .stat { background:var(--card); border:1px solid var(--line); border-radius:10px; padding:16px; }
        .stat .n { font-size:28px; font-weight:700; }
        .matrix td, .matrix th { text-align:center; }
        .matrix td.fn, .matrix th.fn { text-align:left; }
        .modrow th { background:#eef2fb; color:var(--brand-d); }
        code { background:#eef1f6; padding:1px 6px; border-radius:4px; }

/* 共通モーダル/バックドロップ ユーティリティ（各ビューの重複定義の集約先） */
.szl-backdrop{position:fixed;inset:0;z-index:1000;background:rgba(20,22,28,.5);display:none;align-items:center;justify-content:center;padding:20px}
.szl-backdrop.open{display:flex}
.szl-modal-box{position:relative;background:#fff;border-radius:14px;max-width:520px;width:100%;padding:24px;box-shadow:0 18px 50px rgba(0,0,0,.28)}
.szl-modal-close{position:absolute;top:8px;right:12px;border:0;background:none;font-size:26px;line-height:1;color:#9aa0aa;cursor:pointer}

/* 社内メモの書式（議事メモ・案件メモ・決定事項・AI要約）。App\Support\NoteFormat が出す nt-* に対応。
   社長指示 2026-08-18：# ## の見出し・箇条書きが効き、URL・メールは自動リンクになる。 */
.nt-body{line-height:1.9;font-size:14px}
.nt-body>:first-child{margin-top:0}
.nt-body .nt-h1{font-size:16.5px;font-weight:700;margin:18px 0 8px;padding-left:10px;border-left:4px solid var(--brand)}
.nt-body .nt-h2{font-size:15px;font-weight:700;margin:16px 0 6px}
.nt-body .nt-h3{font-size:13.5px;font-weight:700;margin:12px 0 4px;color:var(--sub)}
.nt-body .nt-p{margin:6px 0}
.nt-body .nt-ul,.nt-body .nt-ol{margin:6px 0;padding-left:22px}
.nt-body .nt-ul li,.nt-body .nt-ol li{margin:2px 0}
.nt-body .nt-hr{border:0;border-top:1px solid var(--line);margin:14px 0}
.nt-body a{overflow-wrap:anywhere}

/* アンケート（surveys）：集計の横棒・スコアの見せ方。社長指示 2026-08-19 */
.sv-bars{display:flex;flex-direction:column;gap:5px}
.sv-bar{display:grid;grid-template-columns:minmax(90px,26%) 1fr minmax(84px,auto);gap:10px;align-items:center;font-size:13px}
.sv-bar-label{overflow-wrap:anywhere}
.sv-bar-track{background:#eef1f6;border-radius:999px;height:16px;overflow:hidden}
.sv-bar-fill{height:100%;border-radius:999px;min-width:0;transition:width .2s}
.sv-bar-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
@media (max-width:560px){.sv-bar{grid-template-columns:1fr;gap:2px}.sv-bar-num{text-align:left}}
.sv-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.sv-kpi .box{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.sv-kpi .box .n{font-size:26px;font-weight:700;line-height:1.3}
.sv-kpi .box .k{font-size:12px;color:var(--sub)}
.sv-q{border-top:1px solid var(--line);padding:14px 0}
.sv-q:first-of-type{border-top:none}
.sv-q h3{font-size:14.5px;margin:0 0 2px}
.sv-voice{border-left:3px solid var(--line);padding:4px 0 4px 10px;margin:6px 0;font-size:13px;line-height:1.9}

/* ⭐ 自分のショートカット（ダッシュボード）。社長指示 2026-08-20 */
.sc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:8px}
.sc-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);text-decoration:none;min-width:0}
.sc-item:hover{border-color:var(--brand);color:var(--brand)}
.sc-ico{font-size:17px;line-height:1}
.sc-label{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Wiki 本文の用語リンク（自動）。社長指示 2026-08-20：どこの画面／どの記事かが分かるように */
.wk-body a.wk-term{color:var(--brand);text-decoration:none;border-bottom:1px dotted var(--brand)}
.wk-body a.wk-term:hover{border-bottom-style:solid}
/* Wiki 本文の注記（社内向け前置き・要確認）。社長指示 2026-08-21 */
.wk-body .wk-note{background:#f6f8fc;border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:12.5px;color:var(--sub)}
.wk-body .wk-todo{background:#fffdf5;border:1px solid #f0e4c3;border-radius:10px;padding:10px 14px;font-size:13px}
