/* QR / barcode maker (code-tools.php). Loaded after pdf-tools.css so the hero, option
   fields, status and privacy styles are shared; this file only adds the tab strip, the
   sticky preview column, the batch grid and the print sheet. */
.ct-hero:before{content:"QR"}
.ct-app{padding-top:56px;background:linear-gradient(180deg,#f6f8fb 0%,#fff 260px)}
.ct-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:28px}
.ct-tab{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:14px;align-items:center;text-align:left;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px;cursor:pointer;color:var(--navy);transition:.2s var(--ease)}
.ct-tab .icon{grid-row:1/3;width:30px;height:30px;color:var(--blue)}
.ct-tab span{font-weight:700;font-size:1rem;letter-spacing:-.01em}
.ct-tab small{font-size:.74rem;color:#687482}
.ct-tab:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:0 1px 2px rgba(7,20,42,.07),0 12px 28px rgba(11,37,69,.08)}
.ct-tab[aria-selected="true"]{background:linear-gradient(135deg,#0b2545,#1e4a7d);border-color:transparent;color:#fff;box-shadow:0 1px 2px rgba(7,20,42,.07),0 16px 34px rgba(11,37,69,.22)}
.ct-tab[aria-selected="true"] .icon{color:var(--brand-pink-tint)}
.ct-tab[aria-selected="true"] small{color:#c9d7e5}
.ct-body{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:28px;align-items:start}
.ct-app [hidden]{display:none!important}
.ct-panel h3+.ct-types{margin-top:4px}
.ct-types{display:flex;flex-wrap:wrap;gap:6px}
.ct-types label{position:relative;font-size:.8rem;font-weight:600;padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:#fff;color:#4e5e72;cursor:pointer;transition:.15s}
.ct-types input{position:absolute;inset:0;opacity:0;cursor:pointer}
.ct-types label:has(input:checked){background:var(--navy);border-color:var(--navy);color:#fff}
.ct-types label:has(input:focus-visible){box-shadow:0 0 0 3px rgba(47,111,176,.3)}
.ct-fields{display:flex;flex-direction:column;gap:12px}
.ct-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ct-color{display:flex;align-items:center;gap:8px}
.ct-color input[type=text]{width:100px!important;font-family:ui-monospace,Consolas,monospace;text-transform:lowercase}
.ct-logo-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ct-logo-btn,.ct-mini-btn{background:#fff;border:1px solid var(--line)!important;color:var(--navy);border-radius:999px;padding:9px 16px;font-size:.84rem;gap:8px}
.ct-logo-btn .icon{width:16px;height:16px}
.ct-logo-preview{display:inline-flex;align-items:center;gap:8px}
.ct-logo-preview img{width:40px;height:40px;object-fit:contain;border:1px solid var(--line);border-radius:4px;background:#fff;padding:3px}
.ct-batch-tools{display:flex;align-items:center;gap:8px;margin-top:-4px}
.ct-bt-count{margin-left:auto;font:700 .74rem Manrope,sans-serif;color:#687482;letter-spacing:.04em}

/* ---- preview column ---- */
.ct-side{position:sticky;top:96px}
.ct-preview-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 1px 2px rgba(7,20,42,.07),0 18px 44px rgba(11,37,69,.08)}
.ct-preview{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:280px;border-radius:14px;background:repeating-conic-gradient(#eef2f6 0 25%,#fff 0 50%) 0 0/20px 20px;padding:16px;overflow:hidden}
.ct-preview canvas,.ct-preview svg{max-width:100%;height:auto;display:block;box-shadow:0 1px 2px rgba(7,20,42,.07),0 6px 20px rgba(11,37,69,.12);border-radius:4px}
.ct-preview canvas{max-height:320px;width:auto}
#ct-svg-holder{max-width:100%;overflow:auto}
.ct-preview-empty{display:flex;flex-direction:column;align-items:center;text-align:center;color:#8794a5;padding:20px}
.ct-preview-empty .icon{width:48px;height:48px;margin-bottom:10px;color:#b9c8d8}
.ct-preview-empty p{margin:0;font-size:.86rem;max-width:220px;line-height:1.6}
.ct-caption{margin:0;font-weight:700;color:var(--navy);text-align:center;font-size:.95rem;background:#fff;padding:4px 12px;border-radius:4px}
.ct-meta{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:12px 0 0;font-size:.76rem;color:#687482}
.ct-meta dt{font-weight:600;color:#4e5e72}
.ct-meta dd{margin:0;font-family:ui-monospace,Consolas,monospace;overflow-wrap:anywhere}
.ct-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.ct-actions .button{justify-content:center;border-radius:8px;padding:12px 10px;font-size:.84rem;gap:8px}
.ct-actions .button:first-child{grid-column:1/-1;padding:14px}
.ct-actions .button:not(.button-primary){background:#fff;border:1px solid var(--line);color:var(--navy)}
.ct-actions .button:not(.button-primary):hover{border-color:var(--blue);color:var(--blue)}
.ct-actions .button:disabled{opacity:.45;cursor:not-allowed}
.ct-actions .button .icon{width:16px;height:16px;flex:none}
.ct-actions .button.is-done{background:#e9f4ee;border-color:#bfe3cf;color:#14603a}

/* ---- batch output ---- */
.ct-batch-out{margin-top:40px}
.ct-batch-out .pdft-grid-head{margin-bottom:20px}
.ct-batch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.ct-batch-item{display:flex;flex-direction:column;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 12px;cursor:pointer;transition:.2s;text-align:center;color:var(--ink)}
.ct-batch-item:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:0 1px 2px rgba(7,20,42,.07),0 12px 26px rgba(11,37,69,.1)}
.ct-batch-item img{width:100%;max-width:180px;height:auto;display:block}
.ct-batch-item.is-barcode img{max-width:100%}
.ct-batch-item strong{font-size:.86rem;line-height:1.3;overflow-wrap:anywhere}
.ct-batch-item small{font-size:.72rem;color:#687482;font-family:ui-monospace,Consolas,monospace;overflow-wrap:anywhere}
.ct-batch-item.is-error{border-color:#f0b7bf;background:#fdf2f3;cursor:default}
.ct-batch-item.is-error span{color:#c0263a;font-size:.8rem;font-weight:600}

@media(max-width:1000px){.ct-body{grid-template-columns:1fr}.ct-side{position:static}}
@media(max-width:700px){.ct-app{padding-top:36px}.ct-tabs{grid-template-columns:1fr;gap:8px}.ct-tab{padding:12px 14px}.ct-two{grid-template-columns:1fr}.ct-batch-grid{grid-template-columns:repeat(2,1fr);gap:10px}.ct-actions{grid-template-columns:1fr}.ct-preview{min-height:220px}}

/* ---- dark mode ---- */
[data-theme="dark"] .ct-app{background:linear-gradient(180deg,var(--dm-surface) 0%,var(--dm-bg) 260px)}
[data-theme="dark"] .ct-tab,[data-theme="dark"] .ct-preview-card,[data-theme="dark"] .ct-types label,[data-theme="dark"] .ct-logo-btn,[data-theme="dark"] .ct-mini-btn,[data-theme="dark"] .ct-batch-item,[data-theme="dark"] .ct-actions .button:not(.button-primary),[data-theme="dark"] .ct-logo-preview img{background:var(--dm-surface);border-color:var(--dm-border);color:var(--dm-text)}
[data-theme="dark"] .ct-tab small,[data-theme="dark"] .ct-meta,[data-theme="dark"] .ct-meta dt,[data-theme="dark"] .ct-bt-count,[data-theme="dark"] .ct-batch-item small,[data-theme="dark"] .ct-preview-empty{color:var(--dm-text-muted)}
[data-theme="dark"] .ct-tab[aria-selected="true"]{background:linear-gradient(135deg,#1e4a7d,#0b2545);color:#fff}
[data-theme="dark"] .ct-types label:has(input:checked){background:var(--blue);border-color:var(--blue);color:#fff}
[data-theme="dark"] .ct-preview{background:repeating-conic-gradient(var(--dm-bg) 0 25%,var(--dm-surface-2) 0 50%) 0 0/20px 20px}
[data-theme="dark"] .ct-caption{background:var(--dm-surface);color:var(--dm-text)}
[data-theme="dark"] .ct-actions .button.is-done{background:#12301f;border-color:#22563a;color:#8fd6ac}
[data-theme="dark"] .ct-batch-item.is-error{background:rgba(192,38,58,.15);border-color:#7a2a36}

/* ---- print: only the batch sheet (or the single preview) ---- */
@media print{
  body.ct-print-batch *{visibility:hidden}
  body.ct-print-batch #ct-batch-out,body.ct-print-batch #ct-batch-out *{visibility:visible}
  body.ct-print-batch #ct-batch-out{position:absolute;left:0;top:0;width:100%;margin:0}
  body.ct-print-batch #ct-batch-out .pdft-grid-head{display:none}
  body.ct-print-batch .ct-batch-grid{grid-template-columns:repeat(var(--ct-cols,3),1fr);gap:0}
  body.ct-print-batch .ct-batch-item{border:0;border-radius:0;box-shadow:none;padding:10mm 6mm;break-inside:avoid;page-break-inside:avoid}
  body.ct-print-batch .ct-batch-grid.has-cut .ct-batch-item{outline:1px dashed #999;outline-offset:-1px}
  body.ct-print-batch .ct-batch-item.is-error{display:none}
  body.ct-print-single *{visibility:hidden}
  body.ct-print-single .ct-preview,body.ct-print-single .ct-preview *{visibility:visible}
  body.ct-print-single .ct-preview{position:absolute;left:0;top:0;width:100%;background:none;min-height:0;box-shadow:none}
  body.ct-print-single .ct-preview canvas,body.ct-print-single .ct-preview svg{box-shadow:none;max-height:none;max-width:90mm}
  body.ct-print-single .ct-preview-empty{display:none}
}
