.app-shell{display:flex;height:100vh}.sidebar{width:220px;background:#2d7d46;color:#fff;padding:1rem}.sidebar-brand{font-size:1.4rem;font-weight:700;margin-bottom:2rem}.sidebar-nav a{display:block;padding:.6rem;color:#fff;text-decoration:none;border-radius:4px}.sidebar-nav a.active{background:#1f5a32}.app-main{flex:1;display:flex;flex-direction:column}.topbar{background:#fff;padding:1rem;border-bottom:1px solid #ddd;display:flex;justify-content:space-between}.app-content{padding:1.5rem;overflow-y:auto}.summary-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.summary-card{background:#fff;padding:1rem;border-radius:6px;text-align:center;border:1px solid #ddd}.chart-placeholder{background:#fff;padding:2rem;border-radius:6px;text-align:center;border:1px solid #ddd}.clients-header{display:flex;justify-content:space-between;margin-bottom:1rem}.clients-table{width:100%;border-collapse:collapse}.clients-table th,.clients-table td{padding:.6rem;border-bottom:1px solid #ddd}.client-panel{position:fixed;right:0;top:0;width:320px;height:100%;background:#fff;border-left:1px solid #ddd;padding:1rem}.client-jobs-list{list-style:none;padding:0;margin:0}.client-jobs-list li{padding:.4rem 0;border-bottom:1px solid #eee;font-size:.9rem}.close-btn{background:none;border:none;font-size:1.2rem;cursor:pointer;line-height:1}.jobs-filters{display:flex;gap:.5rem;margin-bottom:1rem}.jobs-table{width:100%;border-collapse:collapse}.jobs-table th,.jobs-table td{padding:.6rem;border-bottom:1px solid #ddd}.job-panel{position:fixed;right:0;top:0;width:340px;height:100%;background:#fff;border-left:1px solid #ddd;padding:1rem}.quote-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.quote-form,.quote-output{background:#fff;padding:1rem;border-radius:6px;border:1px solid #ddd}.quote-line{display:flex;justify-content:space-between;padding:.4rem 0}.quote-total{font-size:1.4rem;font-weight:700;display:flex;justify-content:space-between}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.calendar-day{background:#fff;padding:.5rem;border-radius:6px;border:1px solid #ddd}.calendar-event{background:#2d7d46;color:#fff;padding:.4rem;margin-top:.4rem;border-radius:4px;cursor:pointer}.expenses-header{display:flex;justify-content:space-between;margin-bottom:1rem}.expenses-table{width:100%;border-collapse:collapse}.expenses-table th,.expenses-table td{padding:.6rem;border-bottom:1px solid #ddd}.reports-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.report-card{background:#fff;padding:1rem;border-radius:6px;border:1px solid #ddd;text-align:center}.report-value{font-size:2rem;margin:1rem 0}*{box-sizing:border-box;margin:0;padding:0;font-family:Arial,sans-serif}body{background:#f5f5f5;color:#222}h1,h2,h3,h4{margin-bottom:.5rem}.btn{padding:.5rem 1rem;border:none;cursor:pointer;border-radius:4px}.btn-primary{background:#2d7d46;color:#fff}.btn-secondary{background:#ccc}.btn-success{background:#2d9d2d;color:#fff}input,select{padding:.4rem;border:1px solid #ccc;border-radius:4px}
