/* 1208 Host Client Zone. Builds on /assets/style.css tokens. */
:root {
  --ok: #1F7A4D; --ok-bg: #E4F1E9;
  --warn: #8A5A00; --warn-bg: #FBF0D9;
  --bad: #9B2C1A; --bad-bg: #FBE8E3;
  --off: #55625C; --off-bg: #ECEBE4;
}
body.pz { display: flex; flex-direction: column; min-height: 100vh; background: var(--paper); }
.pz-main { flex: 1; padding-block: 32px 64px; }
.pz-main > .wrap { display: grid; gap: 24px; align-content: start; }

/* Top bar */
.pz-top { background: var(--card); border-bottom: 1px solid var(--line); position: sticky; top: env(safe-area-inset-top, 0px); z-index: 40; }
.pz-top-in { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; }
.pz-brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--emerald); }
.pz-brand img { height: 29px; width: auto; }
.pz-brand span { font: 600 12px/1 var(--body); letter-spacing: .15em; text-transform: uppercase; color: var(--forest); border-left: 1px solid var(--line); padding-left: 12px; }
.pz-user { display: flex; align-items: center; gap: 16px; font-size: .9375rem; }
.pz-name { font-weight: 500; }
.pz-logout, .pz-back { color: var(--forest); font-weight: 500; font-size: .9375rem; }
.pz-nav { border-top: 1px solid var(--line); }
.pz-nav .wrap { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; }
.pz-nav a { flex: none; padding: 14px 14px; color: var(--ink-2); text-decoration: none; font-weight: 500; font-size: .9375rem; box-shadow: inset 0 -2px 0 transparent; }
.pz-nav a:hover { color: var(--emerald); }
.pz-nav a[aria-current="page"] { color: var(--forest); box-shadow: inset 0 -2px 0 var(--forest); }
@media (max-width: 600px) { .pz-name, .pz-brand span { display: none; } }

/* Page head */
.pz-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; }
.pz-head > div { display: grid; gap: 6px; min-width: 0; }
.pz-head h1 { overflow-wrap: anywhere; }
.pz-head .crumbs { margin: 0; }
.pz-head-id { display: flex !important; align-items: center; gap: 16px; }
.pz-head-id > div { display: grid; gap: 6px; min-width: 0; }

/* Stats */
.pz-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.pz-stats--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pz-stat { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 20px; display: grid; gap: 6px; align-content: start; }
.pz-stat .k { font-size: .8125rem; color: var(--ink-2); font-weight: 500; }
.pz-stat .v { font: 600 1.75rem/1.15 var(--display); color: var(--emerald); }
.pz-stat .s, .pz-stat a { font-size: .875rem; color: var(--ink-2); }
.pz-stat a { color: var(--forest); font-weight: 500; }
.pz-stat--due { background: var(--forest); border-color: var(--forest); }
.pz-stat--due .k, .pz-stat--due .s { color: rgba(243,235,214,.8); }
.pz-stat--due .v, .pz-stat--due a { color: var(--cream); }
@media (max-width: 900px) { .pz-stats--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .pz-stats { grid-template-columns: minmax(0, 1fr); } }

/* Sections */
.pz-section { display: grid; gap: 14px; min-width: 0; }
.pz-section-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.pz-section-head h2, .pz-card h2 { font-size: 1.25rem; font-weight: 600; }
.pz-section-head a { font-weight: 500; font-size: .9375rem; }
.pz-split { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 24px; }
.pz-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: start; }
@media (max-width: 860px) { .pz-split, .pz-grid { grid-template-columns: minmax(0, 1fr); } }
.pz-card { padding: 24px; gap: 16px; }
.pz-card .kv { grid-template-columns: minmax(110px, max-content) minmax(0, 1fr); }
.pz-formcard { max-width: 860px; }
.pz-empty { background: var(--card); border: 1px dashed rgba(2,17,12,.25); border-radius: var(--r-md); padding: 24px; color: var(--ink-2); text-align: center; }

