:root{--bg:#f3f4f2;--panel:#fff;--ink:#121416;--muted:#697078;--line:#dfe2e3;--night:#101214;--night2:#1b1e21;--yellow:#f1be23;--yellow2:#ffd24d;--green:#207447;--red:#a33333;--blue:#315f9e;--orange:#a95d13;--shadow:0 22px 60px rgba(10,12,14,.12);--radius:14px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;background:var(--night);color:#fff;padding:22px 16px;display:flex;flex-direction:column;z-index:30}.admin-brand{display:flex;align-items:center;gap:12px;text-decoration:none;padding:4px 8px 22px}.wolf-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;background:var(--yellow);overflow:hidden;flex:0 0 46px}.wolf-mark img{display:block;width:40px;height:40px;object-fit:contain}.admin-brand>span:last-child{display:grid;line-height:1.1}.admin-brand strong{text-transform:uppercase;letter-spacing:.06em}.admin-brand small{margin-top:4px;color:#9da3a7}.admin-nav{overflow:auto;padding-right:4px}.nav-group{display:grid;gap:3px;margin:0 0 18px}.nav-group>span{padding:0 10px 7px;color:#747b80;text-transform:uppercase;font-size:.7rem;letter-spacing:.14em;font-weight:900}.nav-group a{padding:9px 11px;border-radius:8px;text-decoration:none;color:#cbd0d3;font-weight:700;font-size:.91rem}.nav-group a:hover,.nav-group a.active{background:#272b2f;color:#fff}.nav-group a.active{box-shadow:inset 3px 0 var(--yellow)}.sidebar-footer{margin-top:auto;border-top:1px solid #2b2f33;padding:15px 9px 0;display:grid;gap:4px}.sidebar-footer span{font-weight:800}.sidebar-footer small{color:#8f969b;text-transform:capitalize}.sidebar-footer a{margin-top:8px;color:var(--yellow);font-size:.85rem}.main-panel{min-width:0}.topbar{min-height:110px;padding:24px 34px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.88);backdrop-filter:blur(10px);display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:20}.topbar h1{margin:3px 0 0;font-size:1.75rem;letter-spacing:-.03em}.eyebrow{color:#8a6500;font-size:.68rem;text-transform:uppercase;letter-spacing:.14em;font-weight:900}.topbar-actions{margin-left:auto;display:flex;gap:8px}.content{padding:30px 34px 70px;max-width:1680px}.btn{min-height:40px;padding:9px 14px;border-radius:8px;border:1px solid transparent;font-weight:850;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn.primary{background:var(--yellow);color:#111}.btn.primary:hover{background:var(--yellow2)}.btn.secondary{background:var(--night);color:#fff}.btn.ghost{border-color:var(--line);background:#fff;color:var(--ink)}.btn.danger{background:#fee8e8;color:var(--red);border-color:#efbcbc}.btn.small{min-height:32px;padding:6px 9px;font-size:.8rem}.btn:disabled{opacity:.45;cursor:not-allowed}.icon-btn{border:0;background:transparent;font-size:1.5rem;line-height:1}.mobile-menu{display:none}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.toolbar .spacer{flex:1}.toolbar input,.toolbar select{min-height:40px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 28px rgba(20,24,28,.04)}.card-pad{padding:20px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:24px}.metric{padding:20px;background:#fff;border:1px solid var(--line);border-radius:var(--radius)}.metric span{display:block;color:var(--muted);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.metric strong{display:block;margin-top:9px;font-size:1.8rem;letter-spacing:-.04em}.metric small{display:block;color:var(--muted);margin-top:3px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}.section-title h2,.section-title h3{margin:0}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:.88rem}th,td{padding:11px 13px;border-bottom:1px solid #eceeef;text-align:left;vertical-align:middle;white-space:nowrap}th{position:sticky;top:0;background:#f8f9f8;color:#626970;font-size:.72rem;text-transform:uppercase;letter-spacing:.055em;z-index:2}tbody tr:last-child td{border-bottom:0}tbody tr.clickable:hover{background:#fffbed;cursor:pointer}.status{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;background:#eef0f1;color:#535a60;font-size:.72rem;font-weight:850;text-transform:capitalize}.status.active,.status.accepted,.status.paid,.status.posted,.status.won,.status.approved{background:#e0f1e6;color:var(--green)}.status.new,.status.sent,.status.issued,.status.scheduled,.status.proposed{background:#e4edf8;color:var(--blue)}.status.overdue,.status.declined,.status.lost,.status.void,.status.cancelled{background:#f7e1e1;color:var(--red)}.status.draft,.status.pending,.status.planning{background:#fff0cb;color:#806000}.status.partial,.status.on_hold{background:#fde8d6;color:var(--orange)}.money{font-variant-numeric:tabular-nums;text-align:right}.muted{color:var(--muted)}.empty{padding:36px;text-align:center;color:var(--muted)}.alert{padding:12px 14px;border-radius:9px;margin:0 0 14px}.alert.danger{background:#fbe5e5;color:#812b2b;border:1px solid #efbcbc}.alert.warning{background:#fff5d7;color:#795900;border:1px solid #ebcf7e}.alert.success{background:#e4f3e9;color:#1b643b;border:1px solid #abd1b7}.loading{padding:70px;text-align:center;color:var(--muted)}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.55);display:grid;place-items:start center;padding:5vh 18px;z-index:100;overflow:auto}.modal-backdrop.hidden{display:none}.modal{width:min(920px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:16px;box-shadow:var(--shadow)}.modal-head{position:sticky;top:0;background:#fff;border-bottom:1px solid var(--line);padding:18px 22px;display:flex;align-items:center;justify-content:space-between;z-index:4}.modal-head h2{margin:3px 0 0}.modal-body{padding:22px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .full{grid-column:1/-1}.stack{display:grid;gap:14px}label{display:grid;gap:6px;font-size:.78rem;font-weight:850;color:#454b50}input,select,textarea{width:100%;border:1px solid #cfd3d5;border-radius:8px;background:#fff;color:var(--ink);padding:10px 11px;min-height:42px}textarea{min-height:100px;resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid rgba(241,190,35,.26);border-color:#b58a07}.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.line-editor{border:1px solid var(--line);border-radius:10px;overflow:auto}.line-editor table input,.line-editor table select{min-width:92px;min-height:34px;padding:6px}.line-editor .desc{min-width:240px}.line-editor .money-field{width:110px}.two-col-detail{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(290px,.65fr);gap:18px}.detail-list{display:grid;gap:0}.detail-list>div{display:flex;justify-content:space-between;gap:20px;padding:9px 0;border-bottom:1px solid #eceeef}.detail-list span{color:var(--muted)}.detail-list strong{text-align:right}.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:16px}.tabs button{border:0;background:transparent;padding:10px 12px;font-weight:800;color:var(--muted)}.tabs button.active{color:var(--ink);box-shadow:inset 0 -3px var(--yellow)}.toast{position:fixed;right:22px;bottom:22px;z-index:200;background:#111;color:#fff;padding:13px 16px;border-radius:9px;box-shadow:var(--shadow);max-width:420px}.toast.error{background:#7d2929}.toast.hidden{display:none}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 20%,#33383c,#0c0e10 58%);padding:20px}.login-card{width:min(440px,100%);background:#fff;border-radius:18px;padding:34px;box-shadow:0 28px 80px rgba(0,0,0,.35)}.login-brand{display:flex;gap:12px;align-items:center;margin-bottom:30px}.login-brand>div:last-child{display:grid}.login-brand strong{text-transform:uppercase}.login-brand span{color:var(--muted);font-size:.82rem}.login-card h1{margin:0 0 4px}.login-card .muted{margin:0 0 22px}.back-link{display:inline-block;margin-top:20px;color:#555}.login-card code{background:#f4f4f4;padding:2px 4px;border-radius:4px}.check-row{display:flex;gap:8px;align-items:center}.check-row input{width:auto;min-height:auto}.note{font-size:.82rem;color:var(--muted);line-height:1.5}.kpi-good{color:var(--green)}.kpi-bad{color:var(--red)}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:1fr 1fr}.two-col-detail{grid-template-columns:1fr}}
@media(max-width:780px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-280px;width:260px;transition:left .2s}.sidebar.open{left:0}.mobile-menu{display:block}.topbar{padding:18px;min-height:88px}.topbar-actions .ghost{display:none}.content{padding:20px 16px 60px}.grid-2,.grid-3,.form-grid{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr 1fr}.form-grid .full{grid-column:auto}.modal-backdrop{padding:0}.modal{min-height:100vh;max-height:none;border-radius:0}.toolbar{align-items:stretch}.toolbar .spacer{display:none}.toolbar>*{flex:1 1 auto}}
@media(max-width:480px){.metric-grid{grid-template-columns:1fr}.topbar-actions{display:none}}
.journal-row{display:grid;grid-template-columns:minmax(220px,1.3fr) minmax(220px,1fr) 130px 130px 42px;gap:8px;align-items:center;margin-bottom:8px}.journal-row select,.journal-row input{width:100%}@media(max-width:900px){.journal-row{grid-template-columns:1fr 1fr}.journal-row .icon-btn{grid-column:auto}}
.doc-admin-list{display:grid;border:1px solid var(--line);border-radius:10px;overflow:hidden}.doc-admin-list a{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 14px;text-decoration:none;color:inherit;border-bottom:1px solid var(--line)}.doc-admin-list a:last-child{border-bottom:0}.doc-admin-list small,.doc-admin-list code{display:block;margin-top:3px;color:var(--muted);font-size:11px}.doc-admin-list code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;word-break:break-all}

