/* New UI component primitives. Use zway-* classes in migrated modules. */
.zway-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:8px 14px;border:1px solid var(--zway-primary-border);border-radius:var(--zway-radius-md);background:var(--zway-surface);color:var(--zway-primary);font-size:var(--zway-font-size-md);font-weight:800;line-height:1.2;cursor:pointer;box-shadow:none;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease}.zway-btn:hover{background:var(--zway-primary-soft);border-color:var(--zway-primary);color:var(--zway-primary);transform:translateY(-1px);box-shadow:var(--zway-shadow-sm)}.zway-btn:disabled{opacity:.56;cursor:not-allowed;transform:none;box-shadow:none}.zway-btn-primary{background:linear-gradient(135deg,var(--zway-primary),var(--zway-primary-hover));border-color:var(--zway-primary);color:var(--zway-text-on-primary)}.zway-btn-primary:hover{background:linear-gradient(135deg,var(--zway-primary-hover),var(--zway-primary));color:var(--zway-text-on-primary)}.zway-btn-danger{border-color:color-mix(in srgb,var(--zway-danger) 45%,var(--zway-border) 55%);color:var(--zway-danger);background:var(--zway-surface)}.zway-btn-danger:hover{border-color:var(--zway-danger);background:color-mix(in srgb,var(--zway-danger) 8%,var(--zway-surface) 92%);color:var(--zway-danger)}.zway-card{background:var(--zway-surface);border:1px solid var(--zway-border);border-radius:var(--zway-radius-lg);box-shadow:var(--zway-shadow-sm)}.zway-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--zway-border)}.zway-card-title{margin:0;color:var(--zway-primary);font-size:var(--zway-font-size-lg);font-weight:900}.zway-card-body{padding:18px}.zway-table-wrap{width:100%;overflow:auto;border:1px solid var(--zway-border);border-radius:var(--zway-radius-lg);background:var(--zway-surface)}.zway-table{width:100%;border-collapse:collapse;table-layout:fixed}.zway-table th,.zway-table td{padding:12px 14px;border-bottom:1px solid var(--zway-border);vertical-align:middle;text-align:left;box-sizing:border-box}.zway-table th{background:linear-gradient(180deg,var(--zway-primary-soft),var(--zway-surface));color:var(--zway-primary);font-size:var(--zway-font-size-sm);font-weight:900}.zway-table td{font-size:var(--zway-font-size-md);color:var(--zway-text)}.zway-table tr:hover td{background:color-mix(in srgb,var(--zway-primary-soft) 42%,var(--zway-surface) 58%)}.zway-col-index{width:72px;text-align:center!important}.zway-col-actions{width:96px;text-align:center!important}.zway-col-money{text-align:right!important;font-variant-numeric:tabular-nums}.zway-col-status{text-align:center!important}.zway-link-btn{display:inline;color:var(--zway-primary);font-weight:850;text-decoration:none;background:transparent;border:0;padding:0;cursor:pointer}.zway-link-btn:hover{text-decoration:underline;text-underline-offset:3px;color:var(--zway-primary-hover)}
.zway-btn-sm{min-height:32px;padding:6px 10px;font-size:var(--zway-font-size-sm)}.zway-btn-icon{width:34px;min-width:34px;padding:6px}.zway-btn:focus-visible{outline:3px solid color-mix(in srgb,var(--zway-primary) 24%,transparent);outline-offset:2px}
.zway-status{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:3px 9px;border:1px solid transparent;border-radius:999px;font-size:var(--zway-font-size-xs);font-weight:850;line-height:1.25;white-space:nowrap}.zway-status-success{color:var(--zway-success);background:color-mix(in srgb,var(--zway-success) 10%,var(--zway-surface) 90%);border-color:color-mix(in srgb,var(--zway-success) 28%,var(--zway-border) 72%)}.zway-status-warning{color:var(--zway-warning);background:color-mix(in srgb,var(--zway-warning) 10%,var(--zway-surface) 90%);border-color:color-mix(in srgb,var(--zway-warning) 28%,var(--zway-border) 72%)}.zway-status-danger{color:var(--zway-danger);background:color-mix(in srgb,var(--zway-danger) 10%,var(--zway-surface) 90%);border-color:color-mix(in srgb,var(--zway-danger) 28%,var(--zway-border) 72%)}.zway-status-info{color:var(--zway-primary);background:color-mix(in srgb,var(--zway-primary) 10%,var(--zway-surface) 90%);border-color:color-mix(in srgb,var(--zway-primary) 28%,var(--zway-border) 72%)}.zway-status-neutral{color:var(--zway-text-muted);background:var(--zway-surface-muted);border-color:var(--zway-border)}