/* Service rows */
.pz-ic { width: 44px; height: 44px; flex: none; border-radius: 12px; background: var(--cream); color: var(--forest); display: grid; place-items: center; }
.pz-ic svg { width: 22px; height: 22px; }
.pz-services { display: grid; gap: 10px; }
.pz-service { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 16px; align-items: center; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); padding: 16px 20px; text-decoration: none; color: var(--emerald); transition: border-color .2s, transform .2s; }
.pz-service:hover { border-color: var(--forest); color: var(--emerald); transform: translateY(-2px); }
.pz-service-main { display: grid; min-width: 0; }
.pz-service-main b { font-weight: 600; overflow-wrap: anywhere; }
.pz-service-main small, .pz-service-meta small { color: var(--ink-2); font-size: .8125rem; }
.pz-service-meta { display: grid; justify-items: end; gap: 4px; text-align: right; }
@media (max-width: 520px) { .pz-service { grid-template-columns: 44px minmax(0, 1fr); } .pz-service-meta { grid-column: 2; justify-items: start; text-align: left; } }

/* Quick links */
.pz-links { display: grid; gap: 8px; }
.pz-links a { display: grid; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 12px 16px; text-decoration: none; color: var(--emerald); }
.pz-links a:hover { border-color: var(--forest); }
.pz-links b { font-weight: 600; font-size: .9375rem; }
.pz-links small { color: var(--ink-2); font-size: .8125rem; overflow-wrap: anywhere; }

/* Tables */
.pz-table { min-width: 560px; }
.pz-table th, .pz-table td { vertical-align: middle; }
.pz-table tbody th a { font-weight: 600; }
.pz-sub { display: block; color: var(--ink-2); font-weight: 400; font-size: .8125rem; }
.r { text-align: right !important; }

/* Badges */
.badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: .75rem; font-weight: 600; letter-spacing: .02em; white-space: nowrap; }
.badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.badge--active, .badge--paid { color: var(--ok); background: var(--ok-bg); }
.badge--pending, .badge--unpaid { color: var(--warn); background: var(--warn-bg); }
.badge--suspended, .badge--overdue, .badge--expired { color: var(--bad); background: var(--bad-bg); }
.badge--cancelled { color: var(--off); background: var(--off-bg); }

