/* ==========================================================================
   Quote module - styling specific to the quote builder + A4 quote paper.
   Depends on ../../design/envisij-ds.css for tokens + primitives.
   Load order: envisij-ds.css first, then this file.
   ========================================================================== */

/* ---------- builder / preview split ---------- */
.app{display:flex;align-items:flex-start;gap:0;min-height:calc(100vh - 47px)}
.builder{flex:1;min-width:470px;padding:16px 14px 60px 16px;display:flex;flex-direction:column;gap:14px;height:calc(100vh - 47px);overflow-y:auto}
.preview-wrap{flex:none;width:846px;background:#dfe7ef;padding:26px;height:calc(100vh - 47px);overflow:auto}
@media (max-width:1340px){
  .builder{flex:none;width:480px;min-width:0}
  .preview-wrap{flex:1;width:auto}
}
.builder-actions{display:flex;gap:8px;margin-top:4px}
.builder-actions .ghost-btn{flex:1}

/* ---------- product rolodex ---------- */
.rolodex-controls{margin-bottom:9px}
.cat-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.rolodex-list{max-height:52vh;overflow-y:auto;border:1px solid var(--line);border-radius:8px}
.rolo-head{position:sticky;top:0;z-index:3;display:grid;grid-template-columns:30px 1fr 92px 96px;align-items:center;background:#fff;border-bottom:2px solid var(--navy)}
.rolo-head button{border:0;background:none;text-align:left;padding:8px 6px 8px 0;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--slate);white-space:nowrap}
.rolo-head button:hover{color:var(--blue)}
.rolo-head button.sorted{color:var(--navy)}
.rolo-head button.price{text-align:right;padding-right:10px}
.cat-head{position:sticky;top:31px;z-index:2;background:var(--navy);color:#fff;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:7px 10px;display:flex;justify-content:space-between;align-items:center}
.cat-head .count{font-weight:500;color:#9fb6cc;font-size:10.5px;text-transform:none;letter-spacing:0}
.rolo-row{display:grid;grid-template-columns:30px 1fr 92px 96px;align-items:center;padding:6px 0;border-bottom:1px solid #eef2f6;cursor:pointer}
.rolo-row:hover{background:#eaf3fd}
.rolo-row.selected{background:#e3f0fd}
.rolo-row:last-child{border-bottom:0}
.rolo-check{justify-self:center;width:15px;height:15px;accent-color:var(--blue);pointer-events:none}
.rolo-name{min-width:0;padding-right:6px}
.rolo-name b{font-size:12.5px;font-weight:600;color:#20527e;display:block}
.rolo-name span{font-size:11px;color:var(--slate);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rolo-sku{font-size:11.5px;color:var(--slate);white-space:nowrap}
.rolo-price{font-size:12.5px;font-weight:600;color:var(--navy);white-space:nowrap;text-align:right;padding-right:10px}
.rolo-price .per{font-weight:400;color:var(--slate);font-size:11px}
.rolo-empty{padding:14px;color:var(--slate);font-size:13px;text-align:center}
.rolodex-foot{display:flex;align-items:center;gap:8px;margin-top:9px}

/* ---------- quote line items (builder side) ---------- */
.line{border:1px solid var(--line);border-radius:9px;padding:9px 10px;margin-bottom:8px;background:#fbfcfe}
.line-top{display:flex;align-items:flex-start;gap:8px}
.line-title{flex:1;min-width:0}
.line-title b{font-size:13px;font-weight:600}
.line-title .sku{font-size:11px;color:var(--slate)}
.line-fields{display:grid;grid-template-columns:76px 110px 86px 1fr;gap:8px;margin-top:8px;align-items:end}
.line-fields .field label{font-size:10px}
.line-total{font-size:13.5px;font-weight:700;color:var(--navy);text-align:right;padding-bottom:8px}
.line-total small{display:block;font-weight:400;color:var(--slate);font-size:10.5px}
.custom-note{font-size:10.5px;color:var(--amber);font-weight:600}

/* ---------- the A4 quote paper (print artefact) ---------- */
.paper{width:794px;margin:0 auto;background:#fff;box-shadow:0 6px 30px rgba(12,25,41,.28);color:var(--ink);position:relative}
/* on-screen A4 page-division guides (hidden in print) */
.page-marker{position:absolute;left:0;right:0;border-top:2px dashed #f0a63c;pointer-events:none;z-index:5}
.page-marker span{position:absolute;right:8px;top:-9px;background:#f0a63c;color:#fff;font-size:9.5px;font-weight:700;letter-spacing:.05em;padding:2px 7px;border-radius:99px;text-transform:uppercase}
.q-hero{background:var(--navy);color:#fff;padding:34px 46px 30px}
.q-hero .logo{height:34px;width:auto;margin-bottom:22px;fill:#fff}
.q-title{font-size:27px;font-weight:800;line-height:1.25;letter-spacing:-.01em;max-width:560px}
.q-hero-grid{display:flex;justify-content:space-between;gap:30px;margin-top:22px}
.q-hero-left{font-size:13.5px;line-height:1.55}
.q-hero-left .co{font-weight:700;font-size:14.5px}
.q-hero-left .addr{white-space:pre-line;color:#cfdcea;font-size:12.5px;line-height:1.55;margin-top:3px}
.q-hero-left .contact{margin-top:14px}
.q-hero-right{font-size:12.5px;line-height:1.8;text-align:right;color:#cfdcea}
.q-hero-right b{color:#fff;font-weight:600}
.q-body{padding:30px 46px 40px}
.q-comments{border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-bottom:26px}
.q-comments h3{font-size:12.5px;font-weight:700;color:var(--navy);margin-bottom:6px}
.q-comments p{font-size:12.5px;line-height:1.55;color:var(--ink);white-space:pre-wrap}
.q-section-title{font-size:14px;font-weight:700;color:var(--navy);margin:0 0 4px}
table.q-items{width:100%;border-collapse:collapse;margin-top:6px}
table.q-items th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--slate);text-align:left;padding:8px 8px 8px 0;border-bottom:2px solid var(--navy)}
table.q-items th.num,table.q-items td.num{text-align:right;padding-right:0}
table.q-items td{padding:11px 8px 11px 0;border-bottom:1px solid var(--line);vertical-align:top;font-size:12.5px}
table.q-items tr{break-inside:avoid}
.qi-name{font-weight:600;font-size:13px}
.qi-desc{font-size:11.5px;color:var(--slate);line-height:1.45;margin-top:3px;max-width:300px}
.qi-sku{font-size:11.5px;color:var(--slate);white-space:nowrap}
.qi-per{color:var(--slate);font-size:11px}
.qi-note{font-size:10.5px;color:var(--slate);margin-top:3px}
.q-subtotals{margin-top:4px}
.q-subtotals .row{display:flex;justify-content:space-between;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.q-subtotals .row .lbl{color:var(--ink)}
.q-subtotals .row .amt{font-weight:600;text-align:right}
.q-subtotals .row .amt small{display:block;font-weight:400;color:var(--slate);font-size:10.5px;margin-top:2px}
.q-subtotals .row.total{border-bottom:0;padding-top:14px}
.q-subtotals .row.total .lbl,.q-subtotals .row.total .amt{font-size:16px;font-weight:800;color:var(--navy)}
.q-vat{font-size:12px;font-weight:600;margin-top:22px}
.q-block{margin-top:24px}
.q-block h3{font-size:12.5px;font-weight:700;color:var(--navy);margin-bottom:6px}
.q-block p,.q-block a{font-size:12.5px;line-height:1.6;color:var(--ink)}
.q-block a{color:var(--blue)}
.q-contact{display:flex;gap:34px;margin-top:8px}
.q-contact .who p,.q-contact .where p{font-size:12.5px;line-height:1.65}
.q-contact .who b{font-weight:700}
.q-foot{border-top:1px solid var(--line);margin-top:30px;padding-top:14px;font-size:10.5px;color:var(--slate);line-height:1.6}

/* ---------- print ---------- */
@page{size:A4;margin:0}
@media print{
  body{background:#fff}
  .topbar,.builder{display:none!important}
  .app{display:block;min-height:0}
  .preview-wrap{padding:0;height:auto;overflow:visible;background:#fff}
  .paper{width:auto;box-shadow:none;margin:0}
  .page-marker{display:none}
  /* clean A4 page breaks: never split a row, box or block across pages */
  table.q-items tr,.q-comments,.q-subtotals .row,.q-block,.q-contact,.q-foot{break-inside:avoid;page-break-inside:avoid}
  .q-section-title,.q-block h3{break-after:avoid;page-break-after:avoid}
  .q-hero{break-inside:avoid;page-break-inside:avoid}
  *{print-color-adjust:exact;-webkit-print-color-adjust:exact}
}
