@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=Roboto:wght@400;500;600;700&display=swap');
:root{--ink:#182d2a;--teal:#0e625a;--teal2:#197b6c;--cream:#f5f7f3;--line:#e0e9e4;--muted:#687f76;--white:#fff;--yellow:#ffdf62;--brown:#675248;--radius:16px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Roboto,Arial,sans-serif;font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}h1,h2,h3,h4{font-family:Poppins,sans-serif;letter-spacing:-.045em;margin:0}p{line-height:1.55}a{color:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #f9bd27;outline-offset:2px}
[hidden]{display:none!important}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 17px;border:1px solid transparent;border-radius:10px;font-weight:700;transition:transform .2s,background .2s;white-space:nowrap}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--teal);color:white}.btn.yellow{background:var(--yellow);color:#2c372f}.btn.subtle{border-color:#d5e1da;color:var(--teal);background:#f5faf6}.btn.warn{background:#fff1ec;color:#a14b36}.btn.wide{width:100%}.btn.small{padding:7px 10px;font-size:12px}.btn.textual{background:transparent;color:var(--teal);padding:4px 0}
.login-layout{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);background:#f6f8f5}.login-intro{background:radial-gradient(circle at 80% 15%,#198775 0%,transparent 44%),linear-gradient(150deg,#0e6861,#094c46);color:white;padding:clamp(35px,6vw,105px);display:flex;flex-direction:column;justify-content:center}.brand-mark{font-family:Poppins,sans-serif;font-size:26px;font-weight:700;letter-spacing:-.08em}.brand-mark span{color:#a4e0bd}.login-intro h1{font-size:clamp(45px,5.5vw,78px);line-height:1.1;margin:50px 0 22px}.login-intro h1 strong{color:#f6e286;font-weight:700}.login-intro>p{max-width:440px;color:#e0f6ed;font-size:17px}.login-tag{margin-top:80px;color:#c7e9dd}.login-card{align-self:center;width:min(430px,calc(100% - 56px));margin:30px auto;padding:34px;background:white;border:1px solid var(--line);border-radius:25px;box-shadow:0 17px 60px #0a3a2e0e}.login-card h2{font-size:24px}.login-card>p{color:var(--muted)}.login-card label{font-weight:700;display:block;margin:26px 0 8px}.login-card input{width:100%;border:1px solid #cbd9d0;border-radius:10px;padding:14px;background:#fff;margin-bottom:16px}.login-divider{text-align:center;margin:24px 0;color:var(--muted);border-top:1px solid var(--line);height:1px}.login-divider span{position:relative;top:-9px;padding:0 12px;background:white}.fine{font-size:12px;color:var(--muted);margin:14px 0 0}
.app-shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:28px 13px 18px}.sidebar-head{padding:0 14px 32px}.sidebar-caption{font-weight:700;font-size:10px;letter-spacing:.12em;color:var(--muted);margin-top:2px}.sidebar-nav{display:grid;gap:4px}.nav-link{border:0;background:transparent;color:#526960;border-radius:10px;display:flex;align-items:center;text-align:left;gap:12px;width:100%;padding:12px 13px;font-weight:700}.nav-link.active{background:#e2f1e9;color:#0b6b5a}.nav-link:hover{background:#eef5ee}.nav-icon{width:24px;font-size:19px;font-family:Arial;text-align:center}.side-bottom{margin-top:auto;border-top:1px solid var(--line);padding:18px 12px 0}.side-bottom p{margin:0 0 12px;font-weight:700}.side-bottom small{font-weight:400;color:var(--muted)}.logout{border:1px solid var(--line);font-size:12px}.main-column{min-width:0}.topbar{height:74px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,3vw,40px)}.breadcrumb{font-weight:700}.breadcrumb span{margin:0 7px;color:#a1b3a8}.breadcrumb span:last-child{color:var(--ink)}.topbar-actions{display:flex;align-items:center;gap:12px}.pill{border-radius:999px;padding:6px 11px;background:#f3f0df;color:#6c5b3d;font-size:11px;font-weight:800;letter-spacing:.06em}.pill.live{background:#e6f5ea;color:#137358}.pill.status-new{background:#fff0da;color:#8e6517}.pill.status-scheduled{background:#e1f3ea;color:#147257}.pill.status-closed{background:#ecefea;color:#5d7469}.pill.status-unpaid{background:#ffe8e3;color:#a64f39}.icon-button{border:1px solid var(--line);background:white;border-radius:9px;height:33px;min-width:33px}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#d6e7df;color:var(--teal);font-weight:800}.mobile-menu{display:none;border:0;background:transparent;font-size:24px;color:var(--teal)}
.content{padding:31px clamp(16px,3vw,42px) 70px;max-width:1600px;margin:auto}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:26px}.page-heading h1{font-size:clamp(26px,2.6vw,35px)}.page-heading p{margin:4px 0;color:var(--muted)}.page-heading #viewActions{display:flex;gap:9px}
.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin:0 0 23px}.stat-card{border:1px solid var(--line);background:white;border-radius:var(--radius);padding:22px;min-width:0}.stat-card .metric{font-family:Poppins;font-weight:700;font-size:clamp(26px,3vw,37px);line-height:1.3}.stat-card .caption{color:var(--muted);margin-top:7px}.stat-card .foot{font-size:12px;margin-top:20px;color:var(--teal)}.surface{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:19px;box-shadow:0 8px 26px #0e504705}.surface h2{font-size:19px}.surface-header{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}.two-col{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(270px,.95fr);gap:17px}.table-scroll{width:100%;overflow-x:auto}.data-table{width:100%;border-collapse:collapse;min-width:650px;text-align:left}.data-table th{font-size:11px;text-transform:uppercase;letter-spacing:.035em;color:#7c9488;padding:13px 10px;border-bottom:1px solid var(--line)}.data-table td{padding:14px 10px;border-bottom:1px solid #f0f4f0;vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.data-table button.row-open{background:none;border:0;color:var(--teal);font-weight:700;padding:0;text-align:left}.small-text{color:var(--muted);font-size:12px}.empty-state{padding:35px 20px;text-align:center;border:1px dashed #c7d8cf;border-radius:13px;color:var(--muted)}.empty-state strong{display:block;color:var(--ink);font-size:17px;margin-bottom:6px}.split-info{display:flex;justify-content:space-between;gap:15px;padding:11px 0;border-bottom:1px solid #ecf0ee}.split-info:last-child{border:0}.split-info strong{color:var(--teal)}.input-search,.form-field input,.form-field select,.form-field textarea{width:100%;padding:11px 12px;border:1px solid #cbdad0;border-radius:9px;background:white;color:var(--ink)}.form-field{margin-bottom:14px}.form-field label{display:block;font-weight:700;margin-bottom:7px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid .full{grid-column:1/-1}.form-message{min-height:20px;color:#0e6d5f}
.calendar-toolbar{display:flex;align-items:center;gap:9px;justify-content:space-between;margin-bottom:17px}.month-nav{display:flex;align-items:center;gap:11px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.weeklabel{padding:10px 6px;background:#f0f5f0;text-align:center;font-size:11px;font-weight:800;color:#597468;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.daycell{min-height:116px;padding:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0}.daycell.outside{background:#fafbfa;color:#a5b7ab}.daynumber{font-size:12px;font-weight:700;margin-bottom:7px}.job-chip{display:block;width:100%;border:0;border-radius:6px;background:#d7f0e5;color:#125d52;padding:6px;text-align:left;font-size:11px;margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-chip:hover{background:#bfe4d2}
.drawer{position:fixed;z-index:32;right:0;top:0;width:min(690px,100vw);height:100vh;background:white;box-shadow:-20px 0 60px #16352b23;display:flex;flex-direction:column}.drawer-backdrop{position:fixed;inset:0;z-index:31;background:#10262062}.drawer-header{padding:22px 25px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.drawer-header h2{font-size:23px}.drawer-content{padding:24px;overflow:auto}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.detail-box{padding:16px;background:#f6f9f6;border:1px solid var(--line);border-radius:12px}.detail-box .key{font-size:11px;color:var(--muted)}.detail-box .val{font-size:14px;font-weight:700;margin-top:5px;overflow-wrap:anywhere}.detail-actions{display:flex;gap:9px;flex-wrap:wrap;margin:22px 0}.line-item{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.line-item:last-child{border:0}.detail-section{margin-top:21px}.detail-section h3{margin-bottom:11px;font-size:17px}.soft-note{background:#fcf7e9;padding:13px 16px;border-radius:10px;color:#755b30;font-size:13px}
.modal{border:0;border-radius:20px;padding:0;width:min(550px,calc(100% - 24px));max-height:90vh;box-shadow:0 35px 100px #0e2e2555}.modal::backdrop{background:#1c362e99}.modal #dialogForm{padding:24px}.modal-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px}.modal h2{font-size:22px}.dialog-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;flex-wrap:wrap}.toast{position:fixed;bottom:24px;right:24px;z-index:80;background:#0d5b53;color:white;border-radius:12px;padding:15px 18px;max-width:360px;box-shadow:0 16px 40px #0b413d44}
#signatureCanvas{display:block;width:100%;height:170px;touch-action:none;border:1px solid #cbdbd2;border-radius:12px;background:#fff;cursor:crosshair}
@media(max-width:1100px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col{grid-template-columns:1fr}.sidebar{width:210px}.app-shell{grid-template-columns:210px 1fr}}
@media(max-width:740px){.login-layout{grid-template-columns:1fr}.login-intro{padding:36px 25px}.login-intro h1{font-size:39px;margin:29px 0 11px}.login-tag{display:none}.login-card{margin:20px auto 40px;width:calc(100% - 30px);padding:24px}.app-shell{display:block}.sidebar{position:fixed;z-index:24;top:0;bottom:0;left:0;width:248px;transform:translateX(-110%);transition:transform .2s;box-shadow:14px 0 40px #102b201a}.sidebar.open{transform:translateX(0)}.topbar{height:60px;padding:0 16px}.mobile-menu{display:block}.breadcrumb{flex:1;margin-left:14px;font-size:13px}.topbar-actions{gap:6px}.content{padding:20px 14px 70px}.page-heading{align-items:flex-start}.page-heading h1{font-size:25px}.page-heading p{font-size:12px}.stat-grid{gap:9px}.stat-card{padding:14px}.stat-card .metric{font-size:27px}.surface{padding:15px}.detail-grid{grid-template-columns:1fr 1fr;gap:8px}.detail-box{padding:12px}.drawer-header{padding:17px}.drawer-content{padding:17px}.daycell{min-height:79px;padding:4px 2px}.daynumber{padding:2px;font-size:10px}.job-chip{font-size:9px;padding:4px 2px}.calendar-toolbar{flex-direction:column;align-items:flex-start}.form-grid{grid-template-columns:1fr}}
@media print{body{background:white!important}#loginPanel,#appShell,#detailDrawer,#drawerBackdrop,.modal,.toast{display:none!important}#printSheet{display:block!important;margin:0 auto;max-width:800px;padding:24px;font:13px/1.5 Roboto,Arial,sans-serif;color:#111}#printSheet h1{font:700 28px Poppins,sans-serif;margin:0 0 15px}#printSheet .print-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}#printSheet .print-line{padding:9px 0;border-bottom:1px solid #aaa}#printSheet .signature-spot{margin-top:45px;border-top:1px solid #777;width:55%;padding-top:8px}#printSheet table{width:100%;border-collapse:collapse}#printSheet td,#printSheet th{border-bottom:1px solid #ddd;padding:8px;text-align:left}}
@media screen{#printSheet{display:none}}