:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#20343b;background:#f3f6f4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #94cdb1;outline-offset:2px}button:disabled{opacity:.55;cursor:not-allowed}.app-shell{min-height:100vh;display:flex}.boot-screen{margin:auto;text-align:center;color:#687981}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#17343c;color:white;font-weight:850;letter-spacing:-1.7px;font-size:20px;box-shadow:0 7px 25px #0c252021}.brand-mark span{color:#a3ddb4}.brand-mark.large{width:70px;height:70px;margin:0 auto 20px;font-size:30px}.sidebar{width:252px;background:#142c34;color:#f1f6f2;min-height:100vh;position:fixed;top:0;left:0;display:flex;flex-direction:column;padding:26px 17px 18px;z-index:20}.sidebar .brand-row{display:flex;align-items:center;gap:12px;padding:3px 12px 31px}.brand-identity strong{display:block;line-height:1.25;font-size:13px;letter-spacing:.1px}.brand-identity small{color:#a6bdbb;font-size:11px}.side-caption{font-size:10px;font-weight:750;color:#7f9a9a;letter-spacing:1.5px;padding:15px 13px}.side-nav{display:grid;gap:5px}.nav-link{display:flex;align-items:center;gap:13px;border:0;border-radius:11px;color:#adc1c0;background:transparent;padding:12px 13px;width:100%;text-align:left;font-size:13px;font-weight:650}.nav-link:hover{background:#24424a;color:white}.nav-link.active{background:#b6e7c4;color:#153931}.nav-link svg{width:19px;height:19px}.side-bottom{margin-top:auto}.side-hint{border:1px solid #31515a;border-radius:14px;padding:14px;margin:10px 4px 14px;background:#1b3640}.side-hint strong{display:block;font-size:12px;margin-bottom:6px}.side-hint p{font-size:11px;color:#9eb9b8;line-height:1.5;margin:0}.owner{display:flex;align-items:center;gap:10px;border-top:1px solid #345058;padding:17px 9px 0}.owner-avatar{border-radius:50%;width:35px;height:35px;display:grid;place-items:center;font-weight:750;background:#426c62;color:white}.owner strong{display:block;font-size:12px}.owner small{color:#a6bdbb;font-size:11px}.workspace{margin-left:252px;min-width:0;flex:1;min-height:100vh}.topbar{height:79px;background:rgba(255,255,255,.88);border-bottom:1px solid #e4ece8;display:flex;align-items:center;justify-content:space-between;padding:0 35px;gap:15px;position:sticky;top:0;z-index:10;backdrop-filter:blur(14px)}.topbar-title{font-size:13px;font-weight:740;color:#40565d}.topbar-actions{display:flex;align-items:center;gap:16px}.today{font-size:12px;color:#798b8f}.topbar .admin-pill{font-size:11px;font-weight:740;color:#41695e;background:#e9f5ec;padding:8px 12px;border-radius:50px;display:flex;align-items:center;gap:6px}.mobile-brand{display:none}.page{max-width:1330px;margin:0 auto;padding:33px 35px 65px}.page-head{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;margin-bottom:28px}.eyebrow{text-transform:uppercase;color:#739388;font-size:10px;font-weight:800;letter-spacing:2px;margin-bottom:9px}.page-head h1,.detail-title{font-size:29px;letter-spacing:-1.15px;line-height:1.18;color:#18343b;margin:0 0 9px;font-weight:790}.subtitle{margin:0;color:#809098;font-size:13px;line-height:1.6}.actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:10px;padding:11px 16px;font-size:12px;font-weight:750;min-height:40px;white-space:nowrap}.btn svg{width:16px;height:16px}.btn-primary{background:#193d3e;color:#fff;box-shadow:0 6px 14px #13333116}.btn-primary:hover{background:#295456}.btn-secondary{background:white;color:#284a4c;border:1px solid #dae7e1}.btn-secondary:hover{background:#f7faf8}.btn-soft{color:#2c6b52;background:#eaf6ed}.btn-soft:hover{background:#dcefe2}.btn-danger{color:#b23939;border:1px solid #f2d1d1;background:#fff7f7}.btn-small{padding:7px 11px;min-height:32px;font-size:11px}.icon-btn{height:34px;width:34px;border-radius:9px;border:1px solid #e0e9e4;background:white;display:inline-flex;align-items:center;justify-content:center;color:#5b7376}.icon-btn svg{width:17px;height:17px}.grid-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:26px}.metric{border:1px solid #e4ece7;border-radius:17px;background:#fff;box-shadow:0 5px 24px #23423407;padding:20px 21px;min-width:0}.metric-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:17px}.metric-label{color:#72858b;font-size:12px;font-weight:620}.metric-icon{border-radius:10px;background:#eff7f1;color:#558d73;width:37px;height:37px;display:grid;place-items:center}.metric-icon svg{height:19px;width:19px}.metric-value{font-size:26px;color:#19353e;font-weight:800;letter-spacing:-1px;white-space:nowrap}.metric-foot{color:#86969a;margin-top:6px;font-size:11px;line-height:1.45}.section-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:20px}.panel{background:#fff;border:1px solid #e4ece7;border-radius:17px;box-shadow:0 5px 24px #23423407;min-width:0;overflow:hidden}.panel-head{padding:21px 23px;border-bottom:1px solid #edf1ee;display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-head h2{margin:0;font-size:15px;letter-spacing:-.2px}.panel-body{padding:20px 23px}.section-link{border:0;background:none;color:#317456;font-weight:750;font-size:12px}.project-row{display:flex;align-items:center;gap:13px;width:100%;border:0;background:white;text-align:left;padding:15px 22px;border-bottom:1px solid #edf1ee}.project-row:last-child{border-bottom:0}.project-row:hover{background:#f7faf8}.project-initial{width:41px;height:41px;border-radius:11px;background:#edf5f0;color:#427562;display:grid;place-items:center;flex-shrink:0}.project-initial svg{height:20px;width:20px}.project-description{min-width:0;flex:1}.project-description strong{display:block;font-size:13px;color:#2b444c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-description small{display:block;color:#84959b;font-size:11px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-end{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.project-end small{color:#8c999b;font-size:11px}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:50px;padding:5px 9px;font-size:10px;font-weight:750;white-space:nowrap}.badge-lead{background:#f0f3f5;color:#607581}.badge-quoted{background:#e9efff;color:#4a67ab}.badge-approved{background:#f7f1de;color:#92701e}.badge-active{background:#e3f3e9;color:#2a7a4d}.badge-hold{background:#fff1e4;color:#aa6725}.badge-done{background:#e6eff0;color:#40777c}.badge-cancel{background:#f8eded;color:#a96363}.empty{padding:40px 25px;text-align:center}.empty-icon{width:52px;height:52px;margin:auto auto 13px;border-radius:16px;display:grid;place-items:center;background:#e9f3ed;color:#5d8b72}.empty-icon svg{height:25px;width:25px}.empty strong{display:block;font-size:15px;margin:0 0 8px;color:#29434a}.empty p{color:#87969a;font-size:12px;max-width:320px;margin:0 auto 17px;line-height:1.6}.tips-card{background:#183a3e;color:white;border-radius:15px;padding:23px;overflow:hidden;position:relative}.tips-card::before{content:"";position:absolute;right:-52px;top:-62px;width:210px;height:210px;border:25px solid #315b55;border-radius:50%;opacity:.55}.tips-card .eyebrow{color:#9dceae;position:relative}.tips-card h3{font-size:19px;max-width:225px;position:relative;letter-spacing:-.4px;line-height:1.35;margin:0 0 10px}.tips-card p{font-size:12px;line-height:1.65;color:#b9d0c8;position:relative}.tips-card .btn{position:relative;margin-top:8px;background:#b5e9c1;color:#193e38}.callout{background:#fff9e9;border:1px solid #f0e4ba;padding:12px 15px;border-radius:11px;color:#836b39;font-size:12px;line-height:1.6;display:flex;gap:10px;align-items:flex-start;margin-bottom:20px}.callout svg{height:18px;width:18px;flex-shrink:0;margin-top:1px}.toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:17px}.search-box{display:flex;align-items:center;gap:9px;border:1px solid #dee9e5;background:white;border-radius:11px;padding:0 13px;min-width:220px;flex:1;max-width:400px}.search-box svg{height:17px;width:17px;color:#8ca09f;flex-shrink:0}.search-box input{padding:12px 0;border:0;outline:none;min-width:0;width:100%;background:none;font-size:12px;color:#28464c}.input,.select,.textarea{border:1px solid #dae5e0;border-radius:10px;background:#fff;color:#253c43;padding:11px 12px;width:100%;min-height:41px;font-size:13px}.select{cursor:pointer}.toolbar .select{max-width:215px}.textarea{min-height:90px;resize:vertical;line-height:1.5}.project-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.project-card{border:1px solid #e2ebe6;background:#fff;border-radius:15px;padding:19px;cursor:pointer;transition:transform .15s,box-shadow .15s}.project-card:hover{transform:translateY(-2px);box-shadow:0 9px 24px #1b463113}.project-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:7px;margin-bottom:17px}.project-card h3{font-size:15px;letter-spacing:-.2px;line-height:1.35;margin:0 0 6px}.project-card p{margin:0;color:#8a9a9d;font-size:11px;line-height:1.5}.card-divider{height:1px;background:#edf1ee;margin:17px 0}.card-metrics{display:flex;justify-content:space-between;gap:8px}.card-metrics small{font-size:10px;color:#849598}.card-metrics strong{display:block;margin-top:5px;font-size:13px}.muted{color:#819196}.tiny{font-size:11px}.text-right{text-align:right}.client-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.client-card{border:1px solid #e3ece8;border-radius:15px;background:#fff;padding:20px;min-width:0}.client-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}.client-avatar{display:grid;place-items:center;border-radius:12px;width:44px;height:44px;background:#e5f2e9;color:#3d6f57;font-size:15px;font-weight:800;flex-shrink:0}.client-head strong{font-size:14px;display:block}.client-head small{color:#91a1a3;font-size:11px}.client-info{min-height:66px}.client-info a,.client-info p{display:flex;gap:8px;align-items:center;margin:7px 0;font-size:11px;color:#72888b;text-decoration:none;overflow-wrap:anywhere}.client-info svg{height:14px;width:14px;flex-shrink:0}.client-footer{border-top:1px solid #edf1ee;padding-top:14px;display:flex;justify-content:space-between;align-items:center;gap:8px}.stat-inline{color:#72898a;font-size:11px}.detail-top{margin-bottom:22px}.back-link{display:inline-flex;gap:7px;align-items:center;padding:0;border:0;background:none;font-size:12px;color:#718985;margin-bottom:17px;font-weight:650}.back-link svg{width:16px;height:16px}.detail-info{display:flex;align-items:center;flex-wrap:wrap;gap:15px;color:#829396;font-size:12px;margin-top:10px}.detail-info>span,.detail-info>a{display:flex;gap:5px;align-items:center;text-decoration:none}.detail-info svg{width:14px;height:14px}.tabs{display:flex;align-items:center;gap:24px;border-bottom:1px solid #e0e9e5;margin-bottom:21px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{background:none;border:0;border-bottom:3px solid transparent;color:#819496;padding:12px 1px 14px;font-size:12px;font-weight:730;white-space:nowrap}.tab.active{color:#1b6048;border-bottom-color:#47966d}.detail-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:18px}.info-pairs{display:grid;grid-template-columns:1fr 1fr;gap:19px}.info-pairs dt{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:#91a09d;font-weight:750;margin-bottom:6px}.info-pairs dd{font-size:13px;color:#354d53;margin:0;line-height:1.5;white-space:pre-line;overflow-wrap:anywhere}.memo{background:#f6f9f7;border:1px solid #e7eee9;padding:15px;border-radius:10px;white-space:pre-wrap;color:#61787c;font-size:12px;line-height:1.6;margin-top:18px}.money-line{display:flex;justify-content:space-between;gap:9px;padding:10px 0;font-size:12px;color:#758a8b;border-bottom:1px solid #edf1ed}.money-line:last-child{border-bottom:0}.money-line strong{color:#233f45}.money-line.highlight{font-weight:770;font-size:14px}.money-line.highlight strong{color:#266d4d}.progress-track{height:8px;background:#e9f1ed;border-radius:20px;overflow:hidden;margin:13px 0 3px}.progress-track>div{height:100%;background:#65ac80;border-radius:20px;max-width:100%}.file-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.file-card{background:#fff;border:1px solid #e1eae5;border-radius:13px;overflow:hidden;min-width:0}.file-thumb{height:141px;background:#edf2f1;display:grid;place-items:center;overflow:hidden;color:#6d9092}.file-thumb img{width:100%;height:100%;object-fit:cover;display:block}.file-thumb svg{width:40px;height:40px}.file-meta{padding:12px}.file-meta strong{display:block;font-size:11px;color:#29454b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-meta small{display:block;font-size:10px;color:#8a999b;margin:5px 0 9px;line-height:1.5}.file-actions{display:flex;gap:6px}.file-actions .btn{flex:1;padding:6px;min-height:29px}.inline-note{padding:16px 19px;border:1px solid #e6ede7;background:#fff;border-radius:12px;margin-bottom:10px}.inline-note p{margin:0 0 10px;white-space:pre-wrap;font-size:13px;line-height:1.6}.inline-note small{color:#9aa6a6;font-size:10px}.inline-note .note-foot{display:flex;justify-content:space-between;align-items:center}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;text-align:left}.data-table th{background:#f8faf9;color:#87989a;letter-spacing:.5px;text-transform:uppercase;font-size:10px;padding:13px 17px;white-space:nowrap}.data-table td{padding:14px 17px;border-bottom:1px solid #eff2ef;font-size:12px;vertical-align:middle;max-width:320px;overflow-wrap:anywhere}.data-table tr:last-child td{border-bottom:0}.data-table strong{font-size:12px}.data-table small{font-size:10px;color:#92a19d}.data-table .amount{white-space:nowrap;font-weight:800}.positive{color:#338059}.negative{color:#b16c52}.finance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:20px}.finance-section{margin-top:20px}.finance-section h3{margin:0 0 12px;font-size:14px}.tag{display:inline-flex;background:#eff4f0;color:#658078;border-radius:7px;padding:4px 7px;font-size:10px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.settings-card{border:1px solid #e2ebe6;background:#fff;border-radius:16px;padding:24px}.settings-card h3{font-size:15px;margin:0 0 8px}.settings-card p{font-size:12px;line-height:1.6;color:#84979b;margin:0 0 16px}.settings-card .btn{margin:4px 7px 4px 0}.setup-list{padding-left:18px;color:#607b7d;font-size:12px;line-height:1.9}.error{background:#fff4f4;border:1px solid #edcdcd;padding:17px;color:#933b3b;margin:10px;border-radius:10px}.modal-backdrop{position:fixed;inset:0;background:#102a30a6;z-index:100;display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(3px)}.modal{width:min(100%,590px);max-height:min(94vh,850px);display:flex;flex-direction:column;border-radius:18px;background:#fff;box-shadow:0 25px 80px #0003;overflow:hidden}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:21px 24px;border-bottom:1px solid #e7eee9}.modal-head h2{margin:0;font-size:17px;letter-spacing:-.3px}.modal-body{padding:22px 24px;overflow-y:auto;overscroll-behavior:contain}.modal-footer{display:flex;justify-content:flex-end;gap:9px;border-top:1px solid #e9efeb;padding:16px 24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field{display:flex;flex-direction:column;gap:7px;min-width:0}.field.full{grid-column:1/-1}.field label{font-size:11px;color:#516970;font-weight:760}.field label em{font-style:normal;color:#b85b50}.field-hint{font-size:10px;line-height:1.4;color:#87999b}.file-input{padding:12px;border:1px dashed #bdd5c6;background:#f7faf8;border-radius:10px;width:100%;font-size:11px}.form-banner{grid-column:1/-1;background:#f4f8f5;padding:11px 12px;border-radius:9px;color:#6b8380;font-size:11px;line-height:1.5}#toast-root{position:fixed;right:24px;bottom:24px;z-index:200;pointer-events:none}.toast{background:#153b38;color:#fff;padding:12px 17px;border-radius:12px;box-shadow:0 13px 33px #192d3145;font-size:12px;font-weight:650;margin-top:8px;max-width:330px}.toast.error-toast{background:#a33f3f}.bottom-nav{display:none}.shortcut-row{display:flex;gap:10px;flex-wrap:wrap}.shortcut-row .btn{flex:1}.screen-reader{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:1160px){.grid-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.project-cards,.client-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.file-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:850px){.sidebar{display:none}.workspace{margin-left:0}.page{padding:25px 20px 105px}.topbar{height:66px;padding:0 20px}.mobile-brand{display:flex;align-items:center;gap:9px}.mobile-brand strong{font-size:13px}.topbar-title{display:none}.today{display:none}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fff;border-top:1px solid #e1eae5;padding:7px max(7px,env(safe-area-inset-left)) calc(7px + env(safe-area-inset-bottom));box-shadow:0 -4px 20px #183e3210;justify-content:space-around}.bottom-nav button{background:transparent;border:0;color:#8b9b9d;display:flex;align-items:center;flex-direction:column;gap:4px;font-size:9px;font-weight:750;padding:6px 7px;min-width:54px}.bottom-nav button.active{color:#2d7857}.bottom-nav svg{height:21px;width:21px}.page-head h1,.detail-title{font-size:25px}}@media(max-width:640px){.page{padding:22px 15px 110px}.page-head{flex-direction:column;align-items:stretch;gap:17px;margin-bottom:19px}.page-head .actions{width:100%}.page-head .actions>.btn{flex:1}.grid-stats{gap:10px;margin-bottom:16px}.metric{padding:15px}.metric-head{margin-bottom:10px}.metric-label{font-size:11px}.metric-icon{height:30px;width:30px}.metric-icon svg{height:16px;width:16px}.metric-value{font-size:21px}.metric-foot{font-size:10px}.section-grid,.detail-grid,.settings-grid{grid-template-columns:1fr}.project-cards,.client-cards{grid-template-columns:1fr}.file-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.file-thumb{height:118px}.panel-head{padding:16px}.panel-body{padding:16px}.project-row{padding:13px}.toolbar{flex-direction:column;align-items:stretch}.search-box{max-width:none}.toolbar .select{max-width:none}.finance-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.finance-grid .metric:last-child{grid-column:1/-1}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.modal-backdrop{padding:9px;align-items:flex-end}.modal{max-height:94dvh;border-radius:17px 17px 9px 9px}.modal-head,.modal-body,.modal-footer{padding-left:18px;padding-right:18px}.info-pairs{gap:14px}.detail-info{gap:9px}.topbar .admin-pill{font-size:10px;padding:7px 9px}.data-table th,.data-table td{padding:10px;font-size:11px}#toast-root{left:12px;right:12px;bottom:90px}.toast{max-width:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}

