:root{--green:#1f3a2e;--green-dark:#152920;--ink:#1b1f1d;--muted:#5c6661;--line:#d9dfdb;--paper:#f4f6f4;--card:#fff;--problem:#a32d1f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--paper);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--paper);margin:0}html{scrollbar-gutter:stable}.page{max-width:960px;margin:0 auto;padding:32px 16px 48px}header h1{color:var(--green);margin:0;font-size:1.75rem}.subtitle{color:var(--muted);margin:4px 0 24px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:24px}.card h2{margin-top:0;font-size:1.25rem}.card p:first-child{margin-top:0}button{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;border-radius:8px;width:100%;margin-top:8px;padding:12px 18px}button.primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}button.primary:hover{background:var(--green-dark)}label{margin:16px 0 6px;font-weight:600;display:block}input{font:inherit;letter-spacing:.2em;border:1px solid var(--line);border-radius:8px;width:100%;padding:10px 12px;font-size:1.5rem}.note{color:var(--muted);margin-bottom:0;font-size:.9rem}.problem{color:var(--problem);margin:8px 0 0}.qr{image-rendering:pixelated;margin:8px auto 16px;display:block}.key{word-spacing:.3em;font-family:ui-monospace,Menlo,monospace;font-size:1.1rem}ol{padding-left:20px}li{margin-bottom:6px}.card.narrow{max-width:440px}.page>section.card+section.card{margin-top:16px}nav{flex-wrap:wrap;align-items:center;gap:16px;margin:-8px 0 20px;display:flex}nav a{color:var(--green);font-weight:600;text-decoration:none}nav a[aria-current=page]{text-decoration:underline}button.link{width:auto;color:var(--muted);background:0 0;border:none;margin:0 0 0 auto;padding:0;text-decoration:underline}button.inline{width:auto}button.danger{background:var(--problem);border-color:var(--problem);color:#fff}button:disabled{opacity:.6;cursor:default}a{color:var(--green)}.account{border-top:1px solid var(--line);padding:16px 0}.account:first-of-type{border-top:none}.account-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.actions{flex-wrap:wrap;gap:8px;display:flex}.actions button{width:auto;margin-top:0}form.approve{border:1px solid var(--line);background:var(--paper);border-radius:10px;margin-top:12px;padding:16px}form.approve .actions{margin-top:16px}fieldset{border:none;margin:0 0 16px;padding:0}legend{margin-bottom:6px;font-weight:700}label.choice{align-items:flex-start;gap:10px;margin:8px 0;font-weight:400;display:flex}label.choice input{width:auto;margin-top:4px}select,textarea,form.approve input:not([type=checkbox]):not([type=radio]){font:inherit;letter-spacing:normal;border:1px solid var(--line);background:var(--card);border-radius:8px;width:100%;padding:8px 10px;font-size:1rem}form.approve input.short{max-width:220px}form.approve .rule-fields input:not([type=checkbox]):not([type=radio]),form.approve .rule-fields select{width:auto;margin:0 6px}form.approve .rule-fields input[type=number]{width:5em}.rule-fields{margin:0 0 4px 26px;line-height:2.6}.rule-fields .days{flex-wrap:wrap;gap:0 14px;line-height:normal;display:flex}.rule-fields .days label.choice{margin:4px 0}ul.rules{margin:4px 0 12px;padding-left:20px}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 6px}th{color:var(--muted);font-size:.85rem}.emulator{border-top:1px dashed var(--line);margin-top:20px;padding-top:12px}.emulator input{letter-spacing:normal;font-size:1rem}@media (width<=640px){table,thead,tbody,tr,th,td{display:block}thead{display:none}tr{border-bottom:1px solid var(--line);padding:8px 0}td{border:none;padding:2px 0}}.row-actions{flex-direction:column;align-items:flex-end;gap:4px;display:flex}:root{--time-ordinary:#3f8f5f;--time-over:#d4892a;--time-night:#34407a;--time-weekend:#7d4a9e;--time-holiday:#b8324a;--time-open:#3f8f5f}.view-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.view-head h2{margin:0}.view-controls,.view-filters{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.view-controls button,.view-filters select,.view-controls select,.view-controls input{width:auto;margin:0}.view-filters{margin:12px 0}.week-label{text-align:center;min-width:12em;font-weight:600}.legend{color:var(--muted);flex-wrap:wrap;gap:6px 16px;margin:12px 0 0;padding:0;font-size:.85rem;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.swatch{border-radius:3px;width:18px;height:12px;display:inline-block}.page>section.card.timeline{padding:16px}.tl-block{border-bottom:1px solid var(--line);padding:6px 0}.tl-block:last-child{border-bottom:none}.tl-row{grid-template-columns:170px 1fr 220px;align-items:center;gap:12px;display:grid}.tl-axis{border-bottom:1px solid var(--line);padding-bottom:4px}.tl-name{flex-direction:column;gap:2px;font-weight:600;display:flex}.tl-name .running{font-weight:400}.tl-total{text-align:left;font-size:.85rem}button.tl-total{color:var(--ink);margin:0;text-decoration:none}.timebar{background:var(--paper);border:1px solid var(--line);border-radius:4px;height:24px;position:relative;overflow:hidden}.timebar-tick{background:var(--line);width:1px;position:absolute;top:0;bottom:0}.timeaxis{height:1.2em;color:var(--muted);font-size:.75rem;position:relative}.timeaxis span{position:absolute;transform:translate(-50%)}.timeaxis span:first-child{transform:none}.segment{cursor:pointer;border:none;border-radius:2px;margin:0;padding:0;position:absolute;top:2px;bottom:2px}.segment:focus-visible{outline:2px solid var(--ink);outline-offset:1px}.segment-ordinary{background:var(--time-ordinary)}.segment-overThreshold{background:var(--time-over)}.segment-night{background:var(--time-night)}.segment-weekend{background:var(--time-weekend)}.segment-publicHoliday{background:var(--time-holiday)}.segment-deducted{background:repeating-linear-gradient(135deg,#9aa39e 0 3px,#e7ebe8 3px 6px)}.segment-open{background:repeating-linear-gradient(90deg, var(--time-open) 0 6px, #a9d1b8 6px 10px)}.badge{color:var(--muted);border:1px solid var(--line);border-radius:999px;align-self:flex-start;padding:0 8px;font-size:.75rem;font-weight:400}.badge-in{color:var(--green);border-color:var(--time-ordinary)}.chips{flex-wrap:wrap;gap:4px 8px;margin:6px 0 0 182px;padding:0;list-style:none;display:flex}.chip{color:var(--muted);background:var(--paper);border-radius:4px;padding:1px 8px;font-size:.8rem}.chip-attention{color:var(--problem);background:#fbeceb}.problem-text{color:var(--problem)}.tl-details{margin:8px 0 0 182px}.shift-details{border-left:3px solid var(--line);margin:8px 0;padding:2px 0 2px 12px}.shift-details p{margin:2px 0}.selected-shift .shift-details{border-left-color:var(--time-ordinary)}.week-totals{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:16px 0 8px;display:grid}.week-totals div{background:var(--paper);border-radius:8px;padding:10px 12px}.week-totals dt{color:var(--muted);font-size:.8rem}.week-totals dd{margin:4px 0 0;font-size:1.15rem;font-weight:600}.week-totals dd.note{font-size:.75rem;font-weight:400}.week-totals dd.over{color:#9a5a00}.week-totals progress{width:100%}@media (width<=640px){.tl-row{grid-template-columns:1fr;gap:4px}.chips,.tl-details{margin-left:0}.tl-axis>span:first-child,.tl-axis>span:last-child{display:none}.view-controls{flex-wrap:nowrap;width:100%}.view-controls input,.view-controls select,.week-label{flex:1;min-width:0}}.punch-marker{background:var(--problem);cursor:pointer;border:none;border-radius:2px;width:4px;margin:0 0 0 -2px;padding:0;position:absolute;top:0;bottom:0}.shift-details .chips{margin-left:0}.correction{border-top:1px solid var(--line);padding:12px 0}.correction p{margin:4px 0}form.decide{margin-top:8px}form.decide label{margin-bottom:4px;display:block}form.decide .actions{margin-top:8px}.correction-line.attention{color:var(--problem)}.card>.note+.correction{margin-top:12px}form.correct label{margin:8px 0 4px;display:block}.correct-times span{flex-wrap:wrap;gap:8px;display:flex}form.approve.correct .correct-times input{width:auto}ul.codes{margin:8px 0;padding:0;list-style:none}ul.codes li{border-bottom:1px solid var(--line);padding:6px 0}