/* Legacy status bridge: old `.tag` markup remains readable during migration. */
.tag{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:3px 9px;border:1px solid transparent;border-radius:999px;font-size:var(--zway-font-size-xs);font-weight:850;line-height:1.25;white-space:nowrap;background:var(--zway-surface-muted);color:var(--zway-text-muted)}
.tag.green,.tag.teal{background:color-mix(in srgb,var(--zway-success) 10%,var(--zway-surface) 90%);border-color:color-mix(in srgb,var(--zway-success) 28%,var(--zway-border) 72%);color:var(--zway-success)}
.tag.orange{background:color-mix(in srgb,var(--zway-warning) 10%,var(--zway-surface) 90%);border-color:color-mix(in srgb,var(--zway-warning) 28%,var(--zway-border) 72%);color:var(--zway-warning)}
.tag.red{background:color-mix(in srgb,var(--zway-danger) 10%,var(--zway-surface) 90%);border-color:color-mix(in srgb,var(--zway-danger) 28%,var(--zway-border) 72%);color:var(--zway-danger)}
.tag.blue,.tag.purple{background:color-mix(in srgb,var(--zway-primary) 10%,var(--zway-surface) 90%);border-color:color-mix(in srgb,var(--zway-primary) 28%,var(--zway-border) 72%);color:var(--zway-primary)}

/* Shared form and drawer primitives for migrated pages. */
.zway-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.zway-form-grid--wide{grid-template-columns:repeat(3,minmax(0,1fr))}.zway-field{display:flex;flex-direction:column;gap:7px;min-width:0}.zway-field--full{grid-column:1 / -1}.zway-field > label,.zway-field > span,.zway-field .field-label{color:var(--zway-text);font-size:var(--zway-font-size-sm);font-weight:800;line-height:1.35}.zway-field input,.zway-field select,.zway-field textarea{width:100%;box-sizing:border-box;min-height:38px;padding:9px 11px;border:1px solid var(--zway-border);border-radius:var(--zway-radius-md);background:var(--zway-surface);color:var(--zway-text-on-surface);font:inherit;line-height:1.35;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}.zway-field textarea{min-height:96px;resize:vertical}.zway-field input::placeholder,.zway-field textarea::placeholder{color:var(--zway-text-muted)}.zway-field input:hover,.zway-field select:hover,.zway-field textarea:hover{border-color:var(--zway-border-strong)}.zway-field input:focus,.zway-field select:focus,.zway-field textarea:focus{border-color:var(--zway-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--zway-primary) 16%,transparent);outline:0}.zway-form-help{color:var(--zway-text-muted);font-size:var(--zway-font-size-xs);line-height:1.45}.zway-form-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding-top:16px;border-top:1px solid var(--zway-border)}.zway-drawer-body{background:var(--zway-surface);color:var(--zway-text-on-surface)}.zway-drawer-section{padding:18px;border:1px solid var(--zway-border);border-radius:var(--zway-radius-lg);background:var(--zway-surface);box-shadow:var(--zway-shadow-sm)}.zway-drawer-section + .zway-drawer-section{margin-top:14px}@media (max-width:760px){.zway-form-grid,.zway-form-grid--wide{grid-template-columns:1fr}.zway-field--full{grid-column:auto}.zway-form-actions{flex-wrap:wrap;justify-content:stretch}.zway-form-actions .zway-btn{flex:1 1 140px}}

