:root{--navy: #00308F;--ink: #3A4767;--ink-soft: #4A5876;--muted: #8C97AE;--cream: #FBF5E6;--line: #C9D6EE;--amber: #F2A93B;--red: #B42318;--green: #1F7A4D;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--cream)}*{box-sizing:border-box}body{margin:0}.shell{min-height:100vh;display:flex;flex-direction:column}header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#fff;border-bottom:1px solid var(--line)}.brand{font-weight:800;font-size:20px;color:var(--navy);text-decoration:none}main{flex:1;width:100%;max-width:640px;margin:32px auto;padding:0 16px}footer{text-align:center;font-size:12px;color:var(--muted);padding:24px}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:28px}h1{margin:0 0 8px;color:var(--navy);font-size:26px}h2{margin:28px 0 8px;font-size:16px;color:var(--ink);border-top:1px solid var(--line);padding-top:20px}label,fieldset{display:block;margin:14px 0;font-weight:600;font-size:14px}fieldset{border:0;padding:0}legend{padding:0;margin-bottom:6px}em{font-weight:400;font-style:normal;color:var(--muted)}input,select{display:block;width:100%;margin-top:6px;padding:10px 12px;font:inherit;font-weight:400;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}fieldset input{margin-bottom:8px}input:focus,select:focus{outline:2px solid var(--navy);outline-offset:1px}small{display:block;margin-top:6px;font-weight:400;color:var(--ink-soft)}button,.button{display:inline-block;margin-top:16px;padding:11px 20px;font:inherit;font-weight:600;border:0;border-radius:8px;background:var(--navy);color:#fff;cursor:pointer;text-decoration:none}button.secondary{background:#fff;color:var(--navy);border:1px solid var(--navy)}button.link{margin:0;padding:0;background:none;color:var(--navy)}button:disabled{opacity:.6;cursor:default}.row{display:flex;gap:12px;flex-wrap:wrap}.muted{color:var(--muted)}.error{display:block;margin-top:6px;color:var(--red);font-weight:500}.notice{margin:16px 0;padding:16px;border-radius:8px;background:#fff6e5;border-left:4px solid var(--amber)}.notice.ok{background:#eaf6ef;border-left-color:var(--green)}.notice p{margin:6px 0 0}.notice button{margin-top:12px}dl{display:grid;grid-template-columns:140px 1fr;gap:8px 16px;margin:20px 0 0;font-size:14px}dt{color:var(--muted)}dd{margin:0}main:has(.card.wide){max-width:900px}h3{margin:20px 0 6px;font-size:15px;color:var(--ink)}.steps{list-style:none;display:flex;flex-wrap:wrap;gap:6px 14px;padding:0;margin:12px 0 8px;font-size:13px}.steps button{font-weight:500;color:var(--muted)}.steps .done button{color:var(--ink-soft)}.steps .current button{color:var(--navy);font-weight:700;text-decoration:underline}.steps button:disabled{opacity:.5}label.check{display:flex;align-items:center;gap:8px;font-weight:500;margin:8px 0}label.check input{width:auto;margin:0}label.confirm{margin-top:24px;padding:12px;background:#fff6e5;border-radius:8px}.row.nav{margin-top:24px;border-top:1px solid var(--line);padding-top:4px}.category{border:1px solid var(--line);border-radius:8px;margin:10px 0}.category.off{background:#f7f7f5}.category.off .cat-head>button{color:var(--muted)}.cat-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px}.cat-head>button{font-weight:700;font-size:15px}.cat-head .muted{font-size:13px;flex:1}.cat-head .toggle{margin:0;font-size:13px}table.services{width:100%;border-collapse:collapse;font-size:14px}table.services th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:6px 12px;border-top:1px solid var(--line)}table.services td{padding:6px 12px;border-top:1px solid #EEF1F7;vertical-align:middle}table.services select{margin:0;padding:6px 8px;font-size:13px}td.price,div.price{display:flex;align-items:center;gap:4px}td.price input{width:90px;margin:0;padding:6px 8px;text-align:right}div.price.wide input{max-width:160px}button.danger{color:var(--red)}.addbox{margin:16px 0;padding:16px;border:1px dashed var(--line);border-radius:8px}.taxstate{margin:16px 0;padding:4px 16px 16px;border:1px solid var(--line);border-radius:8px}table.taxgrid{width:100%;border-collapse:collapse;font-size:14px;margin-top:8px}table.taxgrid th{text-align:center;font-size:13px;padding:6px;vertical-align:bottom}table.taxgrid th:first-child,table.taxgrid td:first-child{text-align:left}table.taxgrid th small{font-weight:400;color:var(--muted);font-size:11px}table.taxgrid td{text-align:center;padding:8px 6px;border-top:1px solid #EEF1F7}table.taxgrid input{width:18px;height:18px;margin:0}.logo-preview{display:flex;align-items:center;gap:16px;margin:8px 0}.logo-preview img{max-height:80px;max-width:240px;border:1px solid var(--line);border-radius:6px;padding:6px;background:#fff}.colors label{flex:1 1 200px}input.swatch{width:48px;height:42px;padding:2px;flex:none}@media(max-width:640px){table.services thead{display:none}table.services tr{display:grid;grid-template-columns:1fr auto;gap:4px 8px;padding:8px 12px;border-top:1px solid #EEF1F7}table.services td{border:0;padding:0}table.services td:first-child{grid-column:1 / -1;font-weight:500}}main.admin{max-width:1100px}.tabs{display:flex;gap:8px;margin-bottom:16px}.tabs button{margin:0;background:#fff;color:var(--navy);border:1px solid var(--line)}.tabs button.on{background:var(--navy);color:#fff;border-color:var(--navy)}.row.between{justify-content:space-between;align-items:center}.row.between button{margin:0}.tablewrap{overflow-x:auto}table.list{width:100%;border-collapse:collapse;font-size:14px;margin-top:12px}table.list th{text-align:left;font-size:12px;color:var(--muted);padding:8px;border-bottom:1px solid var(--line)}table.list td{padding:10px 8px;border-bottom:1px solid #EEF1F7;vertical-align:top}table.list .muted{font-size:12px}.ok{color:var(--green);font-size:13px}.warn{color:#9a5b00;font-size:13px}.brand{display:inline-flex;align-items:center;gap:10px}.brand img{display:block;height:36px;width:auto}.admin-tag{font-size:12px;font-weight:700;color:#fff;background:var(--navy);padding:3px 8px;border-radius:4px}@media(max-width:480px){.brand img{height:28px}}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.02em}.main-nav{max-width:900px;margin:0 auto 16px}table.list tr.off td{color:var(--muted)}table.list.clickable tbody tr{cursor:pointer}table.list.clickable tbody tr:hover{background:#f5f8fd}td.actions,div.actions{white-space:nowrap}td.actions button+button,div.actions button+button{margin-left:12px}table.list select{margin:0;padding:6px 8px;font-size:13px;width:auto}.row.two>label{flex:1 1 220px}.row.three>label{flex:1 1 120px}.row.two,.row.three{gap:12px}textarea{display:block;width:100%;margin-top:6px;padding:10px 12px;font:inherit;font-weight:400;border:1px solid var(--line);border-radius:8px}details{margin:18px 0;border-top:1px solid var(--line);padding-top:12px}summary{cursor:pointer;font-weight:600;color:var(--navy)}.site{padding:12px;border:1px solid var(--line);border-radius:8px;margin:8px 0}.site.off{background:#f7f7f5;color:var(--muted)}fieldset .check span .muted{font-weight:400}div.actions{display:flex;gap:14px}div.actions button+button{margin-left:0}.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.pill.ok{background:#e5f4e4;color:var(--green)}.pill.warn{background:#f9eeda;color:#8a5300}.pill.bad{background:#fbebeb;color:var(--red)}.row.search{gap:12px;align-items:flex-end}.picklist{display:flex;flex-direction:column;gap:6px;margin:8px 0 12px}button.pick{margin:0;text-align:left;background:#fff;color:var(--ink);border:1px solid var(--line);font-weight:400}button.pick:hover{border-color:var(--navy)}section.day{border-top:1px solid var(--line);padding:4px 0 8px}section.day.today h3{color:var(--navy)}.visit{display:grid;grid-template-columns:110px 1fr auto;gap:12px;padding:10px;border:1px solid var(--line);border-radius:8px;margin:8px 0;cursor:pointer;background:#fff}.visit:hover{border-color:var(--navy)}.visit .when{font-weight:700}.visit .state{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.visit .state .link{font-size:14px}.notes{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px;font-size:14px}.notes p{margin:6px 0}.notes input,.notes button{margin:0}button.danger-outline{color:var(--red);border-color:var(--red)}.warn{color:#8a5300}@media(max-width:640px){.visit{grid-template-columns:1fr}.visit .state{align-items:flex-start;flex-direction:row;flex-wrap:wrap}}main:has(.card.board){max-width:1400px}.card.board{padding:20px}label.inline{display:flex;align-items:center;gap:8px;margin:0 0 0 8px;font-weight:500}label.inline input{margin:0;width:auto;padding:8px}.board-title{margin:12px 0 8px}.small{font-size:12px}.board-banner{position:fixed;right:24px;bottom:24px;z-index:20;max-width:440px;display:flex;flex-direction:column;gap:4px;margin:0;padding:12px 16px;box-shadow:0 6px 24px #00000026}.board-banner .row{gap:16px}.board-banner button.link{font-size:14px}.board-wrap{display:grid;grid-template-columns:220px 1fr;gap:12px;align-items:start}.board-side{position:sticky;top:8px;max-height:72vh;overflow-y:auto;padding-right:4px}.board-side h4{margin:4px 0 2px;font-size:13px;color:var(--navy);text-transform:uppercase;letter-spacing:.04em}.board-side h4+p{margin:0 0 8px}.board-side h4:not(:first-child){margin-top:18px}.chip{padding:7px 10px;margin:6px 0;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:14px;font-weight:600;cursor:grab;-webkit-user-select:none;user-select:none}.chip .muted{font-weight:400;font-size:12px}.chip:hover,.jobcard:hover{border-color:var(--navy)}.jobcard{padding:8px 10px;margin:6px 0;border:1px solid var(--line);border-left:4px solid var(--amber);border-radius:8px;background:#fff;font-size:13px;cursor:grab;-webkit-user-select:none;user-select:none}.board-scroll{height:72vh;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;position:relative}.board-scroll.busy{opacity:.6;pointer-events:none}.board-grid{display:grid;min-width:max-content}.board-head{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid var(--line);border-left:1px solid #EEF1F7;padding:8px;font-size:13px;display:flex;flex-direction:column;min-height:50px}.board-head.corner{left:0;z-index:4;border-left:0}.board-head.today{background:#eef3fc;color:var(--navy)}.board-head .muted{font-size:12px}.board-gutter{position:sticky;left:0;z-index:2;background:#fff;border-right:1px solid var(--line)}.board-gutter span{position:absolute;right:6px;transform:translateY(-50%);font-size:11px;color:var(--muted)}.board-gutter span:first-child{transform:none}.board-col{position:relative;border-left:1px solid #EEF1F7;background-image:repeating-linear-gradient(to bottom,#E3E9F5 0,#E3E9F5 1px,transparent 1px,transparent 30px,#F3F5FA 30px,#F3F5FA 31px,transparent 31px,transparent 60px)}.board-col.today{background-color:#fafcff}.board-col.none{background-color:#fbfbf8}.board-ghost{position:absolute;left:2px;right:2px;z-index:1;border:2px dashed var(--navy);border-radius:6px;background:#00308f0f;font-size:11px;font-weight:700;color:var(--navy);padding:2px 6px;pointer-events:none}.board-visit{position:absolute;z-index:2;overflow:hidden;padding:3px 6px 6px;border-radius:6px;font-size:12px;line-height:1.3;cursor:pointer;background:#e8eefa;border:1px solid #A9BCE6;border-left:4px solid var(--navy);color:var(--ink)}.board-visit.movable{cursor:grab}.board-visit:hover{box-shadow:0 2px 8px #00308f2e;z-index:5}.board-visit .t{font-weight:700}.board-visit .c{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-visit .mono{font-size:11px;color:var(--ink-soft)}.board-visit .m{color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-visit .st{display:inline-block;margin-top:2px;font-size:11px;font-weight:700}.board-visit.s-en_route,.board-visit.s-on_site{background:#fff4df;border-color:#ebc27d;border-left-color:var(--amber)}.board-visit.s-completed{background:#e9f5ee;border-color:#a8d5bc;border-left-color:var(--green);cursor:pointer}.board-visit .grip{position:absolute;left:0;right:0;bottom:0;height:7px;cursor:ns-resize}.board-visit .grip:hover{background:#00308f40}th.num,td.num,table.list th.num{text-align:right;white-space:nowrap}.lines-table td{vertical-align:top}.lines-table input,.lines-table select{margin:0;padding:6px 8px;font-size:14px}.lines-table input.qty{width:70px;text-align:right}.lines-table input.price-in{width:100px;text-align:right}.lines-table input[type=checkbox]{width:18px;height:18px;margin-top:8px}.lines-table input.reason{margin-top:6px;border-color:var(--amber)}.lines-table td:nth-child(2){min-width:240px}.totals{margin:16px 0 8px auto;max-width:380px;font-size:14px}.totals>div{display:flex;justify-content:space-between;gap:12px;padding:4px 0}.totals .grand{font-weight:700;font-size:16px;border-top:1px solid var(--line);padding-top:8px}.totals .rate input{display:inline-block;width:64px;margin:0 4px;padding:4px 6px;text-align:right}.doc-row{padding:8px 0;border-bottom:1px solid #EEF1F7}.doc-row .link{text-align:left}.doc-page{min-height:100vh;background:#f4f6fa;padding:32px 16px}.doc{max-width:820px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:32px}.doc-head{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;border-bottom:3px solid var(--brand, var(--navy));padding-bottom:16px}.doc-logo{max-height:72px;max-width:240px;display:block;margin-bottom:6px}.doc-biz{margin:0 0 4px;color:var(--brand, var(--navy));border:0;padding:0;font-size:22px}.doc-title{text-align:right}.doc-kind{font-size:26px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--brand, var(--navy))}.doc-parties{display:flex;gap:32px;flex-wrap:wrap;margin:20px 0;font-size:14px}.doc-parties>div{flex:1 1 200px}.label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}.doc-subject{font-size:20px;color:var(--ink);margin:8px 0}.doc-notes p{white-space:pre-wrap;margin:4px 0 16px}.doc-approve{margin-top:24px;border-top:1px solid var(--line)}.doc-approve h2{border:0}@media(max-width:640px){.doc{padding:18px}.doc-title{text-align:left}}.timeclock{margin-bottom:16px;border-left:6px solid var(--muted)}.timeclock.on{border-left-color:var(--green)}.timeclock h2{border:0;padding:0;margin:0 0 8px;font-size:20px}.clock-elapsed{font-size:22px;font-weight:800;color:var(--green);font-variant-numeric:tabular-nums}button.big{width:100%;padding:16px;font-size:18px}button.danger-fill{background:var(--red)}.today-time{margin-top:12px;border-top:1px solid var(--line);padding-top:8px}.today-time .row{padding:3px 0}section.tsheet{border-top:1px solid var(--line);margin-top:16px}section.tsheet h2{border:0;padding:0;margin:12px 0 0}input.bad{border-color:var(--red)}.card.danger-zone{border:1px solid var(--red);margin-top:16px}.terms{max-width:760px;margin:0 auto;line-height:1.55}.terms h2{font-size:18px;margin-top:28px}.terms ul{padding-left:22px}.sent-emails{margin-top:20px}.email-copy pre{white-space:pre-wrap;font-family:inherit;background:var(--cream, #FBF5E6);padding:12px;border-radius:6px}.records dl{display:grid;grid-template-columns:1fr auto;gap:4px 12px;margin:0 0 16px}.records dd{margin:0;text-align:right}
