/* Phase 2: form-side usability. Contract pages (.paper) are not styled here except the print guard. */
.step-nav{display:flex;align-items:center;gap:8px;padding:10px 20px;border-top:1px solid var(--line);background:#fff}
.step-nav .btn{padding:9px 12px}.step-nav .btn:disabled{opacity:.4;cursor:default}
.step-where{flex:1;text-align:center;font-size:.82rem;color:var(--muted);font-weight:700}
.tab.incomplete::after{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--danger);margin-left:6px;vertical-align:middle}
.field-warn{font-size:.74rem;color:#9a5b00;line-height:1.4}.field-warn:empty{display:none}
.field input.field-invalid{border-color:#d29b3c}
.amount-preview{color:var(--ink);font-weight:700}.amount-preview:empty{display:none}
.print-block{display:none}
@media(max-width:980px){
  /* overflow:clip keeps the rounded panel but, unlike overflow:hidden, lets the tabs and buttons stick while scrolling */
  .form-panel{overflow:clip}
  .tabs{position:sticky;top:60px;z-index:3;background:#fff;border-bottom:1px solid var(--line);scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .actions{z-index:3}
  .step-nav{padding:10px 16px}
}
@media print{
  .step-nav,.field-warn{display:none!important}
  body.pages-overflow .paper{display:none!important}
  body.pages-overflow .print-block{display:block!important;font:16px/1.6 Arial,sans-serif;padding:20mm;color:#111}
}
/* Phase 3: saved owners / properties picker */
.dir-bar{background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:0 0 14px}
.dir-bar label{display:block;font-size:.82rem;font-weight:700;margin-bottom:6px}
.dir-row{display:flex;gap:6px}.dir-select{flex:1;min-width:0;border:1px solid #cbd1cc;border-radius:8px;padding:9px 10px;background:#fff;min-height:42px}
.dir-row .btn{padding:9px 12px}.dir-row .btn:disabled,.dir-select:disabled{opacity:.45;cursor:default}.dir-bar .delete{color:var(--danger)}
.dir-import{margin-top:8px;width:100%;font-size:.85rem}
.dir-status{margin:6px 0 0;font-size:.78rem;color:var(--muted);line-height:1.4}.dir-status:empty{display:none}
@media print{.dir-bar{display:none!important}}
/* Phase 4: direct PDF. The stage holds off-screen copies of the pages with print geometry. */
.pdf-stage{position:absolute;left:-10000px;top:0;width:198mm;background:#fff}
.pdf-stage .pdf-page{display:block;margin:0!important;box-shadow:none!important;transform:none!important;zoom:1!important;width:198mm!important;min-height:284mm!important;height:auto!important}
.pdf-btn{background:#fff;border-color:var(--ink)}
@media(max-width:980px){.actions{flex-wrap:wrap}.actions .btn{flex:1 1 40%}}
@media print{.pdf-stage{display:none!important}}
/* html2canvas paints both cells' borders in a collapsed table (double lines). Same collapsed widths, so layout is unchanged; only the painting is single. */
.pdf-stage .contract{border-top:1px solid #111;border-left:1px solid #111}.pdf-stage .contract th,.pdf-stage .contract td{border-width:0 1px 1px 0}
/* Phase 6: install / update bar */
.pwa-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff8e8;border-bottom:1px solid #e6d3a8;padding:10px 24px;font-size:.88rem;color:#4a3a16;position:sticky;top:68px;z-index:4}
.pwa-bar[hidden]{display:none}.pwa-bar span{flex:1 1 260px;line-height:1.45}.pwa-bar .btn{padding:8px 12px}
@media(max-width:980px){.pwa-bar{top:60px;padding:10px 15px}}
@media print{.pwa-bar{display:none!important}}