.btn.tiny{min-height:28px;padding:4px 7px;font-size:.72rem}
.permission-matrix{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.permission-group{border:1px solid var(--line);border-radius:10px;padding:14px;background:#fafbfa}.permission-group h3{margin:0 0 10px;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.permission-item{display:flex;grid-template-columns:none;flex-direction:row;align-items:flex-start;gap:9px;padding:8px 0;border-top:1px solid #eceeef;color:var(--ink)}.permission-item:first-of-type{border-top:0}.permission-item input{width:auto;min-height:auto;margin-top:3px}.permission-item span{display:grid;gap:2px}.permission-item strong{font-size:.82rem}.permission-item small{font-size:.72rem;color:var(--muted);font-weight:500;line-height:1.35}@media(max-width:900px){.permission-matrix{grid-template-columns:1fr}}


/* Employees, scheduling, calendar and payment schedule */
.link-button{border:0;background:transparent;color:#5f4700;text-decoration:underline;text-underline-offset:2px;padding:0;font:inherit;cursor:pointer}.wrap-cell{white-space:normal;min-width:180px;max-width:360px}.row-overdue{background:#fff2f2}.row-overdue td:first-child{box-shadow:inset 3px 0 var(--red)}
.employee-subsections{display:grid;gap:16px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.availability-grid{display:grid;gap:7px}.availability-row{display:grid;grid-template-columns:minmax(105px,.7fr) minmax(110px,.7fr) 125px 125px minmax(160px,1.2fr);gap:8px;align-items:center;padding:7px 0;border-bottom:1px solid #eceeef}.availability-row:last-child{border-bottom:0}.availability-row input{min-height:36px;padding:6px 8px}.availability-row .check-row{font-size:.75rem}

.schedule-grid{display:grid;grid-template-columns:minmax(160px,1.05fr) repeat(7,minmax(150px,1fr));border:1px solid var(--line);border-radius:12px;overflow:auto;background:#fff;box-shadow:0 8px 28px rgba(20,24,28,.035)}
.schedule-head{min-height:58px;padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f7f8f7;display:grid;align-content:center;gap:2px;text-align:center;position:sticky;top:0;z-index:4}.schedule-head span{font-size:.72rem;color:var(--muted)}.schedule-head.today{background:#fff8dc}.schedule-name-head{text-align:left;left:0;z-index:6}
.schedule-employee{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fbfbfa;display:grid;align-content:start;gap:3px;position:sticky;left:0;z-index:3}.schedule-employee span{font-size:.72rem;color:var(--muted)}.schedule-employee.unassigned{background:#fff5d7}.schedule-employee.unassigned strong{color:#795900}
.schedule-cell{min-height:122px;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);position:relative;display:flex;flex-direction:column;gap:5px;cursor:pointer;transition:background .12s}.schedule-cell:hover{background:#fffdf4}.schedule-cell.drag-over{outline:3px solid var(--yellow);outline-offset:-3px;background:#fff8d9}.schedule-cell.unavailable{background:#f8eeee}.schedule-cell.time-off{background:#fff1e4}.schedule-add-hint{display:grid;place-items:center;min-height:52px;color:#c4c7c8;font-size:1.4rem}.availability-flag,.timeoff-flag{font-size:.64rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:3px 5px;border-radius:5px}.availability-flag{background:#f2dede;color:#883939}.timeoff-flag{background:#ffe2c5;color:#854a13}
.schedule-chip{border:1px solid #d2d6d8;border-left:4px solid #757b80;border-radius:7px;background:#fff;padding:6px 7px;text-align:left;display:grid;gap:2px;cursor:pointer;white-space:normal;color:var(--ink)}.schedule-chip:hover{box-shadow:0 3px 10px rgba(0,0,0,.09)}.schedule-chip>span{font-size:.64rem;color:var(--muted);font-variant-numeric:tabular-nums}.schedule-chip>strong{font-size:.73rem;line-height:1.2}.schedule-chip>small{font-size:.6rem;text-transform:uppercase;color:var(--muted)}.schedule-chip.type-work{border-left-color:#356a49}.schedule-chip.type-estimate{border-left-color:#266aa6}.schedule-chip.type-meeting{border-left-color:#7652a8}.schedule-chip.type-inspection{border-left-color:#a06a19}.schedule-chip.type-service{border-left-color:#a64d4d}.schedule-chip.type-delivery{border-left-color:#4e7b82}.schedule-chip.type-payment{border-left-color:#138066}.schedule-chip.type-reminder{border-left-color:#b08712}.schedule-chip.type-other{border-left-color:#777}

.calendar-shell{border:1px solid var(--line);border-radius:12px;overflow:auto;background:#fff;box-shadow:0 8px 28px rgba(20,24,28,.035)}.calendar-weekdays,.calendar-grid{min-width:980px;display:grid;grid-template-columns:repeat(7,minmax(140px,1fr))}.calendar-weekdays{background:#f7f8f7;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:3}.calendar-weekdays>div{padding:9px 10px;text-align:center;text-transform:uppercase;font-size:.68rem;font-weight:900;letter-spacing:.06em;color:var(--muted);border-right:1px solid var(--line)}.calendar-day{min-height:145px;padding:7px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;cursor:pointer}.calendar-day:nth-child(7n){border-right:0}.calendar-day.outside{background:#f7f7f7;color:#9a9fa2}.calendar-day.today{box-shadow:inset 0 0 0 2px var(--yellow);background:#fffdf5}.calendar-day.drag-over{box-shadow:inset 0 0 0 3px var(--yellow);background:#fff8d9}.calendar-date{font-weight:850;font-size:.8rem;margin-bottom:6px}.calendar-events{display:grid;gap:4px}.calendar-chip{border:0;border-left:3px solid #777;border-radius:5px;background:#f1f3f4;padding:4px 5px;text-align:left;display:flex;gap:5px;font-size:.67rem;line-height:1.2;color:var(--ink);cursor:pointer;white-space:normal}.calendar-chip span{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.61rem;flex:0 0 auto}.calendar-chip:hover{filter:brightness(.97)}.calendar-chip.type-work{border-left-color:#356a49;background:#eaf3ed}.calendar-chip.type-estimate{border-left-color:#266aa6;background:#e8f1fa}.calendar-chip.type-meeting{border-left-color:#7652a8;background:#f0ebf8}.calendar-chip.type-inspection{border-left-color:#a06a19;background:#fbf1df}.calendar-chip.type-service{border-left-color:#a64d4d;background:#f8eaea}.calendar-chip.type-delivery{border-left-color:#4e7b82;background:#eaf2f3}.calendar-chip.type-payment{border-left-color:#138066;background:#e2f3ee}.calendar-chip.type-reminder{border-left-color:#b08712;background:#fff4cf}.calendar-more{font-size:.67rem;font-weight:800;color:var(--muted);padding:2px 4px}

@media(max-width:1000px){.availability-row{grid-template-columns:1fr 1fr 1fr}.availability-row>strong{grid-column:1/-1}.availability-row [data-note]{grid-column:1/-1}.schedule-grid{grid-template-columns:minmax(140px,.9fr) repeat(7,minmax(135px,1fr))}}
@media(max-width:780px){.calendar-shell,.schedule-grid{margin-left:-8px;margin-right:-8px;border-radius:8px}.availability-row{grid-template-columns:1fr 1fr}.availability-row [data-note]{grid-column:1/-1}}
