:root{--ink:#183127;--pine:#12372a;--mint:#e3f0e5;--cream:#f8f8f5;--orange:#e77655;--line:#dce3dc;--muted:#6d7c74;--white:#fff}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:15px/1.5 'DM Sans',sans-serif}a{text-decoration:none;color:inherit}h1,h2,h3,p{margin-top:0}h1,h2{letter-spacing:-.045em;line-height:1.1}h1{font-size:clamp(2rem,3.5vw,3rem)}h2{font-size:1.25rem}.brand{font-size:1.25rem;font-weight:700;letter-spacing:-.05em}.brand span{color:var(--orange)}.sidebar{position:fixed;inset:0 auto 0 0;width:240px;padding:28px 17px;background:#112f24;color:#e9f2ea;display:flex;flex-direction:column;z-index:3}.workspace{color:#9eb4a7;font-size:.78rem;margin:8px 9px 30px}.side-nav{display:grid;gap:4px}.side-nav a{padding:11px 12px;border-radius:5px;color:#b9c9be;font-weight:500}.side-nav a:hover,.side-nav a.active{background:#214637;color:white}.side-bottom{margin-top:auto}.new-button{display:block;text-align:center;background:var(--orange);color:white;padding:11px;border-radius:4px;font-weight:600}.account{margin-top:18px;border-top:1px solid #315345;padding:17px 5px 0;display:flex;align-items:center;gap:9px}.avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#d4eadb;color:#226044;font-weight:700;flex:0 0 auto}.avatar.pale{background:#e7f2e9}.account div{display:grid;line-height:1.2;flex:1}.account small{color:#9eb4a7;font-size:.72rem}.account button{border:0;background:transparent;color:#c9dbcd;font-size:1.2rem;cursor:pointer}.app-main{margin-left:240px;min-height:100vh;padding:45px min(5vw,70px)}.mobile-header{display:none}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:32px}.topbar h1{margin-bottom:6px}.eyebrow{font:500 .7rem 'DM Mono',monospace;letter-spacing:.11em;text-transform:uppercase;color:#54836c;margin-bottom:10px}.subtle,.hint{color:var(--muted);margin-bottom:0}.top-actions{display:flex;gap:9px}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--pine);border-radius:4px;padding:10px 15px;background:var(--pine);color:white;font:600 .87rem 'DM Sans';cursor:pointer}.button:hover{background:#21543f}.button.secondary{background:white;color:var(--pine)}.button.full{width:100%}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:29px}.metrics article,.panel,.content-panel,.form-card{background:white;border:1px solid var(--line);border-radius:5px}.metrics article{padding:19px}.metrics span,.metrics small{display:block;color:var(--muted);font-size:.78rem}.metrics b{display:block;font-size:1.85rem;letter-spacing:-.05em;margin:9px 0 3px}.two-column{display:grid;grid-template-columns:1.35fr 1fr;gap:18px}.panel{padding:23px}.panel-title{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:17px}.panel-title h2{margin:0}.panel-title>a,.row-actions button{font-size:.82rem;font-weight:600;color:#316f53}.schedule{display:grid}.schedule-row{display:grid;grid-template-columns:48px 4px 1fr auto;gap:12px;align-items:center;padding:13px 0;border-top:1px solid #ecf0eb}.schedule-row time,.schedule-row em{font:500 .78rem 'DM Mono';font-style:normal;color:var(--muted)}.schedule-row i{height:34px;border-radius:2px}.schedule-row b,.schedule-row span,.request-mini b,.request-mini small{display:block}.schedule-row span,.request-mini small{font-size:.78rem;color:var(--muted)}.request-mini{display:grid;gap:5px}.request-mini a{display:grid;grid-template-columns:33px 1fr 15px;align-items:center;gap:10px;padding:11px 0;border-top:1px solid #ecf0eb}.request-icon{display:grid;place-items:center;width:29px;height:29px;background:#fff0ea;color:#bd5c41;border-radius:4px}.content-panel{overflow:hidden}.search-line{padding:15px;border-bottom:1px solid var(--line);display:flex;gap:8px}.search-line input{flex:1}.search-line button,.row-actions button{border:0;background:none;cursor:pointer}.data-list>a,.quote-list>a,.job-list>a{display:grid;align-items:center;gap:18px;padding:17px 21px;border-bottom:1px solid #edf0ed}.data-list>a:last-child,.quote-list>a:last-child,.job-list>a:last-child{border:0}.client-list>a{grid-template-columns:34px 1.5fr 1fr 80px 15px}.data-list b,.data-list small,.quote-list b,.quote-list small,.job-list h2,.job-list small{display:block}.data-list small,.quote-list small,.job-list small{color:var(--muted);font-size:.8rem}.back{display:block;color:#537b67;font-weight:600;font-size:.83rem;margin-bottom:12px}.form-card{max-width:780px;padding:27px}.form-card label{display:block;font-size:.82rem;font-weight:600;margin:14px 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}input,select,textarea{display:block;width:100%;border:1px solid #cdd8cf;border-radius:4px;background:white;padding:10px;font:inherit;color:var(--ink);margin-top:5px}input:focus,select:focus,textarea:focus{outline:2px solid #90c1a0}.form-actions{display:flex;justify-content:flex-end;align-items:center;gap:23px;margin-top:25px}.form-actions>a{color:var(--muted);font-weight:600;font-size:.86rem}.client-detail dl,.job-detail dl{display:grid;grid-template-columns:100px 1fr;gap:12px;margin:0}.client-detail dt,.job-detail dt{color:var(--muted);font-size:.83rem}.client-detail dd,.job-detail dd{margin:0}.simple-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:13px 0}.simple-row b,.simple-row small{display:block}.simple-row small{color:var(--muted);font-size:.78rem}.status{display:inline-block;padding:4px 7px;border-radius:3px;background:#eef1ed;color:#557060;font:500 .67rem 'DM Mono';text-transform:capitalize;white-space:nowrap}.status.new,.status.sent{background:#fff2cf;color:#82651b}.status.approved,.status.scheduled,.status.paid,.status.completed{background:#ddf0e3;color:#277249}.status.in_progress{background:#e5e3fa;color:#524a9d}.status.closed,.status.declined{background:#f4e5df;color:#a34b37}.status.large{font-size:.74rem;padding:7px 10px}.request-table article{display:grid;grid-template-columns:80px 1fr auto;gap:17px;padding:21px;border-bottom:1px solid var(--line)}.request-info h2{margin-bottom:7px}.request-info p{color:#506259;margin-bottom:8px}.request-info small{color:var(--muted)}.row-actions{display:flex;align-items:center;gap:13px}.quote-list>a{grid-template-columns:1fr 90px 110px 15px}.quote-list h2,.job-list h2{font-size:1rem;margin:4px 0}.line-items{margin-top:26px}.line-head,.line{display:grid;grid-template-columns:1fr 85px 160px;gap:9px;align-items:center}.line-head{font-size:.78rem;color:var(--muted);padding:0 0 6px}.line input{margin:0}.document-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px}.document{padding:33px}.doc-head{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:25px}.doc-head p,.bill-to span{color:var(--muted);font-size:.82rem;margin:3px 0}.doc-head>div:last-child{text-align:right}.bill-to{display:grid;margin:28px 0}.bill-to small{font:500 .68rem 'DM Mono';color:var(--muted);letter-spacing:.08em}.document table{width:100%;border-collapse:collapse}.document th{text-align:left;color:var(--muted);font-size:.76rem;font-weight:500;border-bottom:1px solid var(--line);padding:9px 0}.document td{padding:14px 0;border-bottom:1px solid #edf0ed}.document th:last-child,.document td:last-child{text-align:right}.totals{margin-left:auto;width:min(290px,100%);display:grid;gap:8px;margin-top:20px}.totals span,.totals strong{display:flex;justify-content:space-between}.totals strong{border-top:1px solid var(--line);padding-top:10px;font-size:1.08rem}.doc-notes{margin-top:35px;padding:17px;background:#f4f8f3;color:#506259}.action-panel h2{margin-bottom:8px}.action-panel>p,.action-panel form>p{color:var(--muted);font-size:.9rem}.action-panel hr{border:0;border-top:1px solid var(--line);margin:22px 0}.job-list>a{grid-template-columns:160px 1fr 100px 110px 15px}.job-list time{font:500 .77rem 'DM Mono';color:#537362}.flash{position:fixed;top:18px;right:20px;z-index:10;padding:12px 17px;background:#daf0e1;color:#21603b;box-shadow:0 8px 22px #0002}.flash-error{background:#f6e2dc;color:#923e2c}
.login{min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr}.login-art{background:var(--mint);padding:55px max(8vw,55px);display:flex;flex-direction:column}.login-art h1{font:600 clamp(2.8rem,5vw,5rem)/1.02 'Playfair Display';max-width:650px;margin:80px 0 20px}.login-art>p:not(.eyebrow){max-width:440px;color:#506a5c;font-size:1.08rem}.login-stat{margin-top:auto;background:#173b2d;color:#e7f1e8;padding:18px;max-width:370px;display:grid;grid-template-columns:1fr 1fr;gap:5px}.login-stat b{grid-column:1/-1}.login-stat span{color:#b6d0bd;font-size:.8rem}.login-form{display:flex;flex-direction:column;justify-content:center;padding:50px min(10vw,90px);background:#fff}.login-form h2{font-size:2rem;margin-bottom:10px}.login-form form{margin-top:25px}.login-form .hint{text-align:center;margin-top:18px;font-size:.8rem}.portal-body{background:#f6f8f4}.portal-header{height:68px;max-width:1100px;margin:auto;padding:0 25px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.portal-header>span{color:var(--muted);font-size:.82rem}.portal-main{max-width:1000px;margin:auto;padding:0 25px 70px}.portal-hero{padding:65px 0 38px;display:flex;justify-content:space-between;align-items:flex-end}.portal-hero h1{font-size:3.1rem;margin-bottom:10px}.portal-hero>div>p:last-child{color:var(--muted)}.portal-contact{display:grid;padding:15px 19px;background:#e4f1e6;border-radius:4px;font-size:.85rem}.portal-contact span{color:#4a6b59}.portal-grid{display:grid;gap:18px}.portal-card,.portal-section{background:#fff;border:1px solid var(--line);border-radius:5px}.request-card{padding:24px;display:grid;grid-template-columns:1fr 1fr;gap:25px;background:#183a2d;color:white;border:0}.request-card .eyebrow{color:#9ecdb0}.request-card h2{font-size:1.8rem}.request-card p:not(.eyebrow){color:#bdd2c3}.request-card input,.request-card textarea{border:0;margin:0 0 8px}.portal-title{padding:19px 22px;border-bottom:1px solid var(--line)}.portal-title h2{margin:0;font-size:1.13rem}.portal-row{display:flex;gap:17px;align-items:center;padding:17px 22px;border-bottom:1px solid #edf0ed}.portal-row:last-child{border:0}.portal-row>div{flex:1}.portal-row b,.portal-row span{display:block}.portal-row span{color:var(--muted);font-size:.8rem}.portal-row strong{margin-left:auto}.empty-text{padding:15px 22px;color:var(--muted)}.error-page{padding:80px}.error-page h1{margin-bottom:25px}
@media(max-width:850px){.sidebar{width:190px}.app-main{margin-left:190px;padding:33px 28px}.metrics{grid-template-columns:repeat(2,1fr)}.two-column,.document-layout{grid-template-columns:1fr}.client-list>a{grid-template-columns:34px 1fr 80px 15px}.client-list>a>span:nth-of-type(2){display:none}.job-list>a{grid-template-columns:1fr 100px 15px}.job-list>a time{display:none}.job-list>a>b{display:none}}@media(max-width:620px){.sidebar{display:none}.mobile-header{height:63px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:#12372a;color:#fff}.mobile-header>a:last-child{font-size:1.6rem}.app-main{margin:0;padding:28px 15px}.topbar{align-items:flex-start;flex-direction:column;margin-bottom:24px}.top-actions{width:100%}.top-actions .button{flex:1}.metrics{grid-template-columns:1fr 1fr;gap:8px}.metrics article{padding:14px}.metrics b{font-size:1.45rem}.two-column{gap:12px}.panel{padding:17px}.schedule-row{grid-template-columns:39px 4px 1fr}.schedule-row em{display:none}.content-panel{border-radius:0;margin:0 -15px}.client-list>a{padding:14px 15px;grid-template-columns:34px 1fr 15px}.client-list>a>span:nth-of-type(1),.client-list>a>span:nth-of-type(2){display:none}.quote-list>a{padding:15px;grid-template-columns:1fr 80px 15px}.quote-list>a>b{display:none}.request-table article{grid-template-columns:1fr;padding:17px}.row-actions{justify-content:flex-end}.form-card{padding:17px}.form-grid,.line-head,.line{grid-template-columns:1fr}.line-head span{display:none}.line input{margin-bottom:7px}.document{padding:20px}.doc-head{gap:15px}.doc-head>div:last-child{font-size:.8rem}.login{grid-template-columns:1fr}.login-art{padding:32px 25px;min-height:42vh}.login-art h1{margin:46px 0 15px;font-size:2.7rem}.login-stat{display:none}.login-form{padding:40px 25px}.portal-header{padding:0 15px}.portal-main{padding:0 15px 45px}.portal-hero{padding:38px 0 28px;align-items:flex-start;flex-direction:column;gap:18px}.portal-hero h1{font-size:2.45rem}.request-card{grid-template-columns:1fr;padding:20px}.portal-row{padding:15px;align-items:flex-start;flex-wrap:wrap}.portal-row form{width:100%}.portal-row form .button{width:100%}}
.website-settings{max-width:780px}.website-settings label>small{display:block;margin-top:4px;color:var(--muted);font-weight:400}.website-publish{margin-top:25px!important}.website-services{max-width:780px;margin-top:42px}.website-services .panel-title{margin-bottom:15px}.service-manage-list{border:1px solid var(--line);border-radius:5px;background:white}.service-manage-list article{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 20px;border-bottom:1px solid var(--line)}.service-manage-list article:last-child{border:0}.service-manage-list b{display:block}.service-manage-list p{margin:3px 0 0;color:var(--muted);font-size:.85rem}.service-manage-list button{border:0;background:transparent;color:#a34b37;font:600 .82rem 'DM Sans';cursor:pointer}.add-service{margin-top:18px}.add-service h2{margin-bottom:4px}
.public-site-body{background:#fbfcf9}.public-site-header{position:relative;z-index:2;max-width:1180px;margin:auto;padding:23px 32px;display:flex;justify-content:space-between;align-items:center}.site-brand{font-size:1.2rem;font-weight:700;letter-spacing:-.045em}.site-brand span{color:var(--site-accent)}.public-site-header>a:last-child{font-size:.84rem;font-weight:700;color:var(--site-accent)}.public-site-main{min-height:100vh}.public-site{--site-accent:#12372a}.site-hero{padding:100px max(32px,calc((100vw - 1116px)/2));background:linear-gradient(115deg,#edf4ed 0%,#f8faf6 58%,#e6efe7 100%);min-height:490px}.site-hero .eyebrow,.site-services .eyebrow,.site-contact .eyebrow{color:var(--site-accent)}.site-hero h1{font-size:clamp(2.8rem,6vw,5.4rem);max-width:830px;margin:0 0 22px}.site-hero>p:not(.eyebrow){max-width:640px;white-space:pre-line;color:#4e6256;font-size:1.08rem;margin-bottom:30px}.site-button{display:inline-flex;justify-content:center;align-items:center;background:var(--site-accent);color:#fff;border:0;border-radius:4px;padding:12px 18px;font:700 .88rem 'DM Sans';cursor:pointer}.site-services,.site-contact{max-width:1116px;margin:auto;padding:88px 0}.site-services>div:first-child{max-width:450px}.site-services h2,.site-contact h2{font-size:2.2rem;margin-bottom:30px}.site-service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.site-service-grid article{padding:24px;background:white;border:1px solid var(--line);border-radius:5px}.site-service-grid span{color:var(--site-accent)}.site-service-grid h3{font-size:1.1rem;margin:18px 0 7px}.site-service-grid p{color:var(--muted);margin:0}.site-contact{display:grid;grid-template-columns:.9fr 1.1fr;gap:80px;border-top:1px solid var(--line)}.site-contact>div>p:not(.eyebrow){color:var(--muted);max-width:330px}.site-contact>div>a{display:block;margin-top:9px;color:var(--site-accent);font-weight:700}.site-contact form{display:grid;grid-template-columns:1fr 1fr;gap:10px}.site-contact form input:nth-of-type(3),.site-contact form input:nth-of-type(4),.site-contact form textarea,.site-contact form button{grid-column:1/-1}.public-site footer{max-width:1116px;margin:auto;padding:25px 0;border-top:1px solid var(--line);color:var(--muted);font-size:.8rem}
@media(max-width:850px){.site-services,.site-contact,.public-site footer{margin-left:28px;margin-right:28px}.site-contact{gap:38px}.site-hero{padding-left:28px;padding-right:28px}.site-service-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.public-site-header{padding:18px 15px}.site-hero{min-height:430px;padding:75px 15px}.site-services,.site-contact,.public-site footer{margin-left:15px;margin-right:15px}.site-services,.site-contact{padding:58px 0}.site-service-grid,.site-contact,.site-contact form{grid-template-columns:1fr}.site-contact{gap:25px}.site-contact form input,.site-contact form textarea,.site-contact form button{grid-column:auto}.service-manage-list article{align-items:flex-start;padding:15px}.service-manage-list article form{flex:0 0 auto}}
