:root{--bg: #f4f3f1;--ink: #2b2f33;--muted: #7a7f85;--line: #ebe9e6;--ok: #4f7a5f;--warn: #c08a3e;--bad: #c0504d;--accent: #4f6f8f}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.38 -apple-system,system-ui,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;width:100%;font-size:16px;padding:10px 11px;border:1px solid #d6d3cf;border-radius:10px;background:#fff;color:var(--ink)}.page{max-width:520px;margin:0 auto;padding:10px 14px calc(96px + env(safe-area-inset-bottom))}.center{text-align:center}.page.center{display:grid;place-items:center;min-height:60vh}h1{font-size:24px;margin:4px 4px 12px}h2{font-size:20px;margin:6px 0 10px}.lbl{font-weight:600}.cap{text-transform:capitalize}.muted{color:var(--muted);font-size:14px}.tag{font-size:12px;color:var(--muted)}.hint{font-size:13px;color:var(--muted);margin-top:6px}.err{color:var(--bad);font-size:14px;margin-top:6px}.note{margin-top:10px;padding:8px 10px;background:#fbf3e6;border-radius:8px;font-size:14px}.row{display:flex;gap:8px;align-items:center}.row>*{flex:1}.row.between{justify-content:space-between}.row.between>*{flex:0 1 auto}.hdr{display:flex;align-items:center;gap:10px;padding:6px 4px 10px}.hdr .n{font-weight:600;font-size:16px}.net{margin-left:auto;white-space:nowrap;font-size:11px;padding:4px 9px;border-radius:20px;background:#e3ece5;color:var(--ok);font-weight:600}.net.off{background:#eee9e3;color:var(--muted)}.card{background:#fff;border-radius:16px;padding:13px 14px;margin-bottom:10px;box-shadow:0 1px 2px #0000000d}.card.admin{border:1.5px dashed #c9cfd6}.card.warnline{border-left:5px solid var(--warn)}.big{font-size:32px;font-weight:700;margin:2px 0 4px}.big.off{color:var(--muted);font-size:26px}.state{font-weight:600;margin-top:6px}.state.ok{color:var(--ok)}.btn{display:block;width:100%;border:0;border-radius:12px;padding:13px;font-size:16px;font-weight:600;background:var(--accent);color:#fff;margin-top:10px}.btn:disabled{background:#c9cfd6}.btn.ghost{background:var(--bg);color:var(--ink)}.btn.small{padding:9px 10px;font-size:14px;margin-top:8px}.link{background:none;border:0;color:var(--muted);font-size:15px;padding:10px 4px}.pill{display:inline-block;font-size:11px;font-weight:700;padding:1px 6px;border-radius:6px;background:#fff}.pill.dark{background:#3a3f44;color:#fff}.invite{border-left:5px solid #8fa8c8}.pushcard{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.pushcard .btn{margin:0}.monthbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.monthbar button{font-size:24px;width:40px;height:40px;border:0;background:var(--bg);border-radius:10px}.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:8px}.cal .wd{text-align:center;font-size:12px;color:var(--muted)}.c{--rc: #b5b0aa;--rcd: color-mix(in srgb, var(--rc) 60%, #1e2328);position:relative;aspect-ratio:1 / 1.05;border:2.5px solid transparent;border-radius:9px;background:#f7f6f5;padding:2px 3px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;color:#a0a0a0;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation}.c .n{font-size:14px;font-weight:600}.c .h{font-size:10.5px;align-self:center;min-height:12px}.c .g{position:absolute;left:0;right:0;top:50%;transform:translateY(-40%);text-align:center;font-size:22px;font-weight:700;line-height:1;pointer-events:none}.c .r{position:absolute;top:2px;right:2px;font-size:9px;font-weight:700;background:#ffffffd9;color:#3a3f44;border-radius:4px;padding:0 3px}.c .r.other{background:#3a3f44;color:#fff}.c .q{position:absolute;bottom:1px;left:2px;font-size:10px}.c.worked,.c.working,.c.extra,.c.tabel{background:var(--rc);color:var(--ink)}.c.tabel .g{opacity:.65}.c.extra{box-shadow:inset 0 0 0 2px #ffffffe6}.c.working{box-shadow:inset 0 0 0 3px #ffffffbf}.c.planned,.c.today{background:color-mix(in srgb,var(--rc) 20%,#fff);color:#55505a}.c.missed{background:#fff;box-shadow:inset 0 0 0 2px #d98a8a;color:var(--ink)}.c.missed .g{color:var(--bad)}.c.nomark{background:#fff;box-shadow:inset 0 0 0 2px #e0a868;color:var(--ink)}.c.nomark .g{color:var(--warn)}.c.std{border-color:var(--rcd)}.c.now{outline:2.5px solid #3a3f44;outline-offset:1px}.c.sel:not(.now){outline:2px dashed #9a9a9a;outline-offset:1px}.sum{display:flex;gap:6px;margin-top:10px;font-size:12px}.sum div{flex:1;background:var(--bg);border-radius:10px;padding:6px 8px}.sum b{font-size:18px;display:block}.detail{margin-top:10px;padding:10px 12px;background:var(--bg);border-radius:10px;font-size:15px}.detail .okc{color:var(--ok)}.detail .paid{margin-top:4px;font-weight:600}.reqline{margin-top:4px;font-size:14px;color:#6a5a3a}.legend-box{margin-top:10px;font-size:13px;color:var(--muted)}.legend-box summary{cursor:pointer}.legend{display:flex;flex-wrap:wrap;gap:6px 12px;margin:8px 0}.legend span{display:inline-flex;align-items:center;gap:5px}.legend b{font-size:15px;color:var(--ink)}.legend .sw{display:inline-block;width:13px;height:13px;border-radius:4px}.item{padding:11px 0;border-top:1px solid var(--line)}.item:first-of-type,.lbl+.item{border-top:0}.item .body{margin-top:4px;white-space:pre-wrap}.link-row{cursor:pointer}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--bad);margin-right:6px;vertical-align:middle}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tile{text-align:left;background:#fff;border:0;border-radius:14px;padding:12px;min-height:84px;box-shadow:0 1px 2px #0000000d}.tile .i{font-size:20px}.tile .t{font-weight:600;margin-top:4px;font-size:14.5px}.tile .s{font-size:11.5px;color:var(--muted)}.st{font-size:12px;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap}.st.new{background:#f6eddc;color:#8a6420}.st.ok{background:#e3ece5;color:var(--ok)}.st.no{background:#f5e2e1;color:var(--bad)}.thread{margin-top:8px;display:grid;gap:6px}.bubble{background:var(--bg);border-radius:12px;padding:7px 10px;font-size:14.5px;max-width:88%}.bubble.mine{background:#e7edf3;justify-self:end}.card.admin input{margin-top:8px}.reader h2{margin-top:2px}.md h3{font-size:17px;margin:14px 0 6px}.md p{margin:6px 0}.md ul,.md ol{padding-left:22px;margin:6px 0}.md li{margin:3px 0}.md blockquote{margin:8px 0;padding:8px 10px;background:#fbf3e6;border-radius:8px;font-size:14px}.lock{text-align:center;padding:26px 14px}.lock .i{font-size:40px}.lock .lbl{margin:6px 0}.tabs{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding:6px 4px calc(10px + env(safe-area-inset-bottom));max-width:520px;margin:0 auto;z-index:5}.tab{position:relative;border:0;background:none;display:grid;justify-items:center;gap:2px;font-size:10.5px;color:var(--muted);padding:2px 0}.tab .i{font-size:20px;filter:grayscale(1);opacity:.6}.tab.on{color:var(--ink);font-weight:600}.tab.on .i{filter:none;opacity:1}.badge{position:absolute;top:-3px;left:55%;background:var(--bad);color:#fff;font-size:10px;font-weight:700;border-radius:9px;padding:0 5px}.sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e1e1e59;display:flex;align-items:flex-end;justify-content:center;z-index:10}.sheet{background:#fff;width:100%;max-width:520px;max-height:90vh;overflow:auto;border-radius:20px 20px 0 0;padding:14px 16px calc(18px + env(safe-area-inset-bottom));display:grid;gap:10px}.sheet-h{display:flex;justify-content:space-between;align-items:center}.sheet-h .x{border:0;background:var(--bg);width:32px;height:32px;border-radius:50%}.sheet label{display:grid;gap:4px;font-size:14px;color:var(--muted)}.check{display:flex!important;align-items:center;gap:10px;font-size:16px!important;color:var(--ink)!important}.check input{width:22px;height:22px;flex:0 0 auto}.login .logo{display:block;width:260px;height:260px;margin:-50px auto -60px}.login .title{font-size:24px;text-align:center;margin-top:4px}.login .card{margin-top:14px}.login input{margin-top:8px}.card.dev{border:1.5px dashed #c9cfd6}.pick{list-style:none;padding:0;margin:8px 0 0}.pick li{padding:11px 4px;border-top:1px solid var(--line);cursor:pointer}.devbar{position:sticky;top:0;z-index:6;display:flex;gap:8px;align-items:center;justify-content:center;padding:6px;background:#2b2f33;color:#ddd;font-size:12px}.devbar button{border:0;border-radius:8px;padding:4px 8px;background:#4a4f55;color:#fff;font-size:12px}.devbar button.on{background:#4f7a5f}.invite.swap{border-left-color:#c9a4b8}.swapmine{border-left:5px solid #c9a4b8}.swapline{font-size:17px;font-weight:600}.subsrole{padding:8px 0;border-top:1px solid var(--line)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.chip{display:inline-flex;align-items:center;gap:4px;font-size:13px;padding:4px 6px 4px 10px;border-radius:16px;background:var(--bg);border:1px solid var(--line)}.chip i{font-style:normal;color:var(--muted);font-size:11px}.chip.admin{background:#e7edf3}.chip.oncall{background:#f3ece4}.chip button{border:0;background:none;color:var(--muted);padding:0 2px;font-size:12px}.chip.add{color:var(--accent);background:#fff;border-style:dashed;padding:4px 10px}.chips select{width:auto;font-size:14px;padding:4px 8px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.shiftpick{--rc: #b5b0aa;border:2px solid var(--rc);background:color-mix(in srgb,var(--rc) 18%,#fff);border-radius:12px;padding:8px 4px;display:grid;gap:2px;justify-items:center;font-size:13px}.shiftpick b{font-size:15px}.volunteer{margin-top:6px;padding:4px 0;border-top:1px dashed var(--line)}.volunteer .btn{margin:0}.c.replaced{background:#fff;box-shadow:inset 0 0 0 2px #c9a4b8;color:var(--ink)}.c.replaced .g{color:#9a6f86}.money{display:grid;grid-template-columns:1fr auto;row-gap:8px;column-gap:10px;margin-top:10px;font-size:15px}.money .wide{grid-column:1 / -1;font-size:13px}.money .tot{font-weight:700;font-size:17px;border-top:1px solid var(--line);padding-top:8px}.mday{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid var(--line);font-size:14px}.money .num{text-align:right;white-space:nowrap}.qr{display:block;width:260px;height:260px;margin:6px auto;image-rendering:pixelated}.cardbtn{margin-left:auto;border:0;background:#2b2f33;color:#fff;border-radius:16px;padding:5px 10px;font-size:12px;font-weight:600}.cardbtn+.net{margin-left:6px}.cardview{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#1414148c;display:grid;place-items:center;padding:16px}.cardbox{background:#fff;border-radius:20px;padding:18px 16px;width:100%;max-width:420px;display:grid;gap:10px}.cardlogo{width:120px;height:120px;margin:-30px auto -34px;display:block}.barcode{width:100%;height:96px}.cardnum{text-align:center;font:600 22px/1 ui-monospace,Menlo,monospace;letter-spacing:3px}.cardclock{text-align:center;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.staffcard{border:2px solid #2b2f33}.staffcard.off{border:1.5px dashed #c9cfd6}.staffcard .barcode{width:100%;height:84px;display:block}.staffcard .cardnum{margin:6px 0 4px}.staffcard .cardname{text-align:center;font-weight:700;font-size:17px;margin-bottom:8px}.staffcard .cardtitle{text-align:center;font-size:13px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:#3a3f44;margin-bottom:8px}.hdr .home{border:0;background:none;padding:0;font:inherit;font-weight:600;font-size:16px;color:var(--ink);text-align:left}.staffcard.off .cardname{text-align:left;margin-bottom:4px}