.mobile-settings{display:none}@media(max-width:850px){.mobile-settings{display:inline-flex}}
/* JC Carpentry CRM — brand update: graphite, ivory and copper, mobile-first */
:root{--ink:#1e211f;--graphite:#222523;--bronze:#ab805d;--bronze-dark:#805c3e;--bronze-soft:#f5eae0;--cream:#f7f7f5;--line:#e8e7e2;--muted:#7e857e;--green:#27734e;color:var(--ink);background:var(--cream);font-family:Inter,"Segoe UI",ui-sans-serif,-apple-system,BlinkMacSystemFont,sans-serif}
body{background:var(--cream)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline-color:#c5a385}
.sidebar{width:256px;background:#1d201f;color:#f9f7f3;padding:22px 13px 16px;box-shadow:5px 0 24px #262c2607}
.sidebar .brand-row{padding:9px 10px 27px;border-bottom:1px solid #373937;margin-bottom:12px;gap:11px}
.logo-frame{width:49px;height:49px;flex:0 0 49px;display:grid;place-items:center;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #e7e2db}
.logo-frame img{width:100%;height:100%;object-fit:contain;padding:5px}
.brand-identity strong{color:#fbf7f3;font-size:13px;letter-spacing:.3px;line-height:1.2}
.brand-identity small{color:#bd9679;letter-spacing:.6px;font-weight:700;font-size:10px;margin-top:5px}
.side-caption{color:#867e75;letter-spacing:1.9px;font-size:10px;padding:18px 16px 10px}
.nav-link{padding:13px 14px;color:#bdc1ba;border-radius:11px;gap:14px;font-size:13px;font-weight:620;margin:1px 0}
.nav-link:hover{background:#2f332f;color:#fff}
.nav-link.active{background:#af8464;color:#fff;box-shadow:0 4px 15px #b47e4629}
.nav-link.active svg{stroke:#fff}
.side-hint{background:#282c29;border-color:#454541;color:#ebe1d6;padding:15px}
.side-hint p{color:#bbb8ae}.owner{border-color:#3c3e39}.owner-avatar{background:#45392d;color:#eac9ac}.owner small{color:#b9b8b1}
.workspace{margin-left:256px;background:var(--cream);min-width:0}
.topbar{height:78px;background:#fff;border-bottom:1px solid var(--line);padding:0 30px}
.topbar-title{display:flex;gap:8px;align-items:center;color:#2d322e;font-weight:650}
.topbar-crumb{font-size:10px;letter-spacing:1.25px;color:#9b9f99}
.topbar-section{font-size:12px;color:#494f48}
.admin-pill{color:#5c594f;background:#f8f4ef;border:1px solid #eee3d7}
.page{padding:34px 33px 70px;max-width:1560px;margin:0 auto}
.page-head{margin-bottom:26px;align-items:center;gap:14px}.page-head h1{color:#1c2220;letter-spacing:-1px;font-size:clamp(24px,2.6vw,34px);font-weight:770;margin-bottom:6px}
.eyebrow{color:#b08667!important;font-size:10px;letter-spacing:2px;font-weight:850}
.subtitle{color:#838883!important;font-size:13px;line-height:1.6}
.btn{border-radius:10px;transition:background .13s ease,transform .13s ease;min-height:40px;font-weight:700}
.btn:hover{transform:translateY(-1px)}
.btn-primary{background:#a97854;color:white;border-color:#a97854;box-shadow:0 5px 16px #92704d1c}
.btn-primary:hover{background:#926747;border-color:#926747}
.btn-soft{background:#f7f0ea;color:#815837;border-color:#ebddd1}.btn-soft:hover{background:#efe0d2}
.btn-secondary{background:#fff;border-color:#dadbd4;color:#474d45}.btn-secondary:hover{border-color:#bfa184;color:#7b573d}
.btn-danger{background:#fff1ef;color:#9b3f3c;border-color:#e9d2ce}
.panel,.metric,.project-card,.client-card,.settings-card{border-color:#e7e6e0;background:#fff;box-shadow:0 3px 15px #18251d06;border-radius:16px}
.panel-head{border-bottom:1px solid #efeee9;min-height:67px;padding:18px 22px}.panel-head h2{font-size:15px;letter-spacing:-.2px;color:#242924}.panel-head p{font-size:12px;color:#8b908b;margin-top:5px}
.panel-body{padding:21px 22px}.grid-stats{gap:15px}.metric{padding:19px 19px 17px;min-height:139px}
.metric-label{color:#737871;font-size:11px;font-weight:750}.metric-head{align-items:center}
.metric-icon{background:#f9f0e9;color:#a67854;width:35px;height:35px;border-radius:11px;display:grid;place-items:center}
.metric-value{color:#252a26;font-size:clamp(24px,2.6vw,30px);font-weight:790;letter-spacing:-.9px;margin-top:14px}
.metric-foot{color:#888f88;font-size:11px;margin-top:5px}
.insight-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px;font-size:10px;font-weight:800;letter-spacing:1px;color:#767e75}
.insight-head>span:first-child{display:flex;align-items:center;gap:8px}.insight-head>span:last-child{font-size:10px;letter-spacing:normal;font-weight:500;color:#9ca199}
.section-grid{margin-top:23px;grid-template-columns:minmax(0,1.6fr) minmax(300px,.9fr);gap:18px}
.dashboard-right{display:grid;gap:17px;align-content:start}
.project-row{padding:17px 22px;gap:13px;border-bottom-color:#f1f0ec}.project-row:hover{background:#fcf9f6}
.project-initial{background:#f6eee7;color:#a67856;border-radius:12px}
.project-description strong{color:#252b26}.project-description small{color:#838b84}
.project-end{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.project-end>small{font-weight:750;color:#414a40;font-size:12px}
.profit-chip{display:inline-block;background:#eaf4ee;color:#2d7750;font-size:10px;font-weight:720;padding:6px 9px;border-radius:8px;white-space:nowrap}
.profit-chip.loss{background:#faeae7;color:#aa443c}.profit-chip.muted-chip{background:#f5f4f0;color:#969890}
.profit-panel .big-number,.big-number{font-size:clamp(29px,3vw,39px);font-weight:850;letter-spacing:-1.5px;color:#252a26;margin:6px 0 10px}
.subtle{font-size:12px;color:#888e86;line-height:1.6}.fine-print{font-size:11px;line-height:1.7;color:#9a9c96;margin:15px 0}
.quick-links{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.quick-links button{border:1px solid #e8e6e0;background:#fff;border-radius:11px;padding:13px 10px;display:flex;gap:9px;align-items:center;font-size:12px;font-weight:700;color:#535952;text-align:left}
.quick-links button:hover{background:#faf4ee;border-color:#e3cbb8;color:#8f6344}
.quick-links svg{width:18px;height:18px;color:#af805c;flex:none}
.privacy-strip{display:flex;gap:8px;align-items:center;margin-top:22px;color:#817b70;border:1px solid #e9e4db;padding:13px 16px;background:#faf8f4;border-radius:12px;font-size:11px;line-height:1.5}
.privacy-strip svg{flex:none;color:#af8d6d}
.project-card{transition:transform .15s,box-shadow .15s}.project-card:hover{border-color:#d5baa4;transform:translateY(-2px);box-shadow:0 8px 24px #826c5416}
.project-card .profit-chip{margin-top:14px}
.badge{border-radius:7px}.badge-active{background:#e4f3e9;color:#397e51}.badge-quoted{background:#fff1df;color:#ac7940}.badge-done{background:#f1f1ec;color:#626b64}.badge-approved{background:#efe8fb;color:#70549d}
.detail-top{border-bottom-color:#e6e5df}.tabs{border-color:#e3e3df;gap:5px;overflow-x:auto;scrollbar-width:none}.tab{white-space:nowrap;color:#818780;flex-shrink:0}.tab.active{color:#8d5c37;border-bottom-color:#a97854}
.costing-title{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:26px 0 17px}
.costing-title h2{font-size:20px;color:#2a2c29;letter-spacing:-.5px}.costing-title p{color:#879087;font-size:12px;margin-top:5px}
.finance-grid-four{grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}
.stackbar{width:100%;height:22px;background:#f0f0ed;display:flex;border-radius:6px;overflow:hidden;margin:3px 0 20px}
.stackbar>span{display:block;height:100%;flex-shrink:0;min-width:0;transition:width .3s}
.cost-legend{display:grid;gap:14px}.legend-item{display:flex;gap:10px;align-items:center;font-size:12px;color:#747d73}.legend-item .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.legend-item>span:nth-child(2){flex:1}.legend-item strong{color:#3b433b;font-size:12px}
.profit-total{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #efefeb;margin-top:17px;padding-top:15px;font-size:12px}.profit-total strong{font-size:15px}
.budget-compare{padding:6px 0 14px}.compare-title{display:flex;justify-content:space-between;gap:8px;color:#6c756b;font-size:11px;margin-bottom:7px}.compare-title strong{color:#3d463f}
.compare-track{height:8px;background:#f0f0ed;border-radius:50px;overflow:hidden}.compare-track>span{height:100%;display:block;border-radius:50px}
.financial-mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.financial-mini-grid>div{background:#f9f8f5;border:1px solid #f0efeb;border-radius:10px;padding:12px;display:grid;gap:7px;min-width:0}
.financial-mini-grid small{color:#8b9189;font-size:11px}.financial-mini-grid strong{color:#2d352c;font-size:16px;overflow-wrap:anywhere}
.warning-callout{background:#fff5e9;border-color:#e8d5bb;color:#835426}
.bank-intro{display:flex;align-items:center;gap:18px;padding:21px 23px;background:#242923;color:#fff;border-radius:17px;margin-bottom:20px;box-shadow:0 12px 28px #141d1613}
.bank-icon{width:51px;height:51px;background:#3a4139;border:1px solid #5b6257;border-radius:12px;display:grid;place-items:center;color:#d5b18d;flex-shrink:0}
.bank-intro>div:nth-child(2){flex:1}.bank-intro strong{font-size:14px}.bank-intro p{color:#c4c9c0;font-size:12px;line-height:1.6;margin-top:5px}
.bank-intro .btn{border-color:#6e665b;background:#353b34;color:#fff;flex-shrink:0}.bank-intro .btn:hover{background:#484b41}
.data-table th{background:#fbfaf8;color:#838983;border-bottom-color:#eeeae4}.data-table td{border-color:#f1f0ec}.amount.negative{color:#ac5951}.amount.positive{color:#2b8657}
.tag{background:#f5f3ee;color:#776e62;border-color:#ebe8df}
.callout{background:#fbf7f2;color:#756759;border-color:#e9dfd4}.callout svg{color:#a17753}
.form-section-label{border-top:1px solid #eeeae4;padding-top:17px;margin-top:4px}.form-section-label strong{font-size:13px}.form-section-label small{font-size:11px;color:#8d8b83;margin-top:5px;display:block}
.input:focus,.select:focus,.textarea:focus{border-color:#b68a64;box-shadow:0 0 0 3px #b68a641c}
.modal{border-radius:17px}.modal-head{background:#fcfbf9}.modal-footer{background:#fdfcfb}
.empty-icon{background:#f8eee5;color:#b0825a}
@media(max-width:1100px){.finance-grid-four{grid-template-columns:repeat(2,minmax(0,1fr))}.section-grid{grid-template-columns:minmax(0,1.3fr) minmax(280px,1fr)}}
@media(max-width:900px){.workspace{margin-left:0}.sidebar{display:none}.topbar{height:68px}.mobile-brand .logo-frame{width:36px;height:36px;flex-basis:36px}.topbar-title{display:none}.page{padding:23px 18px 100px}.bottom-nav{background:#fff;border-top:1px solid #e9e7e2}.bottom-nav button.active{color:#a77550}.bottom-nav button.active svg{color:#a77550}}
@media(max-width:700px){.page-head{align-items:flex-start;gap:13px}.grid-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{padding:15px;min-height:127px}.metric-value{font-size:24px;letter-spacing:-.7px}.metric-foot{font-size:10px}.section-grid,.detail-grid{grid-template-columns:1fr}.dashboard-right{grid-template-columns:1fr}.finance-grid-four{grid-template-columns:repeat(2,minmax(0,1fr))}.costing-title{align-items:flex-start;flex-direction:column}.bank-intro{align-items:flex-start;flex-wrap:wrap}.bank-intro .btn{margin-left:69px}.project-end .profit-chip{font-size:9px}.insight-head>span:last-child{display:none}.financial-mini-grid{gap:9px}.financial-mini-grid strong{font-size:14px}}
@media(max-width:430px){.page{padding:21px 13px 95px}.topbar{padding:0 16px}.topbar-actions .today{display:none}.page-head h1{font-size:25px}.metric{padding:12px}.metric-value{font-size:21px}.grid-stats,.finance-grid-four{gap:9px}.project-end .profit-chip{display:none}.bank-intro{padding:17px}.bank-intro .btn{margin-left:0;width:100%}.quick-links{grid-template-columns:1fr 1fr}}

@media(max-width:700px){.section-grid .empty{min-height:245px;padding:28px 14px}.project-row{padding:14px 15px}.project-description small{line-height:1.45}}
/* Version 3 — reliable wheel / trackpad scrolling in long forms and panels */
html,body{height:auto;min-height:100%;overflow-y:auto;overscroll-behavior-y:auto}
.app-shell,.workspace,.page{min-height:0}
.sidebar{height:100dvh;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.modal-backdrop{overscroll-behavior:contain}
.modal{height:auto;max-height:calc(100dvh - 32px);min-height:0;overflow:hidden}
.modal form{display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden}
.modal .modal-head,.modal .modal-footer{flex-shrink:0}
.modal .modal-body{flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.table-wrap{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;max-width:100%}
.tabs{scrollbar-width:thin;overscroll-behavior-x:contain}
.login-layout{display:flex;align-items:center;justify-content:center;min-height:100dvh;width:100%;padding:35px 16px;background:radial-gradient(circle at 4% 10%,#e8d8c9,#f7f7f5 54%)}
.login-card{width:min(100%,460px);background:white;border:1px solid #e7e6e0;box-shadow:0 24px 70px #1d201f14;border-radius:21px;padding:34px}
.login-brand{display:flex;align-items:center;gap:15px;padding-bottom:25px;border-bottom:1px solid #e8e6e2;margin-bottom:27px}
.login-brand img{width:57px;height:57px;object-fit:contain;border-radius:12px;border:1px solid #ece9e4}
.login-brand strong{display:block;letter-spacing:1.5px;font-size:18px;color:#222523}
.login-brand small{font-size:10px;color:#a97854;letter-spacing:1.5px;font-weight:800}
.login-card h1{font-size:30px;line-height:1.2;margin:12px 0;color:#1e211f;letter-spacing:-.9px}
.login-card p{color:#767d75;line-height:1.6;font-size:13px;margin-bottom:22px}
.login-form{display:grid;gap:16px}
.login-form label{display:grid;gap:7px;font-size:12px;font-weight:760;color:#343d33}
.login-form input{width:100%;min-height:47px}
.login-form .btn{justify-content:center;min-height:49px;margin-top:7px}
.login-note{border-top:1px solid #e8e6e2;margin-top:24px;padding-top:18px;display:flex;align-items:flex-start;gap:11px;color:#837f75;font-size:12px;line-height:1.5}
.login-note svg{color:#ab805d;flex:none}
#login-error{min-height:16px;font-size:12px;color:#a43f3b;font-weight:660}
.live-budget{padding:19px;border:1px solid #dfcdbb;border-radius:11px;background:#fbf6f0;display:grid;gap:10px}
.live-budget small{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:#65584b;line-height:1.4}
.live-budget small strong{color:#2a2924;font-size:14px;white-space:nowrap}
.live-budget small:last-child{display:block;color:#887766;font-size:11px}
[data-edit-expense],[data-edit-payment],[data-edit-change]{color:#986b4d}
@media(max-width:700px){.sidebar{display:none}.modal{max-height:calc(100dvh - 14px)}.login-card{padding:24px}.login-card h1{font-size:25px}.finance-grid.finance-grid-four{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v3.1 mouse-wheel and long forms: native vertical scroll remains available. */
html{overflow-y:auto;scroll-behavior:auto}
body{overflow-x:hidden;overflow-y:auto}
.sidebar{overflow-y:auto;overscroll-behavior:contain}
.modal-backdrop{overflow-y:auto;overscroll-behavior:contain}
.modal-body{touch-action:pan-y;overscroll-behavior-y:contain}
.metric-value{font-size:clamp(18px,2vw,26px);white-space:normal;overflow-wrap:anywhere}
@media(max-width:850px){.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}}

/* v4: privacy veil and password controls */
.privacy-cover[hidden]{display:none!important}
.privacy-cover{position:fixed;inset:0;background:#171b19;z-index:10000;display:grid;place-items:center;padding:24px;color:#fff}
.privacy-dialog{width:min(420px,100%);text-align:center;background:#262b27;border:1px solid #4a514b;padding:34px 25px;border-radius:20px;box-shadow:0 24px 70px #0005}
.privacy-dialog img{width:82px;height:82px;object-fit:contain;background:white;padding:7px;border-radius:14px;margin:0 auto 20px}
.privacy-dialog h2{font-size:24px;margin:0 0 12px}.privacy-dialog p{font-size:14px;color:#d6d7d2;line-height:1.6;margin-bottom:22px}
.privacy-control{gap:6px}.language-picker{display:flex;align-items:center;gap:5px;border:1px solid #e6e5df;border-radius:10px;background:#fff;padding:0 8px;height:38px}
.language-picker select{border:0;background:transparent;font-weight:700;color:#414641;cursor:pointer;outline:none}
.login-form label{position:relative}.login-form label:has([type="password"]) input,.login-form label:has([data-show-password]) input{padding-right:78px}
.password-reveal{position:absolute;right:9px;bottom:7px;border:0;background:#f0e8df;color:#6d4c35;font-size:11px;font-weight:750;padding:7px 10px;border-radius:8px;cursor:pointer}
@media(max-width:850px){.privacy-control span{display:none}.topbar-actions{gap:5px}.language-picker{padding:0 5px}}

.login-troubleshoot{margin-top:18px;padding:13px 15px;border:1px solid #ded7ca;border-radius:12px;background:#faf8f3;color:#5a534a;font-size:13px;line-height:1.5}.login-troubleshoot p{margin:7px 0 0}.login-troubleshoot strong{color:#292521}#login-origin-info{overflow-wrap:anywhere;font-weight:600}

/* Password-change dialog */
#change-password-form .password-field{position:relative;display:flex;align-items:center}#change-password-form .password-field .input{padding-right:88px;width:100%}#change-password-form .password-reveal{position:absolute;right:10px;top:50%;transform:translateY(-50%);border:0;background:transparent;cursor:pointer;color:#775332;font-weight:600}#change-password-form .field{display:block;margin-bottom:12px}#change-password-form .field .password-field{margin-top:7px}

/* CRM 4.4 calendar and forecasts */
.forecast-band{display:flex;align-items:center;gap:20px;justify-content:space-between;background:#f4f8f5;border:1px solid #dbe9de;border-radius:14px;padding:18px 22px;margin:0 0 20px;flex-wrap:wrap}.forecast-band strong{color:#224b3b;font-size:14px}.forecast-band p{font-size:12px;color:#718983;margin:6px 0 0}.forecast-value{font-size:26px;font-weight:800;color:#224e3a}.forecast-value small{display:block;font-size:11px;font-weight:500;color:#79928b}.calendar-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:18px;margin:20px 0}.cal-toolbar{align-items:center}.cal-toolbar h2{text-transform:capitalize}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;padding:16px}.cal-weekday{text-align:center;font-size:11px;color:#77918c;font-weight:700;padding:10px 0}.cal-empty{min-height:72px}.cal-day{min-width:0;min-height:80px;border:1px solid #dfe9e2;background:white;border-radius:10px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:10px;color:#29493d;cursor:pointer}.cal-day strong{font-size:14px}.cal-day span{font-size:10px;color:#73918a}.cal-day:hover{border-color:#75a98c;background:#f4faf6}.cal-day.selected{border:2px solid #387b59;background:#eaf5ee}.cal-day.cal-disabled{opacity:.48;cursor:not-allowed;background:#f1f2f1}.appointment-row{display:flex;justify-content:space-between;gap:8px;padding:14px 0;border-bottom:1px solid #e8eeeb}.appointment-row p{font-size:12px;margin:6px 0;color:#6e8380}.appointment-row small{font-size:10px;color:#879b96}.cal-day-list{margin-bottom:18px}.slot-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:14px 0 22px}@media(max-width:850px){.calendar-layout{grid-template-columns:1fr}.cal-day{min-height:65px}}@media(max-width:500px){.cal-grid{gap:3px;padding:9px}.cal-day{min-height:59px;padding:5px}.cal-day strong{font-size:12px}.cal-day span{font-size:8px}.cal-empty{min-height:59px}.forecast-value{font-size:23px}}

/* v4.5 usability */
.brand-row[data-nav]{cursor:pointer;border-radius:12px}.brand-row[data-nav]:hover{background:rgba(255,255,255,.08)}
.project-number{display:inline-flex;font-size:.78em;font-weight:800;color:#a77852;background:rgba(185,133,85,.12);padding:2px 7px;border-radius:6px;white-space:nowrap}
.address-map{display:inline-flex;align-items:center;gap:4px;color:#9b643c;text-decoration:underline;text-underline-offset:2px}.address-map:hover{color:#62391c}
.metric-link{display:block;border:0;background:transparent;padding:0;text-align:left;cursor:pointer;color:inherit;width:100%;font:inherit}.metric-link>*{height:100%}.metric-link:hover{filter:brightness(.97);transform:translateY(-1px)}
.badge{display:inline-flex;align-items:center;gap:5px}

.materials-checklist{list-style:none;padding:0;margin:10px 0 16px}.materials-checklist li{padding:7px 2px;border-bottom:1px solid var(--border,#ddd)}.materials-checklist label{display:flex;align-items:center;gap:8px}.materials-checklist input{accent-color:#a87951}.materials-checklist small{color:#777}.detail-grid h3{margin:14px 0 6px}.inline-note{margin:7px 0}.inline-note small{display:block;color:#777}
/* v4.7: compact dashboard and grouped project navigation */
.grid-stats{gap:11px}.grid-stats .metric{padding:14px 15px;min-height:108px}.grid-stats .metric-head{margin-bottom:6px}.grid-stats .metric-icon{height:30px;width:30px}.grid-stats .metric-value{font-size:clamp(19px,2vw,25px)}.grid-stats .metric-foot{font-size:10px;line-height:1.35}.grid-stats .metric-label{font-size:11px}
.detail-nav-groups{display:grid;grid-template-columns:1.15fr 1fr .65fr;gap:13px;margin:19px 0 24px}.detail-nav-group{background:#fff;border:1px solid #e8e7e1;border-radius:14px;padding:12px;min-width:0}.detail-nav-caption{display:block;text-transform:uppercase;letter-spacing:1.2px;color:#a58e78;font-size:10px;font-weight:800;margin:0 0 9px 5px}.detail-nav-items{display:flex;flex-wrap:wrap;gap:7px}.detail-nav-btn{background:#f7f7f4;border:1px solid transparent;border-radius:9px;padding:10px 12px;color:#616e68;font-weight:720;font-size:12px;cursor:pointer;white-space:nowrap}.detail-nav-btn:hover{background:#f0eae2}.detail-nav-btn.active{background:#2a2a28;color:#fff;border-color:#2a2a28}.tab-count{font-size:10px;opacity:.7;margin-left:4px}
.scope-panel{margin-top:18px}.scope-services{display:grid;gap:8px;margin-bottom:16px}.scope-service{border:1px solid #e7e7e2;border-radius:11px;overflow:hidden}.scope-service-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px;background:#f8f8f5;font-size:12px}.scope-service-head>span{font-weight:800;white-space:nowrap}.scope-service details{padding:10px 13px;font-size:12px}.scope-service summary{cursor:pointer;color:#9d6c4b;font-weight:750}.scope-steps{white-space:pre-wrap;line-height:1.6;margin-top:10px}.material-columns{margin-top:18px}.material-columns>div{background:#fafaf7;border:1px solid #ecebe4;border-radius:11px;padding:16px}.material-columns h3{margin:0 0 11px}.suggestion-box{background:#fffaf1;border:1px solid #efdfc4;padding:15px;border-radius:10px;font-size:12px;line-height:1.65;margin:16px 0}.suggestion-box p{color:#786d61}.scope-actions{margin:16px 0}.invoice-overdue{background:#fff0eb;color:#b35c40}.invoice-due{background:#fff8df;color:#936b16}.invoice-paid{background:#eaf6ed;color:#28704c}.invoice-void{background:#f1f1f1;color:#666}.invoice-draft{background:#f1f3f7;color:#626c86}
@media(max-width:1100px){.detail-nav-groups{grid-template-columns:1fr 1fr}.detail-nav-group:last-child{grid-column:1/-1}}@media(max-width:650px){.detail-nav-groups{grid-template-columns:1fr;gap:8px}.detail-nav-group:last-child{grid-column:auto}.detail-nav-btn{padding:9px 10px}.grid-stats .metric{min-height:103px;padding:12px}.grid-stats .metric-value{font-size:20px}.scope-service-head{align-items:flex-start}}

/* V4.9.1 security settings preview */
.security-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.security-row{background:#f7faf8;border:1px solid #e2ece7;border-radius:12px;padding:16px}.security-row strong{display:block;color:#203e41;font-size:13px}.security-row p{font-size:12px;line-height:1.6;color:#63797a;margin:9px 0 12px}.security-permissions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:17px 0}.security-permissions>div{border:1px solid #e3ebe6;border-radius:10px;padding:12px}.security-permissions strong{display:block;font-size:12px}.security-permissions small{display:block;color:#829494;margin-top:6px}.security-example{border-left:4px solid #80ad97;background:#f3f7f5;padding:15px;border-radius:8px;font-size:12px;color:#365b53;margin:15px 0}@media(max-width:680px){.security-status-grid,.security-permissions{grid-template-columns:1fr}}

/* V4.9.2 banking */
.bank-category-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;padding:16px}.bank-category-card{display:flex;flex-direction:column;gap:8px;padding:14px;border:1px solid var(--border,#ddd);border-radius:12px}.bank-category-card span{font-size:.8rem;opacity:.7}.bank-category-card b{font-size:1.2rem}
/* v4.9.3: client detail and attendance calendar */
.client-name-button{padding:0;text-align:left;font-size:inherit;font-weight:700}
.cal-day.cal-has-appointments{border-color:#bd8d5e;background:rgba(188,141,94,.13)}
.cal-day.cal-has-appointments span{font-weight:700;color:#77512d}
.timesheet-week{padding:18px;border-bottom:1px solid var(--line,#ddd)}
.timesheet-week h3{margin:0 0 6px;font-size:1rem}
.timesheet-week p{margin:0 0 12px}

/* V4.9.3.2 */
.app-back-button{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.topbar-actions{gap:8px}@media(max-width:850px){.app-back-button{min-height:36px;padding:8px}.app-back-button span{display:none}}

/* V4.9.3.3 weekly timesheets */
.timesheet-selected{outline:2px solid #c29463;outline-offset:-2px}.timesheet-week{padding:16px;border-bottom:1px solid #e5e5e5}.toolbar{flex-wrap:wrap}.toolbar .actions{flex-wrap:wrap}.data-table tfoot td{background:rgba(170,140,100,.10)}

/* Supabase owner authentication gate (v4.9.3.9) */
.auth-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;background:#171d1b;color:#f3f5f3}
.auth-card{width:min(100%,440px);padding:36px;border:1px solid #43504a;border-radius:18px;background:#222b27;box-shadow:0 22px 60px #0005;display:flex;flex-direction:column;gap:15px}
.auth-logo{width:76px;height:76px;object-fit:contain;align-self:center}.auth-card h1{text-align:center;font-size:25px;margin:0}.auth-card p{text-align:center;margin:0;color:#d4dcd6}
.auth-card form{display:flex;flex-direction:column;gap:12px}.auth-card label{font-weight:600}.auth-card input{width:100%;padding:13px;border:1px solid #89998e;border-radius:9px;background:white;color:#1b211d;font-size:16px}.auth-card button{justify-content:center;min-height:44px}.auth-card small{color:#c7d0c8;line-height:1.45}.auth-card .auth-message{min-height:1.5em;color:#ccefc9}.auth-signout{margin:8px 15px 16px;width:calc(100% - 30px);justify-content:center}

/* Keep owner login centered independently of the CRM layout */
#app:has(.auth-screen){display:block;width:100%;min-height:100dvh;max-width:none;margin:0;padding:0;}
#app .auth-screen{position:fixed;inset:0;min-height:100dvh;width:100%;display:flex;align-items:center;justify-content:center;overflow:auto;padding:24px;z-index:9999;}
#app .auth-card{margin:auto;flex:0 1 440px;box-sizing:border-box;}

.auth-card .auth-link{background:none;border:0;color:#d6f1df;text-decoration:underline;cursor:pointer;min-height:35px;font-size:14px;}
.auth-card .auth-link:disabled{opacity:.6;cursor:wait;}

/* Native browser dialogs replaced by branded in-app dialogs. */
.app-confirm-modal{width:min(100%,470px)}.app-dialog-message{font-size:14px;line-height:1.6;white-space:pre-wrap;color:#344b51;margin:0 0 14px}.app-dialog-label{display:block;font-size:12px;font-weight:700;margin-bottom:7px}.app-dialog-input{width:100%;padding:12px;border:1px solid #a7b9b3;border-radius:9px;background:#fff}.app-dialog-error{color:#a33f3f!important}.btn-danger{background:#b33f43;color:#fff;border:1px solid #a42f36}.btn-danger:hover{background:#982b31}.account-summary{display:grid;gap:6px;padding:12px;border:1px solid #e1ebe5;border-radius:10px;background:#f8faf9;margin:10px 0}.account-summary span{font-size:12px;overflow-wrap:anywhere}.account-summary small{color:#607c78}

#theme-toggle{position:fixed;bottom:84px;right:15px;z-index:10000;background:#242a2b;color:white;border:1px solid #88908b;border-radius:30px;padding:9px 13px;box-shadow:0 3px 16px #0003;cursor:pointer}#theme-toggle:hover,.btn:hover,.project-card:hover,.project-row:hover{filter:brightness(1.12);transition:filter .16s ease,transform .16s ease}#theme-toggle:hover{transform:translateY(-2px)}html[data-theme="light"] body{filter:none;background:#f5f6f8}html[data-theme="light"]{color-scheme:light}html[data-theme="dark"]{color-scheme:dark}html[data-theme="dark"] body{background:#171b1d}html[data-theme="dark"] #app{filter:brightness(.85)}

/* Team user permission matrix */
.permission-grid{display:grid;grid-template-columns:minmax(145px,2fr) repeat(4,minmax(75px,1fr));gap:1px;background:var(--border,#d4d4d4);border:1px solid #d4d4d4;border-radius:10px;overflow:auto;margin:16px 0}.permission-grid>div,.permission-grid>label{background:var(--surface,#fff);padding:12px 7px;text-align:center;min-width:0}.permission-grid>div:nth-child(5n + 6){text-align:left;font-weight:600}.permission-grid .permission-header{font-size:12px;font-weight:700;background:var(--surface-alt,#edf1ec)}.permission-choice{display:flex;justify-content:center;align-items:center}.permission-choice input{width:18px;height:18px;accent-color:#24734e}.user-row{display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid #ddd;padding:13px 0}.user-row small{display:block;margin-top:4px}.user-row button{margin:3px}@media(max-width:650px){.permission-grid{font-size:11px;grid-template-columns:minmax(110px,2fr) repeat(4,minmax(60px,1fr))}.permission-grid>div,.permission-grid>label{padding:9px 3px}.user-row{flex-direction:column;align-items:flex-start}}

/* v4.9.5.4 usability and theme */
#theme-toggle{position:fixed!important;top:13px!important;right:18px!important;bottom:auto!important;z-index:65!important;min-height:38px!important;background:#263f39;color:#fff;opacity:1!important;visibility:visible!important}
#theme-toggle[hidden]{display:none!important}
.btn,.icon-btn,.file-actions button,.user-row button,.actions button{opacity:1!important;visibility:visible!important}
.btn:hover,.icon-btn:hover,.user-row:hover,.file-card:hover,.client-card:hover{box-shadow:0 0 0 2px rgba(53,138,100,.16);filter:brightness(1.07)}
.crm-document-modal{width:min(95vw,1100px);max-height:95vh}.crm-document-body{display:grid;place-items:center;min-height:50vh;background:#f2f5f3}.crm-document-body iframe{min-height:65vh}
html[data-theme="dark"] body{background:#131b1a!important;color:#e4eee9!important}html[data-theme="dark"] #app{filter:none!important}
html[data-theme="dark"] .workspace,html[data-theme="dark"] .page{background:#18221f!important}
html[data-theme="dark"] .panel,html[data-theme="dark"] .settings-card,html[data-theme="dark"] .client-card,html[data-theme="dark"] .project-card,html[data-theme="dark"] .metric,html[data-theme="dark"] .topbar,html[data-theme="dark"] .modal,html[data-theme="dark"] .user-row{background:#24302c!important;color:#e6f0ec!important;border-color:#42554d!important}
html[data-theme="dark"] .panel h2,html[data-theme="dark"] .settings-card h3,html[data-theme="dark"] .metric-value,html[data-theme="dark"] .page-head h1,html[data-theme="dark"] .project-card h3,html[data-theme="dark"] .client-card strong{color:#f4f7f5!important}
html[data-theme="dark"] .data-table td,html[data-theme="dark"] .data-table th,html[data-theme="dark"] .input,html[data-theme="dark"] .select,html[data-theme="dark"] .textarea{background:#2d3934!important;color:#f1f5f2!important;border-color:#52665a!important}
@media(max-width:850px){#theme-toggle{right:12px!important;top:14px!important;padding:8px 10px!important;font-size:11px!important}}

/* v4.9.6.3: theme control belongs to dashboard content, never floats over other pages */
#theme-toggle,#theme-toggle[hidden]{position:static!important;inset:auto!important;z-index:auto!important;box-shadow:none!important;}
#theme-toggle[hidden]{display:none!important;}
#theme-toggle:not([hidden]){display:inline-flex!important;align-items:center;gap:6px;min-height:38px!important;margin:0 0 16px auto!important;max-width:max-content!important;}
#page-content:has(#theme-toggle){display:block;}

/* V4.9.6.4 — coherent graphite/copper dark palette. Do not dim the entire app. */
html[data-theme="dark"]{color-scheme:dark;--ink:#edf0ed;--graphite:#131817;--bronze:#d4a47e;--bronze-dark:#e2b68f;--bronze-soft:#332b25;--cream:#151a19;--line:#39413d;--muted:#a6b1a9;--green:#7fcca2;background:#151a19;color:#edf0ed}
html[data-theme="dark"] body,html[data-theme="dark"] .workspace,html[data-theme="dark"] .page{background:#151a19!important;color:#e6ebe7!important}
html[data-theme="dark"] #app{filter:none!important}
html[data-theme="dark"] .sidebar{background:#101514;border-right:1px solid #313a34}
html[data-theme="dark"] .topbar,html[data-theme="dark"] .panel,html[data-theme="dark"] .metric,html[data-theme="dark"] .settings-card,html[data-theme="dark"] .project-card,html[data-theme="dark"] .client-card,html[data-theme="dark"] .modal,html[data-theme="dark"] .user-row,html[data-theme="dark"] .file-card{background:#202724!important;color:#e6ebe7!important;border-color:#39443d!important;box-shadow:0 6px 22px #05090724}
html[data-theme="dark"] .panel-head,html[data-theme="dark"] .modal-head,html[data-theme="dark"] .modal-footer,html[data-theme="dark"] .project-row,html[data-theme="dark"] .card-divider{border-color:#38433b!important}
html[data-theme="dark"] .page-head h1,html[data-theme="dark"] .detail-title,html[data-theme="dark"] .panel h2,html[data-theme="dark"] .settings-card h3,html[data-theme="dark"] .metric-value,html[data-theme="dark"] .project-card h3,html[data-theme="dark"] .client-card strong,html[data-theme="dark"] .topbar-title,html[data-theme="dark"] .topbar-section,html[data-theme="dark"] .project-description strong,html[data-theme="dark"] .project-end>small,html[data-theme="dark"] .modal-head h2{color:#f4f5f1!important}
html[data-theme="dark"] .subtitle,html[data-theme="dark"] .muted,html[data-theme="dark"] .metric-foot,html[data-theme="dark"] .metric-label,html[data-theme="dark"] .project-description small,html[data-theme="dark"] .panel-head p,html[data-theme="dark"] .settings-card p,html[data-theme="dark"] .field-hint,html[data-theme="dark"] .today,html[data-theme="dark"] .topbar-crumb{color:#aab7ae!important}
html[data-theme="dark"] .input,html[data-theme="dark"] .select,html[data-theme="dark"] .textarea,html[data-theme="dark"] input:not([type=checkbox]):not([type=radio]),html[data-theme="dark"] select,html[data-theme="dark"] textarea,html[data-theme="dark"] .search-box,html[data-theme="dark"] .file-input{background:#28322c!important;color:#f1f4ef!important;border-color:#526155!important}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder{color:#a4afa7!important;opacity:1}
html[data-theme="dark"] .data-table th{background:#28322c!important;color:#e1e9e2!important;border-color:#455048!important}
html[data-theme="dark"] .data-table td{background:#202724!important;color:#e6ebe7!important;border-color:#38433b!important}
html[data-theme="dark"] .data-table tr:hover td,html[data-theme="dark"] .project-row:hover{background:#2a342e!important}
html[data-theme="dark"] .btn-primary{background:#ba8863!important;border-color:#ba8863!important;color:#151915!important}
html[data-theme="dark"] .btn-primary:hover{background:#d5a47c!important}
html[data-theme="dark"] .btn-secondary,html[data-theme="dark"] .icon-btn,html[data-theme="dark"] .btn-soft{background:#303b33!important;border-color:#516153!important;color:#f0eee6!important}
html[data-theme="dark"] .btn-danger{background:#462e30!important;border-color:#785055!important;color:#ffd9d8!important}
html[data-theme="dark"] .profit-chip{background:#244535!important;color:#b6e9c6!important}
html[data-theme="dark"] .profit-chip.loss{background:#512e2e!important;color:#ffd1c7!important}
html[data-theme="dark"] .form-banner,html[data-theme="dark"] .metric-icon,html[data-theme="dark"] .project-initial{background:#37342e!important;color:#e7b58a!important}
html[data-theme="dark"] .modal-backdrop{background:#030807b9!important}
html[data-theme="dark"] .crm-document-body{background:#141a17!important}
html[data-theme="dark"] .bottom-nav{background:#1c2520!important;border-color:#425047!important}
html[data-theme="dark"] .bottom-nav button{color:#b2bdb3!important}
html[data-theme="dark"] .bottom-nav button.active{color:#edb88b!important}
html[data-theme="dark"] a.address-map{color:#e5b18a!important}
html[data-theme="dark"] #theme-toggle:not([hidden]){background:#303b33!important;border:1px solid #526153!important;color:#f2f2ec!important}
.crm-document-body iframe{width:100%;min-height:65vh;background:white;border:0}
@media(max-width:640px){.crm-document-modal .modal-footer{flex-wrap:wrap}.crm-document-modal .modal-footer .btn{flex:1;white-space:normal}.crm-document-body iframe{min-height:60vh}}

/* V4.9.6.5: multimedia and field notes */
.crm-document-modal{width:min(96vw,1100px);max-width:1100px}.crm-document-body{min-height:180px;max-height:75vh;overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:12px}.crm-preview-image{display:block;max-width:100%;max-height:67vh;object-fit:contain;border-radius:8px}.crm-preview-pdf{width:100%;height:min(65vh,740px);min-height:340px;border:0;background:#fff;border-radius:6px}.keep-notes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:14px;align-items:start}.keep-note{border:1px solid var(--border,#c9c9c9);border-radius:14px;padding:16px;background:var(--card,#fff);box-shadow:0 2px 8px #0000000a;min-width:0}.keep-sage{border-top:4px solid #6c9781}.keep-sand{border-top:4px solid #d3a867}.keep-blue{border-top:4px solid #709cc7}.keep-rose{border-top:4px solid #c88896}.keep-neutral{border-top:4px solid #8c9694}.keep-note-top{display:flex;justify-content:space-between;gap:8px;align-items:start}.keep-note-top h3{font-size:16px;margin:0 0 12px;overflow-wrap:anywhere}.keep-note-date{font-size:11px;opacity:.7;white-space:nowrap}.keep-note-body{line-height:1.5;overflow-wrap:anywhere;max-height:380px;overflow:auto}.keep-note-body ul,.keep-note-body ol,.keep-editor ul,.keep-editor ol{padding-left:24px}.keep-note-body h3,.keep-editor h3{font-size:17px;margin:8px 0}.keep-note .note-foot{margin-top:14px;border-top:1px solid var(--border,#ddd);padding-top:10px}.keep-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.keep-toolbar button{background:var(--surface,#eee);color:inherit;border:1px solid var(--border,#bbb);border-radius:8px;min-width:38px;min-height:38px;padding:7px 10px;cursor:pointer}.keep-toolbar button:focus-visible{outline:2px solid currentColor}.keep-editor{min-height:190px;max-height:48vh;overflow:auto;border:1px solid var(--border,#aaa);border-radius:10px;padding:14px;line-height:1.6;background:var(--card,#fff);color:inherit;outline-offset:2px}.keep-editor:empty:before{content:attr(data-placeholder);opacity:.55;pointer-events:none}@media(max-width:550px){.crm-preview-pdf{min-height:320px}.crm-document-modal{width:98vw}.keep-notes-grid{grid-template-columns:1fr}}

/* v4.9.6.6 dashboard and note/estimate UI */
#theme-toggle{position:static!important;display:inline-flex!important;align-items:center!important;margin:0 0 16px auto!important;z-index:auto!important;visibility:visible!important;opacity:1!important}
.keep-open{display:block;text-align:left;width:100%;border:0;background:transparent;color:inherit;cursor:pointer;padding:0;font:inherit}.keep-open:focus-visible{outline:2px solid #a47c52;outline-offset:3px}.keep-viewer{width:min(740px,96vw)}.keep-viewer-content{font-size:1.03rem;line-height:1.65;overflow-wrap:anywhere;min-height:120px}.keep-viewer-content ul,.keep-viewer-content ol{padding-left:25px}.crm-preview-video{display:block;max-width:100%;max-height:70vh;margin:auto}.estimate-lines{display:grid;gap:12px;margin:12px 0}.estimate-line{padding:16px;border:1px solid var(--border,#52615a);border-radius:12px;display:grid;gap:12px}.estimate-line label{display:grid;gap:6px}.estimate-line-top,.estimate-summary{display:flex;justify-content:space-between;gap:12px;align-items:center}.estimate-summary{padding:12px 0;border-top:1px solid #8885}.estimate-line textarea{min-height:75px}
html[data-theme="dark"] .keep-viewer,html[data-theme="dark"] .estimate-line,html[data-theme="dark"] .estimate-summary{color:#eef1ec;background:#232c2b;border-color:#475550}html[data-theme="dark"] #page-content .panel,html[data-theme="dark"] #page-content .panel-body,html[data-theme="dark"] #page-content .memo,html[data-theme="dark"] #page-content .data-table td,html[data-theme="dark"] #page-content .data-table th{background-color:#242b2c;color:#e8ece9;border-color:#485253}html[data-theme="dark"] #page-content .data-table thead th{background-color:#303b3b}html[data-theme="dark"] #page-content .callout,html[data-theme="dark"] #page-content .forecast-band{background-color:#2b3532;color:#e8ece9}

/* V4.9.6.7: compact previews keep long field notes from overwhelming the DOM. */
.keep-note-body{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6;overflow:hidden;overflow-wrap:anywhere;white-space:normal;max-height:11em}
.keep-editor{min-height:240px;max-height:60vh;overflow-y:auto;overflow-wrap:anywhere;contain:layout style}
.keep-viewer-content{max-height:70vh;overflow-y:auto}

/* V4.9.6.8: consistent note spacing and top-aligned reopening. */
.keep-editor,.keep-viewer-content{white-space:normal;overflow-anchor:none;scroll-behavior:auto}
.keep-editor>div,.keep-editor>p,.keep-viewer-content>div,.keep-viewer-content>p{margin:0 0 .35em;min-height:1.3em}
.keep-editor>div:last-child,.keep-editor>p:last-child,.keep-viewer-content>div:last-child,.keep-viewer-content>p:last-child{margin-bottom:0}
.keep-editor:focus{scroll-margin-top:0}

/* V4.9.6.9: note spacing correction. Do not force extra height or margins on every editor block. */
.keep-editor,.keep-viewer-content{line-height:1.45;white-space:normal}
.keep-editor>div,.keep-editor>p,.keep-viewer-content>div,.keep-viewer-content>p{margin:0;min-height:0}
.keep-editor>h2,.keep-editor>h3,.keep-viewer-content>h2,.keep-viewer-content>h3{margin:.5em 0 .2em;line-height:1.25}
.keep-editor>ul,.keep-editor>ol,.keep-viewer-content>ul,.keep-viewer-content>ol{margin:.3em 0;padding-left:1.5em}
