:root{--bg:#0f172a;--card:#fff;--muted:#64748b;--line:#e2e8f0;--text:#0f172a;--accent:#0f766e;--accent2:#155e75;--warn:#b45309;--danger:#b91c1c;--ok:#047857;}
*{box-sizing:border-box} body{margin:0;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;background:#f1f5f9;color:var(--text)}
.hero{background:linear-gradient(135deg,#0f172a,#155e75);color:#fff;padding:28px 32px;display:flex;justify-content:space-between;gap:22px;align-items:flex-end;flex-wrap:wrap}.hero h1{margin:0;font-size:30px}.hero p{margin:8px 0 0;color:#cbd5e1}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.12em;font-weight:800;color:#99f6e4!important;margin:0 0 8px!important}.hero-actions{display:flex;gap:10px;flex-wrap:wrap}
button,.button{border:0;border-radius:10px;background:var(--accent);color:#fff;padding:10px 14px;cursor:pointer;font-weight:800;box-shadow:0 1px 2px #0002;text-decoration:none;display:inline-block}button:hover,.button:hover{filter:brightness(.96)}button.secondary,.button.secondary{background:#334155}button.warning,.button.warning{background:#b45309}.tiny{padding:4px 8px;border-radius:7px;font-size:13px}.danger{background:var(--danger)!important}.tabs{display:flex;gap:8px;flex-wrap:wrap;padding:16px 28px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:4}.tab-btn{background:#e2e8f0;color:#0f172a;box-shadow:none}.tab-btn.active{background:var(--accent);color:#fff}
main{padding:24px;max-width:1260px;margin:0 auto}.tab{display:none}.tab.active{display:block}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 10px 24px #0f172a0d}.span-12{grid-column:span 12}.span-8{grid-column:span 8}.span-6{grid-column:span 6}.span-4{grid-column:span 4}.span-3{grid-column:span 3}
h2,h3{margin:0 0 14px}.section-title{font-size:13px;font-weight:900;color:#0f766e;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px} label{display:block;font-size:13px;font-weight:800;color:#334155;margin:10px 0 6px}.field-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.field-grid.compact input{font-size:18px;font-weight:800} input,select,textarea{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:10px;background:#fff;color:#0f172a}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,Consolas,monospace;white-space:pre-wrap;background:#f8fafc;border:1px solid var(--line);padding:14px;border-radius:12px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}.actions.inline{margin:0}.metric{font-size:26px;font-weight:900}.metric-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.cif-box{border:1px solid var(--line);background:#f8fafc;border-radius:14px;padding:14px}.course-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}
.status-text-ok{color:#047857;font-weight:800}.status-text-warn{color:#b45309;font-weight:800}.status-text-danger{color:#b91c1c;font-weight:800}.import-strip{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 14px;padding:12px;border:1px dashed #99f6e4;background:#f0fdfa;border-radius:12px}
.cif-meta-panel{margin:0 0 14px;border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px}
.info-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.info-cell{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px;min-height:72px}.info-cell span{display:block;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em;font-weight:900}.info-cell b{display:block;margin-top:6px;font-size:18px;color:#0f172a;word-break:break-word}
.local-status{margin:10px 0 0}
.course-actions{align-items:flex-end}.course-count-control{width:140px}.course-count-control label{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#475569}.course-count-control input{height:40px;padding:8px;border-radius:9px;font-weight:900;text-align:center}

table{width:100%;border-collapse:separate;border-spacing:0}th,td{border-bottom:1px solid var(--line);padding:8px;text-align:left;font-size:14px}th{background:#f8fafc;position:sticky;top:0;z-index:2}.table-wrap{max-height:520px;overflow:auto;border:1px solid var(--line);border-radius:12px;position:relative}.input-table{max-height:620px}.table-wrap thead th{top:0;background:#e2e8f0;box-shadow:0 1px 0 var(--line);z-index:5}.course-table{table-layout:fixed}.course-table th:nth-child(1),.course-table td:nth-child(1){width:31%}.course-table th:nth-child(2),.course-table td:nth-child(2){width:31%}.course-table th:nth-child(3),.course-table td:nth-child(3){width:31%}.course-table th:nth-child(4),.course-table td:nth-child(4){width:52px;text-align:center}.course-table th{white-space:nowrap}.course-table td{background:#fff;vertical-align:middle}.course-table input{padding:8px;border-radius:7px}.summary-strip{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;padding:12px;border-radius:12px;background:#f8fafc;border:1px solid var(--line)}.status{border-radius:12px;padding:14px;font-weight:800}.status.ok{background:#dcfce7;color:#065f46}.status.warn{background:#fef3c7;color:#92400e}.status.danger{background:#fee2e2;color:#991b1b}.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.result{background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:14px}.result b{font-size:22px;display:block;margin-top:4px}.svg-bg{fill:#fff}.axis{stroke:#94a3b8;stroke-width:1}.curve{fill:none;stroke:#0f766e;stroke-width:3}.marker{stroke:#2563eb;stroke-width:2}.svg-label{fill:#475569;font-size:13px}.footer{padding:20px 32px;color:#64748b;text-align:center}
@media(max-width:1000px){.span-8,.span-6,.span-4,.span-3{grid-column:span 12}.field-grid,.result-grid,.info-grid{grid-template-columns:1fr}.tabs{position:static}th{top:0}.hero{padding:22px 18px}main{padding:14px}}
@media print{.hero-actions,.tabs,button,.actions,.footer{display:none}.tab{display:block}.card{break-inside:avoid;box-shadow:none}.table-wrap{max-height:none}.hero{color:#000;background:#fff}}
.report-meta-card{margin-bottom:14px}
@media print{.report-meta-card{margin:10px 0 14px}.info-cell{min-height:auto;padding:8px}.info-cell b{font-size:14px}.section-title{margin-bottom:6px}}


.print-report{display:none}
.print-report-page{background:#fff;color:#0f172a}
.print-title-row{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;border-bottom:2px solid #0f172a;padding-bottom:6px;margin-bottom:8px}
.print-title-row h1{margin:0;font-size:19px;line-height:1.1}.print-eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:.12em;font-weight:900;color:#0f766e}.print-report-meta{font-size:9.5px;text-align:right;line-height:1.45}
.print-info-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:8px 0}.print-info-grid>div,.print-kpi-grid>div{border:1px solid #cbd5e1;background:#f8fafc;border-radius:6px;padding:5px}.print-info-grid span,.print-kpi-grid span{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.04em;color:#475569;font-weight:900}.print-info-grid b,.print-kpi-grid b{display:block;font-size:10.5px;margin-top:2px}
.print-layout{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:start}.print-report h2{font-size:10.5px;margin:7px 0 4px;color:#0f766e;text-transform:uppercase;letter-spacing:.05em}.print-mini-table,.print-course-table,.print-calibration-table{width:100%;border-collapse:collapse}.print-mini-table td,.print-course-table th,.print-course-table td,.print-calibration-table th,.print-calibration-table td{border:1px solid #cbd5e1;padding:3px 4px;font-size:8.5px;line-height:1.1}.print-mini-table td:first-child{width:52%;font-weight:800;background:#f8fafc;color:#334155}.print-course-table th,.print-calibration-table th{background:#e2e8f0;font-size:8px}.print-course-table td:nth-child(1){width:18%;text-align:center}.print-course-table td:nth-child(2),.print-course-table td:nth-child(3),.print-calibration-table td:nth-child(1),.print-calibration-table td:nth-child(2),.print-calibration-table td:nth-child(3){text-align:right}.print-calibration-table td:nth-child(4){text-align:center}.print-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:6px}.print-status{border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;padding:5px;font-size:8.5px;font-weight:700;margin-bottom:6px}.print-note{font-size:8px;color:#475569;border-top:1px solid #cbd5e1;margin-top:5px;padding-top:4px}.print-calibration-section{margin-top:8px}.print-report .svg-bg{fill:#fff}.print-report .axis{stroke:#94a3b8;stroke-width:1}.print-report .curve{fill:none;stroke:#0f766e;stroke-width:3}.print-report .svg-label{fill:#475569;font-size:12px}

@media print{
  @page{size:A4 portrait;margin:8mm}
  body{background:#fff;color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body>*:not(.print-report){display:none!important}
  .print-report{display:block!important}
  .print-report-page{display:block;width:100%;height:auto;overflow:visible;page-break-after:auto}
  .print-title-row{margin-bottom:6px;padding-bottom:5px}
  .print-info-grid{grid-template-columns:repeat(2,1fr);margin:6px 0;gap:4px}
  .print-layout{grid-template-columns:1fr 1fr;gap:7px;page-break-inside:avoid;break-inside:avoid}
  .print-info-grid b,.print-kpi-grid b{font-size:9.5px}.print-info-grid span,.print-kpi-grid span{font-size:7.5px}
  .print-report h2{font-size:9.5px;margin:5px 0 3px}
  .print-mini-table td,.print-course-table th,.print-course-table td{padding:2px 3px;font-size:7.6px;line-height:1.02}
  .print-calibration-table{table-layout:fixed;page-break-inside:auto}
  .print-calibration-table thead{display:table-header-group}
  .print-calibration-table tr{break-inside:avoid;page-break-inside:avoid}
  .print-calibration-table th,.print-calibration-table td{padding:2px 3px;font-size:7.2px;line-height:1.02}
  .print-calibration-table th:nth-child(1),.print-calibration-table td:nth-child(1){width:22%}
  .print-calibration-table th:nth-child(2),.print-calibration-table td:nth-child(2){width:34%}
  .print-calibration-table th:nth-child(3),.print-calibration-table td:nth-child(3){width:26%}
  .print-calibration-table th:nth-child(4),.print-calibration-table td:nth-child(4){width:18%}
  #printCurveSvg{height:165px!important;max-height:165px!important}
  .print-status{font-size:7.8px;padding:4px}.print-note{font-size:7.2px}
  .print-calibration-section{margin-top:8px;page-break-before:auto}
}

/* V10: print report keeps the V9 portrait summary, adds Volume to Datum, then uses the cleaner V4-style table presentation for Generated Calibration Table. */
.print-calibration-v4-section{margin-top:12px;break-before:page;page-break-before:always}
.print-calibration-card{border:1px solid #d7dee8;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 8px 20px rgba(15,23,42,.08)}
.print-calibration-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:12px 14px;background:#f8fafc;border-bottom:1px solid #d7dee8}
.print-calibration-head h2{margin:0 0 4px!important;font-size:14px!important;color:#0f172a!important;letter-spacing:0!important;text-transform:none!important}
.print-calibration-note{margin:0;color:#64748b;font-size:10px;line-height:1.35}
.print-calibration-badge{background:#0f766e;color:#fff;border-radius:999px;padding:5px 9px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}
.print-table-wrap-v4{width:100%;overflow:visible}
.print-calibration-table-v4{width:100%;border-collapse:separate!important;border-spacing:0!important;table-layout:fixed}
.print-calibration-table-v4 th{background:#e2e8f0!important;color:#0f172a;text-align:left;font-weight:900;border-bottom:1px solid #cbd5e1!important;border-right:1px solid #cbd5e1!important;padding:7px 8px!important;font-size:10px!important;line-height:1.15!important}
.print-calibration-table-v4 td{background:#fff;border-bottom:1px solid #e2e8f0!important;border-right:1px solid #eef2f7!important;padding:6px 8px!important;font-size:10px!important;line-height:1.18!important}
.print-calibration-table-v4 tr:nth-child(even) td{background:#f8fafc}
.print-calibration-table-v4 th:last-child,.print-calibration-table-v4 td:last-child{border-right:0!important}
.print-calibration-table-v4 td:nth-child(1),.print-calibration-table-v4 td:nth-child(2),.print-calibration-table-v4 td:nth-child(3){text-align:right}
.print-calibration-table-v4 td:nth-child(4){text-align:center}
.print-calibration-table-v4 th:nth-child(1),.print-calibration-table-v4 td:nth-child(1){width:22%}
.print-calibration-table-v4 th:nth-child(2),.print-calibration-table-v4 td:nth-child(2){width:34%}
.print-calibration-table-v4 th:nth-child(3),.print-calibration-table-v4 td:nth-child(3){width:26%}
.print-calibration-table-v4 th:nth-child(4),.print-calibration-table-v4 td:nth-child(4){width:18%}

@media print{
  .print-calibration-v4-section{break-before:page;page-break-before:always;margin-top:0}
  .print-calibration-card{box-shadow:none;border-radius:10px;border:1px solid #cbd5e1;overflow:visible}
  .print-calibration-head{padding:8px 10px;background:#f8fafc;border-bottom:1px solid #cbd5e1;break-inside:avoid;page-break-inside:avoid}
  .print-calibration-head h2{font-size:12px!important}
  .print-calibration-note{font-size:8.5px}
  .print-calibration-badge{font-size:7.5px;padding:4px 7px}
  .print-calibration-table-v4{page-break-inside:auto}
  .print-calibration-table-v4 thead{display:table-header-group}
  .print-calibration-table-v4 tr{break-inside:avoid;page-break-inside:avoid}
  .print-calibration-table-v4 th{font-size:8.8px!important;padding:4px 5px!important}
  .print-calibration-table-v4 td{font-size:8.4px!important;padding:3.5px 5px!important;line-height:1.05!important}
}
