:root{--bg:#f6f7f9;--card:#fff;--ink:#1d2433;--muted:#6b7385;--line:#e2e5ec;--accent:#1f6feb;--accent-ink:#fff;--warn-bg:#fff4e0;--warn:#9a5b00;--err-bg:#fdecec;--err:#a42121;--ok:#1a7f37;--off:#f0f1f4;--sick:#ffd8d8;--earned:#d6ecff;--unpaid:#e9e2ff;--pending:#fff1c2}@media (prefers-color-scheme:dark){:root{--bg:#12151b;--card:#1b1f27;--ink:#e5e8ef;--muted:#9aa2b3;--line:#2c323d;--accent:#4c8dff;--warn-bg:#3a2c12;--warn:#ffc56b;--err-bg:#3d1a1a;--err:#ff9b9b;--off:#232833;--sick:#5a2a2a;--earned:#1f3a57;--unpaid:#3a2f5c;--pending:#4f4318}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1,h2,h3,h4{margin:0 0 12px}h2{font-size:22px}h3{font-size:16px}h4{margin-top:16px;font-size:14px}a{color:var(--accent)}input,select,textarea,button,.button{font:inherit;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:6px;padding:6px 10px}textarea{width:100%;min-height:60px}button,.button{cursor:pointer;margin-right:6px;text-decoration:none;display:inline-block}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.danger{border-color:var(--err);color:var(--err)}button.link{color:var(--accent);background:0 0;border:none;padding:4px}button.small,.small button{padding:3px 8px;font-size:12px}.small{font-size:12px}.muted{color:var(--muted)}.center{place-items:center;height:100vh;display:grid}.spacer{flex:1}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.shell{flex-direction:column;min-height:100vh;display:flex}.top{background:var(--card);border-bottom:1px solid var(--line);z-index:5;align-items:center;gap:12px;padding:10px 16px;display:flex;position:sticky;top:0}.menu-btn{display:none}.body{flex:1;min-height:0;display:flex}.side{border-right:1px solid var(--line);background:var(--card);flex-shrink:0;width:190px;padding:12px 8px}.side a{color:var(--ink);border-radius:6px;padding:8px 12px;text-decoration:none;display:block}.side a.active{background:var(--accent);color:var(--accent-ink)}main{flex:1;min-width:0;padding:20px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.page-head h2{margin:0}.month-label{text-align:center;min-width:130px}.filters{flex-wrap:wrap;align-items:flex-end;gap:12px;margin:12px 0;display:flex}.filters label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}label.check{align-items:center;gap:6px;color:var(--ink)!important;flex-direction:row!important;font-size:14px!important}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:16px}.grid2{grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr));gap:16px;display:grid}.grid2 .card{max-height:420px;margin:0;overflow:auto}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:12px;display:grid}.form-grid label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.form-grid .wide{grid-column:1/-1}.stats{flex-wrap:wrap;gap:12px;margin-bottom:16px;display:flex}.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;min-width:130px;padding:12px 18px}.stat b{font-size:26px;display:block}.stat span{color:var(--muted)}.stat.warn b{color:var(--warn)}.note{background:var(--earned);border-radius:8px;margin:10px 0;padding:10px 12px}.note.warn{background:var(--warn-bg);color:var(--warn)}.note.error{background:var(--err-bg);color:var(--err)}.inline-error{color:var(--err);margin-left:6px;font-size:12px}.secret{-webkit-user-select:all;user-select:all;word-break:break-all;margin-top:6px;font-size:15px;display:block}table{border-collapse:collapse;background:var(--card);width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:6px 8px}th{color:var(--muted);white-space:nowrap;font-size:12px;font-weight:600}tfoot td{border-top:2px solid var(--line)}table.dense td,table.dense th{padding:4px 6px}td.num{text-align:right;white-space:nowrap}tr.clickable{cursor:pointer}tr.clickable:hover,tr.offday td{background:var(--off)}tr.voided td{color:var(--muted);text-decoration:line-through}td.actions{white-space:nowrap}.note-input{width:130px;margin-right:4px;padding:3px 6px;font-size:12px}input.num{width:70px}input.year{width:80px}.table-wrap{overflow-x:auto}.pill{background:var(--off);white-space:nowrap;border-radius:10px;margin-left:6px;padding:1px 7px;font-size:11px;display:inline-block}.pill.pending{background:var(--pending)}.pill.approved,.pill.ok{color:var(--ok);background:#d8f5df}.pill.rejected,.pill.missing_out{background:var(--err-bg);color:var(--err)}.pill.cancelled{background:var(--off);color:var(--muted)}@media (prefers-color-scheme:dark){.pill.approved,.pill.ok{background:#183d24}}table.calendar th,table.calendar td{text-align:center;border:1px solid var(--line);min-width:26px;padding:3px 0;font-size:12px}table.calendar .sticky{background:var(--card);text-align:left;white-space:nowrap;z-index:1;min-width:200px;padding:3px 8px;position:sticky;left:0}table.calendar th.today{outline:2px solid var(--accent)}.off{background:var(--off)}.cal.sick{background:var(--sick)}.cal.earned{background:var(--earned)}.cal.unpaid{background:var(--unpaid)}.cal.pending{background:var(--pending)}.legend{flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.legend .cal{text-align:center;border:1px solid var(--line);border-radius:3px;width:20px;display:inline-block}table.register th,table.register td{text-align:center;border:1px solid var(--line);white-space:nowrap;padding:2px 3px;font-size:11px}table.register td:nth-child(2){text-align:left}.register .lbl.in{color:var(--ok);font-weight:600}.register .lbl.out{color:var(--err);font-weight:600}.modal-back{z-index:20;background:#00000059;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--card);border-radius:12px;width:min(760px,100%);max-height:90vh;padding:18px;overflow:auto}.modal-head{justify-content:space-between;align-items:center;display:flex}.login-wrap{place-items:center;min-height:100vh;padding:16px;display:grid}.login{flex-direction:column;gap:12px;width:min(380px,100%);display:flex}.login label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.print-only{display:none}input.search{min-width:220px}.side-who,.side-foot,.tabs,.menu-back{display:none}.attention{border-color:var(--warn)}.attention h3{color:var(--warn)}.attention ul{margin:0;padding-left:18px}.attention li{margin:3px 0}.lang{font-weight:600}.kv{max-width:460px;margin-bottom:10px}.kv div{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:8px 0;display:flex}.kv span{color:var(--muted)}.login-head{gap:10px}.login-head h1{margin:0;font-size:22px}.login-head img{border-radius:9px}.big-stats .stat b{font-size:30px}.year-table td,.year-table th{text-align:right}.year-table td:first-child,.year-table th:first-child{text-align:left}.year-table tr.future td{color:var(--muted)}@media (width<=760px){body{-webkit-text-size-adjust:100%;font-size:15px}.menu-btn,.wide-only,.top .who{display:none}.top{padding:10px 14px;padding-top:max(10px, env(safe-area-inset-top))}.brand{font-size:17px}main{padding:12px 12px calc(84px + env(safe-area-inset-bottom))}h2{font-size:20px}.side{z-index:30;width:min(290px,82vw);padding:calc(14px + env(safe-area-inset-top)) 10px calc(80px + env(safe-area-inset-bottom));border-right:none;transition:transform .18s;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.side.open{transform:none;box-shadow:0 0 40px #0000004d}.side a{padding:12px 14px;font-size:16px}.side-who{padding:4px 14px 10px;display:block}.side-foot{border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;margin-top:10px;padding-top:8px;display:flex}.side-foot button{padding:10px 14px;font-size:16px}.menu-back{z-index:25;background:#00000059;display:block;position:fixed;inset:0}.tabs{z-index:35;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.tabs a,.tabs button{color:var(--muted);background:0 0;border:none;border-radius:0;flex-direction:column;flex:1;align-items:center;gap:2px;min-height:56px;margin:0;padding:7px 2px 6px;font-size:11px;text-decoration:none;display:flex}.tabs .active{color:var(--accent)}.tabs span{white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}input,select,textarea,button,.button{min-height:44px;padding:9px 12px;font-size:16px}button.small,.small button,button.link{min-height:40px;padding:8px 12px;font-size:14px}input[type=checkbox],input[type=radio]{width:22px;height:22px;min-height:0}label.check{min-height:40px;font-size:15px!important}.filters{gap:10px}.filters>label,.filters>input.search,.filters>select{flex:140px}.filters input,.filters select{width:100%}.filters>label.check,.card .filters>label.check{flex:100%}.filters input[type=checkbox],.filters input[type=radio]{flex:none;width:22px}input.search{width:100%;min-width:0}.page-head button{min-height:40px}.page-head:has(input.search){flex-wrap:nowrap}.page-head input.search{flex:1}.stats{grid-template-columns:1fr 1fr;gap:8px;display:grid}.stat{min-width:0;padding:10px 12px}.stat b{font-size:24px}.modal-back{z-index:40;place-items:end stretch;padding:0}.modal{width:100%;max-height:92vh;padding-bottom:calc(18px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0}.grid2 .card{max-height:none}.card{padding:12px}.note-input{width:100%;margin:4px 0}.time-input{width:120px}table.cards,table.cards tbody,table.cards tr,table.cards td{width:100%;display:block}table.cards{background:0 0}table.cards thead{display:none}table.cards tr{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:8px;padding:8px 12px}table.cards td{text-align:right;border:none;justify-content:space-between;gap:10px;padding:3px 0;display:flex}table.cards td:before{content:attr(data-label);color:var(--muted);text-align:left;flex-shrink:0;font-size:13px}table.cards td[data-label=""]:before,table.cards td:not([data-label]):before{content:none}table.cards td:empty{display:none}table.cards td.title{text-align:left;width:auto;margin-right:10px;font-size:16px;font-weight:600;display:inline-block}table.cards td.actions{white-space:normal;flex-wrap:wrap;justify-content:flex-start;gap:6px;padding-top:8px}table.cards td.actions button{margin:0}table.cards tfoot,table.cards tfoot tr,table.cards tfoot td{display:block}table.cards tfoot tr{background:var(--off)}table.cards tfoot td:empty{display:none}table.cards tr.offday td{background:0 0}table.cards tr.offday{background:var(--off)}.grid2 table.cards tr{border-color:var(--line)}.table-wrap:has(table.cards){overflow:visible}}@media print{.no-print,.top,.side,.tabs,button{display:none!important}.print-only{display:revert}main{padding:0}body{color:#000;background:#fff;font-size:10px}table{background:#fff}th,td{color:#000;border:1px solid #999!important}td.sign{min-width:80px}.table-wrap{overflow:visible}@page{size:A4 landscape;margin:10mm}}.modal label:not(.check){color:var(--muted);flex-direction:column;gap:4px;margin:8px 0;font-size:12px;display:flex}.time-input{width:105px;margin-right:4px;padding:3px 6px;font-size:12px}.paper-preview{overflow-x:auto}.paper-sheet{color:#000;border:1px solid var(--line);page:paper;break-after:page;background:#fff;width:194mm;margin:0 auto 16px;padding:4mm}.paper-sheet:last-child{break-after:auto}.paper-head{border:1px solid #000;justify-content:space-between;padding:2px 6px;font-size:11px;display:flex}.paper-cols{grid-template-columns:1fr 1fr;gap:0;display:grid}table.paper{border-collapse:collapse;background:#fff;width:100%}table.paper th,table.paper td{color:#000;white-space:nowrap;height:4.6mm;padding:0 3px;font-size:8.5px;line-height:1.1;overflow:hidden;border:1px solid #000!important}table.paper th{text-align:center;font-size:8px}table.paper{table-layout:fixed}table.paper th:first-child{width:7mm}table.paper th:nth-child(3){width:15mm}table.paper th:nth-child(4),table.paper th:nth-child(5){width:11mm}table.paper th:nth-child(6){width:9mm}table.paper td:first-child{text-align:center}table.paper td:nth-child(2){text-overflow:ellipsis;font-weight:600}table.paper td.des{text-overflow:ellipsis;font-size:7px}table.paper tr.dept td{text-align:center;-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#ddd;font-weight:700}.paper-foot{margin-top:3px;font-size:8px}@page paper{size:A4 portrait;margin:6mm}@media print{.paper-sheet{border:none;width:auto;margin:0;padding:0}.paper-preview{overflow:visible}}.flag{border-radius:10px;margin:1px 0;padding:1px 7px;font-size:11px;display:inline-block}.flag.red{background:var(--err-bg);color:var(--err)}.flag.amber{background:var(--warn-bg);color:var(--warn)}.flag.grey{background:var(--off);color:var(--muted)}
