:root{--green:#345744;--green-dark:#193d32;--green-soft:#eaf1eb;--cream:#fbf7ee;--paper:#fff;--red:#b8524f;--ink:#1c2a26;--muted:#6a756f;--line:#dfe5df;--shadow:0 16px 42px rgba(25,61,50,.12);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--cream)}
*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}.topbar{height:74px;background:var(--paper);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:10}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);text-decoration:none}.brand-mark{display:grid;place-items:center;width:42px;height:42px;background:var(--green);color:#fff;border-radius:50%;font-family:Georgia,serif;font-weight:800}.brand strong,.brand small{display:block}.brand small{color:var(--muted);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.user-chip{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.86rem}.status-dot{width:9px;height:9px;border-radius:50%;background:#56a36f;box-shadow:0 0 0 4px #e5f4e9}.app-shell{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 74px)}.sidebar{padding:28px 18px;background:var(--green-dark);display:flex;flex-direction:column;gap:7px}.sidebar a{color:#dce9e2;text-decoration:none;padding:12px 14px;border-radius:10px;font-weight:700}.sidebar a:hover,.sidebar a.active{background:rgba(255,255,255,.12);color:#fff}.workspace{padding:38px;max-width:1400px;width:100%;margin:0 auto}.page-heading,.panel-heading,.dialog-heading,.dialog-actions,.line-items-heading,.preview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px}.page-heading{margin-bottom:26px}.page-heading h1,.dialog-heading h2{margin:2px 0 0;font-family:Georgia,serif;font-size:clamp(2rem,3vw,3rem)}.eyebrow{margin:0;color:var(--red);font-weight:800;letter-spacing:.13em;text-transform:uppercase;font-size:.72rem}.button{appearance:none;border:0;border-radius:10px;background:var(--green);color:#fff;padding:11px 17px;text-decoration:none;font-weight:800;cursor:pointer}.button:hover{background:var(--green-dark)}.button.ghost{background:var(--green-soft);color:var(--green-dark)}.button.dark{background:var(--ink)}.button.small{padding:8px 12px;font-size:.88rem}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:24px}.stat,.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.stat{padding:22px}.stat span,.stat small{display:block;color:var(--muted)}.stat strong{display:block;font-family:Georgia,serif;font-size:2.4rem;margin:7px 0}.panel{padding:22px}.panel-heading{margin-bottom:14px}.panel-heading h2{margin:0}.panel-heading a{color:var(--green);font-weight:800}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;padding:11px 10px;border-bottom:1px solid var(--line)}.data-table td{padding:14px 10px;border-bottom:1px solid var(--line)}.data-table tr:last-child td{border:0}.data-table tbody tr{cursor:pointer}.data-table tbody tr:hover{background:#fafcf9}.money{font-variant-numeric:tabular-nums;font-weight:800}.badge{display:inline-block;padding:4px 9px;border-radius:999px;background:var(--green-soft);color:var(--green-dark);text-transform:capitalize;font-size:.78rem;font-weight:800}.empty{text-align:center;padding:42px;color:var(--muted)}.notice{position:fixed;right:24px;top:90px;z-index:50;padding:13px 18px;border-radius:10px;background:var(--green-dark);color:#fff;box-shadow:var(--shadow);max-width:420px}.notice.error{background:#8d312f}dialog{border:0;border-radius:18px;padding:0;box-shadow:0 28px 90px rgba(18,34,28,.28);width:min(680px,calc(100vw - 30px));max-height:92vh}dialog::backdrop{background:rgba(20,33,28,.6);backdrop-filter:blur(3px)}.wide-dialog{width:min(1050px,calc(100vw - 30px))}.dialog-form{padding:26px;overflow:auto;max-height:92vh}.dialog-heading{padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:20px}.dialog-heading h2{font-size:2rem}.icon-button{border:0;background:transparent;color:var(--muted);font-size:1.7rem;cursor:pointer}.form-grid{display:grid;gap:16px}.form-grid.two{grid-template-columns:repeat(2,1fr)}.form-grid.three{grid-template-columns:repeat(3,1fr)}.span-2{grid-column:span 2}.span-3{grid-column:span 3}label{display:grid;gap:6px;font-size:.8rem;font-weight:800;color:var(--muted)}input,select,textarea{width:100%;border:1px solid #ccd5ce;border-radius:8px;background:#fff;color:var(--ink);padding:10px 11px}input:focus,select:focus,textarea:focus{outline:3px solid rgba(52,87,68,.16);border-color:var(--green)}textarea{resize:vertical}.dialog-actions{border-top:1px solid var(--line);padding-top:20px;margin-top:22px;justify-content:flex-end}.line-items-heading{margin:24px 0 10px}.line-items-heading h3{margin:0}.line-items{display:grid;gap:8px}.line-item{display:grid;grid-template-columns:minmax(200px,1fr) 110px 130px 100px 32px;gap:10px;align-items:end;padding:11px;background:#f7f9f6;border-radius:10px}.line-item>strong{padding:10px 0;text-align:right}.remove-item{font-size:1.35rem;padding-bottom:8px}.totals{margin:15px 0 20px auto;width:min(350px,100%);display:grid;gap:8px}.totals>div{display:flex;justify-content:space-between}.totals .grand-total{border-top:2px solid var(--green);padding-top:9px;font-size:1.2rem}.notes-grid{border-top:1px solid var(--line);padding-top:20px}.preview-dialog{width:min(930px,calc(100vw - 26px));background:#e7e7e7}.preview-toolbar{padding:12px;background:#fff;position:sticky;top:0;z-index:2;justify-content:flex-end}.quote-paper{background:#fff;width:8.5in;min-height:11in;margin:18px auto;padding:.65in;color:#19231f;box-shadow:0 8px 30px rgba(0,0,0,.15)}.quote-head{display:flex;justify-content:space-between;border-bottom:4px solid var(--green);padding-bottom:18px}.quote-head h1{margin:0;font:800 32px Georgia,serif;color:var(--green-dark)}.quote-head .meta{text-align:right}.quote-parties{display:grid;grid-template-columns:1fr 1fr;gap:50px;margin:28px 0}.quote-parties h3{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--red)}.quote-paper table{width:100%;border-collapse:collapse}.quote-paper th{background:var(--green-dark);color:#fff;padding:10px;text-align:left}.quote-paper td{padding:11px 10px;border-bottom:1px solid #dde3dd}.quote-paper .right{text-align:right}.quote-summary{width:310px;margin:20px 0 25px auto}.quote-summary div{display:flex;justify-content:space-between;padding:6px}.quote-summary .total{font-size:1.2rem;font-weight:800;border-top:2px solid var(--green)}.quote-scope{margin:25px 0;white-space:pre-wrap}.quote-footer{margin-top:55px;padding-top:14px;border-top:1px solid var(--line);font-size:.82rem;color:var(--muted)}
.hours-stat-grid{grid-template-columns:minmax(220px,360px)}.muted,.entry-notes{color:var(--muted)}.entry-notes{display:block;margin-top:5px;font-size:.82rem;white-space:pre-wrap}.table-actions{white-space:nowrap}.table-actions .button+.button{margin-left:6px}.button.danger{background:#a84742}.button.danger:hover{background:#823631}
@media(max-width:800px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:74px;z-index:9;flex-direction:row;overflow-x:auto;padding:10px}.sidebar a{white-space:nowrap}.workspace{padding:24px 16px}.stat-grid{grid-template-columns:1fr}.form-grid.two,.form-grid.three{grid-template-columns:1fr}.span-2,.span-3{grid-column:auto}.line-item{grid-template-columns:1fr 1fr}.line-item label:first-child{grid-column:span 2}.line-item>strong{text-align:left}.table-wrap{overflow-x:auto}.topbar{padding:0 16px}.user-chip span:last-child{display:none}.quote-paper{width:100%;min-height:auto;margin:0;padding:30px}.quote-parties{grid-template-columns:1fr;gap:10px}}
@media print{body>*:not(.preview-dialog){display:none!important}.preview-dialog{display:block!important;position:static;width:auto;max-height:none;background:#fff}.preview-toolbar{display:none}.quote-paper{box-shadow:none;margin:0;width:auto;min-height:auto;padding:.3in}@page{size:letter;margin:.35in}}
.roster-help{max-width:850px;margin:-8px 0 18px}.check-label{display:flex;align-items:center;gap:10px}.check-label input{width:auto}.badge.inactive{background:#eef0ee;color:#66716b}.hours-self-note{margin:16px 0 0}[hidden]{display:none!important}
.account-tools{display:flex;align-items:center;gap:10px}.auth-shell{min-height:calc(100vh - 74px);display:grid;place-items:center;padding:32px 18px;background:radial-gradient(ellipse at top left,#e9f0e8,transparent 48%),var(--cream)}.auth-card{width:min(480px,100%);padding:clamp(25px,5vw,42px);background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.auth-card h1{margin:8px 0 12px;font:800 clamp(2rem,6vw,2.7rem) Georgia,serif;color:var(--green-dark)}.auth-copy{color:var(--muted);line-height:1.6;margin:0 0 23px}.auth-form{display:grid;gap:17px}.auth-form .button{margin-top:3px}.auth-form label small{font-weight:500;line-height:1.45}.auth-error{margin:16px 0 0;color:#9a302e;font-weight:700;line-height:1.5}.team-panel{margin-bottom:20px}.team-list{display:grid}.team-row{display:grid;grid-template-columns:minmax(170px,1fr) auto auto auto;align-items:center;gap:15px;padding:15px 0;border-top:1px solid var(--line)}.team-row>div:first-child{display:grid;gap:4px}.team-row>div:first-child span{font-size:.86rem;color:var(--muted)}.team-state{font-size:.82rem;font-weight:800;color:#9a302e}.team-state.active{color:var(--green)}.team-actions{display:flex;gap:8px}.button.danger{background:#a5413f}.button.danger:hover{background:#782e2d}
@media(max-width:800px){.team-row{grid-template-columns:1fr auto}.team-actions{grid-column:1/-1}.account-tools{gap:6px}.account-tools .user-chip span:last-child{display:inline}.user-chip{max-width:145px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .button.small{padding:7px 9px;font-size:.78rem}}
.user-create-form{display:grid;grid-template-columns:repeat(3,minmax(170px,1fr));align-items:end;gap:14px}.user-create-form label small{display:block;color:var(--muted);font-weight:500;line-height:1.4;margin-top:5px}.user-create-form .button{justify-self:start}
@media(max-width:1050px){.user-create-form{grid-template-columns:repeat(2,minmax(170px,1fr))}}
@media(max-width:800px){.user-create-form{grid-template-columns:1fr}}
.hours-controls{display:flex;align-items:center;gap:12px}.segmented{display:flex;padding:4px;border-radius:10px;background:#eef2ed;gap:3px}.segmented button{border:0;border-radius:7px;padding:8px 12px;background:transparent;color:var(--muted);font-weight:800;cursor:pointer}.segmented button.active{background:#fff;color:var(--green-dark);box-shadow:0 1px 4px #253d3022}.data-table input[type=checkbox]{width:17px;height:17px;accent-color:var(--green)}.badge.unpaid{background:#fff1df;color:#79501b}.team-row{grid-template-columns:minmax(170px,1fr) auto auto minmax(220px,auto)}.team-actions{flex-wrap:wrap;justify-content:flex-end}.team-actions .button{white-space:nowrap}.document-brand{display:flex;align-items:center;gap:18px}.document-logo{display:block;width:2.05in;height:auto;max-height:1.28in;object-fit:contain}.document-terms,.document-notes{margin:22px 0}.document-terms p,.document-notes p{white-space:pre-wrap}.quote-summary .balance{border-top:2px solid var(--green);padding-top:9px;font-size:1.1rem;font-weight:800}.data-table [data-invoice-id],.data-table [data-quote-id],.data-table [data-customer-id]{cursor:pointer}
@media(max-width:800px){.hours-controls{align-items:flex-start;flex-direction:column}.team-row{grid-template-columns:1fr auto}.team-actions{grid-column:1/-1;justify-content:flex-start}.document-brand{align-items:flex-start;flex-direction:column}.document-logo{width:min(2.4in,100%)}}
@media print{.document-logo{width:1.75in;max-height:1.1in}.quote-head{align-items:flex-start}.quote-head .meta{min-width:1.4in}.quote-footer{margin-top:35px}}

/* Invoice payments */
.document-payments { margin-top: 1.25rem; }
.document-payments ul { list-style: none; margin: .5rem 0 0; padding: 0; }
.document-payments li { display: flex; gap: .75rem; align-items: center; justify-content: space-between; padding: .45rem 0; border-bottom: 1px solid rgba(0, 0, 0, .12); }
.document-payments li span { flex: 1; }
@media print { .no-print { display: none !important; } }
