:root{--primary:#126c63;--primary2:#20b19f;--dark:#061f2e;--ink:#12233a;--muted:#64748b;--line:#e2e8f0;--soft:#f5f8fb;--white:#fff;--danger:#dc2626;--warning:#d97706;--success:#16a34a;--radius:18px;--shadow:0 14px 34px rgba(15,23,42,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--soft)}a{color:var(--primary);text-decoration:none}.app-shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}.sidebar{background:#061f2e;color:#fff;padding:20px 16px;position:sticky;top:0;height:100vh;overflow:auto}.side-brand{display:flex;gap:12px;align-items:center;margin-bottom:24px}.brand-mark{display:grid;place-items:center;width:44px;height:44px;background:linear-gradient(135deg,var(--primary),var(--primary2));border-radius:14px;color:#fff;font-weight:900}.side-brand small{display:block;color:#96a8b8}.side-nav{display:grid;gap:6px}.side-nav a{color:#dbeafe;padding:12px 14px;border-radius:12px;font-weight:750}.side-nav a:hover,.side-nav a.active{background:rgba(255,255,255,.12);color:#fff}.main{min-width:0}.topbar{background:#fff;border-bottom:1px solid var(--line);padding:18px 26px;display:flex;align-items:center;justify-content:space-between;gap:20px;position:sticky;top:0;z-index:20}.topbar h1{margin:0;font-size:1.45rem}.topbar p{margin:3px 0 0;color:var(--muted)}.top-actions{display:flex;gap:10px}.top-actions a,.btn{display:inline-block;border:0;border-radius:12px;background:var(--primary);color:#fff!important;padding:10px 14px;font-weight:800;cursor:pointer}.btn.secondary{background:#e2e8f0;color:#334155!important}.btn.danger{background:#dc2626}.btn.warning{background:#d97706}.content{padding:26px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat{background:#fff;padding:20px;border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--line)}.stat span{color:var(--muted);font-size:.92rem}.stat strong{display:block;font-size:2rem;margin-top:6px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:22px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.panel-head h2,.panel h2{margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font-size:.82rem;text-transform:uppercase;color:#64748b;letter-spacing:.04em;background:#f8fafc}.actions{display:flex;gap:7px;flex-wrap:wrap}.chip,.badge{display:inline-block;border-radius:999px;padding:6px 10px;font-size:.78rem;font-weight:900}.badge-success{background:#dcfce7;color:#166534}.badge-warning{background:#fef3c7;color:#92400e}.badge-danger{background:#fee2e2;color:#991b1b}.badge-info{background:#dbeafe;color:#1d4ed8}.badge-primary{background:#e0f2fe;color:#0369a1}.badge-secondary{background:#e2e8f0;color:#334155}.badge-dark{background:#0f172a;color:#fff}.grid{display:grid;gap:16px}.grid.two{grid-template-columns:repeat(2,1fr)}.grid.three{grid-template-columns:repeat(3,1fr)}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.form-group label{font-weight:850}input,select,textarea{width:100%;padding:12px;border:1px solid #cbd5e1;border-radius:12px;font:inherit;background:#fff}textarea{min-height:115px}.help{color:var(--muted);font-size:.9rem}.alert{padding:14px 16px;border-radius:14px;margin-bottom:16px;font-weight:700}.alert.success{background:#dcfce7;color:#166534}.alert.danger{background:#fee2e2;color:#991b1b}.menu-btn{display:none;background:#e2e8f0;border:0;border-radius:10px;padding:10px}.login-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:linear-gradient(135deg,#061f2e,#126c63)}.login-card{background:#fff;margin:auto;width:min(440px,90%);padding:34px;border-radius:26px;box-shadow:0 30px 80px rgba(0,0,0,.24)}.login-info{display:flex;align-items:center;padding:8vw;color:#fff}.login-info h1{font-size:clamp(2.4rem,5vw,5rem);line-height:1;margin:0}.login-info p{font-size:1.15rem;color:#d9fffb}.print-toolbar{margin-bottom:16px}@media(max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-290px;z-index:50;transition:.2s}.side-open .sidebar{left:0}.menu-btn{display:inline-block}.topbar{align-items:flex-start}.content{padding:18px}.grid.two,.grid.three{grid-template-columns:1fr}}@media(max-width:700px){.cards{grid-template-columns:1fr}.topbar{display:block}.top-actions{margin-top:12px;flex-wrap:wrap}.login-page{grid-template-columns:1fr}.login-info{display:none}.panel{padding:16px}th,td{white-space:nowrap}.content{padding:14px}}@media print{.sidebar,.topbar,.print-toolbar,.actions{display:none!important}.app-shell{display:block}.content{padding:0}.panel{box-shadow:none;border:0}.btn{display:none}}

/* v1.1 admin visual controls */
.brand-logo{width:46px;height:46px;object-fit:contain;border-radius:14px;background:#fff;padding:4px}.colour-preview{display:inline-block;width:70px;height:42px;border-radius:12px;border:1px solid #dbe3ea;box-shadow:inset 0 0 0 1px rgba(255,255,255,.45)}.admin-thumb{width:64px;height:64px;border-radius:16px;object-fit:cover;display:inline-grid;place-items:center;background:linear-gradient(135deg,#e0f2fe,#ccfbf1);font-weight:900;color:var(--primary);font-size:1.5rem}.admin-thumb.placeholder{line-height:64px;text-align:center}.form-group input[type="color"]{height:48px;padding:5px;cursor:pointer}.side-brand .brand-logo{background:#fff}.panel .help{display:block;margin-top:4px}

/* v1.2 admin updates */
.form-group.full{grid-column:1/-1}.form-group select[multiple]{min-height:160px}.panel-sub{background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:16px;margin:12px 0}.dynamic-form-block{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:16px;padding:16px;margin:16px 0}.inline-check{display:inline-block;margin:4px 8px 4px 0}.required{color:var(--danger)}.custom-data{background:#f8fafc;border:1px solid var(--line);border-radius:14px;padding:14px;margin:16px 0}.custom-data dl{display:grid;grid-template-columns:220px 1fr;gap:8px}.custom-data dt{font-weight:900;color:var(--primary)}.custom-data dd{margin:0}.badge.badge-danger{background:#fee2e2!important;color:#991b1b!important}.side-nav a{font-size:.94rem}.colour-preview{border:2px solid #dbeafe}

/* v1.3 account, staff password and admin media controls */
code{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;padding:3px 7px;font-weight:900}.side-brand .brand-logo{width:56px;height:56px}.top-actions a[href*="change_password"],.top-actions a[href*="module=account"]{background:#f8fafc;color:var(--primary)!important;border:1px solid #dbeafe}.panel .danger-note{background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:12px;color:#9a3412}.feedback-table-message{max-width:360px;white-space:normal!important}.footer-logo-preview{width:120px;height:90px;object-fit:contain;background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:8px}

/* v1.4 rostering, care reports, export and expense UX */
.grid.four{grid-template-columns:repeat(4,1fr)}.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.quick-card{display:block;background:linear-gradient(135deg,#ecfeff,#f8fafc);border:1px solid #dbeafe;border-left:5px solid var(--primary);border-radius:18px;padding:16px;color:var(--ink);box-shadow:0 10px 24px rgba(15,23,42,.05)}.quick-card strong{display:block;color:var(--primary);font-size:1.02rem}.quick-card span{color:var(--muted)}.export-links{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 14px}.care-type-pill{display:inline-block;border-radius:999px;background:#e0f2fe;color:#0369a1;padding:6px 10px;font-weight:900}.roster-ph{background:#fff7ed!important;color:#9a3412!important}.stat a{color:var(--primary);text-decoration:none}.form-group input[type="datetime-local"]{min-height:46px}@media(max-width:1100px){.grid.four,.quick-grid{grid-template-columns:1fr}.table-wrap table{min-width:760px}}

/* v1.5 professional roster builder */
.roster-kpis{display:grid;grid-template-columns:2fr repeat(3,1fr);gap:14px}.roster-kpis>div{background:linear-gradient(135deg,#f8fafc,#ecfeff);border:1px solid #dbeafe;border-radius:18px;padding:16px}.roster-kpis strong{display:block;font-size:1.25rem;color:var(--primary)}.roster-kpis span{display:block;color:var(--muted);font-weight:700;margin-top:4px}.day-pills{display:flex;flex-wrap:wrap;gap:10px}.day-pills label{background:#f8fafc;border:1px solid #dbeafe;border-radius:999px;padding:9px 12px;font-weight:900}.allocation-toolbar{display:flex;gap:18px;align-items:center;justify-content:space-between;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:16px;padding:14px;margin-bottom:12px}.roster-matrix select[multiple]{min-height:110px}.roster-board{display:grid;grid-template-columns:repeat(7,minmax(180px,1fr));gap:12px;overflow:auto}.roster-day{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:12px;min-height:180px}.roster-day h3{margin:0 0 10px;font-size:1rem;color:#0f172a}.shift-card{background:#fff;border:1px solid #e2e8f0;border-left:6px solid var(--primary);border-radius:14px;padding:10px;margin-bottom:10px;box-shadow:0 6px 16px rgba(15,23,42,.06)}.shift-card strong,.shift-card span,.shift-card small,.shift-card em{display:block}.shift-card span{font-weight:900;margin-top:3px}.shift-card small{color:var(--muted);margin-top:3px;line-height:1.35}.shift-card em{font-style:normal;font-size:.76rem;color:#0369a1;background:#e0f2fe;border-radius:999px;padding:3px 8px;margin-top:7px;width:max-content}.grid .form-group.full{grid-column:1/-1}@media(max-width:1200px){.roster-kpis{grid-template-columns:1fr 1fr}.roster-board{grid-template-columns:repeat(3,minmax(180px,1fr))}}@media(max-width:700px){.roster-kpis,.roster-board{grid-template-columns:1fr}.allocation-toolbar{display:block}.day-pills{display:grid;grid-template-columns:repeat(2,1fr)}}

/* v1.7 blended dashboard statistic boxes */
.dashboard-cards .dashboard-stat,
.staff-dashboard-cards .staff-dashboard-stat{
    position:relative;
    overflow:hidden;
    border:1px solid rgba(255,255,255,.72);
    box-shadow:0 16px 36px rgba(15,23,42,.09);
    transition:transform .18s ease, box-shadow .18s ease;
}
.dashboard-cards .dashboard-stat::after,
.staff-dashboard-cards .staff-dashboard-stat::after{
    content:"";
    position:absolute;
    width:96px;
    height:96px;
    right:-28px;
    top:-28px;
    border-radius:50%;
    background:rgba(255,255,255,.48);
}
.dashboard-cards .dashboard-stat:hover,
.staff-dashboard-cards .staff-dashboard-stat:hover{
    transform:translateY(-3px);
    box-shadow:0 22px 46px rgba(15,23,42,.13);
}
.dashboard-cards .dashboard-stat span,
.dashboard-cards .dashboard-stat strong,
.staff-dashboard-cards .staff-dashboard-stat span,
.staff-dashboard-cards .staff-dashboard-stat strong{
    position:relative;
    z-index:1;
}
.dashboard-cards .dashboard-stat span,
.staff-dashboard-cards .staff-dashboard-stat span{
    color:#334155;
    font-weight:900;
}
.dashboard-cards .dashboard-stat strong,
.staff-dashboard-cards .staff-dashboard-stat strong{
    color:#0f172a;
}

.staff-dashboard-cards .staff-dashboard-stat strong a{
    color:#0f172a!important;
    text-decoration:none;
}
.staff-dashboard-cards .staff-dashboard-stat strong a:hover{
    text-decoration:underline;
}

/* v1.9 BrightHR-style NDIS roster planner */
.roster-wizard{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 22px}.wizard-step{background:#fff;border:1px solid var(--line);border-radius:18px;padding:15px;box-shadow:var(--shadow);display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:center}.wizard-step span{width:40px;height:40px;border-radius:14px;display:grid;place-items:center;background:#e2e8f0;font-weight:1000;color:#334155}.wizard-step strong{display:block;color:#0f172a}.wizard-step small{display:block;color:var(--muted);font-weight:750}.wizard-step.active{background:linear-gradient(135deg,#ecfeff,#eff6ff);border-color:#bae6fd}.wizard-step.active span{background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff}.wizard-step.done{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#bbf7d0}.wizard-step.done span{background:#16a34a;color:#fff}.plan-day-picker{display:flex;flex-wrap:wrap;gap:8px}.plan-day-picker label{background:#f8fafc;border:1px solid #dbeafe;border-radius:999px;padding:9px 12px;font-weight:900}.staff-pool{display:flex;gap:10px;flex-wrap:wrap}.staff-chip{user-select:none;cursor:grab;background:linear-gradient(135deg,#f8fafc,#e0f2fe);border:1px solid #bae6fd;border-radius:16px;padding:11px 13px;box-shadow:0 8px 20px rgba(15,23,42,.07);min-width:150px}.staff-chip:active{cursor:grabbing}.staff-chip.dragging{opacity:.55;transform:scale(.98)}.staff-chip strong,.staff-chip small{display:block}.staff-chip small{color:#64748b;font-weight:800}.professional-roster-wrap{max-height:720px;border:1px solid var(--line);border-radius:18px}.professional-roster,.staff-rota{border-collapse:separate;border-spacing:0;min-width:1180px}.professional-roster th,.professional-roster td,.staff-rota th,.staff-rota td{border-right:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0}.professional-roster thead th,.staff-rota thead th{position:sticky;top:0;z-index:3;background:#f8fafc}.professional-roster .row-person,.staff-rota .row-person{position:sticky;left:0;z-index:2;background:#fff;min-width:190px;color:#0f172a}.roster-cell{min-width:170px;background:#fcfdff}.drop-shift{background:#fff;border:1px solid #dbeafe;border-left:7px solid var(--primary);border-radius:14px;margin:0 0 9px;padding:10px;min-height:108px;transition:.18s ease;box-shadow:0 8px 20px rgba(15,23,42,.06)}.drop-shift.drag-over{background:#ecfeff;border-color:#22d3ee;box-shadow:0 0 0 4px rgba(34,211,238,.18)}.drop-shift strong,.drop-shift span,.drop-shift small{display:block}.drop-shift span{font-weight:900;margin-top:3px;color:#0f172a}.drop-shift small{margin-top:6px;color:#0369a1;font-weight:900}.assigned-staff{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.assigned-staff a,.assigned-staff span{display:inline-block;background:#dcfce7;color:#166534!important;border-radius:999px;padding:4px 7px;font-size:.75rem;font-weight:900}.assigned-staff a:hover{text-decoration:line-through}.assigned-staff em{font-style:normal;color:#64748b;background:#f1f5f9;border-radius:999px;padding:4px 7px;font-size:.75rem}.tiny-action{display:inline-block;margin-top:7px;font-size:.73rem;color:#991b1b!important;font-weight:900}.staff-rota td{min-width:150px;background:#fff}.staff-rota-shift{background:linear-gradient(135deg,#f8fafc,#f0fdf4);border:1px solid #bbf7d0;border-radius:12px;padding:9px;margin:0 0 7px;text-align:center}.staff-rota-shift strong,.staff-rota-shift span,.staff-rota-shift small{display:block}.staff-rota-shift span{font-weight:950;color:#0f172a}.staff-rota-shift small{font-size:.72rem;color:#64748b;text-transform:uppercase;letter-spacing:.02em}@media(max-width:1100px){.roster-wizard{grid-template-columns:1fr 1fr}.professional-roster-wrap{max-height:640px}}@media(max-width:700px){.roster-wizard{grid-template-columns:1fr}.plan-day-picker{display:grid;grid-template-columns:1fr 1fr}.staff-chip{width:100%}}


/* v2.0 editable roster and overlap warnings */
.alert.warning{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.roster-edit-panel{background:linear-gradient(135deg,#f8fafc,#ecfeff 55%,#fff7ed)}
.drop-shift.has-conflict,.staff-rota-shift.has-conflict{background:#fff7ed!important;border-color:#fb923c!important;box-shadow:0 0 0 3px rgba(251,146,60,.18)}
.roster-conflict-badge{display:inline-block!important;background:#ffedd5;color:#9a3412;border:1px solid #fdba74;border-radius:999px;padding:4px 8px;margin:7px 0 3px;font-size:.72rem;font-weight:1000;line-height:1.1}
.shift-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.tiny-action.edit{color:#0369a1!important}

/* v2.2 right-side roster staff allocation panel */
.roster-allocation-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
.roster-grid-panel{min-width:0}
.panel-head.mini{margin-bottom:14px;align-items:flex-start}
.roster-side-note{display:inline-block;background:#ecfeff;color:#0369a1;border:1px solid #bae6fd;border-radius:999px;padding:8px 12px;font-size:.78rem;font-weight:1000;white-space:nowrap}
.roster-staff-sidebar{position:sticky;top:96px;max-height:calc(100vh - 122px);overflow:auto;border-left:7px solid var(--primary);background:linear-gradient(135deg,#ffffff,#f8fafc 56%,#ecfeff)}
.roster-staff-sidebar h2{margin-top:0}
.roster-staff-sidebar .staff-search{margin:8px 0 12px;border-radius:14px}
.roster-staff-sidebar .staff-pool.side-pool{display:flex;flex-direction:column;gap:10px;flex-wrap:nowrap}
.roster-staff-sidebar .staff-chip{width:100%;min-width:0;border-left:5px solid var(--primary);background:linear-gradient(135deg,#f8fafc,#e0f2fe 52%,#ecfeff)}
.roster-staff-sidebar .staff-chip strong{font-size:.96rem}.roster-staff-sidebar .staff-chip small{font-size:.78rem}.professional-roster-wrap{max-height:760px;overflow:auto}
@media(max-width:1200px){.roster-allocation-layout{grid-template-columns:1fr}.roster-staff-sidebar{position:relative;top:auto;max-height:none;order:-1}.roster-staff-sidebar .staff-pool.side-pool{display:grid;grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.roster-staff-sidebar .staff-pool.side-pool{grid-template-columns:1fr}.roster-side-note{white-space:normal}}

/* v2.3 NDIS invoice generator */
.notice{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:14px;padding:14px;line-height:1.5}.invoice-builder .panel h2{color:var(--primary)}.invoice-item-table th{white-space:nowrap}.invoice-item-table td input,.invoice-item-table td select{min-width:110px}.invoice-item-table td:nth-child(2) select{min-width:250px}.invoice-item-table td:nth-child(3) input{min-width:260px}.invoice-total-strip{display:flex;gap:16px;justify-content:flex-end;align-items:center;flex-wrap:wrap;background:linear-gradient(135deg,#f8fafc,#ecfeff);border:1px solid #dbeafe;border-radius:16px;padding:14px;margin-top:16px;font-size:1.05rem}.invoice-total-strip span{color:#475569}.invoice-total-strip strong{color:#0f172a}.signature-label{display:block;font-weight:900;margin:12px 0 7px}.signature-pad{width:100%;height:150px;background:#fff;border:2px dashed #94a3b8;border-radius:16px;touch-action:none}.invoice-preview-admin{background:#f8fafc;border-radius:18px;padding:18px;overflow:auto}.ndis-invoice-document{background:#fff;border:1px solid #e2e8f0;border-radius:20px;padding:28px;box-shadow:0 20px 50px rgba(15,23,42,.08);max-width:1050px;margin:0 auto}.invoice-top{display:flex;justify-content:space-between;gap:22px;border-bottom:5px solid var(--primary);padding-bottom:18px}.invoice-brand{display:flex;gap:14px;align-items:center}.invoice-logo{width:82px;height:82px;object-fit:contain;border-radius:16px;border:1px solid #e2e8f0;background:#fff;padding:7px}.invoice-logo-mark{width:82px;height:82px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff,#ecfeff 50%,var(--primary));border:4px solid var(--primary);color:#fff;font-weight:1000;font-size:28px}.invoice-brand h2{margin:0;color:var(--primary);font-size:1.6rem}.invoice-brand p,.invoice-title p{margin:.35rem 0 0;color:#475569;line-height:1.5}.invoice-title{text-align:right}.invoice-title h1{margin:0;color:var(--primary);font-size:2.4rem;letter-spacing:.05em}.invoice-title span{display:inline-block;background:#ecfeff;color:#0369a1;border:1px solid #bae6fd;border-radius:999px;padding:7px 12px;font-weight:1000;margin-top:6px}.invoice-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}.invoice-info-grid>div{background:#fcfdff;border:1px solid #e2e8f0;border-radius:16px;padding:14px}.invoice-info-grid h3,.invoice-signoff h3{margin:0 0 8px;color:var(--primary);font-size:.92rem;text-transform:uppercase;letter-spacing:.05em}.invoice-info-grid p,.invoice-signoff p{margin:0;line-height:1.55;color:#334155}.ndis-invoice-lines{margin-top:18px;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.ndis-invoice-lines th{background:var(--primary);color:#fff}.ndis-invoice-lines .right,.right{text-align:right}.invoice-total-box{margin-left:auto;margin-top:16px;max-width:380px;border:1px solid #e2e8f0;border-radius:16px;overflow:hidden}.invoice-total-box div{display:flex;justify-content:space-between;gap:14px;padding:12px 14px;border-bottom:1px solid #e2e8f0}.invoice-total-box div:last-child{background:var(--primary);color:#fff;font-size:1.15rem;font-weight:1000;border-bottom:0}.invoice-signoff{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}.invoice-signoff>div{border:1px solid #e2e8f0;border-radius:16px;padding:14px;min-height:140px}.signature-image{max-width:260px;max-height:90px;display:block}.signature-empty{height:82px}.sig-line{border-top:1px solid #94a3b8;margin-top:14px!important;padding-top:7px}.invoice-footer-note{border-top:1px solid #e2e8f0;margin:18px 0 0;padding-top:12px;color:#64748b;font-size:.86rem;line-height:1.5}@media(max-width:900px){.invoice-top,.invoice-info-grid,.invoice-signoff{grid-template-columns:1fr;display:grid}.invoice-title{text-align:left}.invoice-brand{align-items:flex-start}.invoice-total-box{max-width:none}.ndis-invoice-document{padding:18px}}@media print{.invoice-preview-admin{padding:0}.ndis-invoice-document{box-shadow:none;border:0;border-radius:0}.invoice-top{break-inside:avoid}.ndis-invoice-lines{break-inside:auto}.invoice-info-grid,.invoice-signoff{break-inside:avoid}.sidebar,.topbar,.actions,.panel-head .actions{display:none!important}}

/* v2.4 CMS rich content image upload */
.rich-content-field textarea.rich-content-textarea{min-height:230px;font-family:Consolas,Monaco,monospace;line-height:1.55}.rich-content-upload{background:linear-gradient(135deg,#f8fafc,#eff6ff);border:1px dashed #93c5fd;border-radius:16px;padding:14px;margin-top:10px}.rich-content-upload label{display:block;color:#0f172a;margin-bottom:8px}.rich-content-upload input[type=file]{background:#fff}.rich-content-upload select{margin-top:10px;max-width:360px}.content-image{margin:18px 0;background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:10px;box-shadow:0 10px 24px rgba(15,23,42,.06)}.content-image img{width:100%;max-height:520px;object-fit:cover;border-radius:14px;display:block}.content-image figcaption{font-size:.85rem;color:#64748b;margin-top:8px;text-align:center}

/* v3.4 participant photos and print-colour invoice refinement */
.participant-photo-admin{width:300px;height:300px;object-fit:cover;border-radius:24px;border:4px solid #fff;box-shadow:0 14px 34px rgba(15,23,42,.16);background:#f8fafc;margin:8px 0 12px;display:block}
.participant-photo-list{width:70px;height:70px;object-fit:cover;border-radius:18px;border:3px solid #fff;box-shadow:0 8px 20px rgba(15,23,42,.15);background:#f8fafc;display:block}
.ndis-invoice-document,.ndis-invoice-document *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;color-adjust:exact!important}
.ndis-invoice-document{background:linear-gradient(180deg,#ffffff,#fbfdff)!important;border:1px solid #dbeafe!important}
.invoice-top{background:linear-gradient(135deg,#ffffff,#f0fdfa 50%,#eff6ff)!important;border-radius:18px;padding:18px!important;border-bottom:5px solid var(--primary)!important}
.invoice-info-grid>div{background:linear-gradient(135deg,#ffffff,#f8fafc 55%,#ecfeff)!important;border-color:#bfdbfe!important}
.invoice-signoff>div{background:linear-gradient(135deg,#ffffff,#f8fafc 55%,#fff7ed)!important;border-color:#fed7aa!important}
.ndis-invoice-lines th{background:linear-gradient(135deg,var(--primary),#0f766e)!important;color:#fff!important}
.invoice-total-box div:last-child{background:linear-gradient(135deg,var(--primary),#0f766e)!important;color:#fff!important}
@media print{.ndis-invoice-document,.invoice-top,.invoice-info-grid>div,.invoice-signoff>div,.ndis-invoice-lines th,.invoice-total-box div:last-child{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}}

/* v3.9 Payroll / Payslip */
.payroll-payslip-print{max-width:980px;margin:24px auto;background:#fff;border:1px solid #e5e7eb;border-radius:22px;box-shadow:0 18px 50px rgba(15,23,42,.10);padding:28px;color:#1f2937}
.payroll-print-head{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;border-bottom:5px solid var(--primary,#126c63);padding-bottom:16px;margin-bottom:18px}
.payroll-print-head h2{margin:0;color:var(--primary,#126c63);font-size:26px}.payroll-print-head p{margin:4px 0;color:#64748b}
.payroll-payslip-print table{width:100%;border-collapse:collapse;margin-top:16px}.payroll-payslip-print th{background:linear-gradient(135deg,var(--primary,#126c63),#3b215d);color:#fff}.payroll-payslip-print td,.payroll-payslip-print th{padding:10px;border:1px solid #e5e7eb;text-align:left}.payroll-payslip-print .total-row td{background:#f8fafc;font-weight:900}.info-card{background:linear-gradient(135deg,#f8fafc,#ecfeff);border:1px solid #dbeafe;border-radius:16px;padding:14px}
@media print{.payroll-payslip-print{box-shadow:none;border:0;margin:0;max-width:none}.topbar,.sidebar,.no-print{display:none!important}.app-shell{display:block}.main{margin:0}.content{padding:0}}

/* v4.1 Staff clock, messaging and voice-to-text */
.clock-card{background:linear-gradient(135deg,#ecfeff,#f0fdf4 52%,#eef2ff);border-left:7px solid var(--primary)}
.clock-status{display:grid;gap:6px;margin:12px 0 18px;padding:18px;border-radius:18px;background:rgba(255,255,255,.75);border:1px solid rgba(15,23,42,.08)}
.clock-status strong{font-size:1.35rem;color:#0f172a}.clock-status span{color:#475569;font-weight:700}.clock-status.active{background:linear-gradient(135deg,#dcfce7,#ccfbf1);border-color:#34d399}.message-view{background:linear-gradient(135deg,#ffffff,#f8fafc);font-size:1.05rem;line-height:1.75}.voice-tools{display:flex;gap:10px;align-items:center;margin:8px 0 0;flex-wrap:wrap}.voice-btn.recording{background:#b91c1c!important;color:#fff!important;animation:voicePulse 1.2s infinite}.voice-hint{display:inline-block}.btn[disabled]{opacity:.55;cursor:not-allowed}@keyframes voicePulse{0%{box-shadow:0 0 0 0 rgba(185,28,28,.38)}70%{box-shadow:0 0 0 12px rgba(185,28,28,0)}100%{box-shadow:0 0 0 0 rgba(185,28,28,0)}}
.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1000px){.grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.grid.four{grid-template-columns:1fr}}


/* v4.5 Participant Risk Assessment */
.risk-assessment-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-top:16px}
.risk-item-card{border:1px solid rgba(15,23,42,.12);border-radius:18px;padding:16px;background:linear-gradient(135deg,#ffffff,#f8fafc);box-shadow:0 10px 30px rgba(15,23,42,.06)}
.risk-item-card h4{margin:0 0 12px;color:#0f766e;font-size:1rem}
.printable-report table{width:100%;border-collapse:collapse;margin:16px 0;background:#fff}
.printable-report th,.printable-report td{border:1px solid #d9e2ec;padding:8px;vertical-align:top}
.no-print{margin-bottom:14px}
@media print{.no-print,.topbar,.sidebar{display:none!important}.main,.content{display:block!important;margin:0!important;padding:0!important}.printable-report{max-width:100%!important}}
.grid.four{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
.staff-profile-form .panel{margin-bottom:1rem}.staff-profile-status{background:linear-gradient(135deg,#eef6ff,#f7fff0);border-left:5px solid #70b62c}.actions{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.alert.warning{background:#fff7e6;border:1px solid #ffd48a;padding:.85rem;border-radius:12px}
@media(max-width:900px){.grid.four{grid-template-columns:1fr}.staff-profile-form .grid.three{grid-template-columns:1fr}}

/* v4.9 Participant analytics charts */
.chart-panel{position:relative;overflow:hidden;background:linear-gradient(135deg,#ffffff,#f8fafc 55%,#eefcf7);border:1px solid rgba(15,23,42,.08)}
.chart-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.5rem}.chart-head h2{margin-bottom:.25rem}.bors-chart{display:block;width:100%;max-width:100%;background:rgba(255,255,255,.58);border:1px solid rgba(15,23,42,.06);border-radius:16px;padding:.4rem}.chart-empty{position:absolute;right:1rem;top:1rem;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:999px;padding:.35rem .75rem;font-weight:800;font-size:.78rem;z-index:1}.dashboard-analytics-head{margin-top:1rem}.analytics-dashboard-grid .chart-panel h2{font-size:1rem}.analytics-dashboard-grid .chart-panel .help{font-size:.82rem}.analytics-dashboard-grid canvas{min-height:210px}.participant-outlook-score{font-weight:900;color:#0f766e}@media(max-width:1100px){.analytics-dashboard-grid{grid-template-columns:1fr!important}.chart-panel{min-width:0}}@media print{.bors-chart{break-inside:avoid}.chart-empty{display:none}}

/* v5.0 Risk Matrix download and display */
.risk-matrix-wrap{width:100%;overflow:auto;margin-top:10px}
.risk-matrix{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid #dbeafe;border-radius:18px;overflow:hidden;box-shadow:0 14px 32px rgba(15,23,42,.08)}
.risk-matrix th,.risk-matrix td{padding:12px;border-right:1px solid rgba(15,23,42,.08);border-bottom:1px solid rgba(15,23,42,.08);text-align:center;vertical-align:middle;min-width:118px}
.risk-matrix th{background:#f8fafc;color:#0f172a;font-weight:1000}.risk-matrix .corner{text-align:left;min-width:190px}.risk-matrix small{display:block;color:#64748b;font-weight:800;margin-top:2px}.risk-matrix td strong{display:block;font-size:1.28rem;line-height:1;color:#0f172a}.risk-matrix td span{display:block;font-size:.78rem;font-weight:1000;margin-top:6px;text-transform:uppercase;letter-spacing:.03em}.risk-matrix-wrap.compact .risk-matrix th,.risk-matrix-wrap.compact .risk-matrix td{padding:9px;min-width:95px}.risk-matrix-wrap.compact .risk-matrix td strong{font-size:1.05rem}.risk-matrix .risk-level-low,.risk-matrix-legend .risk-level-low{background:#dcfce7;color:#166534}.risk-matrix .risk-level-medium,.risk-matrix-legend .risk-level-medium{background:#fef3c7;color:#92400e}.risk-matrix .risk-level-high,.risk-matrix-legend .risk-level-high{background:#ffedd5;color:#9a3412}.risk-matrix .risk-level-extreme,.risk-matrix-legend .risk-level-extreme{background:#fee2e2;color:#991b1b}.risk-matrix-legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.risk-matrix-legend span{border-radius:999px;padding:7px 12px;font-weight:1000;border:1px solid rgba(15,23,42,.08);font-size:.82rem}@media(max-width:700px){.risk-matrix th,.risk-matrix td{min-width:88px;padding:8px}.risk-matrix .corner{min-width:145px}.risk-matrix td strong{font-size:1rem}.risk-matrix td span{font-size:.68rem}}@media print{.risk-matrix-wrap{overflow:visible}.risk-matrix{box-shadow:none;break-inside:avoid}.risk-matrix th,.risk-matrix td{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}}

/* BOFATECH PWA install prompt v9 - forced visible on homepage and login */
.pwa-install,
.pwa-install-force{
  position:fixed!important;
  right:22px!important;
  bottom:22px!important;
  width:min(430px,calc(100vw - 28px))!important;
  background:#ffffff!important;
  color:#12233a!important;
  border:1px solid #dbeafe!important;
  border-left:7px solid var(--primary,#126c63)!important;
  border-radius:22px!important;
  box-shadow:0 24px 70px rgba(15,23,42,.24)!important;
  padding:18px!important;
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  flex-direction:column!important;
  gap:10px!important;
  z-index:2147483647!important;
  line-height:1.35!important;
}
.pwa-install.installed{display:none!important}
.pwa-install strong{color:var(--primary,#126c63)!important;font-size:1.08rem!important;line-height:1.2!important}
.pwa-install span{color:#475569!important;font-size:.94rem!important}
.pwa-install .pwa-actions{display:flex!important;gap:8px!important;flex-wrap:wrap!important;margin-top:2px!important}
.pwa-install button,.pwa-install a.pwa-login-link{
  border:0!important;
  border-radius:999px!important;
  padding:10px 14px!important;
  font-weight:800!important;
  cursor:pointer!important;
  text-decoration:none!important;
  font-size:.92rem!important;
}
.pwa-install #pwaInstallBtn,.pwa-install [data-pwa-install-button]{background:var(--primary,#126c63)!important;color:#fff!important}
.pwa-install #pwaDismissBtn,.pwa-install [data-pwa-dismiss-button]{background:#e2e8f0!important;color:#334155!important}
.pwa-install a.pwa-login-link{background:#fff7ed!important;color:#92400e!important;border:1px solid #fed7aa!important}
.pwa-install-message{font-size:.84rem!important;color:#334155!important;background:#f8fafc!important;border:1px solid #e2e8f0!important;border-radius:12px!important;padding:9px 10px!important;width:100%!important}
.pwa-install-message[data-type="success"]{background:#dcfce7!important;border-color:#bbf7d0!important;color:#166534!important}
.pwa-install-message[data-type="info"]{background:#dbeafe!important;border-color:#bfdbfe!important;color:#1d4ed8!important}
.login-page .pwa-install,.pwa-install-login{border-left-color:#f4b942!important}
@media(max-width:700px){.pwa-install,.pwa-install-force{left:14px!important;right:14px!important;bottom:14px!important;width:auto!important;padding:16px!important}.pwa-install .pwa-actions{gap:6px!important}.pwa-install button,.pwa-install a.pwa-login-link{padding:9px 12px!important;font-size:.88rem!important}}


/* BOFATECH PWA install prompt v10 - smaller card + active Not now */
.pwa-install,
.pwa-install-force{
  right:16px!important;
  bottom:16px!important;
  width:min(340px,calc(100vw - 24px))!important;
  border-left-width:5px!important;
  border-radius:16px!important;
  box-shadow:0 16px 44px rgba(15,23,42,.18)!important;
  padding:12px 13px!important;
  gap:7px!important;
  line-height:1.25!important;
}
.pwa-install[aria-hidden="true"]{display:none!important;visibility:hidden!important;opacity:0!important}
.pwa-install strong{font-size:.96rem!important;line-height:1.15!important}
.pwa-install span{font-size:.82rem!important;line-height:1.32!important}
.pwa-install .pwa-actions{gap:6px!important;margin-top:0!important}
.pwa-install button,.pwa-install a.pwa-login-link{
  padding:7px 10px!important;
  font-size:.8rem!important;
  line-height:1.15!important;
}
.pwa-install-message{
  font-size:.76rem!important;
  line-height:1.25!important;
  border-radius:10px!important;
  padding:7px 8px!important;
}
@media(max-width:700px){
  .pwa-install,.pwa-install-force{left:12px!important;right:12px!important;bottom:12px!important;width:auto!important;padding:12px!important}
  .pwa-install strong{font-size:.94rem!important}
  .pwa-install span{font-size:.8rem!important}
  .pwa-install button,.pwa-install a.pwa-login-link{padding:7px 9px!important;font-size:.78rem!important}
}
