:root{--bg:#f5f7fb;--card:#fff;--txt:#18212f;--muted:#5f6f81;--primary:#172a45;--accent:#0b6b7a;--danger:#a33;--ok:#207a44;--warn:#9a6b00;--border:#d9e1ea;}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--txt);font-family:Arial,Helvetica,sans-serif;font-size:15px;line-height:1.45}.topbar{background:var(--primary);color:#fff;padding:12px 24px;display:flex;justify-content:space-between;align-items:center}.topbar a{color:#fff;text-decoration:none;margin-left:14px}.brand{font-weight:700;letter-spacing:.2px}.container{max-width:1240px;margin:22px auto;padding:0 16px}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:18px;margin-bottom:18px;box-shadow:0 2px 8px rgba(10,20,40,.04)}h1,h2,h3{margin:0 0 12px}h1{font-size:24px}h2{font-size:19px}h3{font-size:16px}.grid{display:grid;gap:14px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:900px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.topbar{display:block}.topbar nav{margin-top:8px}}label{display:block;font-weight:700;margin:8px 0 4px}input,select,textarea{width:100%;border:1px solid var(--border);border-radius:8px;padding:9px;background:#fff;color:var(--txt)}input[type=checkbox],input[type=radio]{width:auto;flex:0 0 auto;margin:4px 0 0;padding:0}textarea{min-height:96px}.help{font-size:12px;color:var(--muted)}.btn{display:inline-block;border:0;border-radius:9px;padding:10px 14px;background:var(--accent);color:#fff;text-decoration:none;cursor:pointer;font-weight:700;margin:4px 4px 4px 0}.btn.secondary{background:#637083}.btn.danger{background:var(--danger)}.btn.light{background:#e9eef5;color:#172a45}.btn.ok{background:var(--ok)}.flash{border-radius:8px;padding:11px;margin:8px 0}.flash.success{background:#e6f4eb;color:#134d2b}.flash.danger{background:#fdeaea;color:#842029}.flash.warning{background:#fff4d9;color:#7b5100}.flash.info{background:#eaf2ff;color:#0b3b75}.table{width:100%;border-collapse:collapse;margin:8px 0}.table th,.table td{border:1px solid var(--border);padding:8px;text-align:left;vertical-align:top}.table th{background:#e8eef7}.muted{color:var(--muted)}.badge{display:inline-block;padding:3px 7px;border-radius:999px;font-size:12px;background:#edf2f7;color:#1f2f42}.badge.ok{background:#e6f4eb;color:#134d2b}.badge.warn{background:#fff4d9;color:#7b5100}.badge.danger{background:#fdeaea;color:#842029}.kpi{background:#f9fbfe;border:1px solid var(--border);border-radius:10px;padding:14px}.kpi .label{color:var(--muted);font-size:12px}.kpi .value{font-size:22px;font-weight:800}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:10px}.code{font-family:Consolas,monospace;font-size:12px;word-break:break-all;background:#f6f8fa;border:1px solid var(--border);padding:8px;border-radius:8px}.footer{font-size:12px;color:var(--muted);text-align:center;margin:24px 0}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.tabhint{font-size:13px;color:var(--muted)}

/* v2.5 — mobile responsive + tooltip */
@media (max-width: 640px) {
  .container { padding: 0 10px; margin-top: 12px; }
  .card { padding: 12px; }
  h1 { font-size: 20px; }
  h2 { font-size: 17px; }
  .table { font-size: 13px; display: block; overflow-x: auto; }
  .btn { padding: 9px 12px; font-size: 14px; }
  .kpi .value { font-size: 18px; }
  .section-title { flex-direction: column; align-items: flex-start; }
}

/* Normative tooltip (#65) */
.tip { position: relative; border-bottom: 1px dotted #6b7c93; cursor: help; }
.tip::after {
  content: attr(data-tip);
  position: absolute;
  left: 0; bottom: 130%;
  min-width: 220px; max-width: 320px;
  background: #1c2b39; color: #fff;
  padding: 8px 10px; border-radius: 6px;
  font-size: 12px; line-height: 1.35;
  opacity: 0; visibility: hidden;
  transition: opacity .12s ease;
  z-index: 50;
}
.tip:hover::after, .tip:focus-within::after { opacity: 1; visibility: visible; }

/* Upload/OCR progress banner (session-local notifier, injected by upload-progress.js) */
.upload-banner{position:fixed;top:0;left:0;right:0;z-index:1000;display:none;padding:12px 20px;text-align:center;font-weight:700;box-shadow:0 2px 10px rgba(10,20,40,.18)}
.upload-banner.info{background:#eaf2ff;color:#0b3b75;border-bottom:2px solid #9dbdf0}
.upload-banner.success{background:#e6f4eb;color:#134d2b;border-bottom:2px solid #58b07f}
.upload-banner.warning{background:#fff4d9;color:#7b5100;border-bottom:2px solid #dfb457}
.upload-banner.danger{background:#fdeaea;color:#842029;border-bottom:2px solid #d98a8a}
.upload-banner .spinner{display:inline-block;width:14px;height:14px;margin-right:8px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:upload-spin .8s linear infinite;vertical-align:-2px}
@keyframes upload-spin{to{transform:rotate(360deg)}}

/* Version badge (footer, all pages) */
.footer .version-badge{margin-top:4px;font-size:11px;color:var(--muted);letter-spacing:.2px}
