@import "https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap";:root{--red:#e31e26;--red-ink:#fff;--red-soft:#fbe7e5;--bg:#f6f4f2;--surface:#fff;--line:#e4dfdb;--ink:#1f1b19;--muted:#6e6662;--green:#1d7a46;--green-soft:#e3f3e9;--amber:#9a6200;--amber-soft:#fcf1d9;--blue:#2c5aa0;--blue-soft:#e5edf9;color:var(--ink);background:var(--bg);font-family:Lato,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0;font-size:15px}button,input,select,textarea{font:inherit;color:inherit}button{border:1px solid var(--line);background:var(--surface);cursor:pointer;border-radius:8px;padding:7px 12px;font-size:14px;font-weight:700}button:hover{border-color:var(--muted)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--red);border-color:var(--red);color:var(--red-ink)}button.ghost{color:var(--muted);background:0 0;border-color:#0000}button.ghost:hover{color:var(--ink);border-color:var(--line)}button.danger{color:var(--red)}button.danger-on{background:var(--red-soft);color:var(--red);border-color:var(--red)}:focus-visible{outline:2px solid var(--red);outline-offset:2px}input,select,textarea{border:1px solid var(--line);background:var(--surface);border-radius:8px;min-width:0;padding:8px 10px}.top{color:var(--ink);border-bottom:3px solid var(--red);background:#fff;flex-wrap:wrap;align-items:center;gap:12px 28px;padding:12px 20px;display:flex}.brand{align-items:center;gap:12px;display:flex}.logo{letter-spacing:.06em;text-align:center;border:2px solid #fff;border-radius:6px;padding:2px 10px 3px;font-size:22px;font-weight:900;line-height:1}.logo small{letter-spacing:.14em;font-size:9px;font-weight:700;display:block}.brand-sub{opacity:.85;font-weight:700}.tabs{flex-wrap:wrap;gap:4px;display:flex}.tabs button{color:var(--muted);background:0 0;border:0;padding:8px 12px}.tabs button.on{color:var(--red);background:var(--red-soft)}.sample{background:var(--amber-soft);color:var(--amber);text-align:center;padding:8px 16px;font-size:13px;font-weight:700}.wrap{max-width:1100px;margin:0 auto;padding:8px 16px 64px}.bar{flex-wrap:wrap;align-items:center;gap:12px 20px;margin:20px 0 16px;display:flex}h1{margin:0;font-size:26px;font-weight:900}h2.sub{margin:28px 0 10px;font-size:17px}.week{align-items:center;gap:6px;margin-right:auto;display:flex}.week strong{text-align:center;font-variant-numeric:tabular-nums;min-width:190px}.muted{color:var(--muted);font-weight:400}.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:20px;display:grid}.stat{background:var(--surface);border:1px solid var(--line);border-radius:10px;flex-direction:column;padding:12px 16px;display:flex}.stat b{font-variant-numeric:tabular-nums;font-size:24px}.stat span{color:var(--muted);font-size:13px}.stat.alert{border-color:var(--red);background:var(--red-soft)}.stat.alert b{color:var(--red)}.stat.warn{background:var(--amber-soft);border-color:#e9c46a}.day h2{margin:22px 0 8px;font-size:15px;font-weight:900}.none{color:var(--muted);margin:0;font-size:14px}.cards{flex-direction:column;gap:8px;display:flex}.shift{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:10px;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.shift.st-unassigned{border-left-color:var(--red)}.shift.st-offered{border-left-color:#e0a526}.shift.st-accepted{border-left-color:var(--green)}.time{font-variant-numeric:tabular-nums;font-weight:900}.venue{font-weight:700}.meta{color:var(--muted);font-size:13px}.who{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.name.empty{color:var(--red);font-weight:700}.shift-side{align-items:center;gap:8px;display:flex}.est{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;min-width:80px;font-size:13px}.pill{white-space:nowrap;border-radius:99px;padding:2px 9px;font-size:12px;font-weight:700}.p-unassigned{background:var(--red-soft);color:var(--red)}.p-offered{background:var(--amber-soft);color:var(--amber)}.p-accepted,.s-active{background:var(--green-soft);color:var(--green)}.s-invited{background:var(--blue-soft);color:var(--blue)}.modal-back{z-index:10;background:#140f0c73;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:14px;flex-direction:column;gap:14px;width:min(560px,100%);max-height:90vh;padding:22px;display:flex;overflow:auto}.modal h2{margin:0;font-size:20px;font-weight:900}.modal p{margin:0}.grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}label{color:var(--muted);flex-direction:column;gap:5px;font-size:13px;font-weight:700;display:flex}label.check{color:var(--ink);flex-direction:row;align-items:center}.actions{justify-content:flex-end;gap:8px;display:flex}.legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:13px;display:flex}.dot{border-radius:50%;width:10px;height:10px;margin-right:-8px;display:inline-block}.dot.green{background:var(--green)}.dot.black{background:var(--ink)}.dot.red{background:var(--red)}.people{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.person{border:1px solid var(--line);border-radius:10px;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n b""m b";align-items:center;gap:2px 12px;padding:10px 12px;display:grid}.pname{grid-area:n;font-weight:900}.pmeta{color:var(--muted);grid-area:m;font-size:13px}.person button{grid-area:b}.person.green .pname{color:var(--green)}.person.red{background:var(--red-soft);border-color:#f2c2be}.person.red .pname{color:var(--red)}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;background:#faf8f7;padding:10px 12px;font-size:12px}td{border-bottom:1px solid var(--line);padding:9px 12px}tr:last-child td{border-bottom:0}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.inline-add{flex-wrap:wrap;gap:8px;display:flex}.inline-add input{flex:150px}.exv{flex-direction:row;align-items:center;gap:10px;margin-bottom:8px}.toast{background:var(--ink);color:#fff;z-index:20;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:700;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@media (width<=640px){.shift{grid-template-columns:1fr}.shift-side{justify-content:space-between}.est{text-align:left}}.wrap{max-width:1440px}.seg{border:1px solid var(--line);background:var(--surface);border-radius:9px;display:inline-flex;overflow:hidden}.seg button{color:var(--muted);background:0 0;border:0;border-radius:0}.seg button.on{background:var(--ink);color:#fff}.grid-wrap{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow-x:auto}table.roster{table-layout:fixed;min-width:1100px}table.roster th,table.roster td{border-right:1px solid var(--line);vertical-align:top}table.roster thead th{text-align:left;color:var(--ink);font-size:13px}table.roster thead th span{color:var(--muted);font-weight:400;display:block}table.roster thead th.today{background:var(--red-soft)}th.rowh{width:190px;color:var(--ink);text-align:left;z-index:1;white-space:normal;background:#faf8f7;font-size:14px;position:sticky;left:0}th.rowh span{color:var(--muted);font-size:12px;font-weight:400;display:block}td.cell{height:64px;padding:6px;position:relative}td.cell .add{padding:0 7px;font-size:14px;line-height:20px;display:none;position:absolute;bottom:4px;right:4px}td.cell:hover .add{display:block}td.cell.avail{background:#f4faf6}td.cell.off{background:#f0eeec}.chip{text-align:left;border:1px solid var(--line);background:var(--surface);border-left-width:4px;border-radius:7px;gap:1px;width:100%;margin-bottom:4px;padding:5px 7px;font-size:12px;font-weight:400;display:grid}.chip .ct{font-variant-numeric:tabular-nums;font-weight:900}.chip .cr{color:var(--muted)}.chip .cn{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.chip.st-unassigned{border-left-color:var(--red);background:var(--red-soft)}.chip.st-unassigned .cn{color:var(--red)}.chip.st-offered{background:var(--amber-soft);border-left-color:#e0a526}.chip.st-accepted{border-left-color:var(--green)}.state{border-radius:7px;width:100%;padding:6px;font-size:12px}.state.is-avail{color:var(--green);background:0 0;border:1px dashed #a9d4b8}.state.is-off{color:var(--muted);background:#e3dfdc;border-color:#0000}.hint{color:var(--muted);margin:10px 2px;font-size:13px}.logo-img{width:auto;height:44px;display:block}.brand-sub{color:var(--muted)}.showsel{flex-direction:row;align-items:center;gap:8px}table.roster thead th em{color:var(--green);font-size:12px;font-style:normal;font-weight:700;display:block}td.cell.dim .chip{opacity:.45}td.pad{text-align:center;padding:28px}.month{grid-template-columns:repeat(7,minmax(150px,1fr));min-width:1100px;display:grid}.mhead{border-bottom:1px solid var(--line);border-right:1px solid var(--line);background:#faf8f7;padding:10px 12px;font-size:13px;font-weight:700}.mday{border-right:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;gap:2px;min-height:120px;padding:4px;display:flex}.mday.other{background:#faf8f7}.mday.other .mnum{color:#b8b0ab}.mday.today{background:#fff5f4}.mnum{color:var(--muted);background:0 0;border:0;align-self:flex-end;padding:0 6px;font-size:13px}.mnum:hover{color:var(--red);text-decoration:underline}.mline{border:0;border-left:3px solid var(--green);background:var(--green-soft);color:#14532d;text-align:left;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;padding:3px 6px;font-size:12px;font-weight:400;overflow:hidden}.mline.st-unassigned{border-left-color:var(--red);background:var(--red-soft);color:#8f1410}.mline.st-offered{background:var(--amber-soft);color:#6b4500;border-left-color:#e0a526}.pname.link{text-align:left;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px;background:0 0;border:0;padding:0;font-size:15px}.pname.link:hover{text-decoration-color:currentColor}.back{align-self:flex-start;padding-left:0}.card-head{align-items:center;gap:14px;display:flex}.avatar{background:var(--red-soft);width:56px;height:56px;color:var(--red);border-radius:50%;flex:none;place-items:center;font-size:20px;font-weight:900;display:grid}.facts{gap:8px;margin:0;display:grid}.facts div{border-bottom:1px solid var(--line);grid-template-columns:150px minmax(0,1fr);gap:12px;padding-bottom:8px;display:grid}.facts dt{color:var(--muted);font-size:13px}.facts dd{margin:0;font-weight:700}.facts dd.green{color:var(--green)}.facts dd.red{color:var(--red)}.mini{color:var(--muted);margin:0;padding-left:18px;font-size:13px}.contact{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;display:grid}.person .pname.link{grid-area:n;justify-self:start}.sms{background:#eef3fb;border-radius:12px;padding:12px 14px}.sms p{margin:6px 0 0}.sms-label{color:var(--blue);font-size:12px;font-weight:700}.center{text-align:center;place-items:center;min-height:60vh;display:grid}.login{background:var(--surface);border:1px solid var(--line);text-align:left;border-radius:14px;flex-direction:column;gap:14px;width:min(380px,92vw);padding:28px;display:flex}.login h1{font-size:20px}.logo-img.big{align-self:center;height:64px}.err{color:var(--red);margin:0;font-size:14px;font-weight:700}.signout{margin-left:auto}.sample.bad{background:var(--red-soft);color:var(--red)}.phone{background:var(--bg);flex-direction:column;max-width:430px;min-height:100vh;margin:0 auto;display:flex;position:relative}.ph-top{border-bottom:3px solid var(--red);background:#fff;justify-content:space-between;align-items:center;padding:10px 16px;font-weight:700;display:flex}.ph-main{flex:1;padding:4px 16px 96px}.ph-main h1{margin:20px 0 10px;font-size:20px}.ph-card{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--line);border-radius:12px;margin-bottom:12px;padding:14px 16px}.ph-card.st-offered{border-left-color:#e0a526}.ph-card.st-accepted{border-left-color:var(--green)}.ph-date{font-size:17px;font-weight:900}.ph-time{font-variant-numeric:tabular-nums;margin:2px 0 6px;font-size:22px;font-weight:900}.ph-venue{font-size:16px;font-weight:700}.ph-note{background:var(--green-soft);color:var(--green);border-radius:8px;margin-top:8px;padding:6px 10px;font-size:13px;font-weight:700}.ph-foot{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}.ph-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;display:grid}button.big{border-radius:10px;padding:14px 12px;font-size:16px}.ph-nav{border-top:1px solid var(--line);width:100%;max-width:430px;padding-bottom:env(safe-area-inset-bottom);z-index:5;background:#fff;grid-template-columns:repeat(3,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.ph-nav button{color:var(--muted);background:0 0;border:0;border-top:3px solid #0000;border-radius:0;padding:16px 4px}.ph-nav button.on{color:var(--red);border-top-color:var(--red)}.badge{background:var(--red);color:#fff;border-radius:99px;margin-left:6px;padding:1px 7px;font-size:12px}.ph-sheet{z-index:10;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.ph-sheet-box{background:#fff;border-radius:16px 16px 0 0;width:100%;max-width:430px;padding:20px 18px 28px}.ph-sheet-box h2{margin:0 0 8px;font-size:20px}.ph-cal{grid-template-columns:repeat(7,1fr);gap:5px;margin-top:14px;display:grid}.ph-dow{text-align:center;color:var(--muted);font-size:12px;font-weight:700}.ph-day{aspect-ratio:1;flex-direction:column;justify-content:center;align-items:center;padding:0;font-size:15px;line-height:1.1;display:flex}.ph-day small{color:var(--muted);height:10px;font-size:9px;font-weight:400}.ph-day.past{opacity:.35}.ph-day.work{background:var(--green-soft);border-color:var(--green);color:var(--green)}.ph-day.off{background:var(--ink);border-color:var(--ink);color:#fff}.ph-day.off small{color:#ddd}.ph-key{color:var(--muted);gap:16px;margin-top:14px;font-size:13px;display:flex}.ph-key .k{border:1px solid var(--line);vertical-align:-2px;background:#fff;border-radius:4px;width:14px;height:14px;margin-right:5px;display:inline-block}.ph-key .k.work{background:var(--green-soft);border-color:var(--green)}.ph-key .k.off{background:var(--ink);border-color:var(--ink)}.ph-call{text-align:center;background:var(--red);color:#fff;border-radius:10px;padding:15px;font-weight:900;text-decoration:none;display:block}.viewas{align-items:center;gap:8px;margin-left:12px;display:inline-flex}.viewas select{padding:3px 8px;font-size:13px}.phone .toast{text-align:center;width:calc(100% - 32px);max-width:398px;bottom:84px}.ph-day.offer,.ph-key .k.offer{background:var(--amber-soft);border-color:#e0a526}.ph-key{flex-wrap:wrap}.vpick{position:relative}.vlist{z-index:30;border:1px solid var(--line);background:#fff;border-radius:10px;max-height:260px;margin:4px 0 0;padding:4px;list-style:none;position:absolute;top:100%;left:0;right:0;overflow:auto;box-shadow:0 8px 24px #00000024}.vlist button{text-align:left;border:0;border-radius:6px;width:100%;padding:8px 10px;font-weight:700}.vlist button:hover,.vlist button:focus{background:var(--red-soft)}.vnone{padding:8px 10px;font-size:13px}.ph-actions.one{grid-template-columns:1fr}button.wide,.wide{width:100%;margin-top:10px;display:block}.ph-status{background:var(--surface);border:1px solid var(--line);text-align:center;border-radius:12px;margin:16px 0;padding:22px 16px;font-size:18px;font-weight:900}.ph-status.on{background:var(--green-soft);border-color:var(--green);color:var(--green)}.ph-status.brk{background:var(--amber-soft);color:var(--amber);border-color:#e0a526}.ph-cam{text-align:center;background:var(--red);color:#fff;cursor:pointer;border-radius:10px;margin-top:12px;padding:16px;font-size:16px;font-weight:900;display:block}.ph-cam.busy{opacity:.6}.sheet dl{margin:0}.sheet dl div,.ph-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:7px 0;font-weight:700;display:flex}.sheet dt{color:var(--muted);font-weight:400}.sheet dd{text-align:right;margin:0;font-weight:700}.ph-row input{padding:6px 8px;font-weight:700}.ph-total{justify-content:space-between;align-items:baseline;margin-top:12px;font-weight:700;display:flex}.ph-total b{font-size:24px}.ph-rate{border:0;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0 0;padding:0;display:grid}.ph-rate legend{margin-bottom:6px;padding:0;font-weight:700}.ph-rate button{padding:12px 4px}.ph-rate button.on{background:var(--ink);border-color:var(--ink);color:#fff}.ph-field{margin-top:16px;font-weight:700;display:block}.ph-field input,.ph-field textarea{width:100%;margin-top:6px;font-weight:400;display:block}.ph-sig{border:2px dashed var(--muted);touch-action:none;background:#fff;border-radius:10px;width:100%;height:auto;margin-top:6px;display:block}.err{color:var(--red);font-weight:700}.chip.st-clocked_on,.mline.st-clocked_on{border-left-color:var(--blue);background:var(--blue-soft)}.chip.st-completed,.mline.st-completed{border-left-color:#e0a526}.chip.st-signed_off,.mline.st-signed_off{border-left-color:var(--green);background:var(--green-soft)}.rec-photos{gap:10px;margin:10px 0;display:flex}.rec-photos img{object-fit:cover;border:1px solid var(--line);border-radius:8px;width:110px;height:110px}.rec-sig{border:1px solid var(--line);background:#fff;border-radius:8px;max-width:260px;display:block}.phone .ph-row{color:var(--ink);flex-flow:wrap;font-size:15px;display:flex}.phone .ph-row span{align-items:center;gap:4px;display:flex}.phone .ph-row input{width:auto;font-size:15px}.ph-feedback{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin:14px 0 0;padding:12px 14px;font-size:14px;line-height:1.45}.ph-loc{background:var(--bg);color:var(--muted);border-radius:8px;margin:8px 0 0;padding:8px 10px;font-size:13px;font-weight:700}.ph-loc.ok{background:var(--green-soft);color:var(--green)}.ph-loc.bad{background:var(--amber-soft);color:var(--amber)}.editbox{background:var(--bg);border:1px solid var(--line);border-radius:10px;margin-top:12px;padding:12px 14px}.editbox .grid{grid-template-columns:repeat(3,1fr)}.ph-card.alerts{border-left-color:var(--red);margin-top:16px}.ph-card.alerts ol{margin:6px 0 0;padding-left:18px}.ph-card.alerts li{margin-bottom:4px}.ph-top,.top{padding-top:calc(10px + env(safe-area-inset-top))}.phone .ph-sheet-box{padding-bottom:calc(28px + env(safe-area-inset-bottom))}@media (width<=700px){input,select,textarea{font-size:16px!important}}html,body{max-width:100%;overflow-x:hidden}.phone{overflow-x:hidden}
