:root{--g:#1f6f43;--g2:#e8f3ec;--ink:#17201b;--mute:#5b6660;--line:#dfe5e1;--bg:#f6f8f7;--y:#fff4cc;--yb:#e5b400;--o:#ffe6d5;--ob:#d9661f;--r:#c62f2f;--blue:#1d5fae;}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:18px;line-height:1.35;color:var(--ink);background:#fff}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid #2b7cd3;outline-offset:2px}
[hidden]{display:none!important}
h1,h2,h3{margin:0;line-height:1.2}
.logo{width:56px;height:56px;border-radius:14px;background:var(--g);color:#fff;font-weight:800;display:grid;place-items:center;font-size:22px;letter-spacing:.5px}
.logo.small{width:38px;height:38px;border-radius:10px;font-size:15px}

/* gate */
.gate{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px 32px;gap:12px}
.gate-brand{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:8px}
.gate-brand h1{font-size:26px}
.gate-sub{margin:0;color:var(--mute)}
.gate-label{margin:8px 0 0;font-size:20px;font-weight:600}
.dots{display:flex;gap:18px;margin:6px 0}
.dots span{width:18px;height:18px;border-radius:50%;border:2px solid var(--g)}
.dots span.on{background:var(--g)}
.dots.shake{animation:shake .35s}
@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.gate-error{min-height:24px;margin:0;color:var(--r);font-weight:600}
.keypad{display:grid;grid-template-columns:repeat(3,84px);gap:14px}
.keypad button{height:84px;border-radius:50%;border:1px solid var(--line);background:var(--bg);font-size:30px;font-weight:500}
.keypad button:active{background:var(--g2)}

/* app shell */
.app{min-height:100vh;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
.top{position:sticky;top:0;z-index:5;background:#fff;border-bottom:1px solid var(--line);padding:10px 14px 10px;padding-top:calc(10px + env(safe-area-inset-top))}
.brand{display:flex;align-items:center;gap:10px}
.brand-name{font-weight:800;font-size:19px}
.brand-sub{font-size:13px;color:var(--mute)}
.roles{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px;background:var(--bg);padding:4px;border-radius:14px}
.roles button{border:0;background:transparent;min-height:44px;border-radius:10px;font-size:16px;font-weight:600;color:var(--mute)}
.roles button[aria-pressed="true"]{background:#fff;color:var(--g);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.foreman-pick{display:flex;align-items:center;gap:8px;margin-top:8px}
.foreman-pick label{font-weight:600;font-size:16px}
.foreman-pick select{flex:1;min-height:46px;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:#fff;font-size:17px}
.view{max-width:1100px;margin:0 auto;padding:16px 14px 24px}
.view:focus{outline:none}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:6;background:#fff;border-top:1px solid var(--line);display:flex;padding-bottom:env(safe-area-inset-bottom)}
.tabs button{flex:1;border:0;background:none;min-height:66px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:13px;font-weight:600;color:var(--mute)}
.tabs button .ic{font-size:23px;line-height:1}
.tabs button[aria-current="page"]{color:var(--g)}

/* common */
.h{font-size:26px;font-weight:800;margin:2px 0 4px}
.sub{color:var(--mute);margin:0 0 14px;font-size:16px}
.card{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fff;margin-bottom:12px}
.card h3{font-size:19px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn{min-height:52px;border-radius:12px;border:1px solid var(--line);background:#fff;padding:0 16px;font-weight:700;font-size:17px}
.btn.pri{background:var(--g);border-color:var(--g);color:#fff}
.btn.big{width:100%;min-height:58px;font-size:19px}
.btn.sm{min-height:44px;font-size:15px;padding:0 12px}
.btn.warn{color:var(--r);border-color:#f0c4c4}
.btn.on{background:var(--g);color:#fff;border-color:var(--g)}
.btn.no.on{background:var(--r);border-color:var(--r)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pill{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--bg);font-size:14px;font-weight:700;color:var(--mute)}
.pill.g{background:var(--g2);color:var(--g)}
.pill.y{background:var(--y);color:#7a5c00}
.banner{border-radius:14px;padding:12px 14px;margin-bottom:14px;font-weight:600;background:var(--y);border:1px solid #f0d77a}
.muted{color:var(--mute)}
.small{font-size:14px}
.foot{margin-top:26px;font-size:14px;color:var(--mute);text-align:center}
.empty{padding:18px;text-align:center;color:var(--mute);border:1px dashed var(--line);border-radius:14px}

/* week */
.weeknav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.weeknav .mid{text-align:center}
.weeknav .mid b{font-size:22px;display:block}
.weeknav .arrow{width:52px;height:52px;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:24px}
.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.crews{display:grid;grid-template-columns:1fr;gap:12px}
@media (min-width:760px){.crews{grid-template-columns:1fr 1fr}}
@media (min-width:1050px){.crews{grid-template-columns:1fr 1fr 1fr}}
.group-h{grid-column:1/-1;margin:10px 0 0;font-size:18px;font-weight:800;color:var(--g);display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.group-h small{font-weight:600;color:var(--mute);font-size:14px}
.crew{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff}
.crew-h{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 12px 10px;background:var(--bg)}
.crew-h .nm{font-weight:800;font-size:18px}
.count{display:flex;align-items:center;gap:4px}
.count button{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:#fff;font-size:20px;font-weight:700}
.count b{min-width:58px;text-align:center;font-size:16px}
.day{display:flex;width:100%;align-items:center;gap:10px;border:0;border-top:1px solid var(--line);background:#fff;min-height:54px;padding:6px 12px;text-align:left}
.day .d{width:44px;font-weight:700;color:var(--mute);font-size:16px;flex:none}
.day .s{flex:1;font-weight:600}
.day .chev{color:#a6b0aa;font-size:20px}
.day.tbd .s{color:#7a5c00}
.day.tbd{background:var(--y)}
.day.q{background:var(--o)}
.day.q .s{color:#8a3c0b}
.day.emp .s{color:#a6b0aa;font-weight:500}
.day.off .s{color:var(--mute);font-weight:500}
.day.wk .d{width:74px}
.sugg-b{margin-bottom:14px;background:var(--g2);border-color:var(--g);color:var(--g);text-align:left}
.actions .btn{font-size:16px;padding:0 10px;line-height:1.15}
.day.mine{box-shadow:inset 4px 0 0 var(--g)}
.tick{color:var(--g);font-weight:800;font-size:15px}
.allweek{width:100%;border:0;border-top:1px solid var(--line);background:#fff;min-height:46px;color:var(--blue);font-weight:700;font-size:15px}
.ro .day{cursor:default}
.sugg{border:2px solid var(--g);background:var(--g2)}
.sugg .who{font-weight:800}
.sugg-item{background:#fff;border-radius:12px;padding:12px;margin-top:10px}

/* sheet */
.sheet{position:fixed;inset:0;z-index:20}
.sheet-back{position:absolute;inset:0;background:rgba(0,0,0,.35)}
.sheet-card{position:absolute;left:0;right:0;bottom:0;max-height:88vh;max-height:88dvh;background:#fff;border-radius:20px 20px 0 0;display:flex;flex-direction:column;max-width:640px;margin:0 auto;padding-bottom:env(safe-area-inset-bottom)}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:16px 16px 8px;gap:10px}
.sheet-head h2{font-size:21px}
.x{width:46px;height:46px;border-radius:50%;border:0;background:var(--bg);font-size:20px;flex:none}
.sheet-body{overflow:auto;padding:4px 16px 20px}
.sites{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}
.sites button{min-height:56px;border-radius:12px;border:1px solid var(--line);background:#fff;font-weight:600;font-size:16px;padding:6px 8px;line-height:1.15}
.sites button.cur{border:2px solid var(--g);background:var(--g2)}
.sites button.tbdb{background:var(--y);border-color:#f0d77a;font-weight:800}
.check{display:flex;align-items:center;gap:12px;min-height:52px;padding:6px 12px;border:1px solid var(--line);border-radius:12px;margin-top:8px;font-weight:600}
.check input{width:26px;height:26px;accent-color:var(--g);flex:none}
.wa{width:100%;min-height:340px;border:1px solid var(--line);border-radius:12px;padding:12px;font-size:15px;line-height:1.35;background:#fbfdfc;font-family:ui-monospace,Menlo,monospace;white-space:pre-wrap}
input.txt,textarea.txt{width:100%;min-height:52px;border:1px solid #c9d3cd;border-radius:12px;padding:10px 12px;font-size:18px;background:#fff}
textarea.txt{min-height:96px}

/* notes */
.seg{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--bg);padding:4px;border-radius:12px;margin:10px 0}
.seg button{border:0;background:transparent;min-height:44px;border-radius:9px;font-weight:700;color:var(--mute);font-size:16px}
.seg button[aria-pressed="true"]{background:#fff;color:var(--g);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.note{border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:10px}
.note .t{font-weight:700;font-size:19px;margin-bottom:8px;overflow-wrap:anywhere}
.note .meta{font-size:14px;color:var(--mute);margin-bottom:8px}
.sec{font-size:19px;font-weight:800;margin:20px 0 10px}
.phone-notif{background:#f2f2f6;border-radius:16px;padding:12px;margin-bottom:10px}
.phone-notif .app-n{font-size:13px;color:var(--mute);font-weight:700;text-transform:uppercase;letter-spacing:.4px;display:flex;justify-content:space-between}
.phone-notif .msg{margin-top:4px;font-weight:600}
.phone-notif ul{margin:4px 0 0;padding-left:20px}

/* foreman */
.att{border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:12px}
.att h3{font-size:20px}
.att .lbl{font-weight:700;margin:14px 0 6px}
.stepper{display:flex;align-items:center;gap:10px}
.stepper button{width:56px;height:56px;border-radius:12px;border:1px solid var(--line);background:#fff;font-size:26px;font-weight:700}
.stepper output{min-width:64px;text-align:center;font-size:26px;font-weight:800}
.times{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.times input{width:100%;min-height:54px;border:1px solid #c9d3cd;border-radius:12px;padding:0 10px;font-size:19px;background:#fff}
.daypills{display:flex;gap:6px;overflow-x:auto;margin-bottom:12px;padding-bottom:2px}
.daypills button{flex:1;min-width:58px;min-height:52px;border-radius:12px;border:1px solid var(--line);background:#fff;font-weight:700;font-size:15px;line-height:1.1}
.daypills button[aria-pressed="true"]{background:var(--g);color:#fff;border-color:var(--g)}
.ok{background:var(--g2);color:var(--g);font-weight:800;border-radius:12px;padding:12px;margin:10px 0;text-align:center}

/* payroll */
.sum{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.sum div{background:var(--bg);border-radius:12px;padding:10px;text-align:center}
.sum b{display:block;font-size:20px}
.sum span{font-size:13px;color:var(--mute);font-weight:600}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px;-webkit-overflow-scrolling:touch}
table.pay{border-collapse:separate;border-spacing:0;font-size:15px;min-width:1080px;width:100%}
.pay th,.pay td{padding:8px 8px;border-bottom:1px solid var(--line);text-align:center;vertical-align:middle;white-space:nowrap}
.pay thead th{background:#eef3f0;font-size:13px;text-transform:uppercase;letter-spacing:.3px;color:#34413a;position:sticky;top:0}
.pay th.nm,.pay td.nm{text-align:left;position:sticky;left:0;background:#fff;z-index:1;min-width:150px;max-width:170px;white-space:normal;font-weight:700;box-shadow:1px 0 0 var(--line)}
.pay thead th.nm{background:#eef3f0;z-index:2}
.pay td .site{display:block;font-size:11px;color:var(--mute);font-weight:500;max-width:96px;white-space:normal;line-height:1.1;margin:2px auto 0}
.pay td .otv{display:block;font-size:12px;color:var(--ob);font-weight:700}
.pay td.dw b{font-size:17px}
.pay td.pend{color:#a6b0aa}
.pay td.nof{color:#7a5c00;background:#fffaf0;font-size:12px;white-space:normal;min-width:80px}
.pay tr.appr td{background:#f1f9f4}
.pay tr.appr td.nm{background:#f1f9f4}
.pay tr.flag td{background:#fff1f1}
.pay tr.flag td.nm{background:#fff1f1}
.pay td.tot{font-weight:800}
.pay .chk{display:flex;gap:6px;justify-content:center}
.pay .chk button{min-height:44px;min-width:44px;padding:0 10px;border-radius:10px;border:1px solid var(--line);background:#fff;font-weight:700;font-size:14px}
.pay .chk button.a.on{background:var(--g);color:#fff;border-color:var(--g)}
.pay .chk button.f.on{background:var(--r);color:#fff;border-color:var(--r)}
.pay tfoot td{font-weight:800;background:#eef3f0}
.pay tfoot td.nm{background:#eef3f0}
.flagnote{font-size:12px;color:var(--r);font-weight:600;display:block;white-space:normal}

/* sites */
.siteRow{display:flex;justify-content:space-between;gap:10px;padding:12px 2px;border-bottom:1px solid var(--line)}
.siteRow b{font-size:18px}
.siteRow span{color:var(--mute);text-align:right;font-size:16px}
.siteRow span.none{color:#a07800;font-weight:600}

.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(20px);background:#17201b;color:#fff;padding:12px 18px;border-radius:12px;font-weight:600;opacity:0;pointer-events:none;transition:.25s;z-index:30;max-width:calc(100% - 32px);text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.top>*{max-width:1100px;margin-left:auto;margin-right:auto}
@media (min-width:760px){.roles{max-width:560px}}

.role-line{margin:8px 0 0;font-size:14px;color:var(--mute);line-height:1.3}
.role-line b{color:var(--ink)}
.net{margin:2px 0 0;font-size:13px;font-weight:700}
.net.live{color:var(--g)}
.net.local{color:#a07800}
.logrow{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:14px;padding:12px;margin-bottom:8px}
.logrow.miss{border-color:#f0c4c4;background:#fffafa}
.lr-main{flex:1;min-width:0}
.lr-name{font-weight:800;font-size:17px}
.lr-st{font-weight:600;margin-top:2px}
.lr-st.miss{color:var(--r)}
.lr-by{font-size:14px;color:var(--mute);margin-top:2px}
.lr-by b{color:var(--blue)}
.logrow .btn{flex:none;max-width:46%;line-height:1.15;white-space:normal}
.siteEdit{padding:10px 0;border-bottom:1px solid var(--line)}
.se-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.se-top b{font-size:18px}
.link{border:0;background:none;color:var(--blue);font-weight:700;font-size:16px;min-height:44px;padding:0 4px}
.se-sel{display:flex;align-items:center;gap:10px;margin-top:4px}
.se-sel span{flex:1;min-width:0;font-size:16px;color:var(--mute)}
.se-sel select{flex:1.4;min-width:0;min-height:46px;border:1px solid var(--line);border-radius:10px;padding:0 8px;background:#fff;font-size:16px}
.sheetlink{display:flex;align-items:center;justify-content:center;text-decoration:none;color:var(--g);border-color:var(--g);background:var(--g2);margin:6px 0 14px;text-align:center}
.pay .chk button:disabled{opacity:.4}

.pick-lbl{font-weight:600;font-size:16px}
.pick-btn{flex:1;min-height:46px;border:1px solid var(--line);border-radius:10px;padding:0 12px;background:#fff;font-size:17px;font-weight:700;text-align:left;color:var(--ink)}
.whos{display:grid;gap:8px}
.whos .btn{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;min-height:62px}
.whos .btn small{font-weight:500;font-size:14px;opacity:.75;overflow-wrap:anywhere}

/* sign-in */
.gate-box{width:100%;max-width:360px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}
.gate-text{margin:0;font-size:18px}
.gate-btn{width:100%;min-height:58px;font-size:20px}
.signout{margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:10px;min-height:40px;padding:0 12px;font-size:15px;font-weight:600;color:var(--mute)}
.person{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}
.person:last-child{border-bottom:0}
.p-info{flex:1 1 200px;min-width:0}
.p-act{display:flex;gap:8px;flex-wrap:wrap}
.linkbox{width:100%;font-size:14px;margin:8px 0 10px;word-break:break-all;resize:none}

label.se-sel:not(.siteEdit)>span{flex:0 0 auto}

.gate-for{margin:6px auto 0;display:inline-block;padding:4px 12px;border-radius:999px;background:#e7f2ec;color:#1f6f43;font-weight:700;font-size:15px}

/* named workers: check each by name (big tap rows) */
.who-list{display:grid;gap:8px}
.who{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:8px 12px;border:2px solid var(--line);border-radius:12px;background:#fff;text-align:left;font-size:18px;font-weight:700;color:var(--ink)}
.who .box{flex:none;width:30px;height:30px;border-radius:8px;border:2px solid #9aa8a0;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:900;color:#fff;background:#fff}
.who.on{border-color:var(--g);background:var(--g2)}
.who.on .box{background:var(--g);border-color:var(--g)}
.who:not(.on) .wn{color:var(--mute);text-decoration:line-through;text-decoration-thickness:1px}
.who small{font-size:13px;font-weight:700;margin-left:6px;padding:2px 8px;border-radius:999px;vertical-align:2px}
.who small.head{background:var(--bg);color:var(--mute)}
.who small.own{background:var(--y);color:#7a5c00}
.sumline{margin-top:12px;padding:10px 12px;border-radius:12px;background:var(--bg);font-weight:800;font-size:17px}
.btn.more{width:100%;margin-top:12px;min-height:52px;font-size:17px;color:var(--blue);border-style:dashed}
.more-box{margin-top:10px}
.pcard{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:10px;background:#fff}
.pcard.own{border-color:var(--yb);background:#fffdf3}
.pc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:18px;min-height:44px}
.pcard .lbl{margin:8px 0 4px}
.pcard .stepper{gap:6px}
.pcard .stepper button{width:46px;height:50px;font-size:24px}
.pcard .stepper output{min-width:46px;font-size:22px}
.otv.own{background:var(--y);color:#7a5c00}
.times>div{min-width:0}
.pcard .times input{font-size:17px;padding:0 6px;min-height:50px}
.pcard .stepper button{width:42px}
.pcard .stepper output{min-width:36px}

/* ===== compact (Oct 26): smaller type and spacing so a whole day fits on one phone screen ===== */
body{font-size:15px;line-height:1.3}
.top{padding:6px 12px;padding-top:calc(6px + env(safe-area-inset-top))}
.logo.small{width:30px;height:30px;border-radius:8px;font-size:12px}
.brand-name{font-size:15px}
.brand-sub{font-size:11px}
.roles{margin-top:6px;padding:3px;border-radius:11px;gap:4px}
.roles button{min-height:36px;font-size:14px;border-radius:8px}
.foreman-pick{margin-top:5px}
.pick-lbl{font-size:14px}
.pick-btn{min-height:38px;font-size:15px}
.role-line{margin:4px 0 0;font-size:12px}
.net{font-size:11px}
.view{padding:10px 12px 18px}
.app{padding-bottom:calc(62px + env(safe-area-inset-bottom))}
.tabs button{min-height:54px;font-size:11px;position:relative}
.tabs button .ic{font-size:19px}
.badge{position:absolute;top:4px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--r);color:#fff;font-size:11px;font-weight:800;line-height:18px}
.h{font-size:20px;margin:0 0 2px}
.hrow{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.hrow .h{margin:0}
.sub{font-size:14px;margin:0 0 8px}
.card{border-radius:12px;padding:10px;margin-bottom:10px}
.card h3{font-size:16px}
.btn{min-height:44px;border-radius:10px;font-size:15px;padding:0 12px}
.btn.big{min-height:48px;font-size:16px}
.btn.sm{min-height:40px;font-size:14px;padding:0 10px}
.btn.no{color:var(--r);border-color:#f0c4c4}
.pill{font-size:12px;padding:2px 8px}
.pill.r{background:var(--r);color:#fff}
.banner{padding:9px 11px;margin-bottom:10px;font-size:14px;border-radius:11px}
.small{font-size:13px}
.foot{margin-top:18px;font-size:12px}
.empty{padding:12px}
.weeknav{margin-bottom:8px}
.weeknav .mid b{font-size:17px}
.weeknav .arrow{width:44px;height:44px;font-size:20px}
.actions{gap:8px;margin-bottom:10px}
.actions .btn{font-size:14px}
.crews{gap:8px}
.group-h{font-size:15px;margin:6px 0 0}
.group-h small{font-size:12px}
.crew{border-radius:12px}
.crew-h{padding:7px 10px}
.crew-h .nm{font-size:15px}
.count button{width:36px;height:36px;font-size:17px}
.count b{min-width:48px;font-size:14px}
.day{min-height:42px;padding:4px 10px;gap:8px}
.day .d{width:38px;font-size:13px}
.day.wk .d{width:62px}
.tick{font-size:13px}
.allweek{min-height:38px;font-size:13px}
.sheet-head{padding:12px 14px 6px}
.sheet-head h2{font-size:17px}
.x{width:40px;height:40px;font-size:17px}
.sheet-body{padding:2px 14px 16px}
.sites button{min-height:46px;font-size:14px}
.check{min-height:44px;font-size:14px}
input.txt,textarea.txt,select.txt{width:100%;min-height:44px;border:1px solid #c9d3cd;border-radius:10px;padding:8px 10px;font-size:16px;background:#fff}
textarea.txt{min-height:80px}
.seg{margin:6px 0}
.seg button{min-height:38px;font-size:14px}
.note{border-radius:11px;padding:9px 10px;margin-bottom:8px}
.note .t{font-size:15px;margin-bottom:4px}
.note .meta{font-size:12.5px;margin-bottom:6px}
.note.newreq{border:2px solid var(--r);background:#fff6f6}
.sec{font-size:16px;margin:14px 0 8px}
.phone-notif{padding:9px 10px;border-radius:12px;margin-bottom:8px}
.phone-notif .app-n{font-size:11px}
.noteform{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.noteform input.txt{flex:1 1 100%}
.noteform .sitesel{flex:1 1 55%;width:auto}
.noteform .btn{flex:1 1 30%}
.alertsline{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--mute);background:var(--bg);border-radius:10px;padding:6px 10px;margin:4px 0 6px}
.alertsline span{flex:1}
.reqbanner{display:grid;grid-template-columns:1fr auto;gap:2px 10px;width:100%;text-align:left;border:0;border-radius:12px;background:var(--r);color:#fff;padding:10px 12px;margin:0 0 10px;font-size:14px}
.reqbanner b{font-size:16px}
.reqbanner span{grid-column:1;opacity:.95;font-size:13px}
.reqbanner .go{grid-column:2;grid-row:1/3;align-self:center;font-weight:800;font-size:15px;opacity:1}
/* foreman Today: one line per crew */
.daypills{gap:4px;margin-bottom:8px}
.daypills button{min-width:52px;min-height:40px;font-size:13px;border-radius:10px}
.daypills.sm button small{font-weight:500;opacity:.8}
.sendall{margin:2px 0 6px;min-height:54px;font-size:17px;box-shadow:0 2px 6px rgba(31,111,67,.25)}
.hint{margin:0 0 6px}
.ok{padding:8px 10px;margin:6px 0;font-size:14px;border-radius:10px}
.crows{display:grid;gap:6px}
.crow{border:1px solid var(--line);border-radius:11px;background:#fff;overflow:hidden}
.crow.done{border-color:#b9dcc6}
.crow.nob{background:#fff6f6;border-color:#f0c4c4}
.crow.open{border:2px solid var(--g)}
.crow-h{display:flex;align-items:center;gap:8px;width:100%;min-height:46px;padding:6px 10px;border:0;background:none;text-align:left;color:var(--ink)}
.crow-h .cn{flex:1 1 auto;min-width:0;font-weight:800;font-size:14px;line-height:1.2}
.crow-h .cs{flex:0 1 auto;font-weight:700;font-size:14px;color:var(--g);text-align:right}
.crow.nob .crow-h .cs{color:var(--r)}
.crow-h .ce{flex:none;color:var(--blue);font-size:15px;width:18px;text-align:center}
.okt{color:var(--g);font-weight:700;font-size:11px}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chips.ro{padding:0 10px 7px;margin-top:-3px}
.chip{display:inline-flex;align-items:center;gap:3px;border:1.5px solid var(--line);border-radius:999px;padding:2px 9px;font-size:13px;font-weight:700;background:#fff;color:var(--mute);line-height:1.3}
.chips.ro .chip.on{background:var(--g2);border-color:#cfe5d7;color:var(--g)}
.chips.ro .chip.offc{text-decoration:line-through;opacity:.7}
button.chip{min-height:40px;padding:4px 12px;font-size:14px}
button.chip.on{background:var(--g2);border-color:var(--g);color:var(--g)}
button.chip:not(.on){text-decoration:line-through}
.chip small{font-size:10.5px;font-weight:700;opacity:.75}
.ed{padding:2px 10px 10px;border-top:1px solid var(--line)}
.ed .lbl,.att .lbl{font-weight:700;font-size:13px;margin:8px 0 4px;color:var(--mute)}
.steprow{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}
.steprow .lbl{margin:0}
.stepper.sm{gap:6px}
.stepper.sm button{width:44px;height:40px;font-size:20px;border-radius:10px}
.stepper.sm output{min-width:34px;font-size:18px}
.stepper button{width:46px;height:44px;font-size:22px}
.stepper output{min-width:44px;font-size:20px}
.ed .times,.pcard .times{margin-top:8px;gap:8px}
.times label{display:flex;align-items:center;gap:6px;font-weight:700;font-size:13px;color:var(--mute)}
.times input,.pcard .times input{min-height:42px;font-size:16px;padding:0 6px;border-radius:10px;flex:1;min-width:0}
.otline{margin:6px 0 0}
.ed-row{display:flex;gap:6px;margin-top:8px}
.ed-row .btn{flex:1}
.reqbtn{width:100%;margin-top:12px;color:var(--blue);border-style:dashed}
.sumline{margin-top:6px;padding:7px 10px;border-radius:10px;font-size:14px}
.more-box{margin-top:8px}
.pcard{padding:7px 9px;margin-bottom:6px;border-radius:10px}
.pc-top{font-size:14px;min-height:36px}
.logrow{padding:8px 10px;margin-bottom:6px;border-radius:11px;gap:8px}
.lr-name{font-size:14px}
.lr-st{font-size:14px}
.lr-by{font-size:12px}
.siteEdit{padding:6px 0}
.se-top b{font-size:15px}
.se-sel span{font-size:14px}
.se-sel select{min-height:40px;font-size:14px}
.siteRow{padding:8px 2px}
.siteRow b{font-size:14px}
.siteRow span{font-size:13px}
.link{font-size:14px;min-height:40px}
.whos .btn{min-height:52px}
.sum b{font-size:17px}
table.pay{font-size:13px}
.toast{bottom:calc(72px + env(safe-area-inset-bottom));font-size:14px}
.regtable{padding:4px 10px}
.rt-row{display:grid;grid-template-columns:1fr repeat(var(--rn,2),58px);align-items:center;gap:4px;border-bottom:1px solid var(--line);min-height:44px}
.rt-row:last-child{border-bottom:0}
.rt-h{font-size:12px;font-weight:800;color:var(--mute);min-height:30px}
.rt-h span:not(:first-child){text-align:center}
.rt-s{font-weight:700;font-size:14px}
.rt-c{display:flex;justify-content:center;align-items:center;min-height:44px}
.rt-c input{width:24px;height:24px;accent-color:var(--g)}

/* Active bottom tab: solid green pill, white text + icon (Effy, Oct 25) */
.tabs button{position:relative;isolation:isolate}
.tabs button[aria-current="page"]{color:#fff}
.tabs button[aria-current="page"]::before{content:"";position:absolute;inset:5px 4px;background:var(--g);border-radius:12px;z-index:-1;box-shadow:0 1px 3px rgba(0,0,0,.18)}

/* Suggest a change */
.idea-btn{margin-left:auto;flex:none;border:1px solid var(--g);background:var(--g2,#e8f3ec);color:var(--g);font-weight:700;font-size:13px;min-height:36px;padding:0 10px;border-radius:18px;white-space:nowrap}
.idea-btn:active{background:var(--g);color:#fff}
.idea-lbl{display:block;font-weight:700;font-size:14px;margin:8px 0 4px}
.idea-done{text-align:center;padding:10px 0 4px}
.idea-done p{font-size:16px;margin:8px 0 14px}
.idea-ok{width:52px;height:52px;border-radius:26px;background:var(--g);color:#fff;font-size:28px;font-weight:800;display:grid;place-items:center;margin:4px auto 0}
.ideas-h{display:flex;align-items:center;gap:8px}
.badge-inline{font-size:12px;font-weight:700;color:#fff;background:var(--r);border-radius:10px;padding:1px 8px}
.badge-inline:empty{display:none}
.idea{padding:8px 0;border-bottom:1px solid var(--line)}
.idea:last-child{border-bottom:0}
.idea-top{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap;font-size:14px}
.idea-st{margin-left:auto;font-size:12px;font-weight:700;border-radius:8px;padding:1px 8px;background:var(--bg);color:var(--mute)}
.st-new .idea-st{background:#fff4d6;color:#8a6200}
.st-approved .idea-st{background:var(--g);color:#fff}
.st-declined .idea-st{background:#fbe3e3;color:var(--r)}
.st-declined .idea-text{color:var(--mute)}
.idea-meta{font-size:12px;margin-top:1px}
.idea-text{margin:4px 0 6px;font-size:15px;white-space:pre-wrap;overflow-wrap:anywhere}
.idea-btns{display:flex;gap:8px}
.idea-btns .btn{flex:1}

.pay button.otx{margin-top:4px;min-height:32px;padding:2px 8px;border:1px solid var(--line,#ccd);border-radius:8px;background:#fff;font:inherit;font-size:13px;font-weight:700;white-space:nowrap}
.pay button.otx:disabled{opacity:.7}

/* "Left early – did they go to another job site?" */
.mvq{margin:8px 0;padding:10px;border-radius:10px;border:2px solid var(--yb);background:var(--y)}
.mvq.no{border-color:var(--line);background:var(--bg)}
.mvq.yes{border-color:var(--g);background:var(--g2)}
.mvq-t{font-weight:700;margin-bottom:8px}
.mvq .two{display:flex;gap:8px}.mvq .two .btn{flex:1;min-height:44px}
.mvq-a{font-size:14px;margin-top:6px}
.mvq-s{display:flex;align-items:center;gap:8px;margin-bottom:6px}.mvq-s select{flex:1;min-height:44px;border:1px solid var(--line);border-radius:10px;padding:0 8px;background:#fff;font-size:15px}
.mvq.pulse{animation:mvp 1s ease 2}@keyframes mvp{50%{box-shadow:0 0 0 4px var(--yb)}}
.mvline{font-size:13px;margin:2px 12px 8px;color:var(--g);font-weight:700}.mvline.ask{color:#8a6400}
.lr-mv{font-size:13px;color:var(--g);font-weight:700;margin-top:2px}
.logrow.mvrow{border-left:4px solid var(--g)}

.mvbanner{display:grid;grid-template-columns:1fr auto;gap:2px 10px;width:100%;text-align:left;border:2px solid var(--yb);border-radius:12px;background:var(--y);color:var(--ink);padding:10px 12px;margin:0 0 10px;font-size:14px}
.mvbanner b{font-size:16px}.mvbanner span{grid-column:1;font-size:13px}
.mvbanner .go{grid-column:2;grid-row:1/3;align-self:center;font-weight:800;font-size:15px}
.lr-mv.unk{color:#8a6400;background:var(--y);border-radius:8px;padding:4px 6px}

/* ---------- install as an app ---------- */
.gate-inst{margin-top:6px;border:1px solid var(--g);background:var(--g2);color:var(--g);font-weight:700;min-height:44px;padding:0 18px;border-radius:22px}
.inst-link{font-size:inherit;min-height:32px;padding:0 2px}
.inst-card{display:flex;align-items:center;gap:12px;justify-content:space-between;margin-bottom:14px}
.inst-card .inst-btn{flex:none;white-space:nowrap}
.inst-head{display:flex;gap:12px;align-items:center;margin:0 0 12px}
.inst-head img{border-radius:12px;flex:none}
.inst-head p{margin:2px 0 0;color:var(--mute);font-size:14px}
.inst-warn{background:var(--y);border:1px solid var(--yb);border-radius:10px;padding:8px 10px;margin:0 0 10px;font-size:14px}
.inst-warn .link{font-size:14px;min-height:28px}
.inst-chrome{display:block;text-align:center;text-decoration:none;margin:0 0 10px;line-height:48px}
.inst-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.inst-steps li{display:flex;gap:10px;align-items:flex-start}
.inst-steps small{display:block;color:var(--mute);margin-top:4px}
.inst-n{flex:none;width:26px;height:26px;border-radius:50%;background:var(--g);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px}
.inst-steps li>div{flex:1;min-width:0}
.inst-pic{margin-top:6px;background:#f2f2f7;border:1px solid var(--line);border-radius:12px;padding:8px}
.mock-bar{display:flex;justify-content:space-around;align-items:center;color:#0a84ff;font-size:18px;height:34px}
.mock-bar .hl,.mock-sheet .hl,.mock-add .hl{outline:3px solid #ff9f0a;outline-offset:2px;border-radius:8px}
.mock-bar .hl{display:grid;place-items:center;width:34px;height:30px}
.mock-sheet{background:#fff;border-radius:10px;overflow:hidden}
.ms-row{display:flex;justify-content:space-between;align-items:center;padding:9px 12px;border-bottom:1px solid #e5e5ea;font-size:15px;color:#111}
.ms-row:last-child{border-bottom:0}
.ms-row.hl{outline-offset:-3px;font-weight:600}
.mock-add{display:flex;align-items:center;gap:10px;background:#fff;border-radius:10px;padding:8px 10px}
.mock-add img{border-radius:10px}
.mock-add span{flex:1;font-weight:600}
.mock-add b{color:#0a84ff;padding:2px 8px}

/* job site cards (2+ sites on a screen): each site its own bordered card, thick colored band, wide gap */
.sitecard{--sc:#1f6f43;border:3px solid var(--sc);border-radius:18px;overflow:hidden;margin:0 0 30px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.sitecard:last-child{margin-bottom:12px}
.sc-band{background:var(--sc);color:#fff;padding:12px 14px;display:flex;align-items:center;gap:10px}
.sc-tx{flex:1 1 auto;min-width:0}
.sc-k{font-size:14px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;opacity:.92}
.sc-n{font-size:24px;font-weight:900;line-height:1.15;text-transform:uppercase;letter-spacing:.02em;overflow-wrap:anywhere}
.sc-r{flex:none;background:rgba(255,255,255,.95);color:var(--sc);font-weight:800;font-size:14px;border-radius:999px;padding:4px 10px;white-space:nowrap}
.sc-body{padding:12px;background:#fbfcfb;background:color-mix(in srgb,var(--sc) 5%,#fff)}
.sc-body .crows{gap:8px}
.sc-body .crow.open{border-color:var(--sc)}
.btn.pri.sc-send{background:var(--sc);border-color:var(--sc);margin:12px 0 0;white-space:normal;line-height:1.2;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.sc-ok{margin:12px 0 0}
.sc-note{margin:8px 0 0;text-align:center}
.sc-empty{margin:-14px 0 16px}
.sc-body .logrow:last-child{margin-bottom:0}
.sc-body .crew{background:#fff}
.sc-body .crew:last-child{margin-bottom:0}
.fri-sites{display:grid;gap:8px;margin:8px 0 12px}
.fri-site{border-left:6px solid var(--sc);background:#f6f8f7;border-radius:8px;padding:8px 10px;display:flex;flex-direction:column}
.fri-site b{color:var(--sc)}
.sc-f{font-size:15px;font-weight:700;opacity:.92;margin-top:2px}

/* simple iPhone install guide: 3 big steps */
.inst-big{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-direction:column;gap:22px}
.inst-big li{display:flex;gap:14px;align-items:flex-start;font-size:23px;line-height:1.3}
.inst-big li>div{flex:1;min-width:0;padding-top:4px}
.inst-bn{flex:none;width:42px;height:42px;border-radius:50%;background:var(--g);color:#fff;display:grid;place-items:center;font-weight:800;font-size:22px}
.inst-pic-sm{margin-top:8px;padding:4px 8px;max-width:240px}
.inst-then{margin:24px 0 6px;font-size:20px;line-height:1.35;color:var(--ink,#111)}

/* ===== Dynamic logo (Oct 26): replaces the FM badge ===== */
.dyn-logo{display:block;width:150px;height:auto;margin:0 auto 2px}
.dyn-mark{display:block;width:auto;height:30px;flex:0 0 auto}

/* last week's site as a gray hint in an empty box (not saved until tapped) */
.day.hint{cursor:pointer}
.day.hint .hintb{flex:1;display:flex;align-items:center;min-height:40px;margin:0;padding:4px 10px;border:1.5px dashed #c3ccc6;border-radius:10px;background:#f4f6f5;color:#8b9590;font-weight:600;font-size:16px;text-align:left;line-height:1.15;cursor:pointer}
.day.hint .hintb .hs{color:#7d8781}
.day.hint .hintb .hl{color:#a6b0aa;font-weight:500;font-size:13px;white-space:nowrap;margin-left:2px}
.day.hint .hintb:active{background:#e9eeeb}
.day.hint .pickb{flex:none;min-width:36px;min-height:40px;border:0;background:none;padding:0;cursor:pointer}
.rowacts{display:flex;align-items:stretch;border-top:1px solid var(--line)}
.rowacts .allweek{flex:1;border-top:0}
.rowacts .cpyrow{flex:none;border:0;border-left:1px solid var(--line);background:#fff;color:var(--g);font-weight:700;font-size:13px;padding:0 12px;min-height:38px;white-space:nowrap;cursor:pointer}
.hintkey{display:inline-block;padding:0 6px;border:1.5px dashed #c3ccc6;border-radius:6px;background:#f4f6f5;color:#7d8781;font-weight:600}
.sites button.lastwk{grid-column:1/-1;border:2px dashed #b9c3bd;background:#f4f6f5;color:#3d4641}
.sites button.lastwk.cur{border:2px solid var(--g);background:var(--g2)}
.sites button.lastwk .lwtag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:8px;background:#e3e8e5;color:#6b756f;font-size:12px;font-weight:700;vertical-align:middle}
/* one crew's WhatsApp (Effy/Office) */
.crew-h .nm{min-width:0}
.cwa-b{display:inline-flex;align-items:center;gap:3px;vertical-align:middle;margin-left:6px;min-height:30px;padding:0 9px;border-radius:15px;border:1px solid #1fa855;background:#25d366;color:#08331a;font-weight:800;font-size:12.5px;white-space:nowrap;cursor:pointer}
.cwa-to{display:flex;gap:8px;margin-bottom:8px}
.cwa-to label{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.cwa-to label span{font-size:13px;color:var(--mute);font-weight:700}
.cwa-to input.txt{min-height:42px;font-size:16px;padding:6px 10px}
textarea.wa.cwa{min-height:230px;font-family:inherit;font-size:16px;background:#fff}
.cwa-btns{display:flex;gap:8px;margin-top:10px}
.cwa-btns .btn{flex:1;display:flex;align-items:center;justify-content:center;text-decoration:none}
.cwa-btns .btn.wa-go{flex:1.6;background:#25d366;border-color:#1fa855;color:#08331a}
.se-info{margin-top:6px;border:1px solid var(--line);border-radius:10px;background:#fbfdfc}
.se-info summary{padding:8px 10px;font-size:14px;color:var(--mute);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.se-info[open] summary{border-bottom:1px solid var(--line)}
.se-info>label,.se-info>p{margin:6px 10px}
.se-f{display:flex;flex-direction:column;gap:2px}
.se-f>span:first-child{font-size:13px;color:var(--mute);font-weight:700}
.se-f input.txt{min-height:40px;font-size:15px;padding:6px 10px}
.se-two{display:flex;gap:6px}
.se-two select{flex:0 0 auto;min-height:40px;border:1px solid #c9d3cd;border-radius:10px;padding:0 6px;background:#fff;font-size:15px}
.se-two input.txt{flex:1;min-width:0}
.se-info>p{margin-bottom:8px}

/* ---------- week grid (crews × Sun–Fri) ---------- */
.gridwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 8px}
.wgrid{width:100%;min-width:340px;border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:11px}
.wgrid th,.wgrid td{padding:0}
.wgrid thead th{background:#fff;font-size:11px;font-weight:700;color:var(--mute);text-align:center;padding:2px 0 4px;line-height:1.1;border-bottom:1px solid var(--line)}
.wgrid thead th small{display:block;font-weight:500;font-size:10px;color:#8b9590}
.wgrid thead th.today{color:var(--g)}
.wgrid thead th.today small{color:var(--g);font-weight:700}
.wgrid th.cn{width:84px;position:sticky;left:0;z-index:3;background:#fff;text-align:left}
.wgrid thead th.cn{padding-left:2px}
.wgrid tbody th.cn{font-weight:400;vertical-align:middle}
.wgrid tbody tr:not(.gh)>*{border-bottom:1px solid #eef1ef}
.wgrid .cnb{font-family:inherit;box-shadow:none;border-radius:6px}
.cnb{display:flex;flex-direction:column;justify-content:center;width:100%;min-height:42px;padding:2px 4px 2px 2px;border:0;background:none;text-align:left;line-height:1.12}
th.cn.haswa .cnb{padding-right:29px}
.cnn{font-weight:800;font-size:11.5px;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:break-word;font-family:inherit}
.cng{font-size:10.5px;color:var(--mute);margin-top:1px}
button.cnb:active{background:var(--g2)}
.cwa-b.gwa{background:#e8f8ef;border-color:#7fd9a2;position:absolute;right:2px;top:50%;transform:translateY(-50%);margin:0;padding:0;width:26px;min-height:36px;height:36px;border-radius:8px;justify-content:center;font-size:14px}
td.gc{padding:3px 1px;vertical-align:middle}
td.gc.jl{padding-left:0}
td.gc.jr{padding-right:0}
td.gc.today{background:#f1f8f4}
.ch{position:relative;display:block;width:100%;min-height:38px;margin:0;padding:0 2px;border:0;border-radius:8px;font-size:11px;font-weight:700;line-height:38px;text-align:center;color:#fff;background:var(--c,#5b6660);white-space:nowrap;overflow:visible}
.ch .rl{position:absolute;left:0;top:0;bottom:0;width:calc(var(--n,1) * 100% + (var(--n,1) - 2) * 1px);min-width:100%;padding:0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;z-index:1;pointer-events:none;letter-spacing:-.1px;line-height:38px}
.ch.jl{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:inset 1px 0 0 rgba(255,255,255,.3)}
.ch.jr{border-top-right-radius:0;border-bottom-right-radius:0}
.ch.st:active,.ch.tbd:active,.ch.off:active{filter:brightness(.9)}
.ch.q{background:repeating-linear-gradient(135deg,var(--c) 0 6px,color-mix(in srgb,var(--c) 75%,#000) 6px 9px)}
.ch.tbd{background:var(--y);color:#7a5c00;box-shadow:inset 0 0 0 1.5px var(--yb)}
.ch.off{background:#e6eae8;color:#5b6660}
.ch.emp{background:#fff;color:#b5bdb8;border:1.5px dashed #d5dcd8;font-size:16px;font-weight:500;line-height:35px}
.ch.emp.ro{border-color:transparent;color:#c9d0cc;font-size:13px}
.ch.hint{background:#f4f6f5;color:#7d8781;border:1.5px dashed #c3ccc6;font-weight:600;font-size:10.5px;line-height:35px;overflow:visible}
.ch.hint.jl{border-left:0}
.ch.hint.jr{border-right:0}
.ch.hint .rl{line-height:35px}
.ch.hint:active{background:#e9eeeb}
.ch .cf{position:absolute;right:1px;top:1px;z-index:2;font-style:normal;font-size:9px;line-height:12px;width:12px;height:12px;border-radius:50%;background:#fff;color:var(--g);font-weight:900;text-align:center}
.ch .cf.no{color:var(--r)}
.ch.notmine{background:color-mix(in srgb,var(--c) 30%,#fff);color:color-mix(in srgb,var(--c) 65%,#000)}
.ch.mine{--rg:2.5px;box-shadow:inset 0 var(--rg) 0 var(--ink),inset 0 calc(-1 * var(--rg)) 0 var(--ink),inset var(--rg) 0 0 var(--ink),inset calc(-1 * var(--rg)) 0 0 var(--ink)}
.ch.mine.jl{box-shadow:inset 0 var(--rg) 0 var(--ink),inset 0 calc(-1 * var(--rg)) 0 var(--ink),inset calc(-1 * var(--rg)) 0 0 var(--ink)}
.ch.mine.jr{box-shadow:inset 0 var(--rg) 0 var(--ink),inset 0 calc(-1 * var(--rg)) 0 var(--ink),inset var(--rg) 0 0 var(--ink)}
.ch.mine.jl.jr{box-shadow:inset 0 var(--rg) 0 var(--ink),inset 0 calc(-1 * var(--rg)) 0 var(--ink)}
.wgrid tr.gh th{padding:12px 0 4px;text-align:left;background:#fff;position:static}
.wgrid tr.gh th>span{position:sticky;left:0;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:800;color:var(--g);padding-left:2px}
.wgrid tr.gh th small{font-weight:600;font-size:11px;color:var(--mute)}
.wgrid tr.gh.site th>span{color:var(--c)}
.wgrid tr.gh.site th{border-top:3px solid var(--c);padding-top:7px}
.sdot{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--c);flex:none;vertical-align:middle;margin-right:6px}
.wgrid tr.gh .sdot{margin-right:0}
.legend{display:flex;flex-wrap:wrap;gap:5px 10px;margin:6px 0;font-size:12px;color:var(--ink)}
.legend .lg{display:inline-flex;align-items:center;gap:5px}
.legend .lg i{font-style:normal;display:inline-block;padding:2px 5px;border-radius:5px;background:var(--c);color:#fff;font-size:10.5px;font-weight:700}
.legend .lg.mine{font-weight:800}
.gkey{margin:2px 0 0}
.gkey .k{display:inline-block;padding:0 4px;border-radius:4px;font-size:11px;font-weight:700}
.gkey .k.tbd{background:var(--y);color:#7a5c00}
.gkey .k.q{background:repeating-linear-gradient(135deg,#7b8a83 0 5px,#5f6c66 5px 8px);color:#fff}
.gkey .k.hint{background:#f4f6f5;color:#8b9590;border:1px dashed #c3ccc6}
.pk-when{margin:0 0 4px;font-size:16px}
.sites button .sdot{margin-right:7px}
.cm-count{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 0 12px}
.btn.wa-go{background:#25d366;border-color:#1fa855;color:#08331a}
.se-col{width:46px;min-width:46px;height:40px;padding:2px;border:1px solid var(--line);border-radius:8px;background:#fff;flex:none}
.ch .rl.one{display:flex;align-items:center;justify-content:center;white-space:normal;line-height:1.05;font-size:10.5px;letter-spacing:-.2px;padding:0 2px;word-break:keep-all;overflow-wrap:normal}
.ch .qm{position:absolute;left:1px;top:1px;z-index:2;font-style:normal;font-size:9px;line-height:12px;width:12px;height:12px;border-radius:50%;background:#fff;color:var(--ob);font-weight:900;text-align:center}

/* Foremen (regional "My Foremen", Office "Foremen", Effy in Site Settings): big buttons, plain words */
.tm-add{margin:4px 0 12px}
.tm-free{font-size:15px;line-height:1.9;margin:0 0 12px}
.tm-card .tm-top{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:8px}
.tm-card .tm-top b{font-size:18px}
.tm-jobs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.tm-chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 4px 0 12px;border:1px solid var(--line);border-radius:999px;background:#f6f8f7;font-weight:700;font-size:15px}
.tm-chip.tm-none{min-height:32px;padding:0 10px;font-weight:600;color:#555;background:#fff}
.tm-x{border:0;background:#fde8e8;color:var(--r);width:34px;height:34px;border-radius:50%;font-size:20px;font-weight:800;line-height:1;cursor:pointer}
.tm-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tm-give{background:var(--g2);border-color:var(--g);color:var(--g);min-height:48px;font-size:16px}
.tm-del{color:var(--r);margin-left:auto}
.tm-pick{display:grid;gap:8px;margin:10px 0}
.tm-pick button{display:flex;align-items:center;gap:10px;text-align:left;min-height:58px;border-radius:12px;border:1px solid var(--line);background:#fff;font-weight:700;font-size:17px;padding:8px 12px}
.tm-pick button small{display:block;font-weight:500;font-size:13px;color:#666;margin-top:2px}

/* one company message (MJV) on the group header */
.cwa-b.gwa-g{margin-left:8px;min-height:32px;padding:0 10px;font-size:12px;background:#e8f8ef;border-color:#7fd9a2}

/* ---------- Oct 26 "C + D": slim header, bigger bottom tabs with plain titles, one Settings page ---------- */
.top{padding:4px 12px;padding-top:calc(4px + env(safe-area-inset-top))}
.brand{gap:7px;min-height:38px}
.brand .dyn-mark{width:auto;height:22px}
.brand-name{font-size:16px;font-weight:800;white-space:nowrap}
.brand-name .brand-sub{font-size:11px;font-weight:600;color:var(--mute);margin-left:4px}
.top .net{margin:0 0 0 2px;font-size:11px;white-space:nowrap}
.idea-btn{min-height:32px;font-size:13px;padding:0 10px}
.viewas{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px;background:#fff7e0;border:1px solid #f0d58a;border-radius:10px;padding:3px 4px 3px 9px;font-size:13px}
.viewas[hidden]{display:none}
.va-t{flex:1;min-width:0}
.va-b{border:1px solid var(--line);background:#fff;border-radius:8px;min-height:36px;padding:0 10px;font-size:13px;font-weight:700;color:var(--ink)}
.va-back{background:var(--g);border-color:var(--g);color:#fff}
.tabs{box-shadow:0 -2px 8px rgba(0,0,0,.06)}
.tabs button{min-height:70px;font-size:13.5px;font-weight:700;gap:3px;padding:6px 0 4px}
.tabs button .ic{font-size:25px;line-height:1}
.tabs button .tl{line-height:1.1;white-space:nowrap}
.tabs button[aria-current="page"]::before{inset:5px 3px;border-radius:14px}
.tabs .badge{top:5px;left:calc(50% + 8px)}
.app{padding-bottom:calc(80px + env(safe-area-inset-bottom))}
/* Settings: grouped rows, each opens its own page */
.set-h{font-size:12px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--mute);margin:16px 2px 6px}
.set-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.set-row{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:8px 12px;border:0;border-bottom:1px solid #eef1ef;background:#fff;text-align:left;font:inherit;color:var(--ink);position:relative}
.set-row:last-child{border-bottom:0}
.set-row:active{background:#f3f7f4}
.sr-ic{font-size:22px;width:28px;text-align:center;flex:none}
.sr-t{flex:1;min-width:0;display:flex;flex-direction:column}
.sr-t b{font-size:16px}
.sr-t small{font-size:12.5px;color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sr-go{font-size:22px;color:#a3aca7;flex:none}
.set-row .sr-b{position:static;flex:none}
.set-back{border:0;background:none;color:var(--g);font-weight:700;font-size:16px;padding:6px 0;min-height:40px}
.se-acts{display:flex;gap:14px;align-items:center;flex:none}
.se-rm,.link.se-rm{color:var(--r)}
.gone-list summary{font-weight:700;cursor:pointer;min-height:36px;display:flex;align-items:center}
.gone-row,.cr-row,.ot-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #eef1ef;min-height:40px}
.gone-row:last-child,.ot-row:last-child{border-bottom:0}
.ot-row small{display:block}
.cr-co{display:flex;justify-content:space-between;align-items:center;padding:0 0 4px;border-bottom:1px solid #eef1ef}
.add-b{display:block;width:100%;text-align:left;border:1px dashed #b9c4be;background:#fbfdfc;color:var(--g);font:inherit;font-weight:700;font-size:13px;border-radius:9px;min-height:36px;padding:0 10px;margin:6px 0 2px}
.add-b small{font-weight:500;color:var(--mute)}
.wgrid tr.addrow td{padding:2px 0 4px;border-bottom:0}
.wgrid tr.addrow .add-b{position:sticky;left:0;width:auto;display:inline-block;font-size:12px;min-height:36px;margin:2px 0}
.wgrid tr.addrow.co .add-b{margin-top:10px}
.gh-n{border:0;background:none;padding:0;font:inherit;font-weight:800;color:var(--g);min-height:36px;display:inline-flex;align-items:center;gap:4px}
.gh-n i{font-style:normal;font-size:11px}
.cm-manage{display:flex;gap:8px;margin-top:10px}
.cm-manage .btn{flex:1;min-height:44px}
.btn.rm-b{color:var(--r);border-color:#e7b4b4}
.banner.warnb{background:#fff4e5;border-color:#f3c58a;color:#5a3b00}
.ca-count{gap:6px}
.ca-count input{width:64px;text-align:center;min-height:40px}
.paidby{display:flex;gap:8px}
.paidby .btn{flex:1;min-height:44px}
.paidby .btn.on{background:var(--g);color:#fff;border-color:var(--g)}
.add-b.cm-add{margin-top:10px;min-height:42px;font-size:14px}

/* Settings → Worker message: big plain boxes, tap-to-add words, live example */
.wt-card{display:flex;flex-direction:column;gap:4px}
.wt-f{display:flex;flex-direction:column;gap:1px;margin-top:8px}
.wt-f:first-child{margin-top:0}
.wt-f b{font-size:17px}
.wt-f small{font-size:14px;color:var(--mute)}
textarea.wt-box{width:100%;min-height:58px;font-size:17px;line-height:1.35;padding:10px 12px;border:1.5px solid var(--line);border-radius:12px;resize:vertical;font-family:inherit;background:#fff}
textarea.wt-box:focus{border-color:var(--g);outline:2px solid var(--g2)}
.wt-tap{margin:12px 0 4px;font-weight:800;font-size:15px}
.wt-chips{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.wt-chip{display:flex;flex-direction:column;align-items:flex-start;min-height:56px;padding:6px 10px;border:1.5px solid var(--g);border-radius:12px;background:var(--g2);color:var(--g);text-align:left;cursor:pointer;min-width:0}
.wt-chip b{font-size:16px}
.wt-chip small{font-size:12.5px;color:var(--mute);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.wt-note{margin:8px 0 0}
.wt-prev{white-space:pre-wrap;word-break:break-word;margin:0;border:1px solid #cfe5d7;border-radius:12px;padding:12px;background:#e7f7ec;font-family:inherit;font-size:15px;line-height:1.4;color:#123}
.wt-more{margin-top:10px}
.wt-more summary{font-weight:700;min-height:44px;display:flex;align-items:center;cursor:pointer}
.wt-btns{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.wt-btns .btn[disabled]{opacity:.45}

/* full day when they leave early (no other site) + early Shabbos Fridays */
.mvq.no{border-color:var(--g);background:var(--g2)}
.mvq.own{border-color:var(--ob);background:var(--o)}
.mvopts{display:flex;flex-direction:column;gap:6px}
.mvo{min-height:46px;border-radius:10px;border:1.5px solid var(--line);background:#fff;font:inherit;font-size:15px;font-weight:700;text-align:left;padding:8px 12px;color:var(--ink)}
.mvo small{font-weight:500;color:var(--mute)}
.mvo.on{border-color:var(--g);background:var(--g);color:#fff}.mvo.on small{color:#e3f1e8}
.mvo.sm{min-height:38px;font-size:13px;font-weight:600;color:var(--mute);border-style:dashed}
.mvo.sm.on{background:var(--ob);border-color:var(--ob);color:#fff;border-style:solid}
.mvline.full{color:var(--g)}
.lr-mv.lv{color:var(--g)}
.banner.efri{background:#fff1dc;border-color:#f0c48a;color:#4a2e00}
.banner.efri small{display:block;font-weight:500;font-size:13px;margin-top:2px}
.efnote{margin:-4px 0 10px;font-size:13px;color:#4a2e00;background:#fff1dc;border:1px solid #f0c48a;border-radius:10px;padding:6px 10px}
.efk{display:block;margin:2px auto 0;font:inherit;font-size:10px;font-weight:700;line-height:1.15;padding:2px 3px;border-radius:6px;border:1px dashed #b9c2bd;background:#fff;color:var(--mute);white-space:nowrap;max-width:100%;box-sizing:border-box}
.efk.on{background:#fff1dc;border:1px solid #e0a24f;color:#7a4500}
button.efk{min-height:22px;cursor:pointer}
.wgrid thead th.efri{background:#fff8ec}
.ef-card input[type=time]{min-height:46px;font-size:17px;margin:4px 0 12px;width:100%}
.ef-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line)}
.ef-row:last-child{border-bottom:0}
.ef-row small{display:block;color:var(--mute);font-size:12px}
.ef-row .efk{margin:0;font-size:14px;padding:8px 12px;min-height:40px}
.pay th small.efk{display:inline-block;font-size:10px;padding:1px 4px}

/* ---------- Last week (foreman fixes a missed day) + crew requests "?" (Effy, Oct 26) ---------- */
.wksw{display:flex;gap:6px;margin:0 0 10px}
.wksw button{flex:1;min-height:52px;border-radius:12px;border:1.5px solid var(--line);background:#fff;font:inherit;font-weight:800;font-size:15px;line-height:1.15;color:var(--ink);padding:4px 6px}
.wksw button small{display:block;font-weight:500;font-size:12px;color:var(--mute)}
.wksw button[aria-pressed="true"]{background:var(--g);border-color:var(--g);color:#fff}
.wksw button[aria-pressed="true"] small{color:#e6f2ea}
.wksw button.lw[aria-pressed="true"],.wksw.three button:first-child[aria-pressed="true"]{background:#8a4b00;border-color:#8a4b00}
.wksw.three button{font-size:14px;padding:4px 3px}
.banner.lwb{background:#fff1dc;border-color:#e9b16b;color:#4a2e00;font-weight:600}
.banner.lwb .lwgo{margin-top:8px}
.daypills.lw button[aria-pressed="true"]{background:#8a4b00;border-color:#8a4b00}
.btn.lwedit{width:100%;margin-top:10px;min-height:48px;border:1.5px dashed #c98a3c;color:#7a4500;background:#fffaf2;font-size:15px;white-space:normal}
.lw-when{margin:0 0 10px;font-size:16px}
.lw-row{padding:10px 0;border-bottom:1px solid #eef1ef}
.lw-row:last-child{border-bottom:0}
.lw-row.off b{text-decoration:line-through;color:var(--mute)}
.lw-b{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.lw-b .btn{flex:none;max-width:none}
.lw-h{font-weight:800;margin:14px 0 6px}
.lw-add{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.lw-add .btn{flex:1 1 45%;max-width:none;min-height:48px}
.latecard{background:#fffaf2;border:1px solid #f0c48a}
.latecard.in{border-radius:10px;padding:6px 8px;margin-top:8px}
.lr-late{font-size:13px;color:#7a4500;margin-top:3px;font-weight:600}
.latet{display:inline-block;background:#fff1dc;color:#7a4500;border:1px solid #e9b16b;border-radius:999px;padding:0 6px;font-size:11px;font-weight:700}
.ch .ltm{position:absolute;right:1px;bottom:1px;z-index:2;font-style:normal;font-size:8px;line-height:11px}
.rep-q{margin:0 0 6px;font-size:16px}
.rep-l{margin:0 0 10px;padding-left:22px;font-weight:700;font-size:16px}
/* the "?" request chips under a grid box */
.rqs{display:flex;flex-direction:column;gap:2px;margin-top:2px}
.rqc{display:block;width:100%;min-height:22px;padding:0 2px;border:1.5px dashed var(--c,#d9661f);border-radius:6px;background:#fff7ef;color:#8a3d00;font:inherit;font-size:10px;font-weight:800;line-height:19px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rqc.k,.rqc.st{display:inline-block;width:auto;min-height:0;padding:0 5px;line-height:15px}
.rqk{display:inline-block;min-width:18px;border:1.5px dashed var(--ob);border-radius:6px;background:#fff7ef;color:#8a3d00;text-align:center;font-weight:900}
.rq-tip{margin:0 0 8px;font-size:14px;background:#fff7ef;border:1px solid #f3c58a;border-radius:10px;padding:8px 10px}
.btn.big.rq-b{margin-bottom:12px;background:#fff7ef;border-color:var(--ob);color:#8a3d00;text-align:left}
.rqcard{border:2px solid var(--ob);background:#fffaf5}
.rqcard h3{margin:0;font-size:17px}
.rqcard h3 small{font-weight:600;font-size:12px;color:var(--mute)}
.rq-g{background:#fff;border-radius:12px;border-left:6px solid var(--c,#5b6660);padding:10px;margin-top:10px;box-shadow:0 1px 2px rgba(0,0,0,.06)}
.rq-g.big{margin:0 0 10px}
.rq-h{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}
.rq-site{font-weight:800;color:var(--c,var(--ink));font-size:15px}
.rq-by{font-size:13px;color:var(--mute)}
.via{display:inline-block;font-size:11px;font-weight:600;color:#6b7570;background:#eef1ef;border-radius:999px;padding:0 6px}
.rq-k{font-weight:700;margin-top:4px}
.rq-note{margin-top:4px;font-style:italic}
.rq-i{border-top:1px solid #eef1ef;margin-top:8px;padding-top:8px}
.rq-t{font-size:16px}
.rq-t.big{font-size:19px;margin-top:6px}
.rq-w{font-size:13px;color:#8a3d00;font-weight:600;margin-top:3px}
.rq-w.same{color:var(--g)}
.rq-a{display:flex;gap:6px;margin-top:8px}
.rq-a .btn{flex:1;max-width:none;min-height:46px;font-size:15px}
.btn.no{color:var(--r);border-color:#e9b9b9}
.btn.rq-all{width:100%;max-width:none;margin-top:10px;min-height:48px;background:var(--g2);border-color:var(--g);color:var(--g)}
.rq-g.note{border-left-color:#8b9590}
.myrq h3{margin:0 0 4px;font-size:16px}
.myrq-i{padding:8px 0;border-top:1px solid #eef1ef}
.myrq-i.approved{color:var(--g)}
.myrq-i.declined{color:var(--mute)}
.lnk{border:0;background:none;color:var(--blue);font:inherit;font-weight:700;text-decoration:underline;padding:6px 4px;min-height:32px}
/* the foreman's request screen */
.rq-q{display:block;font-size:18px;font-weight:800;margin:4px 0 8px}
.rq-q small{font-weight:500;font-size:13px;color:var(--mute)}
.rq-wk{margin:0 0 6px;font-weight:700;color:#8a3d00}
.rq-big{display:flex;flex-direction:column;gap:8px}
.rq-big .btn{width:100%;max-width:none;min-height:58px;font-size:18px;white-space:normal}
.rq-big .btn small{display:block;font-weight:500;font-size:13px;opacity:.85}
.btn.rq-back{width:100%;max-width:none;margin-top:12px;min-height:44px;color:var(--mute)}
.rq-same{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid #eef1ef}
.rq-same span{color:var(--mute);font-size:14px;text-align:right}
.rq-crews,.rq-days,.rq-sites{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.rq-crews .btn{flex:1 1 45%;max-width:none;min-height:48px;font-size:15px;white-space:normal}
.rq-days .btn{flex:1 1 30%;max-width:none;min-height:56px;font-size:15px;line-height:1.1}
.rq-days .btn small{display:block;font-weight:500;font-size:11.5px;color:var(--mute)}
.rq-sites .btn{flex:1 1 100%;max-width:none;min-height:50px;border-left:6px solid var(--sc)}
.rq-crews .btn[aria-pressed="true"],.rq-days .btn[aria-pressed="true"],.rq-sites .btn[aria-pressed="true"]{background:var(--g);border-color:var(--g);color:#fff}
.rq-days .btn[aria-pressed="true"] small{color:#e6f2ea}
.rq-days .btn:disabled{opacity:.45}
.rq-ok{font-size:18px}
.btn:disabled{opacity:.5}
.efk.b5{background:#eaf3ff;border:1px solid #8fb4e3;color:#1d4f8c}
.efnote.b5{background:#eaf3ff;border-color:#8fb4e3;color:#1d3f6b}
.wgrid td.gc{vertical-align:top}
.rq-i{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rq-i .rq-x{flex:1 1 140px;min-width:0}
.rq-i .rq-a{margin-top:0;flex:none}
.rq-i .rq-a .btn{flex:none;min-width:46px;min-height:44px;padding:0 8px;font-size:15px}
.rq-g .rq-ga{display:flex;gap:6px;margin-top:8px}
.rq-g .rq-ga .btn{flex:1;max-width:none;min-height:46px;font-size:15px}
.calic{display:inline-flex;flex-direction:column;align-items:center;justify-content:flex-start;width:24px;height:24px;border-radius:5px;background:#fff;border:1px solid #cfd6d2;overflow:hidden;line-height:1;vertical-align:middle;box-sizing:border-box}
.calic i{display:block;width:100%;background:#d93025;color:#fff;font-style:normal;font-size:6.5px;font-weight:800;letter-spacing:.2px;padding:1px 0;text-align:center}
.calic b{display:block;font-size:12px;font-weight:800;color:#17201b;margin-top:1px}

/* days that already passed (today counts as passed): grey, not tappable, small "passed" (Effy, Oct 26) */
.btn.past,.btn.past:disabled{opacity:1;background:#eceeed;border-color:#d9dcda;color:#9aa19d;cursor:not-allowed;box-shadow:none}
.btn.past small.pst,.pst{display:block;text-decoration:none;font-size:11px;font-weight:700;letter-spacing:.02em;color:#8b928e;text-transform:uppercase}
.rq-days .btn.past small.pst{color:#8b928e}
.rq-w.pstw{color:#7a5a00;background:#fff6dc;border-radius:8px;padding:6px 8px}
th.dh.pastd{color:#9aa19d}
th.dh.pastd .pst{font-size:9px;line-height:1;margin-top:1px}
/* 📏 team109 (Effy's foreman picture, "Wooc"): passed days used to fade the whole box (opacity), which made each box its own layer,
   so the bar's next faded box painted over the bar's name and cut it to "Wooc". Now a pale veil fades the box and the name is faded
   on its own, so the name (in the bar's first box) runs over the whole bar like any other bar. */
td.gc.pastd .ch::before{content:"";position:absolute;inset:0;border-radius:inherit;background:rgba(243,245,244,.6);pointer-events:none}
td.gc.pastd .ch .rl{opacity:.7}
.rq-sum{display:flex;flex-direction:column;gap:2px;border:2px solid var(--g);border-radius:12px;padding:10px 12px;margin:2px 0 12px;background:#f3f8f5}
.rq-sum b{font-size:19px}
.rq-sum span{font-size:16px;font-weight:700}
.rq-sum small{color:var(--mute);font-size:13px}
.rq-for{margin:0 0 10px;font-size:15px}

/* named people with own day rate (Settings → Crews), foreman edit sheet (Oct 26) */
.pp-block{margin-top:10px;padding-top:8px;border-top:1px dashed #d5dbe3}
.pp-h{font-weight:800;font-size:15px;margin:2px 0 4px}
.pp-h small{font-weight:500}
.te-sites{display:flex;flex-direction:column;gap:6px;max-height:260px;overflow:auto;padding:2px}
.te-site{min-height:48px;margin:0}
.te-x{margin-top:10px;min-height:64px;align-items:flex-start}
.btn.tm-edit{margin-left:auto}
.fmnote.done{opacity:.6}
#tabs[data-n="6"] .tl{font-size:11px}

/* "No foreman yet" jobs are buttons: tap → pick any foreman (Effy, Oct 26) */
button.tm-chip.tm-none{min-height:44px;font:inherit;font-weight:700;color:var(--ink);cursor:pointer;margin:3px 0;border-style:dashed}

.cr-def{font-size:13px;padding:2px 0;color:#5b6b62}.cr-def.on{color:#1f6f43;font-weight:600}

/* Settings → Logins: each person's own link (team21) */
.lgn-row{padding:10px 2px;border-bottom:1px solid var(--line)}
.lgn-row:last-child{border-bottom:0}
.lgn-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 10px;align-items:baseline}
.lgn-top b{font-size:15px}
.lgn-link{display:flex;gap:8px;align-items:center;margin-top:6px}
.lgn-link code{flex:1;min-width:0;font-size:13px;background:var(--bg);border-radius:8px;padding:6px 8px}
.lgn-link .btn{flex:none;width:auto}

/* Settings → 🔒 Lockouts (team22) */
.lk-row{padding:10px 2px;border-bottom:1px solid var(--line)}
.lk-row:last-child{border-bottom:0}
.lk-row.on{background:#fff6e5;border-radius:8px;padding:10px 8px}
.lk-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.lk-top b{font-size:15px}
.lk-l{font-size:14px;margin-top:2px}
.lk-d{font-size:14px;margin-top:2px}
.lk-k{margin-top:2px;overflow-wrap:anywhere}

/* ---------- 🛠 Developer (team24, Effy only) ---------- */
.dv-sec{margin-bottom:14px}
.dv-h{display:flex;align-items:center;gap:10px;font-size:20px;margin:0 0 6px}
.dv-n{flex:none;width:30px;height:30px;border-radius:50%;background:var(--g);color:#fff;display:grid;place-items:center;font-size:16px;font-weight:800}
.dv-sub{margin:0 0 10px}
.dv-h2{font-size:24px;margin:4px 0 6px}
.dv-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.dv-btns .btn{flex:1 1 140px}
.btn[disabled]{opacity:.45}
.dv-pic{display:flex;gap:12px;align-items:flex-start;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.dv-thumb{flex:none;width:84px;height:84px;border:1px solid var(--line);border-radius:14px;display:grid;place-items:center;background:#fff;overflow:hidden}
.dv-thumb img{max-width:76px;max-height:76px;object-fit:contain}
.dv-icon img{width:76px;height:76px;border-radius:16px;object-fit:cover}
.dv-pic-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.dv-pic-t small{color:var(--mute)}
.dv-file{display:flex;align-items:center;justify-content:center;cursor:pointer;background:var(--g);border-color:var(--g);color:#fff}
.dv-hint{margin:12px 0 0;padding:10px 12px;border-radius:12px;background:#fff7e0;border:1px solid #f0d58a;font-size:15px;color:#17201b}
.dv-cols{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dv-col{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:8px;background:#fff}
.dv-col input[type=color]{flex:none;width:48px;height:48px;border:1px solid var(--line);border-radius:10px;padding:2px;background:#fff}
.dv-col span{display:flex;flex-direction:column;min-width:0}
.dv-col small{color:var(--mute);font-size:12px}
.dv-warn{margin:10px 0 0;color:var(--r);font-weight:700}
.dv-prev{display:flex;align-items:center;gap:12px;margin-top:10px;padding:10px;border:1px dashed var(--line);border-radius:12px}
.dv-prev-t{font-weight:600}
.dv-go{border:1px solid var(--line);border-radius:12px;margin-top:4px}
.dv-q{width:100%;margin:4px 0 8px}
.dv-only{display:flex;align-items:center;gap:8px;margin:0 2px 8px;font-size:15px}
.dv-count{margin:0 2px 6px}
.dv-w{border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-bottom:8px;background:#fff}
.dv-w-on{border-color:var(--g);box-shadow:inset 3px 0 0 var(--g)}
.dv-w-def{color:var(--mute);font-size:14px;margin-bottom:4px;word-break:break-word}
.dv-w .txt{width:100%}
.dv-nms{padding:8px}
.dv-nm{display:flex;gap:6px;align-items:center;padding:4px 0}
.dv-nm .dv-nm-n{flex:1 1 auto;min-width:0}
.dv-nm .dv-nm-s{flex:0 0 78px;min-width:0}
.dv-nm .btn{flex:none}
img.dyn-mark.own-logo{width:auto!important;max-width:90px;height:24px!important;object-fit:contain}
img.dyn-logo.own-logo{width:auto;max-width:220px;max-height:120px;object-fit:contain}

/* 🔔 team26: foreman alerts */
.bell-btn{position:relative;flex:none;margin-left:auto;border:1px solid var(--line);background:#fff;font-size:17px;line-height:1;width:38px;height:36px;border-radius:18px;padding:0}
.bell-btn[hidden]{display:none}
.bell-btn+.idea-btn{margin-left:8px}
.bell-dot{position:absolute;top:-6px;right:-9px;min-width:14px;height:16px;padding:0 3px;border-radius:9px;background:var(--r);color:#fff;font-size:10px;font-weight:800;line-height:16px;border:2px solid #fff;box-sizing:content-box;text-align:center}
.bell-dot[hidden]{display:none}
.adot{position:absolute;top:6px;left:calc(50% + 8px);width:10px;height:10px;border-radius:50%;background:var(--r);border:2px solid #fff}
.al-card{position:relative;margin-top:10px}
.al-card.al-new{border-color:var(--r);box-shadow:inset 4px 0 0 var(--r)}
.al-tag{float:right;font-size:11px;font-weight:800;color:#fff;background:var(--r);border-radius:9px;padding:1px 8px;margin-left:8px}
.al-text{font-weight:700;white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:4px}
.al-more{font-size:13px;color:var(--muted,#667);white-space:pre-wrap;overflow-wrap:anywhere;margin:-2px 0 4px}
.al-opt{align-items:flex-start;padding:10px 12px}
.al-opt input{margin-top:2px}
.al-opt>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.al-opt.is-off{opacity:.7}
.al-hint{font-weight:400;display:block}
.al-st{font-weight:700;color:var(--g);display:block}
.al-st:empty{display:none}
.al-line{margin-top:6px}
.note-ro{background:#fff8e1;border:1px solid #f0d58a;border-radius:10px;padding:8px 10px;font-size:13px}
.back-link{display:inline-block;margin:0 0 6px;padding:6px 0;font-weight:700}

/* 🔔 team27: Settings → Alerts list (bank-app style) – each row: tap the words to open it, the switch turns it on/off */
.al-intro{margin:-2px 2px 8px}
.al-list .al-row{display:flex;align-items:center;border-bottom:1px solid #eef1ef;background:#fff}
.al-list .al-row:last-child{border-bottom:0}
.al-row-b{display:flex;align-items:center;gap:12px;flex:1;min-width:0;min-height:64px;padding:8px 4px 8px 12px;border:0;background:none;text-align:left;font:inherit;color:var(--ink)}
.al-row-b:active{background:#f3f7f4}
.al-row-b .sr-t small{white-space:normal}
.al-row-b .sr-go{font-size:20px;margin-right:2px}
.al-row-off .sr-t b,.al-row-off .sr-ic{opacity:.55}
.sw{position:relative;display:inline-flex;align-items:center;flex:none;padding:10px 12px 10px 6px;cursor:pointer}
.sw input{position:absolute;opacity:0;width:100%;height:100%;left:0;top:0;margin:0;cursor:pointer}
.sw-t{width:52px;height:32px;border-radius:16px;background:#c9d1cc;position:relative;transition:background .15s}
.sw-t::after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.sw input:checked+.sw-t{background:var(--g)}
.sw input:checked+.sw-t::after{transform:translateX(20px)}
.sw input:focus-visible+.sw-t{outline:3px solid var(--blue);outline-offset:2px}
.sw input:disabled+.sw-t{opacity:.5}
.sw.big{padding:0}
.al-ro{margin:8px 2px 0}
.al-d{padding:12px 14px}
.al-onrow{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;cursor:pointer}
.al-onrow>span:first-child{display:flex;flex-direction:column;gap:2px}
.al-onrow b{font-size:18px}
.al-time{width:100%;min-height:52px;font-size:18px;font-weight:700}

/* team28: two job sites in one box ("Independence / West Park"): top half = 1st site's color, bottom half = 2nd; two lines of names */
.ch.two{background:linear-gradient(var(--c) 0 50%,var(--c2) 50% 100%)}
.ch.two.q{background:repeating-linear-gradient(135deg,transparent 0 6px,rgba(0,0,0,.22) 6px 9px),linear-gradient(var(--c) 0 50%,var(--c2) 50% 100%)}
.ch.two.notmine{background:linear-gradient(color-mix(in srgb,var(--c) 30%,#fff) 0 50%,color-mix(in srgb,var(--c2) 30%,#fff) 50% 100%);color:#26302b}
.ch .rl.two{display:flex;flex-direction:column;justify-content:center;align-items:stretch;line-height:1.1;font-size:10px;letter-spacing:-.2px;padding:0 2px}
.ch .rl.two .l2{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:1px 0;text-shadow:0 0 2px rgba(0,0,0,.35)}
.ch.two.notmine .rl.two .l2{text-shadow:none}
.pk-two{display:flex;align-items:center;gap:8px;margin:0 0 10px;flex-wrap:wrap}
.pk-two .pk2-cur{flex:1 1 auto;min-height:48px;text-align:left}
.pk-two .pk2-x{min-height:48px;min-width:48px}
.pk-2nd{width:100%;margin:0 0 10px}
.pk-step{margin:0 0 8px;font-weight:700}
.sc-also{margin:8px 2px 4px;padding:8px 10px;border-radius:10px;background:#f4f6f5;font-size:13px;line-height:1.35}
.pill.two-at{background:#eef3f0;color:#26302b;font-weight:600;white-space:normal}

/* team29: 👥 Who's logged in (Effy only) */
.who-sum{display:flex;align-items:center;gap:8px;font-size:20px;margin:6px 0 12px}
.who-row{padding:12px 2px;border-bottom:1px solid var(--line)}
.who-row:last-child{border-bottom:0}
.who-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:19px}
.who-top .pill{margin-left:auto;font-size:13px}
.who-st{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:17px}
.who-dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:#1fa651;box-shadow:0 0 0 3px #d9f2e1;flex:none}
.who-on{color:var(--g)}
.who-off{color:var(--mute)}
.who-d{font-size:15px;margin-top:2px}
.card.who{display:block;columns:auto}
.card.who .who-row{width:100%}

/* team32: the real connection + "Not saved" bar */
.net.off{color:#6b6f6c}
.net.bad{color:#b3261e}
.net.saving{color:#7a6a00}
.netbar{position:sticky;top:0;z-index:30;margin:0;padding:10px 14px;background:#fde7e4;color:#8a1c14;border-bottom:2px solid #e3a59d;font-weight:700;font-size:15px;line-height:1.35}
.netbar[hidden]{display:none}
.fut-ask .rep-q{font-size:18px;margin:4px 0 8px}
.fut-ask .two{margin-top:14px}

/* team34: Effy's per-login Sign out button on Who's logged in */
.who-act{margin-top:8px}
.who-act .btn{min-height:36px}

/* 🔔 team35: Settings → My alerts (Effy) – big, plain, one card per alert */
.oal-intro{margin:-4px 2px 12px}
.oal-card{padding:14px 14px 12px;margin:0 0 12px}
.oal-card.oal-off{background:#fafbfa}
.oal-card.oal-off .oal-name{color:var(--mute)}
.oal-h{display:flex;align-items:center;gap:10px}
.oal-num{flex:none;width:28px;height:28px;border-radius:50%;background:var(--g2);color:var(--g);font-weight:800;font-size:15px;display:grid;place-items:center}
.oal-ic{flex:none;font-size:22px}
.oal-name{font-size:18px;line-height:1.25}
.oal-what{margin:6px 0 10px 38px}
.oal-time-l{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-weight:600}
.oal-time{flex:1;min-height:48px;font-size:18px}
.oal-ch{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.oal-b{min-height:52px;padding:8px 10px;border:2px solid var(--line);border-radius:12px;background:#fff;font-size:16px;font-weight:600;line-height:1.2;text-align:left;color:var(--ink);display:flex;align-items:center;gap:6px}
.oal-b.on{border-color:var(--g);background:var(--g2);color:var(--g)}
.oal-b.oal-offb.on{border-color:#9aa39e;background:#eef1ef;color:var(--ink)}
.oal-tick{margin-left:auto;font-weight:800}
.oal-foot{margin:4px 2px 8px}

/* 🟠 team36: "+ Add a crew" (orange = waiting for OK) */
.addw{color:#c2410c;font-weight:800}
.addok{color:#15803d;font-weight:700}
.addun{color:#6b7280;font-weight:700}
.crow.addp{border:2px solid #f97316;background:#fff7ed}
.addbox{margin:16px 0 8px}
.addbtn{width:100%;font-size:19px;min-height:56px;border:2px dashed #f97316;color:#c2410c;background:#fff7ed;font-weight:800}
.addhint{margin:6px 2px 0}
.addlist{margin-top:10px;display:grid;gap:6px}
.addrow{padding:10px 12px;border-radius:12px;background:#fff7ed;border:1px solid #fed7aa;font-size:16px}
.addrow.addst-approved{background:#f0fdf4;border-color:#bbf7d0}
.addrow.addst-undone{background:#f3f4f6;border-color:#e5e7eb}
.addrm{margin-left:6px}
.addsites,.addcrews{display:grid;gap:8px;margin:6px 0 12px}
.addsites .btn.on{outline:3px solid #f97316}
.addpick{text-align:left;display:flex;flex-direction:column;align-items:flex-start;font-size:18px}
.addpick small{font-weight:400;opacity:.75;font-size:14px}
.addcard{border:2px solid #f97316;background:#fff7ed}
.addcard-h{font-weight:800;color:#c2410c;margin-bottom:8px;font-size:17px}
.addcard-h.und{color:#4b5563;margin-top:12px}
.addq{padding:10px 0;border-top:1px solid #fed7aa;font-size:16px}
.addq:first-of-type{border-top:0}
.addq-b{display:flex;gap:8px;margin-top:8px}
.addq-b .btn{flex:1;min-height:48px;font-size:17px}
/* 🎙 team36: Siri page – big, plain */
.siri-sub{font-size:18px}
.siri-ios{font-weight:700;margin:0 0 10px}
.siri-card{position:relative;padding-left:58px}
.siri-n{position:absolute;left:14px;top:14px;width:32px;height:32px;border-radius:50%;background:var(--g,#166534);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:18px}
.siri-big{font-size:19px;font-weight:700;margin:2px 0 10px}
.siri-steps{font-size:18px;line-height:1.5;padding-left:22px;margin:0 0 10px}
.siri-steps li{margin-bottom:10px}
.siri-url{width:100%;font-size:14px;margin:6px 0 10px}
.siri-copy,.siri-make{width:100%;font-size:19px;min-height:56px}
.siri-ok{color:#15803d;font-weight:800;font-size:18px;margin:0 0 6px}
.siri-said{font-size:18px;background:#f0fdf4;border-radius:12px;padding:10px 12px}
.siri-key{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid #e5e7eb;font-size:16px}
.siri-k .btn{margin-top:8px}
.siri-row{margin-top:12px;width:100%}

/* ⏰ team37: work hours at my site */
.whcard{margin-top:12px}
.wh-h{font-size:21px;margin-bottom:4px}
.wh-sub{margin:0 0 10px;color:var(--mute);font-size:17px}
.whrow{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
.whrow:first-of-type{border-top:0;margin-top:0}
.wh-site{font-weight:800;font-size:20px;margin-bottom:8px}
.dirty-btn[hidden],.wh-save[hidden]{display:none!important}
.wh-reset{display:block;margin:10px auto 0;font-size:16px}
.wh-tag{display:inline-block;margin-left:4px;padding:1px 8px;border-radius:999px;background:var(--g2);color:var(--g);font-weight:600}
.wh-ro{margin:4px 0 6px}
/* ⏱ team37: times and hours always match */
.otline b{font-size:17px;color:var(--ink)}
.hrsline{margin-top:8px;font-size:17px;font-weight:700}
.hrsline.own{color:#7a5a00}
/* ✨ team37: Ask (free – the phone keyboard's own 🎤 fills the box) */
.ask-day{margin:0 0 8px;font-weight:700}
.ask-btn{margin:4px 0 12px;background:#fff8e6;border-color:#f0c64a;color:#5a4300;font-weight:800;font-size:21px}
.ask-hint{font-size:20px;line-height:1.4;margin:0 0 10px}
.ask-text{width:100%;min-height:130px;font-size:22px;line-height:1.35;padding:14px;border:2px solid #c9d3cd;border-radius:14px;background:#fff;resize:vertical}
.ask-text:focus{border-color:var(--g)}
.ask-more{margin:6px 0 12px}
#ask-out{margin-top:14px}
.ask-res,.ask-err{border-radius:14px;padding:12px 14px;margin-bottom:10px}
.ask-res{background:var(--g2)}
.ask-err{background:var(--y)}
.ask-h{font-weight:800;font-size:18px;margin-bottom:4px}
.ask-l{font-size:19px;margin:4px 0}
.ask-note{font-size:17px;margin:8px 0 10px}
#ask-out .btn.big{margin-bottom:10px}
/* ✨ team47: one Ask – "I understood" card, tappable examples and choices */
.ask-card{border-radius:14px;padding:12px 14px;margin-bottom:10px;background:var(--g2)}
.ask-card.ask-q{background:var(--y)}
.ask-card.ask-ans{background:#eef4ff;border:2px solid #b9cdf5}
.ask-a{font-size:21px;line-height:1.35;font-weight:700}
.ask-l small{font-weight:400;color:#5b665f}
.ask-m{font-size:16px;font-weight:700;color:#5a4300;margin:2px 0 6px 28px}
.ask-no{opacity:.8}
.ask-exs{margin:2px 0 12px}
.ask-ex{display:block;width:100%;text-align:left;min-height:48px;margin:0 0 8px;font-size:18px;background:#fff;border:2px dashed #c9d3cd;border-radius:12px;padding:10px 12px}
.ask-ch{display:block;width:100%;margin:8px 0 0;background:#fff}
.ask-simple{margin:4px 0 0}
#ask-out .two .btn.big{margin-bottom:0}

/* 🔑 team37: own password sign-in */
.pw-form{width:100%;max-width:380px;display:flex;flex-direction:column;gap:8px}
.pw-lbl{font-size:20px;font-weight:700;margin-top:6px}
.pw-in{width:100%;min-height:60px;font-size:24px;padding:0 14px;border:2px solid #c9d3cd;border-radius:14px;background:#fff}
.pw-in:focus{border-color:var(--g)}
.pw-show{font-size:17px;display:flex;align-items:center;gap:8px;min-height:40px}
.pw-show input{width:22px;height:22px}
.pw-help{font-size:17px;color:var(--mute);text-align:center;margin:6px 0 0}
.mk-h{font-size:26px;text-align:center}
.mk-hi{font-size:20px;text-align:center;margin:0}
.mk-sub{font-size:18px;text-align:center;color:var(--mute);margin:0 0 4px;line-height:1.4}
.gate-btn{margin-top:8px}
/* 🔑 Effy's Passwords page */
.pw-how{margin-bottom:12px}.pw-ol{margin:6px 0 0;padding-left:22px;font-size:17px;line-height:1.5}
.pw-new{border:2px solid var(--g);background:var(--g2);text-align:center;margin-bottom:14px}
.pw-new-t{font-size:18px}
.pw-code{font-size:38px;font-weight:800;letter-spacing:3px;margin:10px 0;font-family:ui-monospace,Menlo,Consolas,monospace}
.pw-all{min-height:60px;margin:6px 0 4px;font-weight:700}
.pw-grp{font-size:19px;margin:18px 0 8px;color:var(--mute)}
.pw-row{margin-bottom:10px}
.pw-top{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.pw-name{font-size:19px}
.pw-st{font-size:15px;font-weight:700;padding:2px 10px;border-radius:999px}
.pw-st.ok{background:var(--g2);color:var(--g)}.pw-st.no{background:var(--o);color:#8a3b0b}.pw-st.wait{background:var(--y);color:#5a4300}.pw-st.off{background:#eef1ef;color:var(--mute)}
.pw-sw{min-height:48px}

/* ↩ team38: Unsend + "Undo the check-in too?" (big, plain) */
.ch .cfw{position:absolute;left:1px;right:1px;bottom:1px;z-index:2;font-style:normal;font-size:9px;line-height:12px;border-radius:4px;background:#fff3cd;color:#7a4b00;font-weight:800;text-align:center;white-space:nowrap;overflow:hidden}
.ch.has-w{position:relative}
.undo-q{display:flex;flex-direction:column;gap:10px}
.undo-q .uq-t{font-size:21px;font-weight:800;line-height:1.3;margin:0}
.undo-q .uq-w{font-size:18px;font-weight:700;margin:0;padding:10px 12px;border-radius:10px;background:#f2f5f3}
.undo-q .uq-n{font-size:17px;margin:0;color:#7a4b00}
.undo-q .btn.big{font-size:18px;min-height:54px}
.btn.big.danger{background:#c62828;color:#fff;border-color:#c62828}
.btn.ghost{background:transparent;border-color:transparent;text-decoration:underline}
.btn.unsend{color:#a23b00;border-color:#f0c9a8;background:#fff8f2;font-weight:800}
.lr-btns{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.pk-sent{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px;padding:8px 10px;border-radius:10px;background:#eef8f0;font-weight:700;font-size:16px}
.crow-un{margin:4px 10px 8px;font-size:15px}
.undone-card{margin-top:14px;border-left:4px solid #e0a060}
.undone-card .ud-row{padding:8px 0;border-top:1px solid #eee}
.undone-card .ud-h{font-weight:800;font-size:16px}
.undone-card .ud-by{font-size:15px;color:#7a4b00;font-weight:700}
.undone-card .ud-was{font-size:14px;color:#555}

/* 🧭 team38: a regional's change waiting for Effy */
.ch .rpm{position:absolute;right:1px;bottom:1px;z-index:3;font-style:normal;font-size:10px;line-height:13px;width:14px;height:14px;border-radius:50%;background:#fff;text-align:center}
.ch.emp{position:relative}
.pk-pend{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px;padding:8px 10px;border-radius:10px;background:#fff6e0;font-weight:700;font-size:16px;border:2px dashed #e0a030}
.rchg-card{border-left:4px solid #e0a030;margin-bottom:12px}
.rchg-card .rc-row{padding:10px 0;border-top:1px solid #eee}
.rchg-card .rc-t{font-size:16px;font-weight:700;margin-bottom:8px}
.rchg-card .rc-b{display:flex;gap:8px}
.rchg-card .rc-b .btn{flex:1;min-height:46px;font-size:16px}

/* team39 */
.lr-btns .split-btn{white-space:nowrap}
.split-l{color:#7a4b00}
.sp-q{margin:14px 0 6px;font-size:17px}
.sp-names{display:flex;flex-wrap:wrap;gap:8px}
.sp-chip{min-height:48px;padding:10px 14px;border-radius:24px;border:2px solid #c9d3cc;background:#fff;font-size:17px;font-weight:700;color:#1d2b22}
.sp-chip.on{background:#1f7a4a;border-color:#1f7a4a;color:#fff}
.sp-times{display:flex;gap:12px}.sp-times label{flex:1;font-weight:700;font-size:16px;display:flex;flex-direction:column;gap:4px}
.sp-t{font-size:20px;min-height:50px}
.sp-prev{margin:14px 0;padding:10px 12px;border-radius:12px;background:#f3f7f4}
.sp-pl{font-size:16px;padding:4px 0}.sp-pl.on{font-weight:700;color:#7a4b00}
.fc-row{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:#fff8e6;border:1px solid #f0d99a;font-size:16px}
.fc-row.ok{background:#eef8f1;border-color:#b7dcc4}
.fc-t{font-size:17px;margin-bottom:6px}.fc-n{font-size:15px;color:#5a4a1e;margin:2px 0}
.fc-row .lr-btns{display:flex;gap:8px;flex-wrap:wrap}
.bl-wk{display:flex;gap:10px;align-items:center;justify-content:space-between;margin:6px 0 12px}
.bl-card{margin:0 0 12px}.bl-h{font-size:19px;margin:0 0 8px}
.bl-r{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid #eef1ef;font-size:17px}
.bl-l{color:#2c3a31}.bl-v{font-weight:700;text-align:right}
.bl-sub{font-size:14px;color:#66736b;margin:-2px 0 6px}
.bl-tr{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}
.bl-tr .bl-l{flex:1 1 100%;font-weight:700}
.bl-in{flex:1 1 110px;font-size:18px;min-height:48px}.bl-note{flex:2 1 160px;font-size:16px;min-height:48px}
.bl-tot{background:#f3f7f4}
.qb-card{margin-top:16px}
.qb-p{border:1px solid #e1e7e3;border-radius:12px;margin:8px 0;overflow:hidden}
.qb-p.on{border-color:#1f7a4a;background:#f3faf6}
.qb-tg{display:flex;width:100%;gap:10px;align-items:center;padding:12px;background:none;border:0;text-align:left;font-size:16px;color:inherit}
.qb-ck{font-size:26px;line-height:1}.qb-nm{flex:1;display:flex;flex-direction:column}.qb-nm small{color:#66736b;font-size:13px}
.qb-amt{font-weight:800;font-size:17px;white-space:nowrap}
.qb-ql,.qb-acc label{display:flex;flex-direction:column;gap:4px;padding:0 12px 12px;font-size:14px;font-weight:700}
.qb-acc{margin:10px 0}.qb-acc label{padding:0 0 10px}
.qb-help{margin-top:10px;font-size:15px}.qb-help summary{font-weight:700;min-height:44px;cursor:pointer}
.gem-card{margin:0 0 12px}.gem-on{font-size:19px;font-weight:800}.gem-mask{font-family:ui-monospace,Menlo,monospace;font-size:18px;margin:6px 0 10px;letter-spacing:1px}
.gem-steps{font-size:17px;padding-left:22px;margin:0 0 10px}.gem-steps li{margin:4px 0}
.gem-in{font-size:18px;min-height:50px;width:100%}

/* team39 clear alerts */
.al-card{position:relative;padding-right:52px;touch-action:pan-y;transition:transform .15s,opacity .15s}
.al-x{position:absolute;right:4px;bottom:4px;min-width:44px;min-height:44px;border:0;background:none;font-size:20px;color:#7b8780;border-radius:22px}
.al-x:active{background:#eef1ef}
.al-clear{width:100%;margin:4px 0 4px}
.al-ro,.al-ro:active{opacity:.45;cursor:default;background:none}   /* 🧹 team95: looking as someone – his buttons shown, not tappable */
.btn.al-ro{background:var(--bg,#f6f8f7)}
.al-hint{margin:0 0 12px;text-align:center}
.al-card.al-gone{transform:translateX(-110%)!important;opacity:0!important}

/* 🗜 team43: short Logs – every log one line, tap ▸ to open (regional, Effy, Office) */
.lg-sec{font-size:17px;font-weight:800;margin:14px 2px 6px}
.lg-sec.pend{color:#9a3412}
.lg-sec.done{color:var(--g)}
.lg-none{padding:10px 12px;border-radius:12px;background:var(--g2);color:var(--g);font-weight:700;margin-bottom:6px}
.lg-more{width:100%;margin:2px 0 8px;min-height:44px}
.lg-nolog{margin:4px 2px 8px}
.empty.sm{padding:12px}
.lrc{border:1px solid var(--line);border-radius:12px;margin-bottom:6px;background:#fff;overflow:hidden}
.lrc.miss{border-color:#f0c4c4;background:#fffafa}
.lrc.attn{border-color:var(--yb);background:#fffbea}
.lrc-h{display:flex;align-items:center;gap:8px;width:100%;min-height:46px;padding:5px 10px;border:0;background:transparent;text-align:left;color:var(--ink);font:inherit}
.lrc-a{flex:none;width:18px;font-size:16px;color:var(--mute)}
.lrc-t{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.2}
.lrc-n{font-weight:800;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lrc-m{font-size:13px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lrc-st{flex:none;font-size:14px;font-weight:700;white-space:nowrap}
.lrc.miss .lrc-st{color:var(--r)}
.lrc.lrc-ok .lrc-st{color:var(--g)}
.lrc.attn .lrc-st{color:#7a4b00}
.lrc-b{padding:0 10px 10px;border-top:1px solid var(--line)}
.lrc-b .logrow.in-lrc{border:0;padding:8px 0 0;margin:0;background:transparent}
.lrc-b > .lr-st,.lrc-b > .lr-by{margin-top:8px}
.lrc-b > .lr-btns{margin-top:8px}
/* ↩ team43: the foreman's Undo on a sent day */
.fundo-btn{width:100%;margin-top:8px;min-height:48px;color:#9a3412;border-color:#f3c9a8;background:#fff7f0}

/* 💵 team43: pay type */
.pt-l{font-size:14px;margin-top:2px}
.pt-l.pt-trayd,.pt-l.pt-invoice{color:#7b3fb5;font-weight:700}
.pt-q{display:flex;flex-direction:column;gap:10px}
.pt-q .btn{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:10px 14px;line-height:1.25}
.pt-q .btn small{font-weight:500;font-size:14px;margin-top:2px;opacity:.85}
.pt-tag{display:inline-block;margin-top:3px;padding:1px 7px;border-radius:8px;background:#f1e8fb;color:#6a2fa0;font-size:12px;font-weight:800}
.pay tr.invrow td{background:#faf7fd}
.pp-gone{margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.lrc-b .logrow.in-lrc{flex-direction:column;align-items:stretch;text-align:left}
.lrc-b .in-lrc .lr-btns{flex-direction:row;flex-wrap:wrap}
.lrc-b .in-lrc .btn,.lrc-b > .lr-btns .btn{max-width:none;flex:1 1 auto;min-height:44px;white-space:nowrap}
.lrc-b .in-lrc .lr-name:empty{display:none}

/* 📍 team44: Logs by job site – one short row per site, tap to open */
.lgs-sum{margin:10px 2px 8px;font-size:15px}
.lgs{--sc:#1f6f43;border:1px solid var(--line);border-left:6px solid var(--sc);border-radius:12px;margin-bottom:8px;background:#fff;overflow:hidden}
.lgs.open{box-shadow:0 2px 8px rgba(0,0,0,.08)}
.lgs-h{display:flex;align-items:center;gap:8px;width:100%;min-height:52px;padding:6px 10px;border:0;background:transparent;text-align:left;color:var(--ink);font:inherit}
.lgs-n{font-weight:800;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgs-m{font-size:14px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lgs-p{color:var(--r)}
.lgs-st{flex:none;font-size:15px;font-weight:800;white-space:nowrap}
.lgs.lgs-miss .lgs-st{color:var(--r)}
.lgs.lgs-ok .lgs-st{color:var(--g)}
.lgs-b{padding:0 8px 8px;border-top:1px solid var(--line);background:#fbfcfb}
.lgs-f{font-size:14px;color:var(--mute);margin:8px 2px 4px}
.lgs-sec{font-size:15px;font-weight:800;margin:10px 2px 6px}
.lgs-sec.pend{color:#9a3412}
.lgs-sec.done{color:var(--g)}
.lgs-b .fc-row{margin:6px 0}

/* 📍 team46: Logs by job site for the picked day; day chips = job sites with workers that day */
.lgs-days button{min-height:56px;padding:4px 2px;line-height:1.15}
.lgs-days .ds-n{font-size:17px}
.lgs-days small{font-size:11px;font-weight:600;opacity:.85}
.lgs-days .ds-miss{display:block;font-size:11px;font-weight:800;color:var(--r)}
.lgs-days button[aria-pressed="true"] .ds-miss{color:#fff}
.lgs-day{margin:0 2px 8px;font-size:15px}
.lgs.lgs-later .lgs-st{color:var(--mute)}
.lgs-sec.later{color:var(--mute)}
.lrc.later .lrc-st{color:var(--mute)}

/* ✨ team49: the "add this crew" line on the Ask card */
.ask-add{border-left:4px solid #f97316;padding-left:8px}
.ask-where{color:#9a3412;font-weight:700}
/* 📋 team50: headcount requests */
.hqbox{margin:12px 0 8px}
.hqbtn{width:100%;font-size:19px;min-height:56px;border:2px dashed #2563eb;color:#1d4ed8;background:#eff6ff;font-weight:800}
.hqlist{margin-top:8px;display:grid;gap:6px}
.hqrow{font-size:16px;padding:8px 10px;border-radius:10px;background:#f1f5f9}
.hqdays{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 12px}
.hqdays .btn{min-height:44px;font-size:16px}
.hqdays .btn.on,.hqp.on{outline:3px solid #2563eb;background:#dbeafe;color:#1e3a8a}
.hqp.on small{color:#1e3a8a;opacity:.9}
.hqstep{display:flex;align-items:center;gap:14px;margin:6px 0 12px}
.hqstep .btn{min-width:64px;font-size:26px}
.hqn{font-size:30px;min-width:44px;text-align:center}
.hqsend{width:100%;margin-top:12px}
.hqcard{border:2px solid #2563eb;background:#eff6ff}
.hqp-n{font-size:20px;margin:6px 0 10px}
.hqp-n.ok{color:#15803d}
.hqp-list{display:grid;gap:8px;margin-bottom:12px}
.hqp{text-align:left;display:flex;flex-direction:column;align-items:flex-start;font-size:18px}
.hqp small{font-weight:400;opacity:.75;font-size:14px}
.hqp.here{opacity:.7;background:#dcfce7}
.hqp.busy small{color:#9a3412;opacity:1}

/* 📲 team51: install tabs (iPhone | Android) and the one-tap Chrome install button */
.inst-tabs{display:flex;gap:6px;background:#f2f2f7;border:1px solid var(--line);border-radius:14px;padding:4px;margin:0 0 16px}
.inst-tab{flex:1;min-height:52px;border:0;border-radius:11px;background:transparent;font:inherit;font-size:19px;font-weight:700;color:var(--mute);cursor:pointer}
.inst-tab.on{background:#fff;color:var(--ink,#111);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.inst-one{display:block;width:100%;min-height:60px;font-size:21px;margin:0 0 10px}
.inst-or{margin:6px 0 10px;color:var(--mute);font-size:15px}
/* 🔑 team51: the first-time link that fills in his one-time password */
.pw-fill-note{margin:10px 0 4px;font-size:15px}
.pw-fill-link{font-family:ui-monospace,Menlo,monospace;font-size:13px;overflow-wrap:anywhere;background:#f2f2f7;border:1px solid var(--line);border-radius:8px;padding:8px;margin:0 0 10px}
.tm-otp{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.tm-otp .btn{width:100%}

/* 🎨 team51: the Ask card – headline, BEFORE ➜ AFTER, a color per kind */
.ask-big{font-size:22px;font-weight:800;line-height:1.25;margin:2px 0 6px}
.ask-chip{display:inline-block;font-size:14px;font-weight:700;border-radius:999px;padding:3px 10px;margin:0 0 8px;background:#fff3e0;color:#9a4b00;border:1px solid #f5c58a}
.ask-t-g{border-left:6px solid #1f9d55 !important}
.ask-t-g .ask-big{color:#156f3c}
.ask-t-o{border-left:6px solid #e8890c !important}
.ask-t-o .ask-big{color:#9a4b00}
.ask-t-b{border-left:6px solid #2f6fd6 !important}
.ask-t-b .ask-big{color:#1e4f9e}
.ask-t-b .ask-chip{background:#e8f0fd;color:#1e4f9e;border-color:#b5cdf5}
.ask-t-x{border-left:6px solid #aaa !important}
.ask-ba{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0}
.ask-day{font-size:15px;color:var(--mute);font-weight:600}
.ask-ft{font-size:20px;line-height:1.35;margin-top:2px}
.ask-old{color:#8a8a8a;text-decoration:line-through}
.ask-none{color:#8a8a8a;font-style:italic;font-size:16px}
.ask-arr{color:#555;font-weight:800;margin:0 4px}
.ask-new{color:#157a3c;font-weight:800}
.ask-ba.ask-no .ask-new{color:#666}
.ask-warn{background:#fff6d6;border:1px solid #f0c742;color:#6b4e00;border-radius:10px;padding:8px 10px;margin:8px 0 2px;font-weight:600}
.ask-go{font-size:19px}
.ask-quote{font-size:19px}
.gem-today{font-size:17px;margin:8px 0}
.gem-today.near b{color:#b35900}
.gem-today.out b{color:#c0392b}

/* 📋 team51: Request guys first and big, a specific crew second and smaller */
.rq-hq{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:68px;font-size:21px}
.rq-hq small{font-size:14px;font-weight:500;opacity:.9}
.rq-2{min-height:48px;font-size:16px}
.rq-tip-2{font-size:14px;color:var(--mute)}
.ask-alt{display:block;margin:10px auto 0;font-size:16px;min-height:44px}

.hqp-days{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.hqp-day{min-height:44px;font-size:15px}
.hqp-day.on{background:var(--g);color:#fff;border-color:var(--g)}

/* 📋 team51: request card – six big buttons in two rows */
.hq-btns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:10px}
.hq-btns .btn{min-height:52px;font-size:15px;padding:6px 4px;line-height:1.2;white-space:normal}
.hq-btns .btn.ok{border-color:var(--g);color:var(--g);font-weight:700}
.hq-snz{display:block;margin:8px auto 0}
.hqz{display:flex;flex-direction:column;align-items:center;width:100%;margin:0 0 10px;min-height:60px}
.hqz small{font-size:14px;font-weight:500;opacity:.85}
.hq-addto{background:#eef7f0;border:1px solid #b9dfc4;border-radius:10px;padding:8px 10px;margin:0 0 10px}

/* 📍 team55: Where are you today? / Friday list / foreman split / billing per site / Instinct */
.wc-card,.wc-fri{border-left:5px solid #2b7de9}
.wc-q{font-size:1.1rem;font-weight:700;margin-bottom:4px}
.wc-sub{margin:4px 0 10px}
.wc-btns{display:flex;flex-direction:column;gap:8px}
.wc-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.wc-row .btn{min-height:52px;padding:8px 6px;font-size:.95rem;white-space:normal;line-height:1.15}
.wc-ok{min-height:56px}
.wc-more{align-self:flex-start;min-height:44px;padding:8px 18px}   /* team56: the small "Other…" */
.wc-note{width:100%;box-sizing:border-box}
.wc-day{border-top:1px solid #e3e6ea;padding:12px 0}
.wc-dn{font-size:1.05rem;margin-bottom:8px}
.wc-h{margin:0 0 6px;font-size:1.2rem}
.wc-doneL{margin-top:10px;border-top:1px solid #e3e6ea;padding-top:8px}
.wc-dl{padding:3px 0}
.wc-fb{display:block;width:100%;text-align:left;font-size:1rem;cursor:pointer;border:0;background:#fff4d6;padding:14px;border-radius:12px;margin:8px 0}
.wc-sites{display:flex;flex-direction:column;gap:8px}
.wc-site{text-align:left}
.wc-gh{font-weight:700;margin:10px 0 2px}
.wc-rs{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.wc-sheet .lbl,.bls-sheet .lbl,.blt-sheet .lbl{display:block;font-weight:700;margin:12px 0 4px}
.wc-sheet select,.wc-sheet textarea,.wc-sheet input,.bls-sheet input,.blt-sheet input{width:100%;box-sizing:border-box}
.wc-sheet .btn.big,.bls-sheet .btn.big{margin-top:12px;width:100%}
.wc-boss{border-left:5px solid #2b7de9}
.wc-bl{padding:8px 0;border-top:1px solid #e3e6ea}
.wc-bl.ask{background:#fff8e6}
.wc-fb.wc-lw{background:#ffe9d6;border-left:4px solid #e07b00}   /* 🗓 team71: last week still open */
.wc-bl.wc-nob{color:#7a4b00}
.wc-lwsheet .wc-fri{box-shadow:none;margin:0;padding:0;border:0}
.wc-lwclose{margin-top:10px;width:100%}
.wc-bl .two{margin-top:6px}
.pill.ok{background:#e3f6e8;color:#14632d}.pill.no{background:#fde8e8;color:#8a1c1c}
.fs-btn{width:100%;margin-top:10px}
.fs-men{display:flex;flex-direction:column;gap:6px}
.fs-man{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid #eef0f2}
.fs-n{font-weight:600}
.fs-ab{display:flex;gap:6px}.fs-ab .btn{min-width:56px;min-height:48px;font-size:1.1rem}
.fs-sheet select{width:100%;box-sizing:border-box}
.fs-sheet .btn.big{width:100%;margin-top:12px}
.fs-l{color:#5a3e9b}
.bl-est{background:#fff4d6}
.bl-bt{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid #eef0f2}
.bl-warn{background:#fff4d6;border-radius:8px;padding:6px 8px;margin:6px 0;font-size:.92rem}
.badge.warn{background:#f5a623;color:#222}
.bl-fm{padding:10px 0;border-top:1px solid #e3e6ea}
.bl-fh{display:flex;justify-content:space-between;font-size:1.05rem}
.bl-fc{margin:8px 0}
.bl-fx{padding:4px 0}
.ai-card{text-align:center}.ai-st{font-size:1.2rem;margin-bottom:12px}
.btn.danger{background:#c62828;color:#fff;border-color:#c62828}

/* 🧾 team56 billing options */
.bls-sheet .wc-rs small{font-weight:400;opacity:.85}
.bl-units .btn{text-align:left}
.blt-sheet .btn.big{margin-top:12px;width:100%}
.bl-wu{width:auto;min-width:84px}
.bl-fc.wc-rs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
/* 📌 team56 (Effy, Oct 29 12:30 AM): the Ask bar is pinned to the top of the screen while scrolling */
.ask-btn{position:sticky;top:calc(var(--toph,64px) + 6px);z-index:4;box-shadow:0 2px 8px rgba(0,0,0,.12)}
/* 🎯 team56: Friday – five day boxes in one line */
.wc-5{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:6px 0 8px}
.wc-box{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:56px;border-radius:12px;border:2px solid #cfd6dc;background:#fff;font:inherit;padding:4px 2px}
.wc-box.go{border-color:#2b7de9;background:#eef5ff;cursor:pointer;color:#123c73}
.wc-box.go.sel{background:#2b7de9;color:#fff}
.wc-box.ok{border-color:#2e9d5b;background:#e8f6ee;color:#1d6b3d}
.wc-box.off{opacity:.45}
.wc-bd{font-weight:800}
.wc-bi{font-size:.85rem}
/* ✂ team56: split – two groups with + / − counters */
.fs-g{border:1px solid var(--line);border-radius:12px;padding:10px;margin:8px 0}
.fs-gh{display:flex;align-items:center;justify-content:space-between;font-size:1.05rem}
.fs-cnt{display:inline-flex;align-items:center;gap:10px}
.fs-pm{min-width:48px;min-height:48px;font-size:22px;font-weight:800;padding:0}
.fs-num{min-width:28px;text-align:center;font-size:1.3rem}
.fs-men .chip{min-height:44px}
.fs-men .chip{text-decoration:none!important;opacity:1!important;color:#17201b;background:#fff;border:2px solid #cfd6dc}
.fs-men .chip.on{background:#2b7de9;border-color:#2b7de9;color:#fff}

/* ⏰ team57: one hours chooser everywhere (Came / Left) */
.hpick{grid-template-columns:1fr 1fr;gap:8px}
.hpick .hp-l{grid-column:1/-1;font-weight:700;font-size:13px;color:var(--mute);margin-bottom:-4px}
.hpick label{flex-direction:column;align-items:stretch;gap:2px;min-width:0}
.hpick input,.pcard .hpick input{width:100%;min-width:0;box-sizing:border-box;font-size:17px;padding:0 4px}
.pcard .hrsline{margin-top:6px;font-size:15px}
.more-box>.lbl{margin:10px 0 6px}

/* 🗓 team58: tap a ✓ box again = undo; days ahead are pickable; a small Undo after each tap */
button.wc-box.ok{cursor:pointer}
.wc-box.ok.lk{opacity:.85}
.wc-box.go.ahead{border-style:dashed}
.wc-undo{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0 2px;padding:6px 10px;border-radius:10px;background:#f3f5f7;font-size:14px}
.wc-undo .lnk{background:none;border:0;color:#2b7de9;font:inherit;font-weight:700;text-decoration:underline;padding:6px 4px;cursor:pointer}

/* 🧾 team59: QuickBooks line items, Billed ✓ + Invoice #, foreman billing on each site card */
.bl-flt{margin:8px 0 12px}
.bl-bdg{font-size:.75rem;vertical-align:middle;background:#16a34a;color:#fff;border-radius:999px;padding:3px 9px;margin-left:6px;white-space:nowrap}
.bl-card.bl-done{border-left:5px solid #16a34a}
.bl-li{margin:8px 0;border:1px solid var(--line,#e5e7eb);border-radius:10px;overflow:hidden;font-size:.9rem}
.bl-lr{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:7px 10px;border-top:1px solid var(--line,#eef0f3)}
.bl-lr:first-child{border-top:0}.bl-lr span:nth-child(2){color:#6b7280;white-space:nowrap}.bl-lr span:nth-child(3){text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:84px}
.bl-lh{background:#f3f4f6;font-weight:600;font-size:.8rem}.bl-lh span:nth-child(2){color:inherit}
.bl-lt{font-weight:700;background:#f9fafb}
.bl-qb{margin:6px 0 10px;width:100%}
.bl-bill{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0;padding:10px;border-radius:10px;background:#f0fdf4}
.bl-chk{display:flex;align-items:center;gap:8px;font-size:1.05rem;min-height:44px}.bl-chk input{width:26px;height:26px}
.bl-inv{flex:1;min-width:110px}
.bl-fm{margin:10px 0;padding:10px;border:1px solid #fde68a;background:#fffbeb;border-radius:10px}
.bl-fms .bl-fm{background:#fffdf5}
.bl-gh{font-weight:600;font-size:.85rem;margin:8px 0 4px}
.bl-det{margin:8px 0}.bl-det summary{cursor:pointer;min-height:40px;display:flex;align-items:center;color:#374151;font-weight:600}
.bl-qbt{width:100%;font-family:ui-monospace,monospace;font-size:.8rem}
/* 🧹 team59: clear suggestions */
.idea-all{display:flex;gap:8px;justify-content:flex-end;margin-bottom:8px}
.idea-gone{margin-top:10px}.idea-gone summary{min-height:40px;display:flex;align-items:center;cursor:pointer;color:#6b7280}
.idea-g{display:flex;gap:8px;justify-content:space-between;align-items:center;padding:6px 0;border-top:1px solid #eee;font-size:.9rem}
/* ✏️ team59: Edit mode */
.ed-card{padding:12px}
.ed-row{display:flex;gap:10px;justify-content:space-between;align-items:center;padding:8px 0;border-top:1px solid #eee}
.ed-row:first-child{border-top:0}
.ed-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.ed-t{max-width:120px}
.ed-log{padding:6px 0;border-top:1px solid #eee;font-size:.9rem}
.ed-fab{position:fixed;left:12px;bottom:calc(84px + env(safe-area-inset-bottom));z-index:60;border-radius:999px;padding:10px 16px;border:0;background:#111827;color:#fff;font-weight:700;box-shadow:0 4px 14px rgba(0,0,0,.25);min-height:44px}
body.nofeat-split [data-act="fsplit"],body.nofeat-split [data-act="crewsplit"],body.nofeat-friday .wc-fb,body.nofeat-confirm .wc-card{display:none!important}
/* ✎ team59: a locked day with an edit request waiting */
.wc-box.lk{cursor:pointer}.wc-box.eq{background:#fef3c7;border-color:#f59e0b}
.bl-fsum{min-height:52px;display:flex;align-items:center;gap:6px;cursor:pointer;font-size:1.05rem;list-style:none}.bl-fsum::-webkit-details-marker{display:none}

/* 👷 team60: foreman day boxes Mon–Fri in Billing's 👷 Foreman box */
.bl-dh{margin:8px 0 4px;font-size:15px}.bl-dh small{display:block;font-weight:400}
.bl-dd{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.bl-dc{display:flex;flex-direction:column;align-items:stretch;gap:2px;min-width:0}
.bl-db{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:62px;padding:4px 2px;border:2px solid #c9d1cc;border-radius:10px;background:#fff;color:#1d2b24;font:inherit;cursor:pointer}
.bl-db .bl-dn{font-size:13px;font-weight:600}.bl-db .bl-dm{font-size:20px;line-height:1.1;font-weight:700}.bl-db .bl-ds{font-size:11px;color:#5d6b64;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bl-db.on{background:#1f7a4d;border-color:#1f7a4d;color:#fff}.bl-db.on .bl-ds{color:#e3f3ea}
.bl-db.said{border-style:dashed;border-color:#5aa77f;background:#f1faf5;color:#5aa77f}
.bl-do{border:0;background:none;color:#1d5fa8;font:inherit;font-size:12px;padding:4px 0;text-decoration:underline;cursor:pointer;min-height:28px}
.bl-da{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 8px}.bl-da small{flex:1 1 160px}

/* 💵 team61: pay types + foremen in Payroll */
.pay tr.pt-gh th{background:#eef4fb;color:#1d3a5f;text-align:left;font-size:14px;padding:8px 10px;position:static}
.pay tr.pt-gh th small{font-weight:600;color:#555;margin-left:6px}
.pay tr.fm-gh th{background:#fff4e0;color:#6b4300}
.pay td.dw.fsaid b{display:inline-block;border:2px dashed #9aa7b5;border-radius:6px;padding:0 4px;color:#5b6876;font-weight:600}
.pay .fpr-l{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.pay input.fpr{width:76px;min-height:36px;padding:4px 6px;font-size:15px}
.pay .sr{position:absolute;left:-9999px}
.py-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.pt-row{align-items:center;gap:8px}
.pt-pick{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.pt-sel{min-height:44px;font-size:16px;max-width:170px}
.pt-o{display:flex;gap:4px}.pt-o .txt{width:110px}
.pt-q .se-f{margin-top:10px}

/* ✓ team63: the week card folded to one line at the bottom of Friday once every day is answered */
.wc-fold{display:block;width:100%;text-align:left;font:inherit;font-size:16px;color:inherit;cursor:pointer;min-height:52px;padding:14px 16px;border-left-color:#1f9d55;background:#f3fbf6}
.wc-fold .lnk{color:#2b7de9;text-decoration:underline}
.wc-shut{float:right;margin-top:-34px;font-size:14px;background:none;border:0;color:#2b7de9;cursor:pointer;padding:8px}

/* ✏️ team64: pay-type list editor */
.pt-edbtn{width:100%;margin:0 0 10px}
.pt-edl{margin:10px 0 0;text-align:center}
.pted-row{padding:10px 0;border-bottom:1px solid rgba(0,0,0,.08)}
.pted-row:last-child{border-bottom:0}
.pted-top{display:flex;gap:8px;align-items:center}
.pted-top .txt{flex:1;min-width:0}
.pted-fl{display:flex;gap:8px;margin:8px 0 0;flex-wrap:wrap}
.pted-act{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:8px 0 0}
.pted-act span{display:flex;gap:6px;align-items:center}
.pted-act .btn.sm{min-width:44px;min-height:44px}
.pted-who{margin:0 0 10px;padding-left:18px;max-height:30vh;overflow:auto}
/* 📍 team66: Notes site dropdown – other job sites + "📍 Other location…" box */
.noteform .ns-loc{flex:1 1 100%;order:3;border-color:#2563eb}
.noteform .btn{order:4}
.ns-loc[hidden]{display:none!important}
.rq-sheet .ns-loc,#sheet .ns-loc{margin-top:8px}
#sheet .ns-sel{margin-top:8px}
.pill.ns-pill{background:#fff7e6;color:#8a5300;border:1px solid #f2c46d}
/* 🧹 team67: the Notes site dropdown never runs past the screen edge (long "(not one of my sites)" names); 📋 Request guys sits a little below the note box */
.noteform select{max-width:100%;min-width:0;text-overflow:ellipsis}
.noteform+.hqbox{margin-top:16px;padding-top:12px;border-top:1px solid var(--line,#e5e7eb)}
/* 🩹 team69: one long word or link (no spaces) in a note, request or name never pushes the page wider than the phone */
body{overflow-wrap:break-word}
.phone-notif .msg,.phone-notif li,.view li,.sheet li{overflow-wrap:anywhere}
/* 🩹 team69: on a small Android phone (360 wide) the header row was 4px wider than the screen, so every page wiggled sideways; the app name gives way first (… at the end) */
.brand{min-width:0}
.brand-name{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis}

/* 🔢 team70: "120/300" under a box with a limit */
.ccount{display:block;text-align:right;font-size:12px;color:var(--mute);margin:2px 2px 0;font-variant-numeric:tabular-nums}
.ccount.cc-full{color:#b42318;font-weight:700}
.bl-keep{margin:10px 0 0}

/* 🧹 team72: clear-the-week undo + the empty-week line */
.wkundo{display:block;width:100%;margin:8px 0 4px;background:#fff7e0;border-color:#e0b84a;color:#6b4e00}
.wkempty{margin:8px 0 6px;padding:8px 10px;border:1px solid #d9e0dc;border-radius:10px;background:#f7f9f8;color:#3c4741;font-size:.92em;line-height:1.4}

/* 🔍 team75: "Start typing a site…" box above every site-button grid */
.sq{position:relative;display:flex;align-items:center;margin:10px 0 4px}
.sq .sq-ic{position:absolute;left:12px;font-size:16px;pointer-events:none;opacity:.7}
.sq .sq-in{width:100%;padding-left:38px;padding-right:44px;min-height:46px;font-size:16px;border-radius:12px;-webkit-appearance:none;appearance:none}
.sq .sq-in::-webkit-search-cancel-button{-webkit-appearance:none;display:none}
.sq .sq-x{position:absolute;right:4px;width:38px;height:38px;border:0;border-radius:10px;background:#eef1ef;color:#3d4641;font-size:16px;font-weight:700}
.sq .sq-x[hidden]{display:none}
.sq-none{margin:6px 2px 0;font-weight:600;color:#7a4a00}
.sq-none[hidden]{display:none}
[data-sqg]>[hidden]{display:none!important}

/* ☀️ team76: a Sunday box with its own guys; the Guys on Sunday box in the site picker */
.ch .sng{position:absolute;left:1px;bottom:1px;z-index:2;font-style:normal;font-size:9px;line-height:12px;padding:0 2px;border-radius:4px;background:#fff;color:#333;font-weight:800;white-space:nowrap}
.pk-snl{display:flex;align-items:center;gap:8px;margin:4px 0 8px;flex-wrap:wrap}
.pk-snl span{font-weight:700}
.pk-snl input{width:70px;min-height:38px}

/* 📅 team79 (Effy, Oct 30 12:03 PM): the Week tab's action boxes → one row of small chips (two short rows on a 360px phone), so the crews start higher */
.actions.wkacts{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 8px}
.wchip{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:36px;padding:0 8px;border-radius:999px;border:1.5px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-size:13.5px;font-weight:700;line-height:1.1;white-space:nowrap;text-decoration:none}
.wkacts .wchip{flex:1 1 auto}
.wchip.pri{background:var(--g);border-color:var(--g);color:#fff}
.wchip.wkundo{display:flex;width:100%;margin:0 0 8px;white-space:normal;text-align:center;background:#fff7e0;border-color:#e0b84a;color:#6b4e00}
.wchip.wide{display:flex;width:100%;justify-content:flex-start;margin:0 0 8px;white-space:normal;text-align:left;border-radius:12px}
.wchip.sugg-b{background:var(--g2);border-color:var(--g);color:var(--g)}
.wchip.rq-b{background:#fff7ef;border-color:var(--ob);color:#8a3d00}
.banner.slim{padding:6px 10px;margin-bottom:8px;font-size:13.5px;border-radius:10px}
@media (max-width:380px){.wchip{font-size:12.5px;padding:0 6px;gap:3px}}
.wkacts+.wkempty,.wkundo+.wkempty{margin-top:0}
.wkempty{padding:6px 9px;font-size:13px;line-height:1.35}

/* 🔀 team84: the 2nd site of a 2-site day is its own check-in */
.s2-head{margin:6px 0 2px;padding:6px 10px;border-left:4px solid var(--sc,#1f6f43);background:#f3f7f5;border-radius:8px;font-weight:600;font-size:14px;line-height:1.35}
.s2-head small{display:block;font-weight:400;color:#3b4842;font-size:13px;margin-top:2px}
.s2-head.s1{background:#fff8e6;border-left-color:#c98a00;font-weight:400}
.s2-tag{display:inline-block;background:var(--sc,#1f6f43);color:#fff;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700;margin-right:4px}
.mvline.s2l{color:#0f4c6b;font-weight:600}
.sc-ok.s2none{background:#f3f5f4;color:#3b4842;border-color:#d5ddd9}

/* 🔀 team85: a 2-site foreman picks the site per day */
.wc-choose .wc-row{grid-template-columns:1fr 1fr}
.wc-choose .wc-at{font-weight:700}
.wc-choose .wc-both{border-style:dashed}

/* 📆 team86: dates big, This/Next small · notes warning · not-sent-yet (orange) · payroll 0-day money */
h1.h .wklbl{font-size:.55em;font-weight:700;color:var(--mute);margin-left:6px;vertical-align:middle;white-space:nowrap}
.relwarn{background:#fff4e5;border:1px solid #f0a040;color:#6b3600;border-radius:12px;padding:10px 12px;margin:8px 0 10px;font-size:14px;line-height:1.35}
.relwarn small{display:block;margin-top:4px;color:#8a5a20;font-size:12px}
.relwarn .two{margin-top:8px}
.sc-q{color:#b85700;font-weight:800}
.okt.pend{color:#b85700;font-weight:800}
.sc-pend{background:#fff4e5;border:1px solid #f0a040;color:#7a3e00;border-radius:10px;padding:9px 11px;margin:8px 0 2px;font-weight:700;font-size:14px;line-height:1.35}
.netbar{white-space:normal}
.z0tag{display:block;margin-top:3px;background:#fff4e5;color:#8a4300;border-radius:6px;padding:1px 5px;font-size:11px;font-weight:800;width:max-content}
.py-z0{background:#fff4e5;border-color:#f0a040;color:#7a3e00}
button.py-lwnag{display:block;width:100%;text-align:left;cursor:pointer;font:inherit}
.netbar.q{background:#fff4e5;color:#7a3e00;border-bottom-color:#f0a040}

/* ⚠ team87: 2-site day – West Park sent without the men who left Independence for it · Sunday check-in · QuickBooks list · regional asks */
.s2warn{margin:6px 0;padding:10px 12px;border:2px solid var(--ob);background:var(--o);border-radius:10px;font-size:15px;line-height:1.35}
.s2warn b{display:block;color:#8a3a08;font-size:16px}
.s2warn small{display:block;margin-top:4px;color:#3b2a1f;font-size:13px}
.s2warn .btn.s2fix{width:100%;margin-top:8px}
.s2fixed{margin:6px 0;padding:8px 12px;border-radius:10px;background:var(--g2);color:var(--g);font-weight:600;font-size:14px}
.s2fixed.pulse{animation:mvp 1s ease 2}
.sunwarn{margin:6px 0;padding:8px 10px;border-radius:10px;background:var(--y);border:1px solid var(--yb);font-size:14px}
.qbset{list-style:none;margin:6px 0;padding:0;max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:10px}
.qbset li{border-bottom:1px solid var(--line)}
.qbset label{display:flex;align-items:center;gap:10px;padding:10px 12px;min-height:48px;font-size:16px}
.qbset input{width:22px;height:22px}
.qbset .qbsub{margin-left:auto;color:var(--mute);font-size:13px}
.qbsum{margin:8px 0;padding:8px 12px;border-radius:10px;background:var(--g2);font-weight:700}
.rq-asked{margin:6px 0;padding:8px 12px;border-radius:10px;background:var(--y);border:1px solid var(--yb);font-size:15px}
.rqc.mine{border-style:solid;background:#fff4cc;color:#6b4e00}
.bl-dd.bl-d6{grid-template-columns:repeat(6,1fr)}
.wc-5.wc-6{grid-template-columns:repeat(6,1fr)}
.wc-box.sun:not(.ok){border-style:dashed;opacity:.9}

/* 🔐 team90: plain-link sign-in (name + password) and "Ask for access"; Effy's access requests */
.us-form .pw-in{font-size:20px;min-height:54px}
.gate-or{width:100%;max-width:380px;display:flex;align-items:center;gap:10px;margin:18px auto 6px;color:#6b7a72;font-size:15px}
.gate-or::before,.gate-or::after{content:"";flex:1;height:1px;background:#d5ddd8}
.gate-ask{width:100%;max-width:380px;min-height:52px;font-size:18px;font-weight:700;border:2px solid var(--g);background:#fff;color:var(--g);border-radius:14px}
.gate-back{margin-top:14px;font-size:17px}
.areq-card{border-left:4px solid #e0a100}
.areq-row{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}
.areq-top{font-size:17px}
.areq-note{margin:2px 0;font-style:italic}
.ar-sel{width:100%;min-height:48px;font-size:17px;border:1px solid #c9d3cd;border-radius:10px;padding:0 10px;background:#fff;margin-bottom:6px}

/* ➕ team91: "Other / new site" and "Save note" in Change site; typed sites in Billing */
.wc-new{margin-top:10px;padding-top:10px;border-top:1px dashed #cfd8d2}
.wc-new .wc-newb{border-style:dashed}
.wc-new .btn.wc-newb.on,.wc-new .btn.wc-newb{color:#17201b}
.wc-new .btn.wc-newb.on{background:#eef6f1;border-color:#1f6f43}
.wc-new .txt{margin-top:4px}
.wc-notesave{margin-top:8px}
.bl-new{display:inline-block;font-size:.72rem;font-weight:700;background:#fff3cd;color:#7a5200;border:1px solid #f0d58a;border-radius:999px;padding:1px 8px;vertical-align:middle}

/* 💵 team93: reimbursements on a check and on a site's bill */
td.rbc{min-width:130px;text-align:right;vertical-align:top}
td.rbc .rb-l,td.rbc .rb-x,td.rbc .rb-add{margin-left:auto}
td.rbc .rb-l{text-align:left}
.rb-x{margin-bottom:4px}
.rb-l{display:flex;align-items:flex-start;gap:4px;background:#eef7f1;border:1px solid #cfe5d7;border-radius:7px;padding:3px 6px;margin:0 0 4px;font-size:12.5px;font-weight:700;color:#14532d;line-height:1.3}
.rb-l span{flex:1;white-space:normal}
.rb-l,.rb-x{max-width:150px}
.rb-del{border:0;background:transparent;color:#8a1c1c;font-size:15px;font-weight:800;min-width:28px;min-height:28px;padding:0;cursor:pointer}
.rb-add{display:block;margin-top:4px;min-height:34px;font-size:13px;white-space:nowrap}
.rb-sp{display:block;font-weight:600;white-space:nowrap}
.z0tag.rb-only{background:#eef7f1;color:#14532d}
.rb-chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.rb-chips .chip{min-height:38px;padding:4px 14px;font-size:15px;cursor:pointer}
.rb-list{margin:6px 0 10px}
.rb-list .rb-l{font-size:15px;padding:8px 10px}
.bl-rb{border-top:1px dashed var(--line);padding-top:10px}
.bl-rc{flex:1 1 140px;font-size:16px;min-height:48px}
.bl-rbl{color:#14532d;font-weight:700}
#bl-xk{margin-top:8px}

/* 📲🔔 team97: full-screen "Install the app" / "Turn on notifications" right after sign-in */
html.ob-on,html.ob-on body{overflow:hidden}
.ob{position:fixed;inset:0;z-index:25;background:#fff;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;justify-content:center;padding:calc(24px + env(safe-area-inset-top)) 18px calc(24px + env(safe-area-inset-bottom))}
.ob-card{width:100%;max-width:460px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;margin:auto 0}
.ob-ic{border-radius:18px;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.ob-n{margin:6px 0 0;color:var(--g);font-weight:700;font-size:14px;letter-spacing:.3px;text-transform:uppercase}
.ob-t{font-size:28px;margin:2px 0 0}
.ob-sub{margin:0;color:var(--mute);font-size:17px}
.ob-go{width:100%;min-height:60px;font-size:21px;margin-top:8px;display:flex;align-items:center;justify-content:center;text-decoration:none}
.ob-small{margin:0;color:var(--mute);font-size:15px}
.ob-note{margin:6px 0 0;background:var(--g2);border-radius:12px;padding:10px 12px;font-size:15px;text-align:left;width:100%}
.ob-warn{margin:4px 0 0;background:var(--y);border:1px solid var(--yb);border-radius:12px;padding:10px 12px;font-size:15px;text-align:left;width:100%}
.ob-steps{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;width:100%;text-align:left}
.ob-steps li{display:flex;gap:12px;align-items:flex-start;background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:12px}
.ob-steps li svg{vertical-align:-5px;color:#0a84ff}
.ob-sn{flex:none;width:30px;height:30px;border-radius:50%;background:var(--g);color:#fff;font-weight:800;display:grid;place-items:center}
.ob-pic{margin-top:8px;background:#f2f2f7;border-radius:10px;padding:4px 6px}
.ob-later{margin-top:14px;color:var(--mute);font-size:16px;min-height:44px;background:none;border:0;text-decoration:underline}
.ob-pc{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:10px 12px}
.ob-pc-t{flex:1;font-size:15px}
.ob-pc .btn{flex:none;white-space:nowrap}

/* 🎤 team101 + team109 ("1 box", Effy Nov 5): the ✨ Ask bar is ONE box with the 🎤 inside it at the right end (its own big tap
   area – car screen), and in the Ask sheet the 🎤 sits inside the text box, bottom-right corner */
.ask-bar{display:flex;gap:0;align-items:stretch;position:sticky;top:calc(var(--toph,64px) + 6px);z-index:4;margin:4px 0 12px;background:#fff8e6;border:1px solid #f0c64a;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.12);overflow:hidden}
.ask-bar .ask-btn{position:static;flex:1 1 auto;margin:0;min-width:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.mic-btn{flex:0 0 auto;width:auto;max-width:96px;min-width:72px;min-height:56px;font-size:28px;padding:0 14px;background:#fff8e6;border-color:#f0c64a}
.ask-bar .mic-btn{border:0;border-left:1px solid rgba(240,198,74,.7);border-radius:0;background:transparent;box-shadow:none;margin:0}
.mic-btn.mic-on,.ask-bar .mic-btn.mic-on,.ask-in .mic-btn.mic-on{background:#d32f2f;border-color:#b71c1c;color:#fff;animation:micPulse 1.2s ease-in-out infinite}
.mic-btn.mic-off{opacity:.45;filter:grayscale(1)}
@keyframes micPulse{0%,100%{box-shadow:0 0 0 0 rgba(211,47,47,.55)}50%{box-shadow:0 0 0 10px rgba(211,47,47,0)}}
.ask-in{position:relative;display:block}.ask-in .ask-text{display:block;width:100%;padding-right:84px;padding-bottom:18px}
.ask-in .mic-btn{position:absolute;right:8px;bottom:8px;width:64px;min-width:64px;max-width:64px;height:64px;min-height:64px;padding:0;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.btn.big.mic-btn{font-size:30px;line-height:1}
.ask-bar .ask-btn,.ask-bar .mic-btn{min-height:56px}   /* big enough on a phone and on the car screen */
.mic-st{min-height:1.2em;margin:6px 0 0;font-weight:700;color:#b71c1c}

/* ↕ team109: dragging a crew row */
tr.drag-on{opacity:.85;outline:3px solid #1f6f43;background:#e8f5ec}
.cnb{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
