:root{--font:-apple-system, BlinkMacSystemFont, "Hiragino Sans", "Segoe UI", Roboto, sans-serif;--font-num:"SF Mono", "Menlo", "Consolas", ui-monospace, monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--text-xs:11px;--text-sm:12px;--text-base:13px;--text-body:14px;--text-lg:15px;--text-xl:20px;--text-2xl:26px;--text-3xl:34px;--radius:10px;--radius-sm:8px;--radius-pill:999px;--dur-fast:.12s;--dur-base:.2s;--ease-out:cubic-bezier(.22, 1, .36, 1);--tap:44px;--color-paper:oklch(97.5% .005 258);--color-surface:oklch(99.5% .002 258);--color-rule:oklch(90% .008 258);--color-muted:oklch(52% .015 258);--color-ink:oklch(24% .025 262);--color-accent:oklch(50% .18 262);--color-accent-strong:oklch(42% .17 263);--color-accent-weak:oklch(96% .025 262);--color-on-accent:oklch(99% .005 262);--color-focus:oklch(58% .18 262);--color-ok:oklch(48% .12 158);--color-ok-weak:oklch(96% .03 158);--color-warn:oklch(52% .12 70);--color-warn-weak:oklch(96.5% .04 80);--color-danger:oklch(52% .18 25);--color-danger-weak:oklch(96% .035 25);--color-info:oklch(50% .14 262);--color-info-weak:oklch(96% .03 262);--shadow-card:0 1px 3px oklch(24% .025 262/.07);--shadow-float:0 8px 32px oklch(24% .025 262/.1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{overflow-x:clip}body{font-family:var(--font);background:var(--color-paper);color:var(--color-ink);font-size:var(--text-body);-webkit-font-smoothing:antialiased;line-height:1.6}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--color-accent);text-decoration:none}h1{font-size:var(--text-xl);letter-spacing:-.01em;font-weight:700}h2{font-size:var(--text-lg);font-weight:700}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:4px}::selection{background:var(--color-accent-weak)}.muted{color:var(--color-muted);font-size:var(--text-sm)}.num{font-variant-numeric:tabular-nums}.section-title{margin:var(--space-5) var(--space-1) var(--space-2);font-size:var(--text-sm);color:var(--color-muted);letter-spacing:.05em;font-weight:700}.card{background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius);box-shadow:var(--shadow-card)}.btn{justify-content:center;align-items:center;gap:var(--space-2);border:1px solid var(--color-rule);background:var(--color-surface);min-height:36px;color:var(--color-ink);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-4);font-size:var(--text-base);white-space:nowrap;transition:background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);font-weight:600;display:inline-flex}.btn:hover,.btn.is-hover{background:var(--color-paper)}.btn:active,.btn.is-active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent)}.btn.primary:hover,.btn.primary.is-hover{background:var(--color-accent-strong);border-color:var(--color-accent-strong)}.btn.danger{background:var(--color-surface);border-color:var(--color-danger);color:var(--color-danger)}.btn.big{width:100%;min-height:56px;font-size:var(--text-lg);border-radius:var(--radius)}.btn[data-state=loading]{color:var(--color-muted);pointer-events:none}.btn[data-state=success]{border-color:var(--color-ok);color:var(--color-ok)}.btn[data-state=error]{border-color:var(--color-danger);color:var(--color-danger)}.badge{font-size:var(--text-xs);border-radius:var(--radius-pill);letter-spacing:.02em;white-space:nowrap;padding:2px 10px;font-weight:700;display:inline-block}.badge.ok{background:var(--color-ok-weak);color:var(--color-ok)}.badge.warn{background:var(--color-warn-weak);color:var(--color-warn)}.badge.danger{background:var(--color-danger-weak);color:var(--color-danger)}.badge.info{background:var(--color-info-weak);color:var(--color-info)}.badge.plain{background:var(--color-paper);color:var(--color-muted)}.input{border:1px solid var(--color-rule);border-radius:var(--radius-sm);width:100%;padding:var(--space-2) var(--space-3);min-height:38px;font-size:var(--text-base);background:var(--color-surface)}.input:hover{border-color:var(--color-muted)}.input[aria-invalid=true]{border-color:var(--color-danger)}.field{margin-bottom:var(--space-3)}.field>label{font-size:var(--text-xs);color:var(--color-muted);margin-bottom:var(--space-1);letter-spacing:.03em;font-weight:700;display:block}.error-text{color:var(--color-danger);font-size:var(--text-sm);font-weight:600}.kpi-row{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.kpi{padding:var(--space-4) var(--space-5)}.kpi .lbl{font-size:var(--text-xs);color:var(--color-muted);letter-spacing:.04em;font-weight:700}.kpi .val{font-size:var(--text-2xl);font-variant-numeric:tabular-nums;letter-spacing:-.02em;margin-top:2px;font-weight:800}.kpi .val small{font-size:var(--text-base);color:var(--color-muted);font-weight:600}.kpi.accent{background:var(--color-accent);border-color:var(--color-accent)}.kpi.accent .lbl{color:var(--color-on-accent);opacity:.75}.kpi.accent .val{color:var(--color-on-accent)}.tbl-wrap{border:1px solid var(--color-rule);border-radius:var(--radius);background:var(--color-surface);overflow-x:auto}table.tbl{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}table.tbl th{text-align:left;font-size:var(--text-xs);color:var(--color-muted);letter-spacing:.04em;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-rule);background:var(--color-paper);white-space:nowrap;font-weight:700}table.tbl td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-rule);font-size:var(--text-base);white-space:nowrap}table.tbl tbody tr:last-child td{border-bottom:none}table.tbl tbody tr:hover{background:var(--color-accent-weak)}table.tbl td.n{text-align:right}table.tbl td.zero{color:var(--color-rule)}table.tbl tr.is-holiday td{background:var(--color-warn-weak)}.filters{gap:var(--space-1);flex-wrap:wrap;display:flex}.filters button{border:1px solid var(--color-rule);background:var(--color-surface);border-radius:var(--radius-pill);font-size:var(--text-sm);color:var(--color-muted);padding:5px 14px;font-weight:600}.filters button.on{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent)}.phone{background:var(--color-paper);flex-direction:column;max-width:460px;min-height:100dvh;margin:0 auto;display:flex}.phone-header{padding:var(--space-4) var(--space-5) var(--space-3);border-bottom:1px solid var(--color-rule);background:var(--color-surface);justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.phone-body{padding:var(--space-4) var(--space-4) var(--space-8);flex:1;overflow-y:auto}.brand{align-items:center;gap:var(--space-2);font-size:var(--text-lg);letter-spacing:.02em;color:var(--color-ink);font-weight:800;display:flex}.brand span{color:var(--color-accent)}.brand-logo{width:auto;height:26px;display:block}.brand-login{align-items:center;gap:var(--space-1);flex-direction:column;width:100%}.brand-logo-lg{width:auto;max-width:100%;height:68px;display:block}.brand-caption{font-size:var(--text-sm);letter-spacing:.12em;color:var(--color-muted);font-weight:700}.linklike{font-size:var(--text-sm);color:var(--color-accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.bottom-nav{border-top:1px solid var(--color-rule);background:var(--color-surface);padding-bottom:env(safe-area-inset-bottom);display:flex;position:sticky;bottom:0}.bottom-nav button{padding:var(--space-2) 0 10px;font-size:var(--text-xs);color:var(--color-muted);min-height:var(--tap);background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;font-weight:600;display:flex}.bottom-nav button .ico{opacity:.5;font-size:17px;line-height:1.2}.bottom-nav button.active{color:var(--color-accent)}.bottom-nav button.active .ico{opacity:1}.desk{min-height:100dvh;display:flex}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-rule);width:216px;padding:var(--space-5) var(--space-3);flex-direction:column;flex-shrink:0;gap:2px;display:flex}.sidebar .brand{padding:0 10px var(--space-4)}.sidebar button{border-radius:var(--radius-sm);width:100%;font-size:var(--text-base);color:var(--color-muted);text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:9px 12px;font-weight:600;display:flex}.sidebar button:hover{background:var(--color-paper);color:var(--color-ink)}.sidebar button.active{background:var(--color-accent-weak);color:var(--color-accent-strong)}.sidebar .who{padding:var(--space-3) 10px 0;border-top:1px solid var(--color-rule);font-size:var(--text-sm);color:var(--color-muted);margin-top:auto}.main-pane{min-width:0;padding:var(--space-6) var(--space-6);flex:1}.page-head{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}@media (width<=860px){.desk{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--color-rule);width:100%;padding:var(--space-2);flex-direction:row;overflow-x:auto}.sidebar .brand,.sidebar .who{display:none}.sidebar button{width:auto}.main-pane{padding:var(--space-4)}}.steps{flex-direction:column;gap:2px;display:flex}.step{gap:var(--space-3);padding:6px var(--space-3);font-size:var(--text-sm);border-radius:6px;grid-template-columns:8.5rem 5rem 1fr;align-items:baseline;display:grid}.step:nth-child(odd){background:var(--color-paper)}.step .lbl{color:var(--color-muted);font-weight:700}.step .v{font-family:var(--font-num);text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.step .ex{color:var(--color-muted);overflow-wrap:anywhere;min-width:0}@media (width<=560px){.step{grid-template-columns:1fr auto}.step .ex{grid-column:1/-1}}.punch-row{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.stamp{text-align:center;padding:var(--space-4)}.stamp .time{font-size:var(--text-3xl);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-weight:800}.note{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);background:var(--color-warn-weak);color:var(--color-warn);align-items:flex-start;font-weight:600;display:flex}.note.plain{background:var(--color-paper);color:var(--color-muted)}.note.danger{background:var(--color-danger-weak);color:var(--color-danger)}.toast{left:50%;bottom:var(--space-6);background:var(--color-ink);color:var(--color-paper);border-radius:var(--radius-pill);font-size:var(--text-base);z-index:50;box-shadow:var(--shadow-float);animation:toast-in var(--dur-base) var(--ease-out);padding:10px 20px;font-weight:600;position:fixed;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(6px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.centered{min-height:100dvh;padding:var(--space-4);place-items:center;display:grid}.auth-card{width:min(400px,100%);padding:var(--space-6)}.demo-box{margin-top:var(--space-4);padding:var(--space-3);border:1px dashed var(--color-rule);border-radius:var(--radius-sm);background:var(--color-paper)}.demo-title{font-size:var(--text-sm);color:var(--color-muted);margin-bottom:var(--space-2);font-weight:700}.demo-actions{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.print-sheet{background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-sm);padding:var(--space-5);overflow-x:auto}.sheet-head{justify-content:space-between;align-items:flex-end;gap:var(--space-4);border-bottom:2px solid var(--color-ink);padding-bottom:var(--space-2);margin-bottom:var(--space-3);display:flex}.sheet-title{font-size:var(--text-xl);letter-spacing:.1em;font-weight:700}.sheet-sub{font-size:var(--text-sm);color:var(--color-muted);margin-top:2px}.sheet-meta{text-align:right;font-size:var(--text-sm);line-height:1.7}.sheet-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:11px}.sheet-table th,.sheet-table td{border:1px solid var(--color-rule);text-align:center;white-space:nowrap;padding:2px 4px}.sheet-table th{background:var(--color-paper);font-weight:600}.sheet-table td.n{text-align:right}.sheet-table td.note-cell{text-align:left;white-space:normal;max-width:180px;color:var(--color-muted);font-size:10px}.sheet-table tr.is-holiday td{background:var(--color-danger-weak)}.sheet-summary{gap:var(--space-2);margin-top:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));display:grid}.sheet-sum-item{border:1px solid var(--color-rule);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);justify-content:space-between;align-items:baseline;display:flex}.sheet-sum-item .k{font-size:var(--text-sm);color:var(--color-muted)}.sheet-sum-item .v{font-variant-numeric:tabular-nums;font-weight:700}.sheet-foot{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--color-muted)}@media print{body{background:#fff}body *{visibility:hidden}.print-sheet,.print-sheet *{visibility:visible}.print-sheet{border:none;border-radius:0;width:100%;margin:0;padding:0;position:absolute;top:0;left:0;overflow:visible}.sheet-table{font-size:8.5px}.sheet-table td.note-cell{font-size:8px}@page{size:A4 portrait;margin:10mm}}
