@import url('https://fonts.googleapis.com/css2?family=BIZ+UDPGothic:wght@400;700&display=swap');

:root{
  --ink:#1E2740; --ink-2:#4A5268; --ink-3:#7A8196;
  --salvia:#4A4E9E; --salvia-soft:#E6E7F5; --salvia-deep:#343878;
  --leaf:#E9EEE7; --leaf-2:#DCE3D8; --paper:#FFFFFF; --line:#CFD6CC; --line-2:#E4E8E1;
  --undecided:#B8322A; --waiting:#C8691C; --unverified:#9C7C0C; --resolved:#7C8490;
  --undecided-bg:#FBEDEB; --waiting-bg:#FCF1E6; --unverified-bg:#FAF4DD; --resolved-bg:#F0F1F3;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'BIZ UDPGothic',sans-serif;color:var(--ink);background:var(--leaf);font-size:14px;line-height:1.65;overflow:hidden}
button{font:inherit;color:inherit;cursor:pointer}

/* ---------- shell ---------- */
.app{display:grid;grid-template-columns:248px 1fr;grid-template-rows:minmax(0,1fr) auto;height:100vh;height:100dvh}
.copy{grid-column:1/-1;text-align:center;font-size:11px;color:var(--ink-3);background:var(--leaf);border-top:1px solid var(--line);padding:3px 0}
.login-copy{position:fixed;left:0;right:0;bottom:0;border-top:none;background:none;padding:8px 0}
.side{background:var(--leaf);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 14px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;padding:2px 6px 18px}
.brand .mark{width:26px;height:26px;border-radius:50%;background:
  radial-gradient(circle at 50% 30%,#6C70C4 0 30%,transparent 31%),
  radial-gradient(circle at 28% 62%,#5A5EB3 0 26%,transparent 27%),
  radial-gradient(circle at 72% 62%,#5A5EB3 0 26%,transparent 27%),var(--salvia-soft)}
.new{display:flex;align-items:center;gap:8px;width:100%;border:1px solid var(--salvia);background:var(--paper);color:var(--salvia-deep);
  border-radius:8px;padding:9px 12px;font-weight:700}
.side h3{font-size:12px;color:var(--ink-3);font-weight:400;margin:22px 6px 6px}
.conv{list-style:none}
.conv li{padding:8px 10px;border-radius:7px;margin-bottom:2px;cursor:pointer;position:relative}
.conv li:hover{background:rgba(255,255,255,.55)}
.conv li b{display:block;font-size:13px}
.conv li span{display:block;font-size:12px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv li.on{background:var(--salvia-soft);box-shadow:inset 4px 0 0 var(--salvia),0 0 0 1px var(--salvia) inset}
.conv li.on b{color:var(--salvia-deep)}
.conv li.on span{color:var(--ink-2)}
.side .me{margin-top:auto;border-top:1px solid var(--line);padding:12px 6px 0;font-size:12px;color:var(--ink-2);display:flex;justify-content:space-between}
.side .me a{color:var(--salvia-deep)}

.main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--paper);position:relative}
.top{display:flex;align-items:center;gap:16px;padding:12px 28px;border-bottom:1px solid var(--line-2)}
.fac{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:8px;padding:6px 12px;min-width:320px}
.fac small{color:var(--ink-3);font-size:12px}
.fac b{font-size:16px}
.fac .caret{margin-left:auto;color:var(--ink-3)}
.mat{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.dot{width:8px;height:8px;border-radius:50%;background:#3E8E5B;display:inline-block}
.dot.run{background:var(--waiting)}
.top .fresh{margin-left:auto;font-size:13px;color:var(--salvia-deep);background:none;border:none;text-decoration:underline;text-underline-offset:3px}
.bar{height:3px;width:160px;background:var(--line-2);border-radius:2px;overflow:hidden}
.bar i{display:block;height:100%;width:40%;background:var(--waiting)}

/* ---------- thread ---------- */
.thread{flex:1;min-height:0;overflow-y:auto;padding:26px 0 10px}
.col{max-width:900px;margin:0 auto;padding:0 28px}
.q{display:flex;justify-content:flex-end;margin-bottom:18px}
.q p{background:var(--salvia);color:#fff;border-radius:14px 14px 4px 14px;padding:9px 16px;max-width:70%}
.a{margin-bottom:22px}
.a .meta{font-size:12px;color:var(--ink-3);margin-bottom:8px}
.a p{margin-bottom:8px;max-width:760px}
.a h4{font-size:15px;margin:14px 0 4px}
.src{display:inline-block;font-size:11.5px;color:var(--salvia-deep);background:var(--salvia-soft);border-radius:4px;padding:0 6px;margin-left:3px;line-height:1.7;vertical-align:1px}
.working{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink-3);border-left:2px solid var(--line);padding:2px 0 2px 12px;margin:6px 0 10px}
.working .now{color:var(--ink-2)}
.working .now::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--salvia);margin-right:8px;animation:none}
.caretline::after{content:"";display:inline-block;width:8px;height:15px;background:var(--salvia);vertical-align:-2px;margin-left:2px}

/* ---------- ball board (the memorable element) ---------- */
.board{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:6px 0 14px}
.board .head{display:flex;align-items:baseline;gap:14px;padding:12px 16px;background:var(--leaf)}
.board .head b{font-size:15px}
.board .head span{font-size:12.5px;color:var(--ink-2)}
.grid{display:grid;grid-template-columns:86px 1fr 92px 92px 92px}
.grid > div{padding:9px 10px;border-top:1px solid var(--line-2)}
.grid .lane{border-left:1px dashed var(--line-2);text-align:center;font-size:12px;color:var(--ink-2)}
.grid .lh{font-size:12px;color:var(--ink-3);padding-top:6px;padding-bottom:6px;background:#FAFBF9}
.grid .lh.lane{color:var(--ink-2)}
.tag{display:inline-block;font-size:12px;font-weight:700;border-radius:4px;padding:1px 7px}
.t-und{color:var(--undecided);background:var(--undecided-bg)}
.t-wai{color:var(--waiting);background:var(--waiting-bg)}
.t-unv{color:var(--unverified);background:var(--unverified-bg)}
.t-res{color:var(--resolved);background:var(--resolved-bg)}
.it b{display:block;font-size:13.5px}
.it > span{display:block;font-size:12.5px;color:var(--ink-2)}
.ball{display:inline-flex;flex-direction:column;align-items:center;gap:1px}
.ball i{width:14px;height:14px;border-radius:50%;background:var(--ink)}
.ball.self i{background:var(--salvia)}
.ball small{font-size:11.5px;line-height:1.3}
.days{font-size:11px;color:var(--waiting);font-weight:700}
.row-und{box-shadow:inset 3px 0 0 var(--undecided)}
.more{padding:9px 16px;border-top:1px solid var(--line-2);font-size:12.5px;color:var(--ink-2);background:#FAFBF9}
.more u{color:var(--salvia-deep);text-underline-offset:3px}

/* ---------- composer ---------- */
.comp{border-top:1px solid var(--line-2);padding:12px 0 16px;background:var(--paper)}
.chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.chip{border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:5px 13px;font-size:13px}
.chip .f{color:var(--ink-3)}
.chip.mine{border-style:dashed}
.chip.add{border:none;color:var(--salvia-deep);padding-left:4px}
.chips .tpl{margin-left:auto;border:1px solid var(--salvia);color:var(--salvia-deep);background:var(--salvia-soft);border-radius:8px;padding:5px 12px;font-size:13px;font-weight:700}
.box{display:flex;gap:10px;align-items:flex-end;border:1.5px solid var(--line);border-radius:12px;padding:10px 10px 10px 16px}
.box.focus{border-color:var(--salvia);box-shadow:0 0 0 3px var(--salvia-soft)}
.box .txt{flex:1;min-height:44px;font-size:15px;color:var(--ink)}
.box .ph{color:var(--ink-3)}
.send{background:var(--salvia);color:#fff;border:none;border-radius:8px;padding:9px 18px;font-weight:700}
.send.stop{background:var(--paper);color:var(--ink);border:1px solid var(--line)}
.hint{font-size:12px;color:var(--ink-3);margin-top:6px}

/* ---------- dialog ---------- */
.scrim{position:absolute;inset:0;background:rgba(30,39,64,.28)}
.dlg{position:absolute;left:50%;top:72px;transform:translateX(-50%);width:min(820px,calc(100% - 32px));max-height:calc(100% - 100px);background:var(--paper);border-radius:12px;
  box-shadow:0 18px 50px rgba(30,39,64,.25);display:grid;grid-template-columns:230px 1fr;overflow:hidden}
.dlg .list{background:var(--leaf);padding:16px 10px;border-right:1px solid var(--line)}
.dlg .list h5{font-size:12px;color:var(--ink-3);font-weight:400;margin:6px 8px}
.dlg .list li{list-style:none;padding:8px 10px;border-radius:7px;font-size:13.5px}
.dlg .list li small{display:block;color:var(--ink-3);font-size:12px}
.dlg .list li.on{background:var(--paper);box-shadow:inset 3px 0 0 var(--salvia)}
.dlg .body{padding:20px 24px}
.dlg h2{font-size:18px;margin-bottom:2px}
.dlg .src-t{font-size:12.5px;color:var(--ink-3);margin-bottom:16px;background:#FAFBF9;border:1px solid var(--line-2);border-radius:6px;padding:6px 10px}
.hole{font-weight:700;color:var(--salvia-deep)}
.field{margin-bottom:12px}
.field label{display:block;font-size:12.5px;color:var(--ink-2);margin-bottom:4px}
.field label em{font-style:normal;color:var(--ink-3)}
.inp{border:1.5px solid var(--line);border-radius:8px;padding:7px 11px;font-size:14px;background:var(--paper)}
.inp.focus{border-color:var(--salvia);box-shadow:0 0 0 3px var(--salvia-soft)}
.inp.auto{background:var(--leaf);color:var(--ink-2);border-style:dashed}
.seg{display:inline-flex;border:1.5px solid var(--line);border-radius:8px;overflow:hidden}
.seg span{padding:6px 14px;font-size:13.5px;border-left:1px solid var(--line)}
.seg span:first-child{border-left:none}
.seg span.on{background:var(--salvia);color:#fff}
.prev{margin-top:14px;border-top:1px solid var(--line-2);padding-top:12px}
.prev h6{font-size:12.5px;color:var(--ink-2);font-weight:400;margin-bottom:6px}
.prev p{font-size:15px;line-height:1.8;background:var(--salvia-soft);border-radius:8px;padding:10px 14px}
.prev mark{background:none;color:var(--salvia-deep);font-weight:700;border-bottom:2px solid var(--salvia)}
.acts{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.btn{border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:8px 16px}
.btn.pri{background:var(--salvia);color:#fff;border-color:var(--salvia);font-weight:700}

/* ---------- admin ---------- */
.tabs{display:flex;gap:4px;padding:0 28px;border-bottom:1px solid var(--line-2)}
.tabs span{padding:12px 14px;font-size:14px;color:var(--ink-2)}
.tabs span.on{color:var(--ink);font-weight:700;box-shadow:inset 0 -3px 0 var(--salvia)}
.adm{display:grid;grid-template-columns:1fr 470px;gap:24px;padding:22px 28px}
.tbl{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.tbl .tt{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--leaf)}
.tbl .tt b{font-size:15px}
.tbl .tt .sub{display:flex;gap:2px;margin-left:12px}
.tbl .tt .sub span{font-size:12.5px;padding:3px 10px;border-radius:6px;color:var(--ink-2)}
.tbl .tt .sub span.on{background:var(--paper);color:var(--ink);font-weight:700}
.tbl .tt .btn{margin-left:auto;padding:5px 12px;font-size:13px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{font-weight:400;color:var(--ink-3);text-align:left;padding:7px 12px;font-size:12px;background:#FAFBF9;border-top:1px solid var(--line-2)}
td{padding:9px 12px;border-top:1px solid var(--line-2);vertical-align:top}
td.h{color:var(--ink-3);width:22px;cursor:grab}
td small{color:var(--ink-3)}
tr.sel td{background:var(--salvia-soft)}
.ed{border:1px solid var(--line);border-radius:10px;padding:18px 20px}
.ed h3{font-size:15px;margin-bottom:12px}
.area{border:1.5px solid var(--salvia);box-shadow:0 0 0 3px var(--salvia-soft);border-radius:8px;padding:10px 12px;font-size:14px;line-height:1.8;min-height:92px}
.area .ph{background:var(--salvia-soft);color:var(--salvia-deep);border-radius:4px;padding:1px 3px}
.holes{margin-top:12px}
.holes table td,.holes table th{padding:6px 10px}
.warn{font-size:12.5px;color:var(--ink-2);margin-top:10px}
.radio{display:flex;gap:18px;font-size:13.5px;margin:4px 0 12px}
.radio span::before{content:"";display:inline-block;width:12px;height:12px;border-radius:50%;border:1.5px solid var(--ink-3);margin-right:6px;vertical-align:-1px}
.radio span.on::before{border:4px solid var(--salvia)}
.pill{font-size:12px;border-radius:4px;padding:1px 7px;background:var(--leaf-2);color:var(--ink-2)}


/* ================================================================ 実装で追加 */
a{color:var(--salvia-deep)}
.side{min-height:0}
.side .scroll{flex:1;min-height:0;overflow-y:auto;margin:0 -4px;padding:0 4px}
.side .me{flex-shrink:0}
.side .me form{display:inline}
.side .me button{background:none;border:none;color:var(--salvia-deep);font-size:12px;padding:0}
.side .nav a{display:block;padding:8px 10px;border-radius:7px;margin-bottom:2px;text-decoration:none;color:var(--ink)}
.side .nav a b{display:block;font-size:13px}
.side .nav a span{display:block;font-size:12px;color:var(--ink-3)}
.side .nav a.on{background:var(--paper);box-shadow:inset 3px 0 0 var(--salvia)}
.conv li .del{position:absolute;right:6px;top:8px;display:none;border:none;background:none;color:var(--ink-3);font-size:12px}
.conv li:hover .del{display:block}
.conv .empty{font-size:12px;color:var(--ink-3);padding:6px 10px}
.menu-btn{display:none;border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:5px 10px}

.new{text-decoration:none}
.side .me{flex-direction:column;gap:4px}
.side .me > span:last-child{display:flex;gap:12px;flex-wrap:wrap}
.board .head span{white-space:nowrap}

/* 施設セレクター */
.fac{background:var(--paper);cursor:pointer;position:relative;text-align:left}
.fac.none b{color:var(--ink-3);font-weight:400}
.fac[disabled]{cursor:default}
.fac[disabled] .caret{visibility:hidden}
.facwrap{position:relative}
.facmenu{position:absolute;top:calc(100% + 6px);left:0;width:420px;max-width:calc(100vw - 32px);background:var(--paper);border:1px solid var(--line);
  border-radius:10px;box-shadow:0 12px 32px rgba(30,39,64,.18);z-index:30;padding:10px;cursor:default}
.facmenu input{width:100%;margin-bottom:8px}
.facmenu ul{list-style:none;max-height:360px;overflow-y:auto}
.facmenu li{padding:6px 10px;border-radius:6px;cursor:pointer;display:flex;justify-content:space-between;gap:10px}
.facmenu li small{color:var(--ink-3);font-size:11.5px;white-space:nowrap}
.facmenu li:hover,.facmenu li.hl{background:var(--salvia-soft)}
.facmenu h5{font-size:11.5px;color:var(--ink-3);font-weight:400;margin:6px 10px 2px}
.facmenu .empty{font-size:12.5px;color:var(--ink-3);padding:6px 10px}
.facmenu li .r{display:flex;align-items:center;gap:8px;flex-shrink:0}
.facmenu li .sweep{border:1px solid var(--salvia);background:var(--paper);color:var(--salvia-deep);border-radius:6px;padding:2px 8px;font-size:11.5px;white-space:nowrap;cursor:pointer}
.facmenu li .sweep:hover{background:var(--salvia);color:#fff}
.facmenu .hint{font-size:11.5px;color:var(--ink-3);margin:8px 10px 0;line-height:1.5}
.mat .retry{border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:1px 8px;font-size:12px}
.mat.err{color:var(--undecided)}
.mat .dot.err{background:var(--undecided)}
.bar i{transition:width .3s}

/* 会話 */
.welcome{max-width:560px;margin:12vh auto 0;text-align:center;color:var(--ink-2)}
.welcome h2{font-size:20px;color:var(--ink);margin-bottom:8px}
.a .body p,.a .body li{max-width:760px}
.a .body p{margin-bottom:8px}
.a .body h2{font-size:16px;margin:16px 0 6px}
.a .body h3,.a .body h4{font-size:15px;margin:14px 0 4px}
.a .body ul,.a .body ol{margin:0 0 8px 1.4em}
.a .body li{margin-bottom:3px}
.a .body table{margin:6px 0 10px;width:auto}
.a .body code{background:var(--leaf);padding:0 4px;border-radius:3px;font-size:13px}
.a .body pre{background:var(--leaf);padding:10px;border-radius:6px;overflow-x:auto;margin-bottom:8px}
.a a.src{text-decoration:none}
.a .stream{white-space:pre-wrap}
.a .tools{display:flex;gap:8px;margin-top:4px}
.a .tools button{border:1px solid var(--line-2);background:var(--paper);border-radius:6px;padding:2px 10px;font-size:12px;color:var(--ink-2)}
.a .notes{white-space:pre-wrap;font-size:12.5px;color:var(--ink-3);margin:2px 0 8px}
.a.err .body{color:var(--undecided)}
.working span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.board .grid .it a.src{text-decoration:none}
.board .more button{border:none;background:none;color:var(--salvia-deep);text-decoration:underline;text-underline-offset:3px;padding:0;font-size:12.5px}
.board .foot{padding:10px 16px;border-top:1px solid var(--line-2);font-size:13px}
.board .foot h6{font-size:12.5px;font-weight:700;margin:4px 0}
.board .foot ul{margin-left:1.3em}

/* 入力欄 */
.comp{flex-shrink:0}
.box textarea.txt{border:none;outline:none;resize:none;font:inherit;font-size:15px;line-height:1.6;background:transparent;max-height:200px}
.box textarea.txt:disabled{color:var(--ink-3)}
.send[disabled]{opacity:.45;cursor:default}
.chip{cursor:pointer}
.chip:hover{border-color:var(--salvia)}
.chips[aria-disabled="true"] .chip,.chips[aria-disabled="true"] .tpl{opacity:.5;pointer-events:none}
/* 入力欄の下：説明と今日の質問の数（上限に達したら理由も） */
.comp-foot{display:flex;align-items:baseline;gap:2px 16px;margin-top:6px}
.comp-foot .hint{flex:1;min-width:0;margin-top:0}
.quota{margin-left:auto;font-size:12px;color:var(--ink-3);text-align:right}
.quota b{font-weight:400;white-space:nowrap}
.quota span{display:inline-block;margin-left:8px}
.quota.full{color:var(--waiting)}
.quota.full b{font-weight:700}
.facmenu .fm-quota{margin:0 10px 6px;line-height:1.5}
/* 入力エリアの高さ：上の境目の線をつまむ（下げると定型文の段をたたむ。決めた高さは見えている高さの約6割まで、低い画面は約3割まで。中はスクロール） */
.comp{position:relative}
.grip{position:absolute;left:0;right:0;top:0;height:12px;transform:translateY(-50%);cursor:ns-resize;touch-action:none;
  user-select:none;-webkit-user-select:none;z-index:1}
.grip::before{content:"";position:absolute;left:50%;width:36px;top:50%;height:4px;margin:-2px 0 0 -18px;border-radius:2px;background:var(--line)}
.grip::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:transparent}
.grip:hover::before,.grip:focus-visible::before,.grip.drag::before{background:var(--ink-3)}
.grip:hover::after,.grip.drag::after{background:var(--ink-3)}
.grip:focus-visible{outline:2px solid var(--salvia);outline-offset:-2px}
.comp.chips-off .chips{display:none}
.box.sized textarea.txt{max-height:60vh}
@media (max-height: 500px){
  .box.sized textarea.txt{max-height:30vh}
}
@supports (height:100dvh){
  /* 見えている高さ（キーボードが出ている間は --vvh）に合わせる */
  .box.sized textarea.txt{max-height:calc(var(--vvh,100dvh) * .6)}
  @media (max-height: 500px){
    .box.sized textarea.txt{max-height:calc(var(--vvh,100dvh) * .3)}
  }
}

/* ダイアログ */
.scrim{z-index:40}
.dlg{z-index:41;overflow:auto}
.dlg.single{display:block;padding:22px 24px}
.dlg .list li{cursor:pointer}
.dlg .list li:hover{background:rgba(255,255,255,.6)}
.dlg .list .empty{font-size:12px;color:var(--ink-3);padding:4px 10px}
.inp{font:inherit;font-size:14px;color:var(--ink)}
.inp:focus{outline:none;border-color:var(--salvia);box-shadow:0 0 0 3px var(--salvia-soft)}
.inp.w{width:100%}
textarea.inp{resize:vertical;line-height:1.7}
.seg button{padding:6px 14px;font-size:13.5px;border:none;border-left:1px solid var(--line);background:var(--paper)}
.seg button:first-child{border-left:none}
.seg button.on{background:var(--salvia);color:#fff}
.btn[disabled]{opacity:.45;cursor:default}
.btn.danger{color:var(--undecided)}
.err-t{color:var(--undecided);font-size:12.5px;margin-top:6px}
.ok-t{color:#3E8E5B;font-size:12.5px;margin-top:6px}
.warn-t{color:var(--waiting);font-size:12.5px;margin-top:4px}

/* 施設の注意事項 */
.mat .notes-btn{border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:1px 8px;font-size:12px;color:var(--salvia-deep);margin-left:4px;white-space:nowrap}
.q.has-note{flex-direction:column;align-items:flex-end}
.q .q-note{font-size:11.5px;color:var(--ink-3);margin-top:4px}
.fnotes{list-style:none;margin:4px 0 12px}
.fnotes li{display:flex;gap:14px;padding:7px 2px;border-top:1px solid var(--line-2);font-size:13.5px}
.fnotes li b{font-weight:400;color:var(--ink-3);white-space:nowrap;min-width:64px}
.fnotes li.old,tr.old td:not(.ops){opacity:.5}
.fnotes-ed{margin-top:20px;border-top:1px solid var(--line-2);padding-top:14px}
.fnotes-ed h4{font-size:14px}
.fnotes-ed .warn{margin-top:4px}
.fnotes-ed table{margin-top:10px;border:1px solid var(--line-2);border-radius:8px}
.fnotes-ed td:first-child{white-space:nowrap}
.fnotes-ed td.ops{white-space:nowrap;text-align:right}
.fnotes-ed td.ops .btn{padding:2px 10px;font-size:12px;margin-left:4px}
.fnote-add{margin-top:10px}
.fnote-add > .inp{width:100%}
.fnote-add > div{display:flex;gap:8px;align-items:center;margin-top:8px}
.fnote-add > div .btn{margin-left:auto}
.fnote-add small{color:var(--ink-3);font-size:12px}

/* 1施設1会話（区切り線・たたんだ会話・「…」メニュー） */
.morewrap{position:relative;margin-left:auto;flex-shrink:0}
.more-btn{border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:1px 12px;font-size:15px;line-height:1.6;color:var(--ink-2)}
.more-btn:hover{border-color:var(--salvia);color:var(--salvia-deep)}
.moremenu{position:absolute;right:0;top:calc(100% + 6px);width:310px;max-width:calc(100vw - 32px);background:var(--paper);border:1px solid var(--line);
  border-radius:10px;box-shadow:0 12px 32px rgba(30,39,64,.18);z-index:30;padding:6px}
.moremenu button{display:block;width:100%;text-align:left;border:none;background:none;border-radius:6px;padding:7px 10px;font-size:13.5px}
.moremenu button small{display:block;font-size:11.5px;color:var(--ink-3);line-height:1.5}
.moremenu button:hover:not([disabled]){background:var(--salvia-soft)}
.moremenu button[disabled]{opacity:.45;cursor:default}
.mat .sub{color:var(--ink-2)}
.mat .retry,.mat .sub{white-space:nowrap}
.segline{display:flex;flex-direction:column;align-items:center;gap:2px;margin:8px 0 20px;font-size:12.5px;color:var(--ink-2);text-align:center}
.segline .t{display:flex;align-items:center;gap:12px;width:100%}
.segline .t::before,.segline .t::after{content:"";flex:1;min-width:24px;border-top:1px solid var(--line)}
.segline small{font-size:11.5px;color:var(--ink-3)}
.segline small.warn-t{color:var(--waiting);margin-top:0}
.segline .sweep{border:1px solid var(--salvia);background:var(--paper);color:var(--salvia-deep);border-radius:6px;padding:0 8px;font-size:11.5px;margin-left:6px}
.segline .sweep:hover{background:var(--salvia);color:#fff}
.segfold{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 10px;margin:0 0 18px;padding:7px 12px;border:1px dashed var(--line);
  border-radius:8px;background:#FAFBF9;font-size:12.5px;color:var(--ink-2)}
.segfold button{border:none;background:none;color:var(--salvia-deep);text-decoration:underline;text-underline-offset:3px;padding:0;font-size:12.5px}
.a .meta span+span::before{content:"　"}
.conv li .off{font-weight:400;font-size:12px;color:var(--ink-3)}
.conv li .del{border:1px solid var(--line);background:var(--paper);border-radius:5px;padding:0 6px;font-size:11.5px}
.conv li .del:hover{color:var(--undecided);border-color:var(--undecided)}
/* タッチ操作の端末（マウスを重ねられない）では「削除」を常に出す */
@media (hover: none){
  .conv li{padding-right:52px}
  .conv li .del{display:block}
}
.facmenu li small.has{color:var(--salvia-deep)}
/* 今日の質問の上限に達したときの「すぐ洗い出す」 */
.facmenu li .sweep[disabled],.segline .sweep[disabled]{opacity:.45;cursor:default;background:var(--paper);color:var(--salvia-deep)}

/* 通知 */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--ink);color:#fff;border-radius:8px;padding:9px 16px;
  font-size:13px;z-index:60;box-shadow:0 8px 24px rgba(30,39,64,.25)}

/* 管理・設定 */
.page{flex:1;min-height:0;overflow-y:auto}
.pagehead{display:flex;align-items:center;gap:14px;padding:16px 28px;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.pagehead h1{font-size:17px}
.pagehead p{font-size:12.5px;color:var(--ink-2)}
.pagehead .right{margin-left:auto;display:flex;gap:10px}
.pad{padding:22px 28px}
.stack{display:flex;flex-direction:column;gap:22px}
.tbl{background:var(--paper)}
.tbl .note{font-size:12.5px;color:var(--ink-2);padding:10px 14px;border-top:1px solid var(--line-2)}
.limrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.limrow .inp{width:90px}
.limrow small{flex:1 1 100%;font-size:12px;color:var(--ink-3)}
.cards td.over{color:var(--waiting);font-weight:700}
.tbl .tt .sub button{font-size:12.5px;padding:3px 10px;border-radius:6px;color:var(--ink-2);border:none;background:none}
.tbl .tt .sub button.on{background:var(--paper);color:var(--ink);font-weight:700}
tr.off td{color:var(--ink-3)}
tr.dragging td{opacity:.4}
tr.clickable{cursor:pointer}
tr.clickable:hover td{background:#F7F8FC}
td .inp{padding:4px 8px;font-size:13px}
td input[type=checkbox]{width:16px;height:16px;accent-color:var(--salvia)}
tr.general td{background:var(--waiting-bg)}
.pill+.pill{margin-left:4px}
.form-grid{display:grid;grid-template-columns:140px 1fr;gap:10px 14px;align-items:center}
.form-grid label{font-size:13px;color:var(--ink-2)}
.form-grid .hint2{grid-column:2;font-size:12px;color:var(--ink-3);margin-top:-6px}
.card{border:1px solid var(--line);border-radius:10px;padding:18px 20px;background:var(--paper)}
.card h3{font-size:15px;margin-bottom:12px}
.hl-prev{font-size:15px;line-height:1.8;background:var(--salvia-soft);border-radius:8px;padding:10px 14px;white-space:pre-wrap}
.hl-prev mark{background:none;color:var(--salvia-deep);font-weight:700;border-bottom:2px solid var(--salvia)}
.status-ok{color:#3E8E5B;font-weight:700}
.status-ng{color:var(--undecided);font-weight:700}

/* ログイン */
.login{display:flex;align-items:center;justify-content:center;height:100%}
.login .card{width:min(420px,calc(100% - 32px));padding:32px 30px;text-align:center}
.login .brand{justify-content:center;font-size:22px;padding-bottom:10px}
.login p{color:var(--ink-2);font-size:13px;margin-bottom:18px}
.login .g{display:inline-block;background:var(--salvia);color:#fff;border-radius:8px;padding:10px 22px;font-weight:700;text-decoration:none}
.login form{margin-top:22px;border-top:1px dashed var(--line);padding-top:16px;text-align:left}
.login form label{font-size:12px;color:var(--ink-3)}
.login form div{display:flex;gap:8px;margin-top:6px}
.login form .inp{flex:1}

/* ======== R0 全幅の共通（PC にも効く。見た目を変えない直しだけ） */
:root{--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px)}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{-webkit-tap-highlight-color:rgba(74,78,158,.12)}
:where(button,a,summary,[tabindex]):focus-visible{outline:2px solid var(--salvia);outline-offset:2px}
.seg button:focus-visible{outline-offset:-2px}
@supports (height:100dvh){
  .app{height:var(--vvh,100dvh)}
}
.app{position:relative}
.iss{display:contents}
.iss > div{padding:9px 10px;border-top:1px solid var(--line-2)}
.tag,.pill,.tbl .tt .sub button,.tbl .tt .btn{white-space:nowrap}
.adm > *{min-width:0}
.ed h3{overflow-wrap:anywhere}
.a .body{overflow-wrap:break-word}
.toast{width:max-content;max-width:calc(100% - 32px);cursor:pointer}
.login p.err-t{color:var(--undecided)}
.login form .btn{white-space:nowrap;flex-shrink:0}
.login form .inp{min-width:0}
.why{display:block;font-size:11.5px;line-height:1.5;color:var(--waiting)}
.moremenu button .why{color:var(--waiting)}
.oldmark{display:inline-block;margin-left:6px;padding:0 6px;border-radius:4px;font-size:11.5px;font-weight:400;line-height:1.6;color:var(--ink-2);background:var(--leaf-2);white-space:nowrap}
/* JS の style 属性から移したもの（PC の値は前と同じ） */
.addrow{display:flex;gap:8px}
.addrow .inp{flex:1;min-width:0}
.tt-search{margin-left:auto;width:180px}
.tt-off{font-size:12.5px}
.btn.sm{padding:3px 10px;font-size:12px}
.cards td.ops{text-align:right;white-space:nowrap}
.dlg.wide{width:min(960px,calc(100% - 32px));padding:0}
.imp-msg{padding:20px}
.imp-head{padding:18px 22px 8px}
.imp-filter{display:flex;gap:12px;align-items:center;padding:10px 22px;background:#FAFBF9;border-top:1px solid var(--line-2);flex-wrap:wrap}
.imp-filter .grp{display:contents}
.imp-filter .lab{font-size:13px}
.imp-filter .cnt{margin-left:auto;font-size:13px;color:var(--ink-2)}
.imp-scroll{max-height:55vh;overflow:auto}
.imp-foot{justify-content:space-between;align-items:center;padding:12px 20px;border-top:1px solid var(--line-2);margin:0}
.imp-count{font-size:13px;color:var(--ink-2)}
.imp-term{width:170px}
.imp-term.general{border-color:var(--waiting)}
.imp-name{width:200px}
.imp-yomi{width:150px}
/* 狭い幅（.ed-back は 1列、.mv はタッチ）でだけ出す要素 */
.veil,.side-x,.dlg-x,.fm-head,.side-copy,.ed-back,.mv,td.mvcell,th.mvcell{display:none}
.side-x,.dlg-x,.fm-x{align-items:center;justify-content:center;border:none;background:none;border-radius:8px;padding:4px 8px;font-size:22px;line-height:1;color:var(--ink-2)}
.ed-back{align-items:center;border:none;background:none;padding:0;margin:0 0 10px;font-size:13px;color:var(--salvia-deep);text-decoration:underline;text-underline-offset:3px}
.mv{align-items:center;justify-content:center;border:1px solid var(--line);background:var(--paper);border-radius:8px;padding:0 10px;font-size:16px;font-weight:700;color:var(--ink-2)}
.mv[disabled]{opacity:.35;cursor:default}
@keyframes sheet-in{from{transform:translateY(16px);opacity:0}to{transform:none;opacity:1}}

/* 一覧と編集欄が並ぶ幅：長いアドレスだけ、一覧の残りの幅（100vw − 左の欄・余白・編集欄・ほかの列）で折り返す。ふつうのアドレスは1行のまま */
@media (min-width: 1101px){
  .cards small.addr{display:inline-block;width:max-content;max-width:max(8em,calc(100vw - 1084px));overflow-wrap:anywhere}
  /* 利用者：今日の質問・API の列を足した分、編集欄を少し細くする（長いアドレスを折り返す幅も、その分だけ変える） */
  .adm.adm-users{grid-template-columns:1fr 390px}
  .adm-users .cards small.addr{max-width:max(8em,calc(100vw - 1140px))}
}
/* 利用者の一覧：列の余白を詰め、見出しを1行に。それでも入りきらない幅では横にスクロールする（列を切らない） */
.users-scroll{overflow-x:auto}
.users-t th{white-space:nowrap}
@media (min-width: 761px){
  .users-t th,.users-t td{padding-left:8px;padding-right:8px}
  .users-t td.nw{white-space:nowrap}
}

/* ======== R1 中幅      @media (max-width: 1100px) */
@media (max-width: 1100px){
  .adm{grid-template-columns:1fr}
  .top{flex-wrap:wrap;row-gap:6px}
  .facwrap{flex:1 1 0;min-width:0}
  .fac{min-width:0;max-width:100%}
  .morewrap{order:2}
  .mat{order:3;flex:1 1 100%;min-width:0}
  .mat:empty{display:none}
  .ed-back{display:inline-flex}
}

/* ======== R2 狭い      @media (max-width: 900px), (max-height: 500px) */
@media (max-width: 900px), (max-height: 500px){
  /* 殻：左の欄を引き出しにする */
  .app{grid-template-columns:1fr}
  .app > .copy{display:none}
  .side{position:fixed;inset:0 auto 0 0;width:min(300px,86vw);z-index:50;transform:translateX(-100%);visibility:hidden;transition:transform .2s,visibility 0s .2s;
    padding:calc(18px + var(--safe-t)) 14px calc(12px + var(--safe-b)) calc(14px + var(--safe-l))}
  body.side-open .side{transform:none;visibility:visible;transition:transform .2s;box-shadow:0 0 30px rgba(30,39,64,.25)}
  .veil{display:block;position:fixed;inset:0;z-index:44;background:rgba(30,39,64,.28);opacity:0;visibility:hidden;transition:opacity .2s,visibility 0s .2s}
  body.side-open .veil,body.pop-open .veil{opacity:1;visibility:visible;transition:opacity .2s}
  .side-x{display:inline-flex;margin-left:auto}
  .brand{padding-bottom:12px}
  .side .me{padding:8px 0 0;font-size:13px}
  .side .me > span:first-child{padding:0 6px 4px;color:var(--ink-3);font-size:12px}
  .side .me > span:last-child{flex-direction:column;gap:0;flex-wrap:nowrap}
  .side .me a,.side .me button{display:flex;align-items:center;width:100%;padding:6px;border-radius:7px;font-size:13px;text-align:left;text-decoration:none}
  .side .me form{display:block;border-top:1px solid var(--line);margin-top:6px;padding-top:6px}
  .side-copy{display:block;font-size:11px;color:var(--ink-3);padding:8px 6px 0}
  .menu-btn{display:inline-flex;align-items:center;justify-content:center}
  .main{padding-left:var(--safe-l);padding-right:var(--safe-r)}
  .chatmain{overflow:hidden;overflow:clip}
  .pagemain{overflow:hidden auto}
  .pagemain > .page{flex:none;min-height:auto;overflow:visible}

  /* チャットの上：1行のバー＋1行の材料の状態 */
  .top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"menu fac more" "mat mat mat";align-items:center;gap:6px 8px;
    padding:calc(6px + var(--safe-t)) 16px 6px;position:relative}
  .top .menu-btn{grid-area:menu}
  .facwrap{grid-area:fac;flex:1;min-width:0}
  .fac{min-width:0;width:100%;padding:3px 10px;gap:8px}
  .fac small{white-space:nowrap}
  .fac b{min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}
  .fac .caret{flex:none}
  .mat{grid-area:mat;flex-wrap:nowrap;gap:6px;min-width:0;font-size:12.5px;line-height:1.5}
  .mat:empty{display:none}
  .mat .mt{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mat .dot,.mat .notes-btn,.mat .retry{flex:none}
  .mat > .sub,.mat > .warn-t{display:none}
  .mat.trunc{cursor:pointer}
  .mat.open{flex-wrap:wrap}
  .mat.open .mt{white-space:normal;overflow:visible;flex-basis:calc(100% - 20px)}
  .mat.open > .sub,.mat.open > .warn-t{display:inline}
  .mat .bar{position:absolute;left:0;right:0;bottom:-1px;width:auto;height:2px;border-radius:0}
  .top .fresh{margin-left:0}
  .morewrap{grid-area:more;margin-left:0}

  /* チャットの会話と下：1行の定型文＋入力欄 */
  .thread{padding:12px 0 8px}
  .working span{white-space:normal}
  .comp{padding:8px 0 calc(8px + var(--safe-b))}
  .comp .hint{display:none}
  .comp-foot{margin-top:4px}
  .box{padding:6px 6px 6px 12px;gap:8px}
  .box textarea.txt{max-height:min(200px,30vh)}
  .send{flex:none;padding:9px 16px}

  /* 施設を選ぶ：全画面のパネル */
  .facmenu{position:fixed;inset:0;width:auto;max-width:none;border:none;border-radius:0;box-shadow:none;z-index:46;display:flex;flex-direction:column;
    padding:calc(8px + var(--safe-t)) calc(16px + var(--safe-r)) calc(8px + var(--safe-b)) calc(16px + var(--safe-l))}
  .fm-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 0 8px}
  .fm-head b{font-size:16px}
  .fm-x{display:inline-flex}
  .facmenu input{flex:none}
  .facmenu ul{flex:1;min-height:0;max-height:none}
  .facmenu li{flex-wrap:wrap;gap:4px 10px;padding:10px 6px;border-radius:0;border-top:1px solid var(--line-2)}
  .facmenu li .nm{flex:1 1 100%;font-size:15px}
  .facmenu li .r{flex:1 1 100%;flex-wrap:wrap;flex-shrink:1;gap:4px 10px}
  .facmenu li small{white-space:normal}
  .facmenu li .sweep{margin-left:auto;padding:4px 12px;font-size:13px}
  .facmenu h5{margin:12px 6px 4px}
  .facmenu .hint{flex:none;margin:8px 4px 0}

  /* 「…」メニュー：下からのシート */
  .moremenu{position:fixed;left:0;right:0;top:auto;bottom:0;width:auto;max-width:none;border:none;border-radius:12px 12px 0 0;z-index:46;
    padding:6px 8px calc(8px + var(--safe-b));max-height:calc(100vh - 24px);overflow-y:auto;animation:sheet-in .16s ease-out}
  .moremenu button{padding:10px 12px;font-size:15px;border-top:1px solid var(--line-2);border-radius:0}
  .moremenu button:first-child{border-top:none}
  .moremenu button small{font-size:12px}

  /* ダイアログ：下からのシート */
  .scrim{position:fixed}
  .dlg{position:fixed;left:0;right:0;top:auto;bottom:0;transform:none;width:auto;max-height:calc(100vh - 24px);border-radius:12px 12px 0 0;animation:sheet-in .16s ease-out}
  .dlg.single{padding:20px 16px 0}
  .dlg.wide{width:auto;padding:0}
  .dlg .body{padding:16px 16px 0}
  .dlg h2{padding-right:40px}
  .dlg-x{display:inline-flex;position:absolute;top:6px;right:6px;z-index:2}
  .dlg .acts{position:sticky;bottom:0;z-index:1;margin:16px -16px 0;padding:12px 16px calc(12px + var(--safe-b));background:var(--paper);border-top:1px solid var(--line-2)}
  .dlg .acts.imp-foot{margin:0;padding:12px 16px calc(12px + var(--safe-b))}
  .seg{border:none;display:flex;flex-wrap:wrap;gap:6px;overflow:visible;border-radius:0}
  .seg button{border:1.5px solid var(--line);border-radius:8px;white-space:nowrap}
  .seg button:first-child{border-left:1.5px solid var(--line)}
  .seg button.on{border-color:var(--salvia)}
  .imp-head{padding:18px 16px 8px}
  .imp-filter{padding:10px 16px}
  .imp-scroll{max-height:none;overflow:visible}
  .imp-name,.imp-term,.imp-yomi{width:100%;min-width:120px}
  /* 表のまま出す幅（R3 より広い）：見出しと短い値を1文字ずつ割らない */
  .cards th,.cards td.nw,.cards td.c-kind,.cards td.c-phase{white-space:nowrap}

  /* ページの見出し（管理・設定）：見出しも本文と一緒に流す */
  .pagehead{padding:calc(10px + var(--safe-t)) 16px 10px;gap:6px 10px}
  .pagehead p{flex:1 1 100%}
  .pagehead .right{flex-wrap:wrap;justify-content:flex-end}

  .toast{top:calc(var(--safe-t) + 60px);bottom:auto}
  .login-copy{padding-bottom:calc(8px + var(--safe-b))}
}
@supports (height:100dvh){
  @media (max-width: 900px), (max-height: 500px){
    .facmenu{bottom:auto;height:var(--vvh,100dvh)}
    .moremenu,.dlg{max-height:calc(var(--vvh,100dvh) - 24px)}
    .box textarea.txt{max-height:min(200px,30dvh)}
  }
}

/* 定型文の行：狭い幅とタッチ端末では1行の横スクロールにする（テンプレートを先頭に）。タッチでは 44px のチップが何段にも折り返さないように */
@media (max-width: 900px), (max-height: 500px), (pointer: coarse){
  .chips{flex-wrap:nowrap;overflow-x:auto;margin-bottom:8px;scrollbar-width:thin}
  .chip{flex:none;white-space:nowrap}
  .chips .tpl{order:-1;margin-left:0;flex:none;white-space:nowrap}
}

/* ======== R3 スマホ幅  @media (max-width: 760px) */
@media (max-width: 760px){
  .col{padding:0 16px}
  .q p{max-width:88%}
  .welcome{margin-top:6vh}
  .a .body table,.holes table{display:block;overflow-x:auto}
  .a .body th,.a .body td{padding:7px 8px;min-width:5em;line-break:strict}
  .src{font-size:12px}
  td small{font-size:12px}
  .facmenu li small{font-size:12px}

  /* 課題カード：1件を1枚に。下に自社・病院・ベンダーのレーン */
  .board .head{flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px}
  .grid{display:block}
  .grid .lh{display:none}
  .iss{display:flex;flex-wrap:wrap;align-items:flex-start;padding:0 12px 10px;border-top:1px solid var(--line-2)}
  .iss.und{box-shadow:inset 3px 0 0 var(--undecided)}
  .iss.res{padding-bottom:0}
  .iss > div{border-top:none}
  .iss > .st{flex:none;padding:10px 0 6px}
  .iss > .row-und{box-shadow:none}
  .iss > .it{flex:1 1 calc(100% - 96px);min-width:0;padding:10px 0 6px 10px}
  .iss > .lane{flex:1 1 30%;align-self:stretch;padding:6px 2px 8px;background:#FAFBF9}
  .iss > .lane::before{content:attr(data-lane);display:block;font-size:12px;color:var(--ink-3);margin-bottom:2px}
  .iss > .lane.on::before{font-weight:700;color:var(--ink)}
  .iss > .lane:nth-child(3){border-left:none;border-radius:6px 0 0 6px}
  .iss > .lane:nth-child(5){border-radius:0 6px 6px 0}
  .iss.res > .lane{display:none}
  .board .more{padding:8px 12px}

  /* テンプレートのダイアログ：一覧を1行の横並びに */
  .dlg{grid-template-columns:1fr}
  .dlg .list{display:flex;gap:8px;overflow-x:auto;border-right:none;border-bottom:1px solid var(--line);padding:10px 12px;margin-right:52px;scrollbar-width:none;
    box-shadow:52px -1px 0 var(--leaf),52px 0 0 var(--line)}
  .dlg .list::-webkit-scrollbar{display:none}
  .dlg .list ul{display:contents}
  .dlg .list h5,.dlg .list li small,.dlg .list .empty{display:none}
  .dlg .list li{flex:none;display:flex;align-items:center;white-space:nowrap;border:1px solid var(--line);border-radius:999px;background:var(--paper);padding:5px 14px}
  .dlg .list li.mine{border-style:dashed}
  .dlg .list li.on{background:var(--salvia-soft);border-color:var(--salvia);box-shadow:none;color:var(--salvia-deep);font-weight:700}

  /* 管理・設定 */
  .pad{padding:16px}
  .adm{padding:16px;gap:16px}
  .stack{gap:16px}
  .card,.ed{padding:16px}
  .form-grid{grid-template-columns:1fr;gap:6px 14px}
  .form-grid .hint2{grid-column:1;margin-top:-2px}
  .tbl .tt{flex-wrap:wrap;gap:8px 12px;padding:10px 12px}
  .tbl .tt .sub{margin-left:0}
  .tt-search{flex:1 1 100%;width:auto;margin-left:0}
  .addrow{flex-wrap:wrap}
  .addrow .inp{flex:1 1 100%}
  .addrow .btn{margin-left:auto}
  .addrow .inp::placeholder{font-size:13px}
  .limrow label{flex:1 1 100%}

  /* 管理の表：1行を1枚のカードに */
  .cards,.cards tbody{display:block}
  .cards thead{display:none}
  .cards tr{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:12px 14px;border-top:1px solid var(--line-2)}
  .cards td{display:block;padding:0;border-top:none;min-width:0}
  .cards tr.clickable td{height:auto}
  .cards td.lead{flex:1 1 100%}
  .cards td small{overflow-wrap:anywhere}
  .cards td[data-label]::before{content:attr(data-label);margin-right:6px;font-size:12px;color:var(--ink-3)}
  .cards td.ops{flex:1 1 100%;display:flex;justify-content:flex-end;align-items:center;gap:8px;white-space:normal}
  .cards td.h,.cards td.nil,.cards td.mvcell{display:none}
  .cards .mv.dn{margin-right:auto}
  .cards tr.sel{background:var(--salvia-soft)}
  .cards tr.general{background:var(--waiting-bg)}
  .cards tr.clickable:hover{background:#F7F8FC}
  .cards tr.sel td,.cards tr.general td,.cards tr.clickable:hover td{background:none}
  .cards tr.sel:hover{background:var(--salvia-soft)}
  .cards td.fld{flex:1 1 100%}
  .cards td.fld::before{display:block;margin:0 0 2px}
  .cards td.c-chk,.cards td.c-tk{order:-2}
  .cards td.c-kind,.cards td.c-phase{order:-1}
  .cards td.c-tk{margin-right:auto}
  .fnotes-ed td.ops .btn{margin-left:0}
  .imp-filter .grp{display:flex;align-items:center;gap:8px;flex:1 1 100%;min-width:0}
  .imp-filter .grp .seg{flex:1;min-width:0}
  .imp-filter .cnt{margin-left:0;margin-right:auto}
  .imp-foot{flex-wrap:wrap;gap:8px}
  .imp-foot > span:last-child{margin-left:auto}
}

/* ======== R4 小さい    @media (max-width: 480px) */
@media (max-width: 480px){
  .fac small{display:none}
  .fac b{font-size:14px}
}

/* ======== R5 低い      @media (max-height: 500px) */
@media (max-height: 500px){
  .pagehead p,.facmenu .hint,.imp-head .warn{display:none}
  .thread{padding-top:8px}
  .welcome{margin-top:16px}
  .login{overflow-y:auto;padding:12px 0 36px}
  .login .card{margin:auto;padding:20px 24px}

  /* 引き出し：一覧だけでなく欄全体をスクロールし、下の設定・管理・ログアウトは1行に */
  .side{overflow-y:auto;overscroll-behavior:contain;padding-top:calc(10px + var(--safe-t))}
  .side .scroll{flex:none;min-height:auto;overflow:visible}
  .brand{padding-bottom:8px}
  .side h3{margin-top:12px}
  .side .me{margin-top:auto;padding-top:6px}
  .side .me > span:last-child{flex-direction:row;flex-wrap:wrap;gap:0 4px}
  .side .me a,.side .me button{width:auto;padding:6px 10px}
  .side .me form{display:block;border-top:none;margin-top:0;padding-top:0}
  .side-copy{padding-top:4px}
}

/* 横向き（低くて広い）：上のバーと材料の状態を1行に、施設のパネルは1件1行に */
@media (max-height: 500px) and (min-width: 600px){
  .top{grid-template-columns:auto minmax(0,1fr) minmax(0,1.2fr) auto;grid-template-areas:"menu fac mat more"}
  .facmenu li{flex-wrap:nowrap;align-items:center;padding:8px 6px}
  .facmenu li .nm{flex:1 1 auto;min-width:0}
  .facmenu li .r{flex:0 1 auto;flex-wrap:nowrap;justify-content:flex-end}
  .facmenu li .r small{white-space:nowrap}
}

/* 見えている高さがとても低い（横向きでキーボードが出ている。.vv-low は common.js が付ける）：
   ダイアログの操作の帯を固定せず、施設のパネルは見出しを省いて絞り込みの欄と × を1行に */
@media (max-width: 900px), (max-height: 500px){
  .vv-low .dlg .acts{position:static}
  .vv-low .facmenu{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr);column-gap:8px}
  .vv-low .fm-head{display:contents}
  .vv-low .fm-head b,.vv-low .facmenu .hint,.vv-low .facmenu .fm-quota{display:none}
  .vv-low .fm-x{grid-column:2;grid-row:1;align-self:start}
  .vv-low .facmenu input{grid-column:1;grid-row:1}
  .vv-low .facmenu ul{grid-column:1/-1;grid-row:2}
}

/* ======== R6 タッチ    @media (pointer: coarse) */
@media (pointer: coarse){
  input,select,textarea,.inp{font-size:16px}
  td .inp{font-size:16px}
  .box textarea.txt{font-size:16px}
  .btn,.send,.new,.fac,.chip,.chips .tpl,.moremenu button,.seg button,.tbl .tt .sub button,.facmenu li,.facmenu li .sweep,.dlg .list li,
  .side .me a,.side .me button,.login .g,.ed-back,.inp{min-height:44px}
  .menu-btn,.more-btn,.side-x,.dlg-x,.fm-x,.mv{min-width:44px;min-height:44px}
  /* 入力エリアのつまみ：タッチでは中央だけを当たりにして上下に広げる（会話の下端のタップを奪わない） */
  .grip{left:50%;right:auto;width:72px;height:44px;transform:translate(-50%,-50%)}
  a.btn,.side .me a{display:inline-flex;align-items:center}
  .conv li{padding-right:56px}
  .conv li .del{top:50%;right:4px;transform:translateY(-50%);min-width:44px;min-height:44px}
  .chkrow{display:flex;align-items:center;gap:8px;min-height:44px}
  .chkrow input[type=checkbox],.chk input[type=checkbox]{width:22px;height:22px}
  .chk{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
  tr.clickable td{height:44px}
  td.h,th.h{display:none}
  .mv{display:inline-flex}
  td.mvcell,th.mvcell{display:table-cell}
  .cards td.mvcell{display:flex}
  /* 文の流れの中のボタン：見た目は 36px、押せる範囲は ::after で 44px */
  .mat .notes-btn,.mat .retry,.a .tools button,.segfold button,.board .more button,.segline .sweep{position:relative;min-height:36px}
  .mat .notes-btn::after,.mat .retry::after,.a .tools button::after,.segfold button::after,.board .more button::after,.segline .sweep::after{content:"";position:absolute;inset:-4px 0}
  .segfold button,.board .more button{min-width:44px}
  /* 出典チップだけは 28px・間隔 6px */
  .src{line-height:28px;margin:3px 0 3px 6px}
}
@media (hover: none) and (pointer: coarse){
  .kbd-only{display:none}
  .chips{scrollbar-width:none}
  .chips::-webkit-scrollbar{display:none}
}
@media (pointer: coarse) and (max-width: 900px), (pointer: coarse) and (max-height: 500px){
  .typing .chips{display:none}
}
@media (pointer: coarse) and (max-height: 500px) and (orientation: landscape){
  .typing .top{display:none}
}

/* ======== R7 動き      @media (prefers-reduced-motion: reduce) */
@media (prefers-reduced-motion: reduce){
  .side,body.side-open .side,.veil,body.side-open .veil,body.pop-open .veil,.bar i{transition:none}
  .dlg,.moremenu{animation:none}
}
