  :root{
    --ink:#1b2430; --ink-2:#4a5568; --ink-3:#7b8794;
    --line:#e2e6eb; --line-2:#cfd6de;
    --bg:#f4f6f8; --card:#fff;
    --brand:#1f5673; --brand-2:#2d7a9e; --brand-bg:#eef4f8;
    --ok:#1a7f5a; --ok-bg:#e8f5ef;
    --warn:#a8620a; --warn-bg:#fdf3e3;
    --red:#c0392b;
    --r:10px;
  }
  *{box-sizing:border-box; -webkit-tap-highlight-color:rgba(31,86,115,.12)}
  html,body{margin:0;padding:0}
  body{
    font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic Medium","Yu Gothic",Meiryo,system-ui,sans-serif;
    background:var(--bg); color:var(--ink); font-size:14px; line-height:1.7;
    -webkit-font-smoothing:antialiased; -webkit-text-size-adjust:100%;
  }
  button,input,select,textarea{font-family:inherit}
  [hidden]{display:none !important}

  /* ---------- 共通パーツ ---------- */
  .btn{
    border:1px solid var(--line-2); background:#fff; color:var(--ink); padding:9px 16px;
    border-radius:8px; cursor:pointer; font-size:13.5px; font-weight:600; white-space:nowrap;
    min-height:40px; display:inline-flex; align-items:center; justify-content:center; gap:6px;
  }
  .btn:active{transform:translateY(1px)}
  .btn.primary{background:var(--brand); border-color:var(--brand); color:#fff}
  .btn.sm{padding:5px 11px; font-size:12.5px; min-height:32px; font-weight:500}
  .btn.danger{color:var(--red); border-color:#e8c4bf}
  .btn.block{width:100%}
  .btn:disabled{opacity:.45; cursor:not-allowed}
  .chipbadge{display:inline-block; font-size:11px; padding:1px 8px; border-radius:20px; font-weight:600}
  .st-draft{background:#eceff2; color:var(--ink-2)}
  .st-issued{background:var(--brand-bg); color:var(--brand)}
  .st-done{background:var(--ok-bg); color:var(--ok)}
  .card{background:var(--card); border:1px solid var(--line); border-radius:var(--r); padding:16px 18px}
  .card.full{grid-column:1/-1}
  .card h3{margin:0 0 12px; font-size:13px; letter-spacing:.04em; color:var(--brand); display:flex; align-items:center; gap:8px}
  .card h3 .n{width:20px;height:20px;border-radius:5px;background:var(--brand-bg);color:var(--brand);display:grid;place-items:center;font-size:11px;flex:none}
  .card h3 .tag{margin-left:auto;font-weight:400;font-size:11px;color:var(--ink-3);text-align:right}
  .f{display:flex; flex-direction:column; gap:3px; margin-bottom:11px}
  .f > label{font-size:11.5px; color:var(--ink-3); font-weight:600}
  .row{display:grid; gap:10px}
  .row.c2{grid-template-columns:1fr 1fr}
  .row.c3{grid-template-columns:1fr 1fr 1fr}
  input[type=text],input[type=date],input[type=time],input[type=number],input[type=tel],
  input[type=email],input[type=password],input[type=search],select,textarea{
    width:100%; border:1px solid var(--line-2); border-radius:8px; padding:9px 10px;
    font-size:16px; color:var(--ink); background:#fff; min-height:40px;
  }
  textarea{resize:vertical; min-height:74px; line-height:1.6}
  input:focus,select:focus,textarea:focus{outline:2px solid #bcd8e8; outline-offset:-1px; border-color:var(--brand-2)}
  @media (min-width:820px){
    input[type=text],input[type=date],input[type=time],input[type=number],input[type=tel],
    input[type=email],input[type=password],input[type=search],select,textarea{font-size:13.5px; min-height:36px; padding:7px 9px}
    .btn{min-height:36px; padding:7px 14px}
  }
  .hint{background:var(--brand-bg); border:1px solid #d4e4ee; color:#215068; padding:11px 14px; border-radius:var(--r); font-size:12.5px; margin-bottom:18px}
  .muted{color:var(--ink-3); font-size:11.5px}

  /* ---------- ログイン ---------- */
  #login{min-height:100dvh; display:grid; place-items:center; padding:24px 16px;
    background:linear-gradient(160deg,#1f5673 0%,#2d7a9e 55%,#3f97b8 100%)}
  .loginbox{width:100%; max-width:400px; background:#fff; border-radius:16px; padding:30px 26px 26px; box-shadow:0 18px 50px rgba(10,40,60,.28)}
  .brand{display:flex; align-items:center; gap:11px; margin-bottom:4px}
  .brand .mark{width:38px;height:38px;border-radius:10px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:19px;font-weight:700;flex:none}
  .brand .nm{font-size:20px; font-weight:700; letter-spacing:.02em; line-height:1.25}
  .brand .nm small{display:block; font-size:10.5px; color:var(--ink-3); font-weight:400; letter-spacing:.08em}
  .loginbox p.lead{font-size:12.5px; color:var(--ink-3); margin:14px 0 20px}
  .err{background:#fdecea; color:#a3271b; border:1px solid #f3c8c2; border-radius:8px; padding:9px 12px; font-size:12.5px; margin-bottom:12px}
  .demo{margin-top:20px; border-top:1px solid var(--line); padding-top:14px; font-size:11.5px; color:var(--ink-3)}
  .demo b{color:var(--ink-2)}
  .demo table{width:100%; border-collapse:collapse; margin-top:7px; font-size:11.5px}
  .demo td{padding:3px 0}
  .demo .use{color:var(--brand-2); cursor:pointer; text-decoration:underline; font-weight:600}

  /* ---------- アプリ枠 ---------- */
  .topbar{position:sticky; top:0; z-index:60; background:#fff; border-bottom:1px solid var(--line);
    display:flex; align-items:center; gap:12px; padding:9px 14px; padding-top:calc(9px + env(safe-area-inset-top))}
  .topbar .brand .mark{width:28px;height:28px;font-size:14px;border-radius:8px}
  .topbar .brand .nm{font-size:15px}
  .topbar .brand .nm small{font-size:9.5px}
  .topbar .spacer{flex:1}
  .who{display:flex; align-items:center; gap:8px; font-size:12px; color:var(--ink-2)}
  .who .av{width:30px;height:30px;border-radius:50%;background:var(--brand-bg);color:var(--brand);display:grid;place-items:center;font-weight:700;font-size:12px;flex:none}
  .who .role{font-size:10px; color:var(--ink-3); display:block; line-height:1.2}
  .navbar{position:sticky; top:0; z-index:55; background:#fff; border-bottom:1px solid var(--line); overflow-x:auto; -webkit-overflow-scrolling:touch}
  .navbar .inner{display:flex; gap:2px; padding:0 10px; width:max-content; min-width:100%}
  .navbar button{border:0; background:transparent; padding:11px 15px; font-size:13px; font-weight:600; color:var(--ink-3); cursor:pointer;
    border-bottom:2.5px solid transparent; white-space:nowrap; min-height:44px}
  .navbar button.on{color:var(--brand); border-bottom-color:var(--brand)}
  .wrap{max-width:1180px; margin:0 auto; padding:18px 14px 90px}
  .pagehead{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:16px}
  .pagehead h2{margin:0; font-size:18px; letter-spacing:.02em}
  .pagehead .spacer{flex:1}

  /* 下部のアクションバー（スマホ） */
  .actionbar{position:fixed; left:0; right:0; bottom:0; z-index:70; background:#fff; border-top:1px solid var(--line);
    display:flex; gap:8px; padding:9px 12px; padding-bottom:calc(9px + env(safe-area-inset-bottom)); overflow-x:auto}
  .actionbar .btn{flex:1 0 auto}

  /* ---------- 編集フォーム ---------- */
  .grid{display:grid; grid-template-columns:1fr 1fr; gap:14px}
  table.ed{width:100%; border-collapse:collapse; font-size:13px}
  table.ed th{text-align:left; font-size:11px; color:var(--ink-3); font-weight:600; padding:0 6px 5px; border-bottom:1px solid var(--line)}
  table.ed td{padding:4px 3px; vertical-align:middle}
  .del{border:0;background:transparent;color:var(--red);cursor:pointer;font-size:18px;padding:0 6px;line-height:1;min-height:36px}
  .checkgroup h4{margin:0 0 8px; font-size:12px; color:var(--ink-2); border-bottom:1px solid var(--line); padding-bottom:5px}
  .checks{display:grid; grid-template-columns:1fr 1fr; gap:18px}
  .chk{display:flex; align-items:center; gap:9px; padding:5px 0; font-size:13px}
  .chk input[type=checkbox]{width:20px;height:20px;margin:0;accent-color:var(--brand);flex:none}
  .chk span.nm{flex:1; min-width:0}
  .chk input[type=text]{width:120px; flex:none; min-height:32px; padding:4px 7px; font-size:13px}
  .chk-add{display:flex;gap:6px;margin-top:9px}
  .money{text-align:right; font-variant-numeric:tabular-nums}
  .totals{margin-top:12px; border-top:2px solid var(--line-2); padding-top:10px; font-size:13.5px}
  .totals div{display:flex; justify-content:space-between; padding:2px 0; gap:10px}
  .totals .big{font-size:19px; font-weight:700; color:var(--brand); border-top:1px solid var(--line); margin-top:6px; padding-top:8px}
  .deliv{display:grid; grid-template-columns:repeat(4,1fr); gap:12px}
  .dcard{border:1px solid var(--line); border-radius:9px; padding:14px; text-align:center; background:#fff}
  .dcard .ic{font-size:22px; line-height:1}
  .dcard b{display:block; font-size:12.5px; margin:6px 0 4px}
  .dcard p{margin:0 0 10px; font-size:11px; color:var(--ink-3); line-height:1.5}
  .sealthumb{display:flex; align-items:center; gap:10px; background:var(--bg); border-radius:8px; padding:8px 10px; margin-bottom:10px}
  input[type=range]{width:100%; accent-color:var(--brand); min-height:32px}
  input[type=file]{font-size:12.5px; padding:7px}

  /* ---------- 一覧 ---------- */
  .filters{display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:10px; margin-bottom:14px}
  .listtable{width:100%; border-collapse:collapse; font-size:13px; background:#fff; border:1px solid var(--line); border-radius:var(--r); overflow:hidden}
  .listtable th{background:#f7f9fa; text-align:left; font-size:11.5px; color:var(--ink-2); padding:9px 12px; border-bottom:1px solid var(--line); white-space:nowrap}
  .listtable td{padding:11px 12px; border-bottom:1px solid var(--line); vertical-align:middle}
  .listtable tr:last-child td{border-bottom:0}
  .listtable tbody tr{cursor:pointer}
  .listtable tbody tr:hover{background:#fafcfd}
  .listtable td.money{text-align:right; font-variant-numeric:tabular-nums; font-weight:600}
  .empty{background:#fff; border:1px dashed var(--line-2); border-radius:var(--r); padding:40px 20px; text-align:center; color:var(--ink-3); font-size:13px}
  .kpis{display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:16px}
  .kpi{background:#fff; border:1px solid var(--line); border-radius:var(--r); padding:13px 15px}
  .kpi label{display:block; font-size:11px; color:var(--ink-3)}
  .kpi b{font-size:21px; font-variant-numeric:tabular-nums; letter-spacing:.01em}
  .kpi b small{font-size:12px; font-weight:400; color:var(--ink-3)}

  /* ---------- 詳細 ---------- */
  .detailgrid{display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:16px; align-items:start}
  .log{list-style:none; margin:0; padding:0; font-size:12px}
  .log li{padding:8px 0 8px 18px; border-bottom:1px dashed var(--line); position:relative}
  .log li:last-child{border-bottom:0}
  .log li::before{content:""; position:absolute; left:2px; top:15px; width:7px; height:7px; border-radius:50%; background:var(--brand-2)}
  .log time{display:block; color:var(--ink-3); font-size:10.5px}

  /* ---------- 書類 ---------- */
  .paperwrap{display:flex; flex-direction:column; align-items:center; gap:20px}
  .paper{width:210mm; min-height:297mm; background:#fff; padding:16mm 15mm; box-shadow:0 3px 18px rgba(0,0,0,.10)}
  .doc-title{text-align:center; margin:0 0 4px; font-size:22px; letter-spacing:.32em; font-weight:700}
  .doc-sub{text-align:center; color:var(--ink-3); font-size:11px; letter-spacing:.14em; margin-bottom:20px}
  .doc-head{display:flex; justify-content:space-between; gap:24px; align-items:flex-start; margin-bottom:18px}
  .cust{flex:1}
  .cust .nm{font-size:17px; font-weight:700; border-bottom:1px solid var(--ink); padding-bottom:5px; display:inline-block; min-width:62%}
  .cust p{margin:9px 0 0; font-size:12px; color:var(--ink-2); line-height:1.8}
  .issuer{font-size:11.5px; text-align:right; line-height:1.75; color:var(--ink-2); min-width:44%; position:relative}
  .issuer .co{font-size:14px; font-weight:700; color:var(--ink)}
  .issuer .reg{display:inline-block; margin-top:3px; background:var(--bg); padding:1px 7px; border-radius:4px; font-size:11px; color:var(--ink-2)}
  .co-line{display:flex; justify-content:flex-end; align-items:center}
  .seal{display:block}
  .co-line .seal{margin-left:-14px; position:relative; z-index:2}
  .meta{display:grid; grid-template-columns:repeat(4,1fr); border:1px solid var(--line-2); border-radius:6px; overflow:hidden; margin-bottom:20px}
  .meta div{padding:7px 10px; border-right:1px solid var(--line)}
  .meta div:last-child{border-right:0}
  .meta label{display:block; font-size:9.5px; color:var(--ink-3); letter-spacing:.08em}
  .meta b{font-size:12.5px; font-weight:600}
  h2.sec{font-size:12.5px; margin:22px 0 9px; padding-left:9px; border-left:3px solid var(--brand); letter-spacing:.06em; break-after:avoid; page-break-after:avoid}
  .sec-block{break-inside:avoid; page-break-inside:avoid}
  table.doc{width:100%; border-collapse:collapse; font-size:11.5px}
  table.doc th,table.doc td{border:1px solid var(--line-2); padding:6px 9px; text-align:left; vertical-align:top}
  table.doc th{background:#f7f9fa; font-weight:600; color:var(--ink-2); font-size:11px; white-space:nowrap}
  table.doc td.money{text-align:right; font-variant-numeric:tabular-nums}
  .taskcols{display:grid; grid-template-columns:1fr 1fr; gap:10px}
  .taskbox{border:1px solid var(--line-2); border-radius:6px; padding:8px 11px; break-inside:avoid; page-break-inside:avoid}
  .taskbox h5{margin:0 0 6px; font-size:11px; color:var(--ink-2); border-bottom:1px solid var(--line); padding-bottom:4px}
  .tasklist{font-size:11.5px; margin:0; padding:0; list-style:none}
  .tasklist li{padding:3px 0 3px 20px; position:relative; line-height:1.6; break-inside:avoid}
  .tasklist li::before{content:"✓"; position:absolute; left:2px; top:2px; color:var(--ok); font-weight:700}
  .tasklist li .memo{color:var(--ink-3); font-size:10.5px}
  .note{border:1px solid var(--line-2); border-radius:6px; padding:10px 12px; font-size:11.5px; white-space:pre-wrap; line-height:1.8; min-height:52px}
  .caution{background:var(--warn-bg); border:1px solid #f0dcbb; color:#7a4a08; border-radius:6px; padding:9px 12px; font-size:11px; margin-top:10px; line-height:1.7}
  .sign{display:flex; gap:14px; margin-top:22px; align-items:flex-end}
  .sign .box{flex:1; border:1px solid var(--line-2); border-radius:6px; padding:9px 11px; font-size:11px; color:var(--ink-3); position:relative}
  .sign .box .line{border-bottom:1px solid var(--line-2); height:34px; margin-top:5px}
  .sign .box .seal{position:absolute; right:8px; bottom:6px}

  /* ---------- 領収書 ---------- */
  .receipt{width:88mm; margin:0 auto; background:#fff; border:1px solid var(--line); border-radius:4px; padding:9mm 8mm;
    font-size:11.5px; line-height:1.75; box-shadow:0 3px 18px rgba(0,0,0,.10)}
  .rc-h{text-align:center; border-bottom:2px dashed var(--line-2); padding-bottom:9px; margin-bottom:9px}
  .rc-h .t{font-size:15px; font-weight:700; letter-spacing:.28em}
  .rc-h .st{font-size:10px; color:var(--ink-3); letter-spacing:.08em}
  .rc-co{text-align:center; font-size:11px; line-height:1.6; margin-bottom:9px}
  .rc-co b{font-size:12.5px}
  .rc-co .reg{font-family:ui-monospace,Menlo,monospace; font-size:11px}
  .rc-line{display:flex; justify-content:space-between; gap:8px; font-variant-numeric:tabular-nums}
  .rc-line .nm{flex:1}
  .rc-items{border-top:1px dashed var(--line-2); border-bottom:1px dashed var(--line-2); padding:7px 0; margin:8px 0}
  .rc-items .sub{font-size:10px; color:var(--ink-3)}
  .rc-total{font-size:16px; font-weight:700; border-top:2px solid var(--ink); padding-top:7px; margin-top:5px}
  .rc-tax{font-size:10.5px; color:var(--ink-2); background:#f7f9fa; border-radius:5px; padding:7px 9px; margin-top:8px}
  .rc-note{margin-top:5px; font-size:10px; color:var(--ink-2); text-align:center;
    border:1px solid var(--line-2); border-radius:4px; padding:4px 6px; line-height:1.5}
  .rc-note span{color:var(--ink-3); font-size:9.5px}
  .rc-seal{display:flex; justify-content:flex-end; margin-top:6px}
  .rc-qr{display:grid; place-items:center; margin:10px 0 4px}
  .rc-qr svg{width:104px; height:104px}
  .rc-foot{text-align:center; font-size:10px; color:var(--ink-3); margin-top:10px; line-height:1.6}
  .badge-8{display:inline-block; font-size:9px; border:1px solid var(--line-2); border-radius:3px; padding:0 3px; color:var(--ink-2); margin-left:3px}

  /* ---------- ダイアログ ---------- */
  dialog{border:0; border-radius:14px; padding:0; max-width:440px; width:calc(100vw - 28px); box-shadow:0 20px 60px rgba(0,0,0,.25)}
  dialog::backdrop{background:rgba(20,30,40,.45)}
  .dlg-h{padding:15px 20px; border-bottom:1px solid var(--line); font-weight:700; font-size:14.5px}
  .dlg-b{padding:18px 20px; max-height:70vh; overflow:auto}
  .dlg-f{padding:12px 20px 18px; display:flex; gap:8px; justify-content:flex-end}
  .sms-prev{background:#e9f2fb; border-radius:14px 14px 14px 3px; padding:11px 13px; font-size:12.5px; white-space:pre-wrap; line-height:1.65; color:#12303f; margin-top:8px}
  .counter{font-size:11px; color:var(--ink-3); text-align:right; margin-top:5px}
  .qrbox{display:grid; place-items:center; padding:6px}
  .qrbox svg{width:min(62vw,230px); height:min(62vw,230px); background:#fff; border:10px solid #fff; box-shadow:0 0 0 1px var(--line)}
  .sent{background:var(--ok-bg); color:var(--ok); border:1px solid #bfe3d3; padding:9px 12px; border-radius:8px; font-size:12.5px; margin-top:12px}
  .cred{background:var(--bg); border-radius:9px; padding:12px 14px; margin-top:10px; font-family:ui-monospace,Menlo,monospace; font-size:14px; line-height:2}
  .cred span{color:var(--ink-3); font-family:inherit; font-size:11px}

  /* ---------- レスポンシブ ---------- */
  @media (min-width:900px){ .actionbar{display:none !important} .wrap{padding-bottom:60px} }
  @media (max-width:899px){ .headbtns{display:none !important} }
  @media (max-width:1080px){ .detailgrid{grid-template-columns:1fr} }
  @media (max-width:900px){
    .grid,.checks{grid-template-columns:1fr}
    .deliv{grid-template-columns:1fr 1fr}
    .filters{grid-template-columns:1fr 1fr}
    .kpis{grid-template-columns:1fr 1fr}
    .paper{width:100%; min-height:0; padding:18px 16px; box-shadow:0 2px 10px rgba(0,0,0,.08)}
    .doc-head{flex-direction:column; gap:14px}
    .issuer{text-align:left; min-width:0}
    .co-line{justify-content:flex-start}
    .co-line .seal{margin-left:6px}
    .meta{grid-template-columns:1fr 1fr}
    .meta div{border-bottom:1px solid var(--line)}
    .taskcols{grid-template-columns:1fr}
    .sign{flex-direction:column; align-items:stretch}
    .receipt{width:100%; max-width:400px}
    .doc-title{font-size:18px; letter-spacing:.2em}
  }
  /* スマホでは書類の表の固定幅を解除して、横にはみ出さないようにします */
  @media (max-width:900px){
    .paper table.doc{table-layout:auto; font-size:10.5px}
    .paper table.doc th,.paper table.doc td{width:auto !important; white-space:normal; padding:5px 6px}
    .paper .meta div{padding:6px 8px}
    .receipt{padding:7mm 6mm}
  }

  @media (max-width:700px){
    .row.c2,.row.c3{grid-template-columns:1fr}
    /* 入力表を縦積みカードに */
    table.ed thead{display:none}
    table.ed,table.ed tbody,table.ed td{display:block; width:100%}
    table.ed tr{display:grid; grid-template-columns:1fr 1fr; column-gap:10px;
      border:1px solid var(--line); border-radius:9px; padding:9px 11px 11px; margin-bottom:10px; position:relative; background:#fdfefe}
    table.ed td{padding:5px 0}
    table.ed td.wide{grid-column:1 / -1}
    table.ed td::before{content:attr(data-l); display:block; font-size:10.5px; color:var(--ink-3); font-weight:600; margin-bottom:2px}
    table.ed td.rm{position:absolute; top:4px; right:4px; width:auto; padding:0}
    table.ed td.rm::before{display:none}
    /* 一覧表もカードに */
    .listtable{border:0; background:transparent}
    .listtable thead{display:none}
    .listtable,.listtable tbody,.listtable tr,.listtable td{display:block; width:100%}
    .listtable tr{background:#fff; border:1px solid var(--line); border-radius:var(--r); margin-bottom:10px; padding:11px 13px}
    .listtable td{border:0; padding:2px 0; display:flex; justify-content:space-between; gap:12px; align-items:baseline}
    .listtable td::before{content:attr(data-l); font-size:11px; color:var(--ink-3); flex:none}
    .listtable td.money{text-align:right}
    .listtable td.go{display:none}
    .chk input[type=text]{width:96px}
  }
  @media (max-width:520px){
    .who > span:last-child{display:none}
    .topbar .brand .nm small{display:none}
    .topbar{gap:8px; padding:8px 11px}
    .wrap{padding:14px 11px 96px}
  }

  /* ---------- 印刷 ---------- */
  @media print{
    body{background:#fff}
    .topbar,.navbar,.actionbar,.noprint,.pagehead,.hint,#login{display:none !important}
    .wrap{padding:0; max-width:none}
    .detailgrid{display:block}
    .paper{width:auto; min-height:0; box-shadow:none; padding:12mm; border-radius:0}
    .paperwrap{display:block; gap:0}
    .paperwrap > .receipt{
      page-break-before:always; break-before:page; break-inside:avoid; page-break-inside:avoid;
      box-shadow:none; border:1px dashed var(--line-2); margin:0 auto;
    }
    body.print-receipt .paper{display:none}
    body.print-receipt .paperwrap > .receipt{
      page-break-before:auto; break-before:auto; border:0; width:auto; padding:0; margin:0; font-size:11px;
    }
  }
  /* ---------- 本番用に追加した見た目 ---------- */
  .st-void{background:#fdecea; color:#a3271b}
  .listtable tr.dim{opacity:.62}
  .voidbar{background:#fdecea; border:1px solid #f3c8c2; color:#a3271b; border-radius:var(--r);
    padding:11px 14px; font-size:13px; margin-bottom:14px; line-height:1.7}
  .searchbox{background:#fff; border:1px solid var(--line); border-radius:var(--r); padding:12px 14px; margin-bottom:12px}
  .searchbox .filters{margin-bottom:0}
  .filters2{display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin-top:12px;
    border-top:1px solid var(--line); padding-top:12px}
  .filters2 .f{margin-bottom:0}
  .listtools{display:flex; align-items:center; gap:10px; margin-bottom:10px; flex-wrap:wrap}
  .listtools .spacer{flex:1}
  #rv_body .paper{font-size:11px}
  @media (max-width:900px){ .filters2{grid-template-columns:1fr 1fr} }
  @media (max-width:700px){ .filters2{grid-template-columns:1fr} }

  /* ---------- お知らせ（トースト） ---------- */
  .toast{
    position:fixed; left:50%; transform:translateX(-50%);
    bottom:calc(76px + env(safe-area-inset-bottom)); z-index:200;
    background:#1b2430; color:#fff; padding:11px 18px; border-radius:10px;
    font-size:13px; max-width:min(560px, calc(100vw - 28px)); box-shadow:0 8px 28px rgba(0,0,0,.3);
    line-height:1.6; text-align:center;
  }
  .toast.err{background:#a3271b}
  @media (min-width:900px){ .toast{bottom:26px} }
  @media print{ .toast{display:none !important} }
