.dd-mark{background:#0b3c5d!important}
.svc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}
.svc-card{display:flex;flex-direction:column;gap:8px;min-height:190px}
.svc-card .ico{font-size:1.6rem}
.svc-card .st{margin-top:auto;display:flex;justify-content:space-between;align-items:center;gap:8px}
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px;padding:0 4px}
.dd-tbl{width:100%;min-width:0;border-collapse:collapse;table-layout:auto}
/* 25 Sep 2026: min-width:640px made a two-column table scroll inside a phone. A table of four or more columns is
   stacked into cards on a phone by polish.js; a smaller one simply wraps. */
.dd-tbl th,.dd-tbl td{padding:9px 8px;vertical-align:top;font-size:.9rem;border-bottom:1px solid var(--line);text-align:left}
/* headers may wrap (25 Sep 2026): a heading that cannot break — "With an author outside India" — set the
   width of its whole table and pushed it 11px past a 1024 screen. With room they still sit on one line. */
.dd-tbl th{background:#f1f4f9;font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-2);white-space:normal}
.dd-tbl td.art{min-width:170px;max-width:420px;overflow-wrap:anywhere}
.dd-tbl td.num{text-align:center;white-space:nowrap}
/* The "Body" cell: a count and then a sentence about it. It must wrap, or it sets the width of the
   whole table on its own -- see the note in jats.php beside the cell. */
.dd-tbl td.bod{min-width:128px;max-width:300px;white-space:normal;overflow-wrap:anywhere}
.dd-tbl td.st{min-width:90px;max-width:260px;overflow-wrap:anywhere}
.dd-tbl td.act{white-space:nowrap;text-align:right}
.dd-tbl .err{display:block;margin-top:4px;font-size:.78rem;color:var(--muted);line-height:1.35}
.dd-tbl tr:last-child td{border-bottom:0}
.kpi{display:grid;grid-template-columns:repeat(var(--kpi-cols,4),1fr);gap:16px;margin-bottom:16px}
.kpi .card strong{font-size:1.6rem;display:block}
.chk{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line)}
.chk:last-child{border-bottom:0}
.chk .dot{width:12px;height:12px;border-radius:50%;margin-top:6px;flex:none}
.dot-ok{background:var(--ok)}.dot-warn{background:#e0a800}.dot-bad{background:var(--bad)}.dot-off{background:#bbb}
.two{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:22px;align-items:start}
.two>div{min-width:0}
pre.wrap{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.badge-prev{background:#f1f4f9;border:1px solid var(--line);border-radius:8px;padding:14px;display:inline-block}
@media(max-width:900px){.kpi{grid-template-columns:1fr 1fr}.two{grid-template-columns:1fr}}
@media(max-width:600px){.kpi{grid-template-columns:1fr}}

/* A table placed straight inside a card (no .tbl-wrap around it) must shrink to the card,
   never push the page sideways — sidebar tables like History are the usual case. */
.card > table.dd-tbl{min-width:0}
/* 25 Sep 2026: a table in the wide column of a .two layout has 629px at most (3/5 of the page), so the
   640px floor above made every one of them scroll sideways by 19px, always — ojs.php "What will be
   written", backfile.php. Inside .two the table's own columns are the floor, and the article column
   gives up a little (170 → 140) so backfile's six columns fit a 1024 screen. */
.two .tbl-wrap .dd-tbl{min-width:0}
.two .tbl-wrap .dd-tbl td.art{min-width:140px}
@media(max-width:640px){.dd-tbl th,.dd-tbl td{padding:7px 6px;font-size:.84rem}}

/* the DOIs table (10 Sep 2026): full width under the two columns, the article gets the room, the four checks stay narrow */
/* 25 Sep 2026, 01:30 — "can you set this table its outside came". On doctor.php?f=warn the table ran
   past its card: the View button was cut off and a scrollbar appeared. The floors added one by one —
   article 300, status 320 (21 Sep, below), three buttons side by side 285 (nowrap), the five narrow
   checks 347 — came to 1252px, in a box that is never wider than 1098px: the page is capped at 1140.
   Measured in Chromium on the rendered pages, every table, at 1366 / 1280 / 1024 (tests/measure_tables.mjs):
     · a row's buttons stand in ONE column, equal width — the column is 121px wide where a row was 285
     · the article floor is 240 (the title still takes 40% when there is room to give)
     · the status floor is 280, not 320 — the 21 Sep note below is otherwise still right
     · 6px side padding on this table's cells instead of 8
   Result: 1090px in the 1098 box at 1280 and 1366, 974 in the 982 box at 1024 — in every button state. */
.doi-tbl{min-width:760px}
.doi-tbl th,.doi-tbl td{padding-left:6px;padding-right:6px}
.doi-tbl th.c{text-align:center}
.doi-tbl td.art{min-width:240px;max-width:none;width:40%}
.doi-tbl td.num{width:76px}
.doi-tbl th:nth-child(3),.doi-tbl td:nth-child(3){width:104px}
.doi-tbl td.act{width:1%;white-space:normal}
.doi-tbl .acts{display:flex;flex-direction:column;gap:4px;align-items:stretch}
.doi-tbl .acts form{margin:0;display:flex}
.doi-tbl .acts .btn{white-space:nowrap;flex:1;justify-content:center;box-sizing:border-box}
.doi-tbl td.num small{display:block;font-size:.7rem;white-space:normal;line-height:1.2;margin-top:2px}
/* 21 Sep 2026 — the STATUS column was capped at 300px and, on a 1024px screen, the browser gave it
   only 150. The long "why this one is not moving" note then rendered as a ribbon two or three words
   wide with addresses broken mid-character —
       https://www.jst.org.i / n/index.php/pub/artic / le/view/37
   — one row 1008px tall, beside an Article column with room to spare. Unreadable, on the one piece
   of text whose entire job is to be read.
   A popover was the obvious fix and the wrong one: .tbl-wrap scrolls (overflow-x:auto), so anything
   positioned out of flow is CLIPPED by it. So the column simply gets a floor it cannot be starved
   below, and the cap comes off. Measured in Chromium with the real note at 820 / 1024 / 1280 /
   1440: the status column holds at 320px and the row falls from 1008px to 503px; at 1440 nothing
   changes, because there it was already 369px. Below 820 the wrapper scrolls sideways as before.
   (25 Sep 2026: 280 — the floor stays, the figure gave 40px back so the whole table fits; see above.) */
.doi-tbl td.st{min-width:280px;max-width:none}
.doi-tbl .err{white-space:normal}
/* the filter row: box buttons, the same shape as every toolbar button (10 Sep 2026 — the pill row read as broken) */
.fbar{font-size:.85rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.fbar a{display:inline-flex;align-items:center;gap:6px;color:var(--navy);text-decoration:none;padding:8px 14px;border-radius:10px;border:1px solid var(--line);background:#fff;font-weight:600;white-space:nowrap;transition:.15s}
.fbar a:hover{border-color:var(--navy)}
.fbar a.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.fbar a small{font-weight:500;opacity:.85}
#dois{margin-top:22px}

/* Author citation engine (10 Sep 2026): the ORCID column keeps the iD on one line; the row's buttons sit under its status
   so the table fits the card instead of hiding its last column behind a scrollbar. */
.au-tbl td.orc{min-width:200px;max-width:300px}
.au-tbl td.st{min-width:170px}
.au-tbl .acts .btn{white-space:nowrap}
.au-tbl td.orc .badge,.au-tbl td.st>.badge{white-space:nowrap}
.au-tbl td.num small{display:block;font-size:.7rem;color:var(--muted);line-height:1.2;margin-top:2px}
.au-tbl .acts{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}
.au-tbl .acts form{margin:0}
.au-tbl .acts:empty{display:none}
/* 25 Sep 2026: duplicates page — one column, tables fixed above 900px so seven columns wrap instead of scrolling */
.dup-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
@media(min-width:900px){.dup-tbl{table-layout:fixed;width:100%}}
.dup-tbl td,.dup-tbl th{overflow-wrap:anywhere}.dup-tbl td.act{white-space:normal}.dup-tbl td.act .btn{white-space:normal;text-align:center}
