:root{--brand:#1f5673;--brand-dark:#163e53;--bg:#f6f8fa;--card:#fff;--text:#1b1f24;--muted:#5b6671;--ok:#1a7f37;--warn:#9a6700;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}.app{min-height:100dvh}.header{padding:calc(env(safe-area-inset-top,0px) + .75rem) 1rem .75rem;background:var(--brand);color:#fff;align-items:center;gap:.75rem;display:flex}.brand{margin-right:auto;font-size:1.15rem;font-weight:700}.pill{background:#ffffff2e;border-radius:999px;padding:.15rem .6rem;font-size:.8rem}.pill-offline{background:var(--warn)}.button{font:inherit;min-height:44px;color:var(--brand-dark);cursor:pointer;background:#fff;border:0;border-radius:.5rem;padding:.5rem .9rem;font-weight:600}.main{max-width:44rem;padding:1.25rem 1rem calc(env(safe-area-inset-bottom,0px) + 2rem);margin:0 auto}h1{margin:0 0 .5rem;font-size:1.35rem;line-height:1.3}.muted{color:var(--muted)}.small{font-size:.85rem}.sections{grid-template-columns:repeat(auto-fill,minmax(min(14rem,100%),1fr));gap:.6rem;margin:1.25rem 0;padding:0;list-style:none;display:grid}.card{background:var(--card);border-radius:.75rem;justify-content:space-between;align-items:center;min-height:56px;padding:.75rem 1rem;font-weight:600;display:flex;box-shadow:0 1px 2px #00000014}.button-primary{background:var(--brand);color:#fff}.button-primary:disabled,.button:disabled{opacity:.55;cursor:not-allowed}.button-ghost{color:#fff;background:0 0;border:1px solid #ffffff80}.link{font:inherit;color:var(--brand);cursor:pointer;background:0 0;border:0;min-height:44px;padding:.35rem 0;text-decoration:underline}a{color:var(--brand)}.auth-page{padding:1.5rem 1rem calc(env(safe-area-inset-bottom,0px) + 2rem);justify-content:center;display:flex}.auth-card{background:var(--card);border-radius:.9rem;gap:.85rem;width:100%;max-width:26rem;padding:1.25rem;display:grid;box-shadow:0 1px 3px #0000001a}.auth-card h1,.auth-card p{margin:0}.auth-links{flex-wrap:wrap;column-gap:1.25rem;display:flex}.field{gap:.3rem;font-weight:600;display:grid}.field input{font:inherit;min-height:44px;color:var(--text);background:#fff;border:1px solid #c9d1d9;border-radius:.5rem;width:100%;padding:.5rem .7rem;font-size:1rem;font-weight:400}.field input:focus{outline:2px solid var(--brand);outline-offset:1px}.notice{border-radius:.5rem;padding:.6rem .8rem;font-size:.95rem}.notice-error{color:#82071e;background:#ffebe9}.notice-warn{color:#6c4400;background:#fff8c5}.notice-ok{color:#0f5323;background:#dafbe1}.card-link{color:inherit;text-decoration:none}.card-block{background:var(--card);border-radius:.75rem;justify-items:start;gap:.75rem;padding:1rem;display:grid;box-shadow:0 1px 2px #00000014}.card-block h2,.card-block p{margin:0}.qr{background:#fff;width:200px;height:200px}.secret{word-break:break-all}a.button{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.pill-button{font:inherit;color:#fff;cursor:pointer;border:0;min-height:32px;font-size:.8rem}.pill-error{background:#cf222e}.pill-waiting{color:#6c4400;background:#fff8c5;margin-left:.5rem;font-weight:400}.list{gap:.6rem;margin:1rem 0;padding:0;list-style:none;display:grid}.row-actions{flex-shrink:0;gap:1rem;display:flex}.card-block+.list,.notice+.card-block{margin-top:1rem}.card-block .field{justify-self:stretch}.field select,.field textarea,.row-actions select{font:inherit;min-height:44px;color:var(--text);background:#fff;border:1px solid #c9d1d9;border-radius:.5rem;width:100%;padding:.5rem .7rem;font-size:1rem;font-weight:400}.row-actions select{width:auto;min-height:36px;padding:.25rem .4rem;font-size:.9rem}.field textarea{resize:vertical}.field input[aria-invalid=true],.field select[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:#cf222e}.field-hint{color:var(--muted);font-size:.85rem;font-weight:400;display:block}.field-error{color:#82071e;font-size:.85rem;font-weight:600}.static-value{align-items:center;min-height:44px;font-weight:400;display:flex}.check{cursor:pointer;align-items:flex-start;gap:.6rem;min-height:44px;padding-top:.6rem;display:flex}.check input{width:1.25rem;height:1.25rem;accent-color:var(--brand);flex-shrink:0;margin:0}.checks{flex-wrap:wrap;column-gap:1.25rem;display:flex}.form-grid{grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr));justify-self:stretch;gap:.75rem 1rem;display:grid}.card-block h3{margin:0;font-size:1.05rem}.card-block form,.subform{border-top:1px solid #eaeef2;justify-self:stretch;justify-items:start;gap:.75rem;padding-top:.75rem;display:grid}.subform .field,.subform .form-grid,.card-block .list,.card-block details,.card-block .notice{justify-self:stretch}.list-tight{margin:0}.card-rate,.card-field{box-shadow:none;border:1px solid #eaeef2;flex-wrap:wrap;gap:.5rem;font-weight:400}.card-field{display:grid}.card-field-head{justify-content:space-between;align-items:center;display:flex}.main>.card-block+.card-block{margin-top:1rem}.card-block h2{font-size:1.15rem}.card-stack{flex-wrap:wrap;gap:.35rem 1rem}.card-stack .row-actions{flex-wrap:wrap;align-items:center}.app-nav{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 64px)}.bottom-nav{padding-bottom:env(safe-area-inset-bottom,0px);z-index:10;background:#fff;border-top:1px solid #d0d7de;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{min-height:56px;color:var(--muted);flex:1;justify-content:center;align-items:center;font-weight:600;text-decoration:none;display:flex}.bottom-nav a.on{color:var(--brand);box-shadow:inset 0 3px 0 var(--brand)}.fab{right:1rem;bottom:calc(env(safe-area-inset-bottom,0px) + 72px);background:var(--brand);color:#fff;z-index:9;border-radius:999px;padding:.85rem 1.2rem;font-weight:700;text-decoration:none;position:fixed;box-shadow:0 4px 12px #00000040}fieldset.plain{border:0;justify-self:stretch;justify-items:start;gap:.75rem;min-width:0;margin:0;padding:0;display:grid}.segmented{background:#fff;border:1px solid #c9d1d9;border-radius:.6rem;display:inline-flex;overflow:hidden}.segmented button{font:inherit;cursor:pointer;min-height:40px;color:var(--text);background:0 0;border:0;padding:.45rem .9rem}.segmented button+button{border-left:1px solid #c9d1d9}.segmented button.on{background:var(--brand);color:#fff;font-weight:600}.price-box{background:#f6f8fa;border-radius:.5rem;flex-wrap:wrap;justify-self:stretch;align-items:baseline;gap:.25rem .5rem;padding:.6rem .8rem;display:flex}.main-wide{max-width:72rem}.cal-bar{flex-wrap:wrap;justify-content:space-between;gap:.5rem;display:flex}.cal-nav{gap:.4rem;display:flex}.cal-nav .button{border:1px solid #c9d1d9;min-width:44px}.cal-title{margin:.75rem 0}.day{background:var(--card);border-radius:.75rem;margin-bottom:.6rem;padding:.6rem .75rem;box-shadow:0 1px 2px #00000014}.day-today{box-shadow:inset 4px 0 0 var(--brand), 0 1px 2px #00000014}.day-head{justify-content:space-between;align-items:center;display:flex}.day-head h2{margin:0;font-size:1rem}.day-head .link{align-items:center;min-height:36px;display:inline-flex}.day-empty{margin:.25rem 0}.day-jobs{gap:.4rem;margin-top:.35rem;display:grid}.week{gap:.6rem;display:grid}@media (width>=900px){.week{grid-template-columns:repeat(7,minmax(0,1fr));align-items:start;gap:.4rem}.week .day{min-height:12rem;margin:0;padding:.5rem}.week .job-card{grid-template-columns:1fr}}.job-card{color:var(--text);background:#eef4f8;border:1px solid #c5d7e3;border-radius:.5rem;grid-template-columns:6.5rem 1fr auto;align-items:start;gap:.15rem .6rem;min-height:44px;padding:.5rem .6rem;text-decoration:none;display:grid}.job-time{font-size:.9rem;font-weight:600}.job-main{min-width:0;display:grid}.job-main strong{text-overflow:ellipsis;overflow:hidden}.job-provisional{background:#fff;border:2px dashed #8aa9bd}.job-completed{background:#eaf6ec;border-color:#a7d7b1}.job-cancelled{color:var(--muted);background:#f6f8fa;border-color:#d0d7de;text-decoration:line-through}.job-status{white-space:nowrap;background:#fff;border:1px solid;border-radius:999px;padding:.1rem .45rem;font-size:.75rem;font-weight:600}.status-provisional{color:#3d6a85}.status-completed{color:var(--ok)}.month{grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;margin-bottom:.75rem;display:grid}.month-head{text-align:center;color:var(--muted);padding:.25rem 0;font-size:.8rem}.month-cell{font:inherit;background:var(--card);cursor:pointer;min-height:3.2rem;color:var(--text);border:0;border-radius:.4rem;flex-direction:column;justify-content:flex-start;align-items:center;gap:.15rem;padding:.3rem 0;display:flex}.month-cell.other-month{color:#8c959f;background:0 0}.month-cell.today .month-day{background:var(--brand);color:#fff;border-radius:999px;min-width:1.8rem}.month-cell.selected{outline:2px solid var(--brand);outline-offset:-2px}.month-count{background:#c5d7e3;border-radius:999px;padding:0 .45rem;font-size:.75rem;font-weight:700}.month-count.has-provisional{background:#fff;border:1px dashed #3d6a85}.field-stack{justify-items:start;gap:.1rem;display:grid}.field-stack .field{justify-self:stretch}.quick-client{background:#f6f8fa;border:1px solid #d0d7de;border-radius:.6rem;padding:.75rem}.field-stack-client{grid-column:1/-1}.field-stack-client .quick-client{justify-self:stretch;margin-top:.5rem}.button-danger{color:#fff;background:#cf222e}.job-actions{margin:.25rem 0 1rem}.outcome-completed{border-left:4px solid var(--ok)}.outcome-cancelled{border-left:4px solid #8c959f}.outcome{margin-bottom:1rem}.charge{border-collapse:collapse;justify-self:stretch;width:100%}.charge td{vertical-align:top;border-bottom:1px solid #eaeef2;padding:.35rem 0}.charge .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;padding-left:1rem}.charge-total td{border-bottom:0;font-weight:700}.to-confirm-banner{margin-top:.75rem;font-weight:600;text-decoration:none;display:block}.to-confirm{background:var(--card);border-radius:.75rem;gap:.4rem;padding:.6rem .75rem;display:grid}.to-confirm p{margin:0}.rejected-banner{margin:.75rem 1rem 0}.rejected-banner ul{margin:.4rem 0}.cal-repeats{align-self:center;margin-left:auto}.series-summary{gap:.25rem;display:grid}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.photos{grid-template-columns:repeat(auto-fill,minmax(8rem,1fr));justify-self:stretch;gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.photo{justify-items:start;gap:.25rem;display:grid}.photo-thumb{aspect-ratio:3/4;width:100%;color:var(--muted);text-align:center;background:#eaeef2;border:1px solid #d0d7de;border-radius:.5rem;justify-content:center;align-items:center;font-size:.85rem;text-decoration:none;display:flex;overflow:hidden}.photo-thumb img{object-fit:cover;width:100%;height:100%}.photo-pdf{color:#cf222e;font-size:1.2rem;font-weight:700}.expense-month{margin-bottom:1rem}.expense-row{grid-template-columns:5.5rem 1fr auto;align-items:start;gap:.5rem;font-weight:400;display:grid}.expense-main{min-width:0;display:grid}.expense-amount{white-space:nowrap;font-weight:700}.share-row{font-weight:400}.share-input{align-items:center;gap:.25rem;display:inline-flex}.share-input input{font:inherit;text-align:right;border:1px solid #c9d1d9;border-radius:.5rem;width:4.5rem;min-height:40px;padding:.3rem .5rem}.bottom-nav a{font-size:.95rem}.scan-box{background:#f6f8fa;border:1px dashed #8aa9bd;border-radius:.6rem;justify-self:stretch;gap:.4rem;padding:.75rem;display:grid}.scan-box p{margin:0}.pill-hold{color:#7a3300;background:#fbe5d6;margin-left:.5rem;font-weight:400}.hold-on{border-left:4px solid #d4722b}.held-row{border-bottom:1px solid #eaeef2;justify-items:start;gap:.25rem;padding-block:.4rem;display:grid}.run-line{justify-content:space-between;gap:.75rem;display:flex}.run-lines .check>span{flex:1;gap:.2rem;display:grid}.invoice-row strong{font-variant-numeric:tabular-nums}.table-wrap{justify-self:stretch;overflow-x:auto}.invoice-lines{border-collapse:collapse;width:100%}.invoice-lines th,.invoice-lines td{text-align:left;vertical-align:top;border-bottom:1px solid #eaeef2;padding:.4rem .3rem}.invoice-lines .num{text-align:right;white-space:nowrap}
