/* ============================================================
   Offline CV Generator — TEMPLATE CORE CSS
   The A4 sheet + every reusable component (headers, section
   headings, entries, skills, tables, layouts). Per-template
   files (tpl-ats.css …) only override these primitives.
   System fonts only — no webfonts, no network, Bengali-safe.
   ============================================================ */
.cv-sheet{
  --accent:#2563eb;
  --accent-soft:#e8eefc;
  --ink:#111827;
  --ink-soft:#4b5563;
  --line:#e5e7eb;
  --line-strong:#9ca3af;
  --cv-fs:10.5pt;
  --cv-lh:1.5;
  --sheet-pad:15mm;
  --cv-pad:15mm;
  --cv-gap:13px;
  --hd-gap:14px;
  --hd-name:1.9em;
  --sh-fs:1.02em;
  --en-gap:.62em;
  --photo-w:96px;
  --photo-h:96px;
  --tpl-font:"Segoe UI","Nirmala UI","SolaimanLipi","Vrinda","Hind Siliguri",Arial,sans-serif;
  width:100%; max-width:794px; min-height:1123px;
  background:#fff; color:var(--ink);
  font-size:var(--cv-fs); line-height:var(--cv-lh);
  padding:var(--pad-y,var(--sheet-pad));
  box-shadow:0 10px 40px rgba(15,23,42,.22);
  border-radius:3px; margin:0 auto;
  font-family:var(--cv-font,var(--tpl-font));
  word-wrap:break-word; overflow-wrap:break-word;
  counter-reset:cvsec;
}
.cv-sheet.font-serif{--cv-font:Georgia,"Times New Roman","Nirmala UI","SolaimanLipi",serif}
.cv-sheet.font-modern{--cv-font:"Segoe UI","Nirmala UI",Verdana,Arial,sans-serif}
.cv-sheet.font-bengali{--cv-font:"Nirmala UI","SolaimanLipi","Vrinda","Hind Siliguri","Baloo Da 2",Arial,sans-serif}
.cv-sheet.is-dense{--cv-gap:9px;--en-gap:.38em;--cv-lh:1.38;--hd-gap:10px}
.cv-sheet.is-airy{--cv-gap:20px;--en-gap:.9em;--cv-lh:1.7;--hd-gap:20px}
.cv-sheet *{box-sizing:border-box}
.cv-sheet h1,.cv-sheet h2,.cv-sheet h3,.cv-sheet h4,.cv-sheet p,.cv-sheet ul{margin:0;padding:0}
.cv-sheet a{color:inherit;text-decoration:none}
.cv{width:100%}

