/* ============================================================= RESPONSIVE */
@media (max-width:900px){
  :root{ --side:100%; }
  .proto{ display:none; }
  .body{ flex-direction:column; }
  /* rail -> bottom thumb nav */
  .rail{
    order:2; width:100%; flex-direction:row; border-right:none; border-top:none;
    box-shadow:0 -8px 24px rgba(2,6,23,.55); padding:0; height:58px; padding-bottom:env(safe-area-inset-bottom);
  }
  .rail .job{ flex:1; margin:0; width:auto; border:none; border-radius:0; flex-direction:column; font-size:9px; padding:6px 0; }
  .rail .job.on{ background:none; color:var(--accent); }
  .rail .job.on::before{ left:22%; right:22%; top:0; bottom:auto; width:auto; height:3px; border-radius:0 0 2px 2px; }
  .rail .verb, .rail .divider, .rail .grow{ display:none; }
  .rail #lock-rail{ display:flex; flex:0 0 48px; flex-direction:column; align-items:center; justify-content:center; color:var(--text-2); }
  .rail #lock-rail.admin{ color:var(--ok); }
  .rail #lock-rail span{ display:none; }
  .main{ order:1; }
  .side-desktop{ display:none !important; }
  /* filter bar collapses to a pill; active chips still show (wrap) */
  .filterbar{ padding:var(--sp-2); gap:var(--sp-2); }
  .fb-desktop{ display:none !important; }
  .filter-pill{ display:flex; align-items:center; gap:8px; height:36px; padding:0 14px; border-radius:var(--r-full); background:var(--panel); border:1px solid var(--border); color:var(--text-1); font-size:var(--fs-sm); }
  .filter-pill .b{ background:var(--accent); color:#fff; border-radius:var(--r-full); min-width:18px; height:18px; padding:0 5px; font-size:10px; display:flex; align-items:center; justify-content:center; }
  .count.mobile-count{ margin-left:auto; }
  /* triage uses the same grid gallery as the library (tap a card -> loupe) */
  .deck{ display:none; }
  /* action dock */
  .dock.show{ display:flex; }
  /* loupe: art fills the stage (contain, no crop); compact 2-row action bar */
  .loupe.show{ display:flex; flex-direction:column; }
  .loupe-main{ flex:1 1 auto; min-height:50vh; }
  .loupe-actions{ position:static; right:auto; left:auto; bottom:auto; z-index:auto; background:var(--bg-1); border-top:1px solid var(--panel-2); padding:7px 8px; gap:5px; }
  .loupe.collapsed .loupe-actions{ right:auto; }
  .loupe-rate{ order:-1; flex-basis:100%; justify-content:center; gap:3px; }
  .loupe-rate button{ min-width:34px; height:34px; }
  .loupe-act{ flex:1; height:36px; padding:0 6px; font-size:12.5px; }
  .loupe-act .kbd{ display:none; }
  .loupe-info{ flex:0 0 auto; max-height:26vh; border-left:none; border-top:1px solid var(--panel-2); padding:10px 14px calc(12px + env(safe-area-inset-bottom)); gap:12px; }
  .zoomhint{ display:none; }
  /* bulk bar sits above the thumb-nav */
  .bulkbar{ left:8px; right:8px; transform:translateY(160%); max-width:none; bottom:66px; }
  .bulkbar.show{ transform:translateY(0); }
  /* compose bar: 2 rows above the thumb-nav (info row + actions row) */
  .dock{ left:8px; right:8px; transform:none; bottom:calc(66px + env(safe-area-inset-bottom)); max-width:none; flex-direction:column; align-items:stretch; gap:8px; padding:9px 11px; }
  .dock .cb-thumbs{ display:none; }
  .dock .cb-label{ flex-direction:row; align-items:center; gap:8px; flex:0; }
  .dock .cb-actions{ display:flex; gap:8px; }
  .dock .cb-actions #cb-open, .dock .cb-actions #cb-sched{ flex:1; justify-content:center; }
  /* cards addable to a post from the grid (no hover on touch) */
  /* icon-only compose button on mobile (не налезает на угловые бейджи) */
  .card .composebtn{ display:flex; font-size:0; gap:0; padding:6px; }
  .card .composebtn svg{ width:14px !important; height:14px; }
  .tray .cell{ touch-action:none; }
  /* publish queue: 2-line rows so status/time/actions never overlap on a phone */
  .qrow{ flex-wrap:wrap; row-gap:8px; padding:10px 12px; }
  .qrow .qmeta{ flex:1 1 auto; min-width:0; }
  .qrow .qside{ flex:1 1 100%; gap:8px; }        /* controls drop to their own full-width line */
  .qrow .qside .qtime{ margin-right:auto; }       /* status+time left, action buttons pushed right */
}
@media (min-width:901px){
  .side.mobile-sheet{ /* inspector uses docked side on desktop */ }
  .filter-pill{ display:none; }
}

/* swipe deck styles (mobile triage) */
.deck{ flex-direction:column; align-items:center; justify-content:flex-start; padding:var(--sp-3); gap:var(--sp-3); height:100%; }
.deck .progress{ width:100%; display:flex; align-items:center; gap:var(--sp-2); font-size:var(--fs-xs); color:var(--text-2); }
.deck .progress .bar{ flex:1; height:5px; background:var(--panel); border-radius:var(--r-full); overflow:hidden; }
.deck .progress .bar i{ display:block; height:100%; background:var(--accent); }
.deck .cardstack{ position:relative; width:100%; flex:1 1 auto; max-width:420px; }
.deck .swipecard{ position:absolute; inset:0; border-radius:var(--r-lg); overflow:hidden; background:var(--panel); border:1px solid var(--border); box-shadow:var(--elev-2); touch-action:pan-y; }
.deck .swipecard img{ width:100%; height:100%; object-fit:cover; }
.deck .swipecard .info{ position:absolute; left:0; right:0; bottom:0; padding:var(--sp-4); background:linear-gradient(to top,rgba(2,6,23,.95),transparent); }
.deck .swipecard .verdict{ display:inline-flex; margin-bottom:6px; }
.deck .hint{ position:absolute; top:16px; padding:6px 14px; border-radius:var(--r-full); font-weight:800; font-size:14px; opacity:0; border:2px solid; }
.deck .hint.keep{ right:16px; color:var(--ok); border-color:var(--ok); transform:rotate(12deg); }
.deck .hint.rej{ left:16px; color:var(--err); border-color:var(--err); transform:rotate(-12deg); }
.deck .deckbtns{ display:flex; gap:var(--sp-4); justify-content:center; padding-bottom:var(--sp-2); }
.deck .deckbtns button{ width:56px; height:56px; border-radius:var(--r-full); display:flex; align-items:center; justify-content:center; border:1px solid var(--border); background:var(--panel); }
.deck .deckbtns .rej{ color:var(--err); } .deck .deckbtns .keep{ color:var(--ok); } .deck .deckbtns .insp{ color:var(--text-2); }
.deck .deckbtns .ico{ width:24px; height:24px; }
