*{box-sizing:border-box}body{margin:0;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1b2430;background:#f4f6fa}
a{color:#2457c5}code{font-size:.85em;word-break:break-all}.muted{color:#6b7686;font-size:.9em}
.btn{display:inline-block;border:1px solid #c8d0dc;background:#fff;border-radius:10px;padding:.6em 1em;font:inherit;cursor:pointer;text-decoration:none;color:inherit}
.btn.primary{background:#2457c5;border-color:#2457c5;color:#fff}.btn:disabled{opacity:.45}
.btn.warnb{background:#f2a33a;border-color:#f2a33a;color:#1b1206}.btn.danger{background:#c43d3d;border-color:#c43d3d;color:#fff}
.link{background:none;border:0;color:#cfe0ff;cursor:pointer;font:inherit}.inline{display:inline}
input,textarea{font:inherit;padding:.55em .7em;border:1px solid #c8d0dc;border-radius:8px;width:100%;margin:.25em 0 .8em}
.mono{font-family:ui-monospace,monospace;font-size:13px}label{display:block;font-weight:600;font-size:.92em}
.pill{display:inline-block;padding:.1em .6em;border-radius:99px;font-size:.78em;font-weight:600;background:#e4e8ef;color:#3a4556;text-transform:uppercase;letter-spacing:.02em}
.pill.approved,.pill.accepted,.pill.submitted{background:#d8f2e1;color:#17663a}.pill.declined,.pill.escalated{background:#fbdcdc;color:#932525}
.pill.resubmit,.pill.resubmission,.pill.review{background:#fde9c9;color:#8a5200}.pill.pending,.pill.open,.pill.needed{background:#e2e9fb;color:#2a4a99}
/* admin */
.topbar{background:#18233a;color:#fff;padding:.8em 1.2em;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5em}
.topbar nav a{color:#cfe0ff;margin-right:1em}.wrap{max-width:1200px;margin:1.2em auto;padding:0 1em}
.card{background:#fff;border-radius:14px;padding:1.1em 1.3em;margin-bottom:1em;box-shadow:0 1px 3px rgba(0,0,0,.07)}
.card.ok{border-left:5px solid #2e9a5b}.narrow{max-width:380px;margin:3em auto}.err{color:#b02a2a;font-weight:600}.warn{color:#8a5200;font-size:.9em}
.row{display:flex;gap:.6em;flex-wrap:wrap;align-items:center}.row input{flex:1;min-width:160px;margin:0}
.hrow{display:flex;justify-content:space-between;align-items:center;gap:1em}h1,h2,h3{margin:.2em 0 .5em}
table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:.4em .5em;border-bottom:1px solid #eef0f4;vertical-align:top}
table.small{font-size:.82em}.checks th{text-transform:capitalize;font-size:.85em}
.items{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1em}.item .thumb{width:100%;max-height:230px;object-fit:contain;background:#222;border-radius:8px}
.kv td{font-size:.88em}.kv th{background:#f4f6fa;font-size:.8em;text-transform:uppercase;color:#56627a}.chk{font-weight:600;margin-top:.6em}
.chk input{width:auto;margin-right:.4em}.sel{user-select:all;font-size:1em}
/* portal: mobile first */
.portal{background:#f4f6fa}.phead{position:sticky;top:0;z-index:5;background:#18233a;color:#fff;display:flex;justify-content:space-between;align-items:center;padding:.7em 1em}
.brand{font-weight:700}.brand span{font-weight:400;opacity:.75;font-size:.85em}.helpbtn{background:#fff;color:#18233a;border:0;border-radius:99px;padding:.35em .9em;font-weight:700}
.pwrap{max-width:560px;margin:0 auto;padding:1em}.intro h1{font-size:1.5em}.intro p{margin-top:0}
.progress{display:flex;align-items:center;gap:.7em;margin:.4em 0 1em}.bar{flex:1;height:10px;background:#dfe5ee;border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:#2e9a5b;transition:width .4s}#ptext{font-size:.85em;color:#4a5566;white-space:nowrap}
.pcard{background:#fff;border-radius:16px;padding:1.1em;box-shadow:0 1px 4px rgba(0,0,0,.08)}.stepno{margin:0;color:#6b7686;font-size:.85em;font-weight:600}
.pcard h2{font-size:1.35em}.block{margin:.6em 0}.block h3{font-size:.8em;text-transform:uppercase;letter-spacing:.05em;color:#56627a;margin:0}.block p{margin:.15em 0}
.how{padding-left:1.2em;margin:.2em 0}.how li{margin:.15em 0}.note{background:#fffbe8;border:1px dashed #d6b44a;padding:.6em;border-radius:8px}
.redo{background:#fff1dc;border-left:4px solid #f2a33a;padding:.5em .7em;border-radius:6px}
.examples{display:grid;grid-template-columns:1fr 1fr;gap:.5em;margin:.8em 0}.examples figure{margin:0;border-radius:10px;overflow:hidden;border:3px solid}
.examples .good{grid-column:1/-1;border-color:#2e9a5b}.examples .bad{border-color:#d24a4a}.ill{display:block;width:100%;height:auto}
figcaption{font-size:.85em;font-weight:700;padding:.25em .5em}.good figcaption{background:#d8f2e1;color:#17663a}.bad figcaption{background:#fbdcdc;color:#932525}
.shoot,.pick{display:block;text-align:center;cursor:pointer}.shoot input,.pick input{position:absolute;opacity:0;width:1px;height:1px}
.shoot span{display:block;background:#2457c5;color:#fff;font-size:1.15em;font-weight:700;padding:.9em;border-radius:12px;margin-top:.5em}
.pick span{display:block;color:#2457c5;text-decoration:underline;padding:.6em;font-weight:500}
.status{margin:.6em 0;padding:0;border-radius:10px}.status:empty{display:none}.status.busy{padding:.7em;background:#e2e9fb}
.status.good{padding:.7em;background:#d8f2e1;color:#17663a}.status.bad{padding:.7em;background:#fbdcdc;color:#7d1e1e}.status ul{margin:.3em 0 0;padding-left:1.2em}
.nav{display:flex;justify-content:space-between;margin-top:.6em}.done,.final{text-align:center}.big{font-size:3em}
.help{position:fixed;inset:0;background:rgba(10,20,40,.55);z-index:10;display:flex;align-items:flex-end}.help[hidden]{display:none}
.hin{background:#fff;width:100%;max-height:85vh;overflow:auto;border-radius:18px 18px 0 0;padding:1em 1.2em}
details{border-bottom:1px solid #eef0f4;padding:.6em 0}summary{font-weight:600;cursor:pointer}
@media(min-width:700px){.hin{max-width:560px;margin:0 auto;border-radius:18px}.help{align-items:center}}
/* v2: checklist overview, choices, do/don't */
.checklist .citem{margin-bottom:.8em}.num{display:inline-grid;place-items:center;width:1.6em;height:1.6em;border-radius:50%;background:#2457c5;color:#fff;font-size:.8em;margin-right:.2em}
.choice{border:0;padding:0;margin:.4em 0}.choice legend{font-weight:700;margin-bottom:.3em}
.opt{display:flex;gap:.6em;align-items:flex-start;border:2px solid #c8d0dc;border-radius:12px;padding:.6em .7em;margin:.4em 0;font-weight:400;cursor:pointer}
.opt input{width:auto;margin:.3em 0 0}.opt small{display:block;color:#56627a}.opt:has(input:checked){border-color:#2457c5;background:#eef3ff}
.btn.wide{width:100%;font-size:1.1em;padding:.9em;margin:.4em 0 2em}.chg{font-weight:600}
.noteh{margin:0;font-weight:600}.notetext{font-family:"Comic Sans MS","Segoe Print",cursive;font-size:1.1em;margin:.3em 0}
.ph{margin:.3em 0 0;color:#8a5200;font-weight:700;font-size:.85em}
.dodont ul{list-style:none;padding:0;margin:.2em 0}.dodont li{padding-left:1.5em;position:relative;margin:.2em 0}
.do li:before{content:"✔";color:#2e9a5b;position:absolute;left:0;font-weight:700}.dont li:before{content:"✘";color:#c43d3d;position:absolute;left:0;font-weight:700}
.ddate input{max-width:220px}.group{margin-bottom:1.4em}.group>h2{border-bottom:2px solid #dfe5ee;padding-bottom:.3em}
.sheet td.lbl{width:40%}.badflag{color:#932525;font-weight:700}
.pill.not_started,.pill.in_progress{background:#e2e9fb;color:#2a4a99}.pill.abandoned,.pill.expired{background:#eee;color:#555}.pcard.live{border:2px solid #2a4a99}
.vimgs{display:flex;flex-wrap:wrap;gap:10px}.vimgs figure{margin:0;max-width:180px}button[disabled]{opacity:.45;cursor:not-allowed}
/* ---- minimal mobile-first client UI ---- */
.portal.m{font-size:17px;line-height:1.45}
.portal.m .pwrap{max-width:520px;margin:0 auto;padding:12px 14px 96px}
.portal.m .phead{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.portal.m .brand span{opacity:.6;font-weight:400}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.langf select{font-size:15px;padding:6px 8px;border-radius:10px;border:1px solid #cbd2dc;background:#fff;max-width:150px}
.portal.m h1{font-size:26px;margin:.3em 0}.portal.m h2{font-size:21px;margin:.2em 0}
.portal.m .pcard{border-radius:16px;padding:16px;margin:12px 0}
.portal.m .btn.big,.portal.m .shoot span{display:block;width:100%;min-height:56px;font-size:19px;font-weight:600;border-radius:14px;text-align:center;line-height:56px;padding:0}
.portal.m .shoot{display:block;margin:14px 0 6px}.portal.m .shoot input,.portal.m .pick input{display:none}
.portal.m .pick{display:block;text-align:center;padding:10px;color:#2563eb;text-decoration:underline}
.portal.m .sticky{position:sticky;bottom:12px;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.portal.m .what{font-size:18px}
.portal.m .examples{display:flex;gap:8px;overflow-x:auto}.portal.m .examples figure{flex:0 0 30%;margin:0}
.portal.m .examples figure.good{flex-basis:38%}
.tips{list-style:none;padding:0;margin:10px 0}.tips li{padding:3px 0}.tips li.y::before{content:"✔ ";color:#16a34a}.tips li.n::before{content:"✘ ";color:#dc2626}
.why summary{color:#475569;cursor:pointer;padding:6px 0}
.portal.m .opt{display:flex;gap:12px;align-items:center;padding:14px;border:2px solid #e2e8f0;border-radius:14px;margin:8px 0}
.portal.m .opt:has(input:checked){border-color:#2563eb;background:#eff6ff}
.portal.m .opt input{width:22px;height:22px}.portal.m .opt small{display:block;color:#64748b}
.portal.m .nav{display:flex;gap:10px;margin-top:10px}.portal.m .nav .btn{flex:1;min-height:48px;font-size:17px}
.center{text-align:center}.live.nested{text-align:start}
.topbar{margin:6px 0}
[dir=rtl] .portal.m,[dir=rtl] body{text-align:right}
[dir=rtl] .tips li.y::before,[dir=rtl] .tips li.n::before{margin-left:4px}
[dir=rtl] .center{text-align:center}
.portal.m .topbar{background:none;padding:0}.portal.m .topbar .chg{display:inline-block;background:#fff;color:#1e3a8a;border:1px solid #cbd2dc;border-radius:999px;padding:8px 14px;font-weight:600;text-decoration:none}
/* QR + reviewer checklist */
.linkbox{display:flex;gap:1.2em;align-items:center;flex-wrap:wrap;margin:.6em 0}.linkbox code{word-break:break-all}
.qr svg{display:block;background:#fff;padding:6px;border-radius:8px}
.linkcell{white-space:nowrap}.qrd{display:inline-block;position:relative}.qrd summary{list-style:none;display:inline-block;cursor:pointer}
.qrd[open] .qr{position:absolute;right:0;z-index:4;background:#fff;border:1px solid #d5dbe3;border-radius:10px;padding:8px;box-shadow:0 8px 24px rgba(0,0,0,.15)}
.rrow .chk{font-weight:600}.ocr{white-space:pre-wrap;font-size:12px;max-height:200px;overflow:auto;background:#f6f7f9;padding:6px}
.qrbox{display:none}
@media (min-width:900px) and (pointer:fine){.qrbox{display:flex;gap:16px;align-items:center}}
.qrbox .qr svg{width:150px;height:150px}