/* Approval drawer bridge: legacy sales-contract markup now consumes the shared tokens. */
.sales-contract-approval-card{
  background:var(--zway-surface)!important;
  border-color:var(--zway-border)!important;
  border-radius:var(--zway-radius-lg)!important;
  box-shadow:var(--zway-shadow-sm)!important;
}
.sales-contract-approval-card h4{color:var(--zway-primary)!important}
#salesContractApprovalActions .btn,
#salesContractApprovalDrawer .sales-contract-approval-actions .btn{
  min-height:36px;
  border-radius:var(--zway-radius-md);
  font-weight:800;
  transition:background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,transform .16s ease;
}
#salesContractApprovalActions .btn.primary,
#salesContractApprovalDrawer .sales-contract-approval-actions .btn.primary{
  background:linear-gradient(135deg,var(--zway-primary),var(--zway-primary-hover))!important;
  border-color:var(--zway-primary)!important;
  color:var(--zway-text-on-primary)!important;
}
#salesContractApprovalActions .btn.danger,
#salesContractApprovalDrawer .sales-contract-approval-actions .btn.danger{
  background:var(--zway-surface)!important;
  border-color:color-mix(in srgb,var(--zway-danger) 45%,var(--zway-border) 55%)!important;
  color:var(--zway-danger)!important;
}
#salesContractApprovalActions .btn:hover,
#salesContractApprovalDrawer .sales-contract-approval-actions .btn:hover{transform:translateY(-1px);box-shadow:var(--zway-shadow-sm)}
.zway-task-actions{display:flex;align-items:center;gap:6px;margin-top:8px}
.zway-task-actions .action-link:hover{color:var(--zway-text-on-primary);background:var(--zway-primary);border-color:var(--zway-primary)}
.task-due-overdue{color:var(--zway-danger)!important;font-weight:800}
.task-due-normal{color:var(--zway-text-muted)!important}
.task-approval-title{color:var(--zway-danger);font-weight:850}
.project-code{font-size:12px !important;font-variant-numeric:tabular-nums;color:var(--zway-text);font-weight:850}
.zway-tabs{display:flex;align-items:center;gap:8px}
.zway-tab{font:inherit;cursor:pointer}
.zway-tab:focus-visible{outline:3px solid color-mix(in srgb,var(--zway-primary) 34%,transparent);outline-offset:2px}
.project-detail-panel .zway-field > span,
.project-detail-panel .zway-field > label,
.project-detail-panel .zway-field .field-label{color:var(--zway-text);font-weight:800}
.project-detail-panel .zway-field input,
.project-detail-panel .zway-field select,
.project-detail-panel .zway-field textarea{border-color:var(--zway-border);background:var(--zway-surface);color:var(--zway-text);border-radius:var(--zway-radius-md);transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}
.project-detail-panel .zway-field input:focus,
.project-detail-panel .zway-field select:focus,
.project-detail-panel .zway-field textarea:focus{border-color:var(--zway-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--zway-primary) 16%,transparent);outline:0}
.project-detail-panel .zway-field em{color:var(--zway-text-muted)}
.checkin-photos-grid{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.checkin-photo-thumb{width:48px;height:48px;object-fit:cover;border-radius:var(--zway-radius-sm);cursor:pointer;border:1px solid var(--zway-border)}
.zway-state-message{padding:18px 16px;border:1px dashed var(--zway-border);border-radius:var(--zway-radius-md);background:var(--zway-surface-soft);color:var(--zway-text-muted);text-align:center;line-height:1.6}
.zway-state-loading{color:var(--zway-primary)}
.zway-state-error{border-color:color-mix(in srgb,var(--zway-danger) 34%,var(--zway-border) 66%);background:color-mix(in srgb,var(--zway-danger) 6%,var(--zway-surface) 94%);color:var(--zway-danger)}
