:root{--bg:#f3f6fa;--panel:#fff;--ink:#172236;--muted:#6a778a;--line:#dce3eb;--accent:#155fa4;--accent2:#23a6bb;--danger:#b83c31;--success:#16805b;--shadow:0 10px 30px rgba(31,48,73,.08)}
*{box-sizing:border-box}html,body{margin:0;font-family:Inter,Arial,Helvetica,sans-serif;color:var(--ink);background:var(--bg)}button{border:0;border-radius:11px;padding:11px 15px;background:var(--accent);color:#fff;font-weight:750;cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}.secondary{background:#edf4fb;color:#155fa4}.ghost{background:transparent;color:#667489}.danger{background:#fff0ef;color:var(--danger);border:1px solid #f1cfca}.email-btn{background:#16805b;color:#fff}.eyebrow{font-size:11px;letter-spacing:.15em;font-weight:850;color:var(--accent)}
.topbar{display:flex;justify-content:space-between;gap:24px;align-items:end;padding:28px 36px 18px;max-width:1500px;margin:auto}.topbar h1{margin:4px 0 4px;font-size:30px}.topbar p{margin:0;color:var(--muted)}.header-actions{display:flex;align-items:center;gap:12px}.logout-btn{background:#fff;color:var(--danger);border:1px solid #f0c9c4;box-shadow:var(--shadow)}.stats{display:flex;gap:10px}.stats div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 18px;min-width:120px;box-shadow:var(--shadow)}.stats strong,.stats span{display:block}.stats strong{font-size:22px}.stats span{font-size:12px;color:var(--muted)}
.layout{display:grid;grid-template-columns:minmax(520px,.95fr) minmax(620px,1.05fr);gap:22px;max-width:1500px;margin:0 auto;padding:0 36px 36px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);overflow:hidden}.search-panel{padding:20px}.search-row{display:flex;gap:10px}.search-row input{flex:1;padding:14px 15px;border:1px solid var(--line);border-radius:12px;font-size:15px;outline:none}.search-row input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(11,95,165,.09)}.toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin:18px 2px 10px;font-size:13px;color:var(--muted)}.queue-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.queue-actions button{font-size:12px;padding:9px 11px}.results{height:calc(100vh - 345px);min-height:420px;overflow:auto;border-top:1px solid var(--line)}.result{display:grid;grid-template-columns:1fr auto;gap:12px;padding:14px 8px;border-bottom:1px solid var(--line);align-items:center}.result:hover{background:#f8fbfd}.result h3{margin:0 0 4px;font-size:16px}.meta{font-size:12px;color:var(--muted);line-height:1.5}.meta strong{color:var(--ink);font-weight:650}.actions{display:flex;gap:7px}.actions button{font-size:12px;padding:8px 10px}.add-btn{background:#edf7f6;color:#08736e}.added{background:#e8f7ee;color:#14743a}.sent-badge{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:999px;background:#e9f7f0;color:#16805b;font-weight:800;font-size:10px}.failed-badge{display:inline-flex;margin-left:6px;padding:2px 6px;border-radius:999px;background:#fff0ef;color:#a12b22;font-weight:800;font-size:10px}
.preview-panel{padding:20px;align-self:start;position:sticky;top:16px}.preview-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px}.preview-head h2{font-size:18px;margin:4px 0 0}.preview-email{font-size:12px;color:var(--muted);margin-top:4px}.preview-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.print-area{display:flex;justify-content:center;padding:12px}.placeholder{min-height:390px;width:100%;display:grid;place-items:center;text-align:center;border:1px dashed #bdc7d3;border-radius:18px;color:var(--muted);padding:40px}.small-placeholder{min-height:180px}.batch-print-area{display:none}
.data-source-card{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:14px 15px;margin-bottom:14px;background:#f8fbfd;border:1px solid var(--line);border-radius:14px}.data-source-copy{min-width:0}.data-source-copy strong,.data-source-copy span{display:block}.data-source-copy strong{margin-top:3px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:410px}.data-source-copy span{font-size:12px;color:var(--muted);margin-top:3px}.upload-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.upload-message{display:none;margin:-4px 0 14px;padding:10px 12px;border-radius:10px;font-size:12px;font-weight:650}.upload-message.show{display:block}.upload-message.success{background:#eaf7ef;color:#176b3a;border:1px solid #ccebd8}.upload-message.error{background:#fff0ef;color:#a12b22;border:1px solid #f2ceca}.empty-data-notice{margin:0 0 14px;padding:15px 16px;border:1px dashed #a9bacb;border-radius:12px;background:#fbfdff}.empty-data-notice strong,.empty-data-notice span{display:block}.empty-data-notice span{margin-top:4px;color:var(--muted);font-size:13px}.email-progress{display:none;margin:10px 0;padding:10px 12px;border-radius:10px;font-size:12px;font-weight:700}.email-progress.show{display:block;background:#eef7ff;color:#155fa4;border:1px solid #cfe3f5}.email-progress.success{background:#eaf7ef;color:#176b3a;border-color:#ccebd8}.email-progress.error{background:#fff0ef;color:#a12b22;border-color:#f2ceca}
.print-sheet{width:148mm;height:105mm;position:relative;display:block;background:#fff}.certificate-card{width:148mm;height:105mm;position:relative;overflow:hidden;background:#fff;box-shadow:0 10px 28px rgba(20,32,50,.14)}.certificate-template{position:absolute;inset:0;width:148mm;height:105mm;object-fit:fill;display:block;user-select:none;pointer-events:none}.certificate-name{position:absolute;left:20mm;right:20mm;top:43.15mm;height:7.2mm;display:flex;align-items:center;justify-content:center;text-align:center;white-space:nowrap;overflow:hidden;color:#2f56a1;font-family:"Times NR MT","Times New Roman",Times,serif;font-weight:700;line-height:1;letter-spacing:.005em;text-transform:uppercase}
@media(max-width:1100px){.layout{grid-template-columns:1fr}.preview-panel{position:static}.results{height:520px}}
@media(max-width:760px){.topbar{align-items:start;flex-direction:column}.data-source-card{align-items:stretch;flex-direction:column}.upload-actions{display:grid;grid-template-columns:1fr}.header-actions{width:100%;align-items:stretch;flex-direction:column}.logout-btn{width:100%}.preview-head{flex-direction:column}.preview-actions{width:100%}.preview-actions button{flex:1}}
@media(max-width:640px){.topbar,.layout{padding-left:14px;padding-right:14px}.stats{width:100%}.stats div{flex:1;min-width:0}.search-row{flex-direction:column}.toolbar{align-items:flex-start;flex-direction:column}.queue-actions{justify-content:flex-start;width:100%}.result{grid-template-columns:1fr}.actions{justify-content:flex-end}.preview-panel .print-sheet{transform:scale(.58);transform-origin:top center;margin-bottom:-44mm}.print-area{padding:0}}
@media print{
  @page{size:A4 landscape;margin:0}
  html,body{width:297mm!important;min-width:297mm!important;height:210mm!important;margin:0!important;padding:0!important;background:#fff!important}
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  .no-print,.topbar,.search-panel,.preview-head{display:none!important}
  .layout{display:block!important;margin:0!important;padding:0!important;width:297mm!important}
  .panel,.preview-panel{border:0!important;box-shadow:none!important;border-radius:0!important;padding:0!important;margin:0!important;width:297mm!important}
  .print-area{padding:0!important;margin:0!important;width:297mm!important;display:block!important}
  .print-sheet{width:297mm!important;height:210mm!important;position:relative!important;background:#fff!important;margin:0!important;padding:0!important;break-after:page!important;page-break-after:always!important;overflow:hidden!important}
  .print-sheet:last-child{break-after:auto!important;page-break-after:auto!important}
  .certificate-card{position:absolute!important;left:.5mm!important;top:0!important;width:148mm!important;height:105mm!important;box-shadow:none!important;transform:scale(2)!important;transform-origin:top left!important;margin:0!important}
  .certificate-template{width:148mm!important;height:105mm!important}
  .batch-print-area.printing{display:block!important}.batch-print-area .print-sheet{margin:0!important}.batch-print-area:not(.printing){display:none!important}
  .printing-single #batchPrintArea{display:none!important}.printing-batch #singlePrintArea{display:none!important}
}
