:root{--bg: #f4f5f7;--card: #ffffff;--card-2: #f8f9fb;--line: #e7e9ee;--line-strong: #d5d9e0;--text: #16181d;--muted: #6d7481;--accent: #2563eb;--green: #059669;--green-soft: #34d399;--red: #dc2626;--red-soft: #fef2f2;--shadow: 0 1px 2px rgba(22, 24, 29, .05), 0 4px 16px rgba(22, 24, 29, .06);--font: "Inter", -apple-system, "Helvetica Neue", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:var(--font);font-weight:400;-webkit-font-smoothing:antialiased;min-height:100%}button{font-family:var(--font);cursor:pointer;border:none;background:none;color:inherit}button:disabled{opacity:.4;cursor:default}input{font-family:var(--font);background:var(--card);border:1px solid var(--line-strong);color:var(--text);border-radius:8px;padding:.55rem .7rem;font-size:1rem}input:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--muted)}.screen-center{min-height:100dvh;display:grid;place-items:center;letter-spacing:.02em}.brand-name{letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-size:.8rem;font-weight:600}.brand-name.small{font-size:.68rem}.brand-sub{margin-top:.5rem;letter-spacing:.3em;text-transform:uppercase;font-size:.66rem;color:var(--muted)}.pinpad-screen{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.4rem;padding:2rem 1.5rem}.pinpad-screen .brand{text-align:center;margin-bottom:.6rem}.pinpad-screen .brand .brand-name{color:var(--text);font-size:.95rem}.pin-dots{display:flex;gap:.9rem}.dot{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line-strong);transition:background .12s ease,transform .12s ease,border-color .12s ease}.dot.optional{border-style:dashed}.dot.filled{background:var(--text);border-color:var(--text);transform:scale(1.1)}.pin-message{min-height:1.4em;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:500}.pin-dots.shake+.pin-message{color:var(--red)}.pin-dots.shake{animation:shake .32s ease}@keyframes shake{20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;width:min(320px,82vw)}.key{aspect-ratio:1;border-radius:50%;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);font-size:1.45rem;font-weight:500;color:var(--text);transition:background .1s ease,transform 80ms ease;touch-action:manipulation}.key:active{background:var(--card-2);transform:scale(.96)}.key-aux{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}.key-go{font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;color:#fff;background:var(--text);border-color:var(--text);font-weight:600}.key-go:active{background:#000}.dashboard,.admin{max-width:1060px;margin:0 auto;padding:1.2rem 1.1rem 3rem}.dash-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.4rem 0 1.1rem}.greeting{font-weight:650;font-size:clamp(1.4rem,5vw,1.9rem);letter-spacing:-.02em;margin-top:.3rem}.btn-quiet{border:1px solid var(--line-strong);background:var(--card);border-radius:999px;padding:.5rem 1.2rem;font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}.btn-quiet:active,.btn-quiet:hover{color:var(--text);border-color:var(--text)}.dash-body{display:grid;gap:1.2rem}@media (min-width: 880px){.dash-body{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start}}.clock-card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:20px;padding:1.6rem 1.2rem 1.8rem;display:flex;flex-direction:column;align-items:center;gap:1.3rem;transition:border-color .4s ease}.clock-card.is-in{border-color:#0596698c}.clock-card.is-done{border-color:#05966966}.clock-face{width:min(340px,78vw);height:auto;display:block}.clock-bezel{fill:none;stroke:var(--line-strong);stroke-width:2}.clock-dial{fill:#fff;stroke:var(--line);stroke-width:1}.wedge-live{fill:#05966942;stroke:var(--green);stroke-width:1.5;animation:breathe 3s ease-in-out infinite}.wedge-done{fill:#0596691f;stroke:var(--green-soft);stroke-width:1.2}@keyframes breathe{50%{fill:#05966961}}@media (prefers-reduced-motion: reduce){.wedge-live{animation:none}}.tick-major{stroke:var(--text);stroke-width:3}.tick-minor{stroke:var(--line-strong);stroke-width:1.2}.numeral{font-family:var(--font);font-size:1.15rem;font-weight:500;fill:var(--muted)}.hand-hour{stroke:var(--text);stroke-width:6.5;stroke-linecap:round}.hand-minute{stroke:var(--text);stroke-width:3.6;stroke-linecap:round}.hand-second{stroke:var(--red);stroke-width:1.6;stroke-linecap:round}.clock-cap{fill:var(--text)}.clock-cap-pin{fill:var(--red)}.status-line{display:flex;flex-direction:column;align-items:center;gap:.35rem;min-height:3.2rem}.status-word{letter-spacing:.22em;text-transform:uppercase;font-size:.74rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.status-word:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.status-word.live,.status-word.done{color:var(--green)}.status-word.idle{color:var(--muted)}.status-word.idle:before{background:var(--line-strong)}.status-duration{font-size:1.9rem;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.btn-punch{width:min(340px,100%);padding:1.05rem;border-radius:14px;font-size:.95rem;letter-spacing:.14em;text-transform:uppercase;font-weight:600;transition:transform 80ms ease;touch-action:manipulation}.btn-punch:active{transform:scale(.98)}.btn-punch.in{background:var(--text);color:#fff}.btn-punch.out{background:var(--card);color:var(--text);border:1.5px solid var(--text)}.week-card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:20px;padding:1.3rem 1.2rem}.week-header{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:.9rem;border-bottom:1px solid var(--line)}.week-header h2{font-weight:650;font-size:1.05rem;letter-spacing:-.01em}.week-total{display:flex;align-items:baseline;gap:.5rem}.week-total-num{font-size:1.35rem;font-weight:650;color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.week-total-label{font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);font-weight:600}.week-list{list-style:none}.week-row{display:grid;grid-template-columns:4.4rem 1fr auto;align-items:center;gap:.7rem;padding:.72rem .5rem;border-bottom:1px solid var(--line);font-size:.92rem}.week-row:last-child{border-bottom:none}.week-row.today{background:#eff4ff;border-radius:10px;border-bottom-color:transparent}.week-row.future{opacity:.45}.week-day{display:flex;flex-direction:column}.week-weekday{letter-spacing:.12em;text-transform:uppercase;font-size:.68rem;font-weight:700;color:var(--text)}.week-row.today .week-weekday{color:var(--accent)}.week-date{font-size:.78rem;color:var(--muted)}.week-times{display:flex;flex-direction:column;gap:.15rem;font-variant-numeric:tabular-nums}.week-shift .live-now{color:var(--green);font-style:normal;font-weight:600}.week-shift .missing,.week-hours.missing{color:var(--red);font-weight:600}.week-hours{font-variant-numeric:tabular-nums;font-weight:550;text-align:right}.week-hours.live{color:var(--green)}.banner-missing{background:var(--red-soft);border:1px solid #fecaca;border-left:4px solid var(--red);border-radius:14px;padding:1rem 1.1rem;margin-bottom:1.2rem;display:grid;gap:1rem}.fix-row p{font-size:.94rem;line-height:1.5}.fix-row strong{color:var(--red);font-weight:600}.fix-controls{display:flex;gap:.7rem;margin-top:.6rem;align-items:center}.fix-controls input[type=time]{font-size:1.05rem}.btn-fix{background:var(--red);color:#fff;border-radius:10px;padding:.55rem 1.3rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-size:.78rem}.fix-error{color:var(--red);font-size:.85rem}.toast-error{background:var(--red-soft);border:1px solid #fecaca;color:#991b1b;border-radius:12px;padding:.7rem 1rem;margin-bottom:1rem;font-size:.9rem}.tabs{display:flex;gap:.3rem;background:#e9ebf0;border-radius:12px;padding:.3rem;width:fit-content;margin-bottom:1.2rem}.tabs button{padding:.55rem 1.1rem;border-radius:9px;font-size:.8rem;letter-spacing:.06em;font-weight:600;color:var(--muted)}.tabs button.active{color:var(--text);background:var(--card);box-shadow:var(--shadow)}.report-toolbar{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:space-between;align-items:center;margin-bottom:1rem}.week-nav{display:flex;align-items:center;gap:.7rem}.week-label{font-weight:600;letter-spacing:-.01em}.report-actions{display:flex;gap:.6rem}.btn-small{border:1px solid var(--line-strong);border-radius:9px;padding:.45rem .9rem;font-size:.78rem;font-weight:550;color:var(--text);background:var(--card)}.btn-small:hover{border-color:var(--text)}.btn-small.primary{background:var(--text);color:#fff;border-color:var(--text);font-weight:600}.btn-small.danger{color:var(--red);border-color:#fecaca}.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow)}.report-table{width:100%;border-collapse:collapse;font-size:.88rem;min-width:640px}.report-table th,.report-table td{padding:.68rem .6rem;text-align:center}.report-table th{background:var(--card-2);font-weight:600;letter-spacing:.08em;text-transform:uppercase;font-size:.66rem;color:var(--muted);border-bottom:1px solid var(--line)}.th-date{color:var(--muted);letter-spacing:0;text-transform:none;font-weight:400}.report-table td{border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.report-table tbody tr:last-child td{border-bottom:none}.report-table tbody tr{cursor:pointer}.report-table tbody tr:hover,.report-table tr.expanded{background:#f4f7ff}.report-table .emp-name{text-align:left;font-weight:550}.report-table .total-col{color:var(--accent);font-weight:650}.report-table .today-col{background:#2563eb0a}.cell-missing{color:var(--red);font-weight:600}.detail-card{margin-top:1rem;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:1.1rem}.detail-card h3{font-weight:650;font-size:1rem;margin-bottom:.8rem}.detail-head{display:flex;justify-content:space-between;align-items:baseline}.detail-row{display:flex;flex-wrap:wrap;gap:.6rem 1.1rem;align-items:center;padding:.6rem 0;border-bottom:1px solid var(--line);font-size:.9rem;font-variant-numeric:tabular-nums}.detail-row:last-child{border-bottom:none}.detail-date{color:var(--muted);font-weight:550;min-width:6.5rem}.shift-editor{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-left:auto}.shift-editor label{font-size:.72rem;color:var(--muted);font-weight:550;display:flex;gap:.35rem;align-items:center}.shift-editor input{padding:.3rem .4rem;font-size:.8rem}.emp-add{display:flex;flex-wrap:wrap;gap:.7rem;margin-bottom:1.3rem}.emp-add input{flex:1 1 160px}.emp-list{list-style:none;display:grid;gap:.5rem}.emp-list li{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;padding:.75rem 1rem}.emp-list li.inactive{opacity:.55;box-shadow:none}.emp-list .emp-name{font-weight:550}.emp-actions{display:flex;flex-wrap:wrap;gap:.45rem}@media print{body{background:#fff;color:#000}.dash-header,.tabs,.report-toolbar .report-actions,.week-nav .btn-small,.detail-card,.toast-error{display:none!important}.table-scroll{border:none;box-shadow:none;overflow:visible}.report-table{min-width:0}.report-table th{color:#000;background:#fff;border-bottom:2px solid #000}.report-table td{border-bottom:1px solid #999;color:#000}.report-table .total-col{color:#000}.cell-missing{color:#000;font-weight:700}.week-label{color:#000}}