/* ---------------- page layouts ---------------- */
.cvcols{display:flex;gap:20px;align-items:stretch}
.cvaside{width:var(--aside-w,32%);flex:none;min-width:0}
.cvmain{flex:1;min-width:0}
.lay-boxed>.cvmain,.lay-boxed>.cvcols{border:1.5px solid var(--line-strong);padding:14px 16px}
.lay-boxed{border:2px solid var(--accent);padding:12px}
.cvaside--dark{background:var(--accent);color:#fff;padding:16px 14px}
.cvaside--dark .cvsh{color:#fff}
.cvaside--dark .cve-s,.cvaside--dark .cve-d,.cvaside--dark .cve-x{opacity:.9}
.cvaside--dark .sk-dots i{background:rgba(255,255,255,.32)}
.cvaside--dark .sk-dots i.on{background:#fff}
.cvaside--dark .sk-bar{background:rgba(255,255,255,.28)}
.cvaside--dark .sk-bar i{background:#fff}
.cvaside--dark .sk-v{opacity:.9}
.cvaside--dark .tbl th,.cvaside--dark .tbl td{border-color:rgba(255,255,255,.35);color:#fff}
.cvaside--tint{background:#f7f9fc;padding:16px 14px;border-radius:2px}
.cvaside-photo{display:block;margin:0 auto 12px;width:112px;height:112px;border:3px solid rgba(255,255,255,.75)}

/* ---------------- layout hooks (real rules, not just markers) ---- */
.lay-single>.cvmain{width:100%}
.lay-band{--hd-gap:16px}
.lay-splitl .cvcols,.lay-splitr .cvcols{align-items:stretch}
.cvcols--left>.cvaside{order:1}
.cvcols--right>.cvaside{order:2}
.cvs-body{min-width:0}

/* ---------------- header ---------------- */
.cvh{margin-bottom:var(--hd-gap);page-break-inside:avoid;break-inside:avoid}
.cvh-main{min-width:0;flex:1}
.cvh-name{font-size:var(--hd-name);font-weight:800;line-height:1.15;letter-spacing:-.2px}
.cvh-name b{font-weight:800}
.cvh-role{font-size:1.04em;font-weight:600;opacity:.88;margin-top:1px}
.cvh-l,.cvh-r{min-width:0}
.cvh--left{display:flex;gap:16px;align-items:center}
.cvh--stack{display:flex;gap:18px;align-items:center}
.cvh--side{display:flex;gap:16px;align-items:center;justify-content:space-between}
.cvh--center{text-align:center}
.cvh--center .cvp{display:block;margin:0 auto 8px}
.cvh--row{display:flex;justify-content:space-between;align-items:flex-end;gap:18px}
.cvh--row .cvh-r{text-align:right;flex:none}
.cvh--right{display:flex;justify-content:flex-end;align-items:center;gap:16px;text-align:right}
.cvh--band,.cvh--banner{background:var(--accent);color:#fff;
  margin:calc(-1 * var(--pad-y,var(--sheet-pad))) calc(-1 * var(--pad-y,var(--sheet-pad))) var(--hd-gap);
  padding:24px 26px;display:flex;gap:18px;align-items:center}
.cvh--banner{padding:30px 28px}
.cvh--banner .cvh-name,.cvh--band .cvh-name{color:#fff}
.cvh--banner .cvh-role,.cvh--band .cvh-role{color:#fff;opacity:.92}
.cvh--bigname .cvh-name{font-size:2.7em;letter-spacing:-1px}
.cvh--boxed{border:1.5px solid var(--line-strong);padding:12px 16px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.cvh--boxed .ctc{width:100%}
.cvh--rule{border-bottom:2.5px solid var(--accent);padding-bottom:10px}
.cvh--rule .cvh-rule{display:none}
.cvh--mono{display:flex;gap:14px;align-items:center}
.cvh-mono{width:62px;height:62px;flex:none;display:flex;align-items:center;justify-content:center;
  background:var(--accent);color:#fff;font-weight:800;font-size:1.45em;border-radius:8px;letter-spacing:1px}
.cvh--hasmono .cvh-mono{border-radius:50%}
.cvh--split{text-align:center}
.cvh-split{display:flex;align-items:center;gap:12px;justify-content:center}
.cvh-split::before,.cvh-split::after{content:"";flex:1;height:1px;background:currentColor;opacity:.4}
.cvh--mini .cvh-line{display:flex;align-items:baseline;gap:.5em;flex-wrap:wrap}
.cvh--mini .cvh-name{font-size:1.42em}
.cvh--mini .cvh-role{font-size:.95em;margin:0}
.cvh-sep{opacity:.5}
.cvh--table{width:100%}
.cvh-tbl{width:100%;border-collapse:collapse}
.cvh-tbl td{vertical-align:middle;border:0;padding:0}
.cvh-tbl-l{width:52%}
.cvh-tbl-r{width:36%;text-align:right}
.cvh-tbl-p{width:12%;text-align:right}
.cvh--ring .cvp{border:3px solid var(--accent);padding:3px;background:#fff}
.cvp{object-fit:cover;flex:none;width:var(--photo-w);height:var(--photo-h)}
.cvp.circle{border-radius:50%}
.cvp.round{border-radius:10px}
.cvp.square{border-radius:2px}

/* ---------------- contact ---------------- */
.ctc{font-size:.88em;line-height:1.75;margin-top:4px}
.ctc--inline span{display:inline}
.ctc-sep{margin:0 .45em;opacity:.5}
.ctc--stack span{display:block}
.ctc--two{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;text-align:left}
.ctc--two span{display:block}
.ctc--table{width:100%;border-collapse:collapse;font-size:.88em;line-height:1.6;margin-top:4px}
.ctc--table>tbody>tr>td,.ctc--table>tr>td{vertical-align:top;width:50%;border:0;padding:0 8px 0 0}
.ctc--table table{width:100%;border-collapse:collapse}
.ctc--table th{width:1.1em;border:0;padding:1px 5px 1px 0;vertical-align:top;font-weight:400;opacity:.8}
.ctc--table td{border:0;padding:1px 0;vertical-align:top;text-align:left}
.ctc--icon{display:flex;flex-wrap:wrap;gap:.15em .9em;align-items:center}
.ctc-i{display:inline-flex;gap:5px;align-items:center}
.ic{width:1.02em;height:1.02em;fill:currentColor;flex:none;vertical-align:-.15em}

/* ---------------- section headings ---------------- */
.cvs{margin-bottom:var(--cv-gap);page-break-inside:auto;break-inside:auto}
.cvs-text{font-size:.96em}
.cvsh{font-size:var(--sh-fs);font-weight:800;letter-spacing:.6px;text-transform:uppercase;
  margin:0 0 .5em;color:var(--ink);page-break-after:avoid;break-after:avoid}
.cvsh span{vertical-align:middle}
.cvsh--rule{border-bottom:1.5px solid var(--accent);padding-bottom:3px;color:var(--accent)}
.cvsh--caps{letter-spacing:2.4px;font-size:.85em;color:var(--accent);border-bottom:1px solid var(--line);padding-bottom:3px}
.cvsh--band{background:var(--accent);color:#fff;display:inline-block;padding:2px 12px;border-radius:3px;font-size:.84em}
.cvsh--boxed{border:1.2px solid var(--accent);color:var(--accent);display:inline-block;padding:1px 10px;font-size:.84em;border-radius:2px}
.cvsh--num::before{content:counter(cvsec) ". ";color:var(--accent)}
.cvs{counter-increment:cvsec}
.cvsh--bar{border-left:4px solid var(--accent);padding-left:9px}
.cvsh--dots{border-bottom:2px dotted var(--accent);padding-bottom:3px;color:var(--accent)}
.cvsh--outline{border:1px solid var(--line-strong);padding:3px 10px;text-align:center;text-transform:none;letter-spacing:1.2px}
.cvsh--thick{border-bottom:3px solid var(--ink);padding-bottom:2px}
.cvsh--leftbar{background:#f3f4f6;border-left:5px solid var(--accent);padding:3px 10px}
.cvsh--chip{background:var(--accent);color:#fff;border-radius:20px;display:inline-block;padding:2px 14px;font-size:.8em;letter-spacing:1.2px}
.cvsh--double{border-top:3px double #374151;border-bottom:3px double #374151;padding:2px 0;text-align:center;letter-spacing:2px}
.cvsh--plain{font-weight:700;text-transform:none;letter-spacing:0;font-size:1.04em;color:var(--accent)}
.cvsh--under{text-transform:none;letter-spacing:0;border-bottom:2px solid var(--accent);display:inline-block;padding-bottom:1px}
.cvsh--shade{background:#f3f4f6;padding:3px 10px;border-radius:3px}
.cvsh--tick::before{content:"\2714";color:var(--accent);margin-right:.45em;font-size:.9em}
.cvsh--icon{display:flex;align-items:center;gap:7px;color:var(--accent)}
.cvsh--orn{display:flex;align-items:center;justify-content:center;gap:10px;text-transform:none;letter-spacing:.5px;color:var(--accent)}
.cvsh--orn::before,.cvsh--orn::after{content:"";flex:1;height:1px;background:var(--accent);opacity:.45}
.cvsh--orn .cvsh-orn{font-size:.62em;opacity:.85}

/* ---------------- entries ---------------- */
.cve{margin-bottom:var(--en-gap);page-break-inside:avoid;break-inside:avoid}
.cve-h{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.cve-h--stack{display:block}
.cve-h--stack .cve-d{display:block;font-size:.85em;opacity:.75;margin-top:1px}
.cve-t{font-weight:700}
.cve-d{font-size:.85em;opacity:.72;white-space:nowrap;text-align:right}
.cve-s{font-size:.92em;opacity:.82;font-style:italic}
.cve-s--plain{font-style:normal;opacity:.9}
.cve-x{font-size:.9em;opacity:.85;margin-top:1px}
.cve-b{font-size:.93em;margin-top:.15em}
.cve-p{margin:0 0 .15em}
.cve-ul{margin:.18em 0 0;padding-left:1.15em;list-style:disc}
.cve-ul li{margin:0 0 .12em}
.cve--row .cve-h{align-items:baseline}
.cve--stack{margin-bottom:calc(var(--en-gap) * 1.1)}
.cve--hang{display:grid;grid-template-columns:7.6em 1fr;gap:0 10px}
.cve--hang .cve-when{font-size:.84em;opacity:.75;padding-top:.18em}
.cve--hang .cve-main{min-width:0}
.cve--tl{position:relative;padding-left:16px;margin-left:5px;border-left:2px solid var(--line)}
.cve--tl .cve-dot{position:absolute;left:-6px;top:.42em;width:9px;height:9px;border-radius:50%;background:var(--accent)}
.cve--tl .cve-when{font-size:.8em;opacity:.78;text-transform:uppercase;letter-spacing:.6px;margin-bottom:1px}
.cve--tl .cve-main{min-width:0}
.cve--box{border:1px solid var(--line);border-radius:8px;padding:7px 11px;background:#fcfdff}
.cve--compact{margin-bottom:.42em}
.cve--compact .cve-line{display:flex;flex-wrap:wrap;gap:.3em;align-items:baseline}
.cve--plain{padding-left:.9em;border-left:2px solid var(--line)}
.cve-c{display:inline;min-width:0}
.cve-sep{opacity:.5}
.cve-tech{display:inline-block;font-size:.86em;background:#f1f5f9;border-radius:4px;padding:0 6px;color:var(--ink-soft)}

/* ---------------- skills ---------------- */
.sk{margin:0;padding:0;list-style:none}
.sk--bars li{margin-bottom:.42em}
.sk--bars .sk-n{font-weight:600;display:block}
.sk--bars .sk-bar{display:block;height:5px;background:var(--line);border-radius:4px;overflow:hidden;margin:2px 0}
.sk--bars .sk-bar i{display:block;height:100%;background:var(--accent);border-radius:4px}
.sk--bars .sk-v{font-size:.78em;opacity:.7}
.sk--dots li{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:.32em}
.sk-dots{display:inline-flex;gap:4px;flex:none}
.sk-dots i{width:8px;height:8px;border-radius:50%;background:#d1d5db;display:block}
.sk-dots i.on{background:var(--accent)}
.sk--tags{display:flex;flex-wrap:wrap;gap:.35em}
.sk--tags .sk-tag,.sk-tag{border:1px solid var(--accent);color:var(--accent);border-radius:20px;padding:.05em .7em;font-size:.85em}
.sk--list li{margin-bottom:.16em}
.sk--list li::before{content:"\25AA";color:var(--accent);margin-right:.45em}
.sk--grid{display:grid;grid-template-columns:1fr 1fr;gap:.16em .9em}
.sk--grid li::before{content:"\2022";color:var(--accent);margin-right:.4em}
.sk--inline{line-height:1.65}
.sk--word li{display:flex;justify-content:space-between;gap:8px;border-bottom:1px dotted var(--line);padding:.14em 0}
.sk--word .sk-v{font-size:.86em;opacity:.75;white-space:nowrap}

/* ---------------- tables ---------------- */
.tbl{width:100%;border-collapse:collapse;font-size:.92em;page-break-inside:auto}
.tbl th,.tbl td{border:1px solid var(--line-strong);padding:4px 8px;text-align:left;vertical-align:top}
.tbl thead th{background:#f3f4f6;font-weight:700}
.tbl .c-t{text-align:left}
.tbl .c-t b{font-weight:700}
.tbl .c-d{white-space:nowrap;width:1%}
.tbl .c-r{white-space:nowrap;width:1%}
.tbl .c-s,.tbl .c-x,.tbl .c-l{font-size:.94em;color:var(--ink-soft)}
.tbl-sk td{border-left:0;border-right:0}
.tbl-sk tr:first-child td{border-top:0}
.tbl-sk tr:last-child td{border-bottom:0}

/* ---------------- personal details table + declaration ---------------- */
.ptbl{margin-top:var(--cv-gap);border:1px solid var(--line-strong);padding:8px 11px;page-break-inside:avoid;break-inside:avoid}
.ptbl-h{font-weight:800;text-transform:uppercase;letter-spacing:.9px;font-size:.84em;color:var(--accent);
  border-bottom:1px solid var(--line);padding-bottom:3px;margin-bottom:5px}
.ptbl table{width:100%;border-collapse:collapse;font-size:.93em}
.ptbl th{text-align:left;font-weight:600;width:10em;padding:2px 8px 2px 0;color:var(--ink-soft);vertical-align:top}
.ptbl td{padding:2px 0;vertical-align:top}
.cvf{margin-top:18px;page-break-inside:avoid;break-inside:avoid}
.cvf-h{font-weight:800;text-transform:uppercase;letter-spacing:.9px;font-size:.88em;margin-bottom:4px;color:var(--accent)}
.cvf-p{font-size:.93em}
.cvf-sig{display:flex;flex-direction:column;align-items:flex-end;gap:2px;margin-top:22px}
.cvf-sig span{display:block;width:180px;border-top:1px solid var(--ink)}
.cvf-sig small{font-size:.8em;opacity:.75}

/* ---------------- screen-only extras ---------------- */
#cvPreviewWrap{width:100%;display:flex;justify-content:center}
#cvPreviewWrap .cv-sheet{flex:none}

/* thumbnail: a real, scaled-down render of the template */
.tpl-thumb{position:relative;display:block;width:100%;aspect-ratio:210/297;overflow:hidden;background:#fff;
  border:1px solid var(--border,#e5e7eb);border-radius:4px}
.tpl-thumb .thumb-scale,.tpl-thumb .cv-sheet{display:block}
.tpl-thumb{min-height:150px}
.tpl-thumb .thumb-scale{position:absolute;top:0;left:0;width:794px;height:1123px;
  transform:scale(var(--thumb-scale,.155));transform-origin:top left;pointer-events:none}
.tpl-thumb .cv-sheet{box-shadow:none;border-radius:0;margin:0;max-width:none;width:794px;min-height:1123px}

@media screen and (max-width:640px){
  .cv-sheet{--pad-y:16px;min-height:auto}
  /* full-bleed sidebar templates keep zero padding on phones too */
  .tpl-corp-sidebar,.tpl-exec-darkpanel,.tpl-crea-darkside{--pad-y:0}
  .tpl-corp-sidebar .cvmain,.tpl-exec-darkpanel .cvmain,.tpl-crea-darkside .cvmain{padding:18px 16px}
  .tpl-corp-sidebar .cvaside,.tpl-exec-darkpanel .cvaside{padding:18px 14px}
  .cvcols{flex-direction:column;gap:12px}
  .cvaside{width:100%!important}
  .cvh--row,.cvh--left,.cvh--stack,.cvh--side{flex-direction:column;align-items:flex-start;gap:8px}
  .cvh--row .cvh-r{text-align:left}
  .cve-h{flex-direction:column;gap:0}
  .cve-d{white-space:normal;text-align:left}
  .cve--hang{grid-template-columns:1fr}
  .sk--grid,.ctc--two{grid-template-columns:1fr}
}
