*{box-sizing:border-box}
body{font-family:Arial,Helvetica,sans-serif;margin:0;background:#f4f6fb;color:#172033}
header{background:#0b2e83;color:white;padding:24px 32px}
header h1{margin:0 0 6px}header p{margin:0;opacity:.9}
nav{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:white;padding:12px 32px;box-shadow:0 2px 10px #0001;position:sticky;top:0;z-index:5}
button{background:#0b2e83;color:white;border:0;border-radius:9px;padding:10px 14px;font-weight:700;cursor:pointer}
button.secondary{background:#475569}
main{max-width:1450px;margin:auto;padding:20px}
.card{background:white;border-radius:16px;padding:18px;margin:16px 0;box-shadow:0 6px 20px #00000012}
.grid{display:grid;grid-template-columns:1.08fr .92fr;gap:16px}.row{display:flex;gap:10px;align-items:center;margin:6px 0}
input,select{padding:10px;border:1px solid #cdd6e8;border-radius:9px;width:100%;margin:5px 0 10px;background:white}
label{font-weight:700;font-size:14px}.hidden{display:none!important}
.table-wrap{width:100%;overflow:auto}table{width:100%;border-collapse:collapse;background:white}
th,td{border-bottom:1px solid #e8edf7;padding:8px;text-align:left;white-space:nowrap}th{background:#eaf0ff}
.small-table input{width:64px;padding:7px;margin:0}.small-table select{width:110px;padding:7px;margin:0}
.small-table td,.small-table th{font-size:13px;padding:6px}
.badge{display:inline-block;background:#eaf0ff;border-radius:999px;padding:4px 8px}
.notice{background:#fff8e6;border:1px solid #f0d38a;border-radius:12px;padding:10px;margin:10px 0}
.ok{background:#e9fff0;border:1px solid #b6e7c8;border-radius:12px;padding:10px;margin:10px 0}
.err{background:#ffecec;border:1px solid #f5b1b1;border-radius:12px;padding:10px;margin:10px 0;white-space:pre-wrap}
.hint{color:#5a667a;font-size:13px}.preview{max-width:100%;max-height:420px;border:1px solid #d8e0ef;border-radius:12px;margin:10px 0}
.bonus-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:900px){.grid,.row{display:block}.row button{width:100%;margin-bottom:8px}.bonus-grid{grid-template-columns:1fr}}

.ocr-box{background:#111827;color:#e5e7eb;border-radius:12px;padding:14px;white-space:pre-wrap;max-height:360px;overflow:auto;font-size:13px}
details{margin:10px 0}
summary{cursor:pointer;font-weight:700;color:#0b2e83}

.image-wrap{position:relative;display:inline-block;max-width:100%;margin:10px 0}
.image-wrap .preview{display:block;max-width:100%;max-height:560px}
#gridCanvas{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:auto;cursor:move}
.calibration-panel{border:1px solid #d8e0ef;background:#f8fbff;border-radius:14px;padding:12px;margin:10px 0}
.calib-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.calib-grid label{font-size:12px;color:#334155}
.calib-grid input{margin-top:4px}
.crop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:8px;margin:10px 0}
.crop-grid div{border:1px solid #d7deee;border-radius:8px;padding:4px;background:#fff;font-size:11px;text-align:center}
.crop-grid img{width:100%;height:auto;display:block;background:#fff}
.dirty{background:#fff3cd;border:2px solid #e0a800;color:#7a5b00;border-radius:12px;padding:10px;margin:10px 0;font-weight:800}
button.btn-save-ticket{background:#15803d;font-size:16px;padding:12px 18px}
button.btn-save-official{background:#b45309}
.fast-cell{width:64px;text-align:center;font-size:20px;font-weight:700;padding:10px 4px;margin:0}
#fastTable td:nth-child(2){white-space:normal}
#fastTable input{margin:0}
