/* Head Hand owner app: dark + green (layout from ff-helper) */
[hidden]{display:none!important}
:root{--bg:#0c1410;--card:#13201a;--card2:#1a2b22;--line:#263a2e;--acc:#7cc47f;--btn:#3e9a4c;--btntext:#06120a;--text:#e4efe4;--muted:#9db3a2;--red:#e0705a;--amber:#e5b04a;--blue:#7da2e0}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--text);font:18px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
body{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:rgba(12,20,16,.97);border-bottom:1px solid var(--line)}
.logo{width:46px;height:46px;border-radius:12px;background:#fff}
.brand{flex:1;min-width:0}
.title{font-family:Georgia,"Times New Roman",serif;font-size:22px;color:var(--acc);letter-spacing:.4px}
.sub{font-size:13px;color:var(--muted)}
button{font:inherit;color:inherit;cursor:pointer}
.refresh{background:var(--btn);color:var(--btntext);border:0;border-radius:14px;padding:12px 14px;font-weight:700;font-size:16px;min-height:48px}
.refresh:disabled{opacity:.6}
main{padding:14px}
h2{font-family:Georgia,serif;color:var(--acc);font-weight:normal;font-size:23px;margin:22px 4px 10px}
h2:first-child{margin-top:4px}
.hint{color:var(--muted);font-size:15px;margin:-4px 4px 12px}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stat{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px;color:inherit}
.stat .lbl{font-size:15px;color:var(--muted)}
.stat .big{font-size:29px;font-weight:700;color:var(--text);letter-spacing:-.5px}
.stat .small{font-size:15px;color:var(--acc)}
.stat.hero{grid-column:1/-1;border-color:#2f5a3a;background:linear-gradient(160deg,#173023,#13201a)}
.stat.hero .big{font-size:40px}
.alert{display:flex;gap:12px;align-items:flex-start;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-left:6px solid var(--acc);border-radius:16px;padding:14px;margin-bottom:10px;min-height:56px;color:inherit}
.alert.red{border-left-color:var(--red)}.alert.amber{border-left-color:var(--amber)}
.alert .d{font-size:15px;color:var(--muted);margin-top:2px}
.alert .go{margin-left:auto;color:var(--acc);font-size:22px}
.allgood{background:var(--card);border-radius:16px;padding:16px;color:var(--acc)}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 16px;margin-bottom:12px}
.row{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.num{font-size:15px;color:var(--muted);font-weight:600}
.who{font-size:19px;font-weight:700}
.amt{font-size:21px;font-weight:700;white-space:nowrap}
.meta{color:var(--muted);font-size:15px}
.note{font-size:15px;color:#c9d8cc;margin-top:6px;border-left:3px solid var(--line);padding-left:10px}
.pill{display:inline-block;border-radius:999px;padding:3px 10px;font-size:13px;font-weight:700;letter-spacing:.3px;white-space:nowrap;margin:6px 4px 0 0}
.p-red{background:#5a2620;color:#ffd4cc}.p-amber{background:#5a4318;color:#ffe2a6}.p-green{background:#1f3d26;color:#c9efc9}.p-blue{background:#1d2f52;color:#cfdcff}.p-grey{background:#2a332d;color:#c7d1c9}
.acts{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.act{flex:1;min-width:92px;display:flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;background:var(--card2);color:var(--acc);border:1px solid #2f5a3a;border-radius:14px;padding:11px 10px;font-size:16px;font-weight:700;min-height:48px}
.act.off{color:var(--muted);border-color:var(--line);font-weight:600}
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:6px}
.chip{flex:none;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:10px 14px;font-size:15px;min-height:44px;color:var(--text)}
.chip.on{background:var(--btn);color:var(--btntext);border-color:var(--btn);font-weight:700}
.aging{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:8px}
.ag{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 6px;text-align:center}
.ag .l{font-size:12px;color:var(--muted)}.ag .c{font-size:22px;font-weight:800}.ag .t{font-size:12px;color:var(--acc)}
.ag.hot .c{color:var(--red)}.ag.warm .c{color:var(--amber)}.ag.zero{opacity:.55}
.loading,.err{padding:40px 10px;text-align:center;color:var(--muted)}
/* Startup loader (index.html + first load): fills exactly the visible screen and centers the text. The negative margins
   cancel main's 14px padding and body's 84px bottom padding (room for the tab bar, hidden at startup) so nothing scrolls;
   the padding keeps the text clear of the notch / Dynamic Island, home indicator and landscape side insets. */
.loading.boot{box-sizing:border-box;min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;
  margin:-14px -14px calc(-98px - env(safe-area-inset-bottom));
  padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
.err{color:var(--red)}
nav{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;background:rgba(12,20,16,.98);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
nav button{flex:1;background:none;border:0;padding:10px 0 12px;font-size:13px;color:var(--muted);min-height:64px;display:flex;flex-direction:column;align-items:center;gap:2px}
nav button span{font-size:21px}
nav button.on{color:var(--acc);font-weight:700}
nav button.addtab span{background:var(--btn);color:var(--btntext);border-radius:50%;width:30px;height:30px;line-height:30px;font-size:22px;font-weight:700}
.login{max-width:360px;margin:30px auto;text-align:center}
.login img{width:160px;height:160px;border-radius:32px;background:#fff}
.login h1{font-family:Georgia,serif;color:var(--acc);font-weight:normal;font-size:27px;margin:14px 0 4px}
.login input{width:100%;font-size:30px;text-align:center;letter-spacing:10px;padding:16px;border-radius:16px;border:1px solid var(--line);background:var(--card);color:var(--text);margin:18px 0 12px}
.login .go{width:100%;background:var(--btn);color:var(--btntext);border:0;border-radius:16px;padding:18px;font-size:20px;font-weight:700}
.login .msg{color:var(--red);min-height:24px;margin-top:10px}
#ptr{position:fixed;top:0;left:0;right:0;text-align:center;padding:8px;color:var(--acc);transform:translateY(-60px);transition:transform .15s;z-index:10;font-size:15px}
.foot{color:var(--muted);font-size:13px;text-align:center;margin:24px 0 8px}
.foot a{color:var(--muted)}
#mockbar{background:#5a4318;color:#ffe2a6;text-align:center;font-size:13px;font-weight:700;padding:6px}
/* forms */
.seg{display:flex;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:4px;gap:4px;margin-bottom:14px}
.seg button{flex:1;border:0;background:none;border-radius:10px;padding:12px 8px;font-size:17px;font-weight:600;color:var(--muted);min-height:48px}
.seg button.on{background:var(--btn);color:var(--btntext)}
.fld{display:block;margin-bottom:14px}
.fld>span{display:block;font-size:16px;color:var(--muted);margin:0 4px 6px}
.fld input,.fld textarea,.fld select{width:100%;font:inherit;font-size:19px;padding:14px 16px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--text);-webkit-appearance:none}
.fld textarea{resize:vertical;min-height:120px;line-height:1.45}
.fld input:focus,.fld textarea:focus{outline:2px solid var(--acc);border-color:var(--acc)}
.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
.photos .ph{position:relative;aspect-ratio:1;border-radius:14px;overflow:hidden;background:var(--card);border:1px solid var(--line)}
.photos .ph img{width:100%;height:100%;object-fit:cover;display:block}
.photos .ph button{position:absolute;top:4px;right:4px;width:34px;height:34px;border-radius:50%;border:0;background:rgba(0,0,0,.65);color:#fff;font-size:18px}
.photos label.addph{display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;border:2px dashed #2f5a3a;border-radius:14px;color:var(--acc);font-size:15px;font-weight:600;text-align:center;cursor:pointer}
.photos label.addph b{font-size:30px}
.big-btn{display:block;width:100%;text-align:center;text-decoration:none;background:var(--btn);color:var(--btntext);border:0;border-radius:16px;padding:18px;font-size:20px;font-weight:700;margin-top:10px;min-height:60px}
.big-btn:disabled{opacity:.65}
.big-btn.alt{background:var(--card2);color:var(--acc);border:1px solid #2f5a3a}
.link-btn{display:block;width:100%;background:none;border:0;color:var(--muted);font-size:17px;padding:14px;min-height:50px}
.err-msg{color:#ffb3a6;font-size:17px;margin:6px 4px}
.err-msg:empty{display:none}
#sheet{position:fixed;inset:0;z-index:20}
#sheet .scrim{position:absolute;inset:0;background:rgba(0,0,0,.6)}
#sheet .panel{position:absolute;left:0;right:0;bottom:0;max-height:92vh;overflow-y:auto;background:#101b15;border-top:1px solid var(--line);border-radius:24px 24px 0 0;padding:8px 18px calc(18px + env(safe-area-inset-bottom));animation:up .2s ease-out}
@keyframes up{from{transform:translateY(40%)}to{transform:none}}
#sheet .grab{width:44px;height:5px;border-radius:3px;background:#2f4a3a;margin:4px auto 12px}
#sheet h3{font-family:Georgia,serif;color:var(--acc);font-weight:normal;font-size:23px;margin:4px 0}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.opt{border:1px solid var(--line);background:var(--card);border-radius:14px;padding:14px 8px;font-size:16px;font-weight:600;min-height:52px;color:var(--text)}
.opt.on{background:var(--btn);color:var(--btntext);border-color:var(--btn)}
body.noscroll{overflow:hidden}
.saved{display:flex;gap:12px;align-items:center}
.saved img{width:64px;height:64px;border-radius:12px;object-fit:cover;flex:none}
.done{text-align:center}
.done .tick{width:72px;height:72px;margin:6px auto;border-radius:50%;background:#1f3d26;color:var(--acc);font-size:40px;line-height:72px}
#toast{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:#e4efe4;color:#06120a;font-weight:700;padding:14px 20px;border-radius:14px;opacity:0;transition:all .2s;z-index:30;pointer-events:none;max-width:90vw;text-align:center}
#toast.show{opacity:1;transform:translate(-50%,0)}
.card > .d{font-size:15px;color:var(--muted);margin-top:6px}
#support .d a{color:var(--acc)}
/* Estimate status in QuickBooks + bulk cleanup */
.acts.qs{margin-top:8px}.acts.qs .act{min-height:44px;font-size:15px;padding:8px}
.fu-qs{margin:14px 0 4px;padding-top:12px;border-top:1px solid var(--line)}
.sel-toggle{margin-left:8px;min-height:36px;padding:6px 12px;font-size:14px;vertical-align:middle}
.est.selecting{cursor:pointer}.est.sel{border-color:var(--btn);box-shadow:0 0 0 1px var(--btn) inset}
.pick{display:flex;align-items:center;gap:8px;font-size:15px;color:var(--muted);margin-bottom:6px}.pick input{width:22px;height:22px;accent-color:var(--btn)}
.bulkbar{position:sticky;bottom:calc(72px + env(safe-area-inset-bottom));z-index:4;background:#101b15;border:1px solid var(--btn);border-radius:16px;padding:10px 12px;margin:12px 0}
.bulkbar .acts{margin-top:8px}.bulkbar .act:disabled{opacity:.5}.bulk-sum{font-size:16px}
.cf-list{margin:10px 0;font-size:15px;color:#c9d8cc;border-left:3px solid var(--line);padding-left:10px}
/* search box (Estimates / Invoices / Jobs). 16px+ text so iOS Safari doesn't zoom in on focus. */
.search{position:relative;margin:0 0 12px}
.search input{width:100%;font:inherit;font-size:18px;min-height:48px;padding:12px 52px 12px 16px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--text);-webkit-appearance:none;appearance:none}
.search input:focus{outline:2px solid var(--acc);border-color:var(--acc)}
.search input::-webkit-search-cancel-button,.search input::-webkit-search-decoration{-webkit-appearance:none;appearance:none}
.q-x{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:20px}
.q-x[hidden]{display:none}
.q-n{margin-top:-6px}
.fld[hidden]{display:none}
#pd-q{line-height:1.35}

/* ---------- New estimate in QuickBooks (estimate.js) */
.nb-wrap{display:block;max-width:820px;margin:0 auto}
.nb-wrap.drop{outline:3px dashed var(--acc);outline-offset:4px;border-radius:16px}
.nb-title{margin-top:0}
.card.nb{display:block;padding:14px 14px 4px}
.nb-h{font-size:18px;font-weight:700;margin:0 2px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.nb-sub{font-size:15px;font-weight:700;color:var(--muted);margin:4px 4px 8px;text-transform:uppercase;letter-spacing:.04em}
.nb .fld{margin-bottom:10px}
.nb .fld input,.nb .fld select,.nb .fld textarea{font-size:17px;padding:12px 14px}
.nb .fld textarea{min-height:72px}
.nb .fld>span{font-size:14px}
.g2,.g3{display:grid;gap:0 10px;grid-template-columns:1fr}
@media (min-width:560px){.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:2fr 1fr 1fr}}
.g3 .fld:nth-child(2),.g3 .fld:nth-child(3){min-width:0}
@media (max-width:559px){.g3{grid-template-columns:1fr 1fr}.g3 .fld:first-child{grid-column:1/-1}}
.nb-find input{width:100%;font:inherit;font-size:19px;padding:14px 16px;border-radius:14px;border:2px solid var(--acc);background:var(--card2);color:var(--text);-webkit-appearance:none}
.nb-res{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.nb-res .res{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:2px;width:100%;background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;color:var(--text);font:inherit;min-height:52px}
.nb-res .res b{font-size:18px}.nb-res .res span{font-size:14px;color:var(--muted)}
.nb-src{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
.nb-src .act{flex:1 1 30%}
#nb-contacts{flex-basis:100%;background:var(--btn);color:var(--btntext);border-color:var(--btn);font-size:18px;min-height:56px}
.chosen{font-size:18px;margin:0 2px 8px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.chk{display:flex;gap:10px;align-items:center;font-size:16px;margin:4px 2px 12px;min-height:44px}
.chk input{width:24px;height:24px;accent-color:var(--btn)}
.link-btn.inline{display:inline;width:auto;padding:0;margin:0;min-height:0;font-size:inherit;color:var(--acc);text-decoration:underline}
.ln{border:1px solid var(--line);border-radius:14px;padding:10px;margin-bottom:10px;background:var(--card2)}
.ln-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}
.ln-top .ln-tools{margin-left:auto}
.sd-add{display:inline-block;margin:10px 2px 2px;font-size:15px}
.ln-top b{min-width:22px;text-align:center;color:var(--muted)}
.ln-top select{flex:1 1 100%;order:3;min-width:0;font:inherit;font-size:17px;padding:12px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--text)}
.ln-k{flex:1;color:var(--muted);font-weight:600}
@media (min-width:560px){.ln-top select{order:0;flex:1 1 auto}}
.ln-tools{display:flex;gap:4px}
.ic{width:40px;height:44px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--text);font-size:17px}
.ic:disabled{opacity:.35}
.ln textarea{width:100%;font:inherit;font-size:16px;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--text);min-height:60px;resize:vertical}
.ln-nums{display:grid;grid-template-columns:1fr 1.3fr 1.4fr;gap:8px;margin-top:8px}
.ln-nums label span,.disc span{display:block;font-size:13px;color:var(--muted);margin:0 2px 4px}
.ln-nums input,.disc input,.disc select{width:100%;font:inherit;font-size:17px;padding:11px 12px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--text);-webkit-appearance:none}
.ln .sd{margin:8px 0 0}
.disc{display:grid;grid-template-columns:auto 72px 1fr;gap:8px;align-items:center;margin:4px 0 10px}
.disc span{margin:0 6px 0 2px;font-size:16px}
.tot{border-top:1px solid var(--line);padding:10px 2px 12px;display:flex;flex-direction:column;gap:6px}
.tot div{display:flex;justify-content:space-between;font-size:17px}
.tot .grand{font-size:22px;font-weight:800;color:var(--acc)}
.big-btn.alt{background:var(--card2);color:var(--text);border:1px solid var(--line);font-size:18px;padding:14px 16px}
.big-btn .sub{display:block;font-weight:500;margin-top:2px}
.card.warn{border-color:var(--amber);color:var(--amber)}
.seg.three button{font-size:15px;padding:10px 4px}
h2 .new-est{float:right;margin:0;font-size:15px}

/* activity timeline */
.tl{margin-top:10px;border-left:2px solid var(--line,#2c3a2e);padding-left:12px}
.tl-i{padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:15px}
.tl-w{font-size:12.5px;opacity:.7;margin-bottom:2px}
/* Schedule: upcoming list + calendar event preview */
.up-list{padding:6px 12px}
.up-i{display:flex;gap:10px;align-items:center;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid rgba(255,255,255,.06);color:inherit;font:inherit;padding:11px 2px;min-height:48px}
.up-i:last-of-type{border-bottom:0}
.up-d{font-weight:600;min-width:118px;color:var(--acc)}
.up-w{flex:1;font-size:15px}
.cal-prev{border:1px solid var(--line);border-left:4px solid #4285f4;border-radius:12px;padding:10px 12px;margin:10px 0;font-size:15px}
.cal-t{font-weight:700;font-size:16px}
.cal-w,.cal-l{color:#c9d8cc;margin-top:3px}
.cal-d{white-space:pre-wrap;margin-top:8px;font-size:14px;color:#c9d8cc}
.card.flash{outline:3px solid var(--acc);outline-offset:2px}
#jtimed[hidden]{display:none}

/* Head Hand demo additions */
#mockbar{opacity:.85;font-size:12px}
.cta{margin:16px 2px 8px;padding:16px;border:1px solid #3f6b4c;border-radius:16px;background:linear-gradient(160deg,#173223,#101b15)}
.cta-h{font-weight:800;font-size:19px;margin-bottom:6px}.cta.big .cta-h{font-size:22px}
.cta-p{color:var(--muted);font-size:15px;margin:6px 0}.cta a{color:#bfe7c4}
.foot.brand{margin-bottom:0}
.demo-landing .meta{line-height:1.5}

/* Head Hand brand (demo build only): dark tile #111111, orange #FF5A05, gradient #FF6A00 -> #EE2311, Montserrat */
:root{--bg:#111111;--card:#1b1b1b;--card2:#232323;--line:#2e2e2e;--acc:#FF5A05;--btn:#FF5A05;--btntext:#111111;--text:#f2f2f2;--muted:#BBBBBB}
body{font-family:Montserrat,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.title,h2{font-family:Montserrat,system-ui,sans-serif;font-weight:800;letter-spacing:.5px}
.title .hh-head,.hh-word .hh-head{color:#fff}.title .hh-hand,.hh-word .hh-hand{color:#FF5A05}
.hh-word{font-family:Montserrat,system-ui,sans-serif;font-weight:800;letter-spacing:1px}
.act{border-color:#4a2a17;color:#FF7a33}
.big-btn,button.go,.act.primary{background:linear-gradient(135deg,#FF6A00,#EE2311);color:#fff;border:0}
.cta{border-color:#5a2a10;background:linear-gradient(160deg,#2a1608,#141414)}.cta a{color:#FFB27f}
.title{white-space:nowrap}
