/* Kingsleigh Homes Contractor Portal styles (loads after styles.css) */
.portal-body { background: var(--cream); min-height: 100vh; }

/* Top bar */
.portal-bar { background: var(--slate-900); color:#fff; }
.portal-bar .container { display:flex; align-items:center; justify-content:space-between; height:64px; }
.portal-bar a.logo { display:flex; align-items:center; gap:.6rem; color:#fff; font-family:var(--serif); font-size:1.2rem; }
.portal-bar img { height:40px; }
.portal-bar .pb-right { display:flex; align-items:center; gap:1rem; font-size:.9rem; }
.portal-bar .pb-right a { color:#cfd5e2; }
.portal-bar .pb-right a:hover { color:#fff; }
.portal-tag { font-size:.7rem; text-transform:uppercase; letter-spacing:.12em; background:var(--brass); color:#fff; padding:.2rem .6rem; border-radius:4px; }

/* Auth card */
.auth-wrap { min-height: calc(100vh - 64px); display:flex; align-items:center; justify-content:center; padding:2rem 1rem; }
.auth-card { background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow-md); width:100%; max-width:440px; padding:2rem; }
.auth-card h1 { font-size:1.6rem; margin-bottom:.3rem; }
.auth-card .sub { color:var(--muted); font-size:.95rem; margin-bottom:1.4rem; }
.auth-tabs { display:flex; gap:.5rem; margin-bottom:1.4rem; }
.auth-tabs button { flex:1; padding:.6rem; border:1px solid var(--line); background:#fff; border-radius:var(--radius); cursor:pointer; font-weight:600; color:var(--slate-700); }
.auth-tabs button.active { background:var(--slate); color:#fff; border-color:var(--slate); }

/* Layout */
.portal-main { max-width:1100px; margin-inline:auto; padding: 2rem var(--gut) 4rem; }
.portal-head { display:flex; align-items:flex-end; justify-content:space-between; flex-wrap:wrap; gap:1rem; margin-bottom:1.6rem; }
.portal-head h1 { font-size:1.8rem; }
.portal-grid { display:grid; gap:1.1rem; }
.tabs { display:flex; gap:.4rem; border-bottom:1px solid var(--line); margin-bottom:1.5rem; flex-wrap:wrap; }
.tabs button { background:none; border:0; padding:.7rem 1rem; cursor:pointer; font-weight:600; color:var(--muted); border-bottom:2px solid transparent; }
.tabs button.active { color:var(--slate-900); border-bottom-color:var(--brass); }
.tabpane { display:none; } .tabpane.active { display:block; }

/* Cards / list items */
.pcard { background:#fff; border:1px solid var(--line); border-radius:10px; padding:1.2rem 1.3rem; box-shadow:var(--shadow-sm); }
.pcard + .pcard { margin-top:.9rem; }
.pcard h3 { font-family:var(--sans); font-size:1.05rem; font-weight:700; margin-bottom:.2rem; }
.pcard .meta { font-size:.85rem; color:var(--muted); margin-bottom:.6rem; }
.pcard .row { display:flex; gap:1rem; align-items:center; justify-content:space-between; flex-wrap:wrap; }

/* Status pills */
.st { font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; padding:.25rem .6rem; border-radius:50px; }
.st-open,.st-offered,.st-submitted { background:#fdf1dd; color:#8a5a12; }
.st-assigned,.st-accepted,.st-in_progress { background:#e2eefb; color:#15508f; }
.st-complete,.st-approved { background:#e2f3e9; color:#1f6b43; }
.st-declined,.st-rejected,.st-cancelled,.st-suspended { background:#fbe6e6; color:#9a2a2a; }
.st-pending { background:#efece6; color:#6c7180; }

/* Table */
.ptable { width:100%; border-collapse:collapse; font-size:.92rem; background:#fff; border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.ptable th { text-align:left; background:var(--cream); padding:.7rem .8rem; font-size:.78rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); }
.ptable td { padding:.7rem .8rem; border-top:1px solid var(--line); vertical-align:top; }
.ptable .actions { display:flex; gap:.4rem; flex-wrap:wrap; }
.btn--sm { padding:.45rem .8rem; font-size:.82rem; }
@media (max-width:680px){ .ptable, .ptable thead, .ptable tbody, .ptable th, .ptable td, .ptable tr { display:block; } .ptable thead { display:none; } .ptable td { border:0; padding:.25rem .8rem; } .ptable tr { border-top:1px solid var(--line); padding:.6rem 0; } }

.toast { position:fixed; bottom:20px; left:50%; transform:translateX(-50%); background:var(--slate-900); color:#fff; padding:.8rem 1.4rem; border-radius:8px; box-shadow:var(--shadow-lg); z-index:200; opacity:0; transition:opacity .3s, transform .3s; pointer-events:none; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(-4px); }
.muted { color:var(--muted); }
.empty { text-align:center; color:var(--muted); padding:2.5rem; border:1px dashed var(--line); border-radius:10px; background:#fff; }
.config-warn { background:#fbe6e6; color:#9a2a2a; border:1px solid #f0c0c0; padding:1rem 1.2rem; border-radius:8px; margin:1rem 0; font-size:.92rem; }

/* --- v3: invoices / availability / metrics pill states --- */
.st-query{background:#fdf1dd;color:#8a5a12;}
.st-paid{background:#e2f3e9;color:#1f6b43;}
.st-allocated{background:#e2eefb;color:#15508f;}
.st-closed{background:#efece6;color:#6c7180;}
/* metric stat cards */
.kstats{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;margin-bottom:1.5rem;}
.kstat{background:#fff;border:1px solid #e6e2da;border-radius:14px;padding:1.1rem 1.2rem;box-shadow:0 1px 3px rgba(38,49,71,.06);}
.kstat .kv{font-family:"Cormorant Garamond",Georgia,serif;font-size:2rem;font-weight:700;color:#263147;line-height:1;}
.kstat .kl{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#8a8f9c;margin-top:.35rem;}
.kstat.gold .kv{color:#9d7d1f;}
.kstat.warn{background:#fdf1dd;border-color:#f0d9a8;}
.kstat.warn .kv{color:#8a5a12;}
.kgrid2{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;}
@media(max-width:640px){.kgrid2{grid-template-columns:1fr;}}
.kbreak{background:#fff;border:1px solid #e6e2da;border-radius:14px;padding:1.1rem 1.3rem;}
.kbreak h4{margin:0 0 .6rem;font-family:"Cormorant Garamond",Georgia,serif;font-size:1.2rem;color:#263147;}
.kbar{display:flex;align-items:center;gap:.5rem;margin:.3rem 0;font-size:.9rem;}
.kbar .lab{flex:0 0 130px;color:#4a4a4a;text-transform:capitalize;}
.kbar .track{flex:1;height:10px;background:#efece6;border-radius:6px;overflow:hidden;}
.kbar .fill{height:100%;background:#b89328;}
.kbar .n{flex:0 0 32px;text-align:right;font-weight:700;color:#263147;}