/* Alerts */
.pz-alert { background: var(--bad-bg); border: 1px solid #EBC3B8; color: #5E1A0E; border-radius: var(--r-sm); padding: 14px 16px; font-size: .9375rem; }
.pz-alert a { color: #5E1A0E; font-weight: 600; }
.pz-note { background: var(--warn-bg); border: 1px solid #EBD6A6; color: #4D3300; border-radius: var(--r-sm); padding: 12px 16px; font-size: .9375rem; }
.form-msg.info { background: var(--cream); border: 1px solid var(--line); }

/* Tabs */
.pz-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.pz-tabs a { padding: 8px 14px; border-radius: 999px; text-decoration: none; color: var(--ink-2); font-weight: 500; font-size: .9375rem; border: 1px solid var(--line); background: var(--card); }
.pz-tabs a[aria-current="page"] { background: var(--forest); color: var(--cream); border-color: var(--forest); }
.pz-count { display: inline-grid; place-items: center; min-width: 20px; height: 20px; border-radius: 999px; background: var(--warn-bg); color: var(--warn); font-size: .75rem; margin-left: 4px; }
.pz-due { display: grid; text-align: right; }
.pz-due .k { font-size: .8125rem; color: var(--ink-2); }
.pz-due .v { font: 600 1.5rem/1.2 var(--display); color: var(--forest); }

.pz-help { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; padding: 24px; }
.pz-help h2 { font-size: 1.25rem; }
.pz-search { display: flex; gap: 8px; max-width: 560px; }
.pz-search input { flex: 1; min-width: 0; font: 400 1rem var(--body); border: 1.5px solid rgba(2,17,12,.22); border-radius: var(--r-sm); padding: 0 14px; min-height: 48px; background: var(--card); color: var(--emerald); }
.pz-search input:focus { outline: none; border-color: var(--forest); box-shadow: 0 0 0 3px rgba(26,66,47,.18); }

/* Auth pages */
.pz--bare .pz-main { display: grid; place-items: center; background: var(--cream); padding-block: 48px; }
.pz-auth { width: 100%; display: grid; justify-items: center; }
.pz-auth-card { width: 100%; max-width: 440px; padding: 32px; gap: 20px; box-shadow: 0 24px 48px -28px rgba(2,17,12,.3); }
.pz-auth-card h1 { font-size: 1.75rem; }
.pz-labelrow { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.pz-labelrow label { font-weight: 600; font-size: .875rem; }

/* Footer */
.pz-foot { border-top: 1px solid var(--line); background: var(--card); font-size: .8125rem; color: var(--ink-2); }
.pz-foot .wrap { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px; padding-block: 16px; }
.pz-foot a { color: var(--ink-2); }

/* Invoice */
.pz-invoice { padding: clamp(24px, 4vw, 48px); gap: 32px; max-width: 920px; width: 100%; }
.pz-inv-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; flex-wrap: wrap; }
.pz-inv-head img { width: 120px; height: auto; }
.pz-inv-title { display: grid; justify-items: end; gap: 6px; text-align: right; }
.pz-inv-title h1 { font-size: 1.75rem; }
.pz-inv-title p { font-weight: 600; color: var(--ink-2); }
.pz-inv-parties { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; font-size: .9375rem; }
.pz-inv-parties > div { display: grid; gap: 8px; align-content: start; min-width: 0; overflow-wrap: anywhere; }
.pz-inv-parties .kv { grid-template-columns: max-content minmax(0,1fr); }
@media (max-width: 720px) { .pz-inv-parties { grid-template-columns: minmax(0, 1fr); } }
.pz-inv-items table { min-width: 520px; }
.pz-inv-items tfoot th, .pz-inv-items tfoot td { border-bottom: 0; padding-block: 8px; font-weight: 500; }
.pz-inv-items tfoot tr:first-child th, .pz-inv-items tfoot tr:first-child td { padding-top: 16px; }
.pz-inv-total th, .pz-inv-total td { font: 600 1.125rem var(--display) !important; color: var(--forest); border-top: 2px solid var(--forest) !important; padding-top: 14px !important; }
.pz-inv-pay { background: var(--paper); border-radius: var(--r-md); padding: 24px; display: grid; gap: 12px; }
.pz-inv-pay h2 { font-size: 1.125rem; }
.pz-inv-notes { color: var(--ink-2); }
.pz-inv-foot { color: var(--ink-2); font-size: .8125rem; border-top: 1px solid var(--line); padding-top: 16px; }

/* Admin invoice lines */
.pz-row3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
@media (max-width: 720px) { .pz-row3 { grid-template-columns: minmax(0, 1fr); } }
.pz-lines { display: grid; gap: 8px; }
.pz-line { display: grid; grid-template-columns: minmax(150px, 1.1fr) minmax(0, 2fr) 72px 120px 40px; gap: 8px; align-items: center; }
.pz-line--head { font-size: .8125rem; font-weight: 600; color: var(--ink-2); }
.pz-line select, .pz-line input { width: 100%; min-width: 0; font: 400 .9375rem var(--body); color: var(--emerald); background: var(--card); border: 1.5px solid rgba(2,17,12,.22); border-radius: var(--r-sm); padding: 0 10px; min-height: 44px; }
.pz-line select:focus, .pz-line input:focus { outline: none; border-color: var(--forest); }
.pz-x { width: 40px; height: 40px; border: 1px solid var(--line); background: var(--card); border-radius: var(--r-sm); font-size: 1.25rem; color: var(--ink-2); cursor: pointer; }
.pz-x:hover { color: var(--bad); border-color: var(--bad); }
@media (max-width: 760px) {
  .pz-line--head { display: none; }
  .pz-line { grid-template-columns: minmax(0, 1fr) 72px 110px 40px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
  .pz-line select, .pz-line [name="desc[]"] { grid-column: 1 / -1; }
}
.pz-lines-foot { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
.pz-total { font-size: 1rem; color: var(--ink-2); }
.pz-total strong { font: 600 1.375rem var(--display); color: var(--forest); margin-left: 8px; }

/* Print: just the invoice */
@media print {
  .pz-top, .pz-foot, .pz-noprint, .form-msg { display: none !important; }
  body.pz, .pz-main { background: #fff !important; padding: 0 !important; }
  .pz-invoice { border: 0 !important; box-shadow: none !important; padding: 0 !important; max-width: none; }
  .table-wrap { border: 0; overflow: visible; }
  .pz-inv-pay { background: #fff; border: 1px solid #ccc; }
  a { color: inherit; text-decoration: none; }
}
.pz-table th, .pz-table td { white-space: nowrap; }
.pz-inv-items td.num, .pz-inv-items .r { white-space: nowrap; }
