:root{--night: #0b1020;--night-2: #141c33;--night-3: #1e2842;--bone: #f2efe9;--muted: #8a93ab;--ember: #ff7a1a;--ember-deep: #b4470c;--ocre: #b98a2e;--alert: #e2574c;--radius: 18px;--pad: clamp(16px, 5vw, 28px);--sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--night);color:var(--bone);font-family:var(--sans);font-size:16px;line-height:1.45;overscroll-behavior:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.label{font-size:.6875rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.numeric{font-variant-numeric:tabular-nums;letter-spacing:-.04em;font-weight:800}.colon{opacity:.35;font-weight:500}.screen{min-height:100%;display:flex;flex-direction:column;max-width:560px;margin:0 auto}.screen__top{padding:var(--pad) var(--pad) 0;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.screen__alerts{display:flex;flex-direction:column;gap:8px;padding:12px var(--pad) 0}.screen__alerts:empty{display:none}.screen__body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--pad);gap:clamp(12px,3vh,22px)}.screen__action{position:sticky;bottom:0;padding:10px var(--pad) var(--pad);display:flex;flex-direction:column;gap:10px;background:linear-gradient(to bottom,transparent,var(--night) 18%)}.who{font-size:1.0625rem;font-weight:650;letter-spacing:-.01em}.arc{width:min(78vw,300px);aspect-ratio:1;position:relative;display:grid;place-items:center}.arc svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.arc__track{fill:none;stroke:var(--night-3);stroke-width:10;stroke-linecap:round}.arc__fill{fill:none;stroke:var(--ember);stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset .7s cubic-bezier(.22,1,.36,1)}.arc__fill--idle{stroke:var(--night-3)}.arc__fill--break{stroke:var(--ocre)}.arc__tick{stroke:var(--muted);stroke-width:2;opacity:.55}.arc__midnight{stroke:var(--bone);stroke-width:2;opacity:.8}.arc__hour{fill:var(--muted);font-size:7.5px;font-weight:600;letter-spacing:.06em;text-anchor:middle;opacity:.72}.arc__center{display:flex;flex-direction:column;align-items:center;gap:2px;z-index:1}.arc__value{font-size:clamp(2.75rem,15vw,3.75rem);line-height:1}.arc__caption{font-size:.8125rem;color:var(--muted);text-align:center;max-width:30ch}.punch{border:0;border-radius:var(--radius);min-height:clamp(112px,19vh,152px);width:100%;padding:18px 20px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;font-family:inherit;cursor:pointer;transition:transform .12s ease,filter .16s ease,background-color .26s ease}.punch:active{transform:scale(.985);filter:brightness(.94)}.punch:focus-visible{outline:3px solid var(--bone);outline-offset:3px}.punch__verb{font-size:clamp(1.5rem,6.5vw,1.875rem);font-weight:750;letter-spacing:-.02em}.punch__hint{font-size:.8125rem;font-weight:500;opacity:.72}.punch--in{background:var(--bone);color:#171a22}.punch--out{background:var(--ember);color:#2a1103}.punch--resume{background:var(--ocre);color:#241a05}.punch:disabled{opacity:.55;cursor:progress}.secondary{border:1px solid var(--night-3);background:transparent;color:var(--bone);border-radius:14px;min-height:52px;font-family:inherit;font-size:.9375rem;font-weight:600;cursor:pointer}.secondary:active{background:var(--night-2)}.secondary:focus-visible{outline:2px solid var(--bone);outline-offset:2px}.linkish{background:none;border:0;color:var(--muted);font-family:inherit;font-size:.8125rem;font-weight:600;padding:6px 2px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.notice{border-radius:14px;padding:12px 14px;font-size:.875rem;display:flex;gap:10px;align-items:flex-start;background:var(--night-2);border:1px solid var(--night-3)}.notice--alert{border-color:var(--alert);color:#ffd9d5}.notice--offline{border-color:var(--ocre);color:#f5e2b8}.notice__dot{width:8px;height:8px;border-radius:50%;background:currentColor;margin-top:6px;flex:none}.timeline{width:100%;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.timeline__item{display:flex;align-items:center;gap:12px;padding:9px 2px;border-top:1px solid var(--night-2)}.timeline__time{font-variant-numeric:tabular-nums;font-weight:700;font-size:.9375rem;min-width:4.5ch}.timeline__kind{font-size:.875rem;color:var(--muted);flex:1}.timeline__flag{font-size:.6875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ocre)}.login{min-height:100%;display:flex;flex-direction:column;justify-content:center;gap:20px;padding:var(--pad);max-width:420px;margin:0 auto}.login__title{font-size:clamp(1.75rem,8vw,2.25rem);font-weight:780;letter-spacing:-.03em;line-height:1.1;margin:0}.login__sub{color:var(--muted);margin:0;font-size:.9375rem}.code-input{width:100%;background:var(--night-2);border:1px solid var(--night-3);border-radius:var(--radius);color:var(--bone);font-family:inherit;font-size:clamp(2rem,11vw,2.75rem);font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:.3em;text-align:center;padding:18px 12px;min-height:84px}.code-input:focus{outline:none;border-color:var(--ember)}.checkbox{display:flex;align-items:center;gap:10px;font-size:.9375rem;color:var(--muted)}.checkbox input{width:22px;height:22px;accent-color:var(--ember)}.week{padding:var(--pad);max-width:560px;margin:0 auto}.week__row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--night-2)}.week__day{font-weight:650}.week__span{font-size:.8125rem;color:var(--muted);font-variant-numeric:tabular-nums}.week__hours{font-variant-numeric:tabular-nums;font-weight:750}.week__total{display:flex;justify-content:space-between;align-items:baseline;padding-top:16px;margin-top:4px;border-top:2px solid var(--night-3)}.week__total-value{font-size:1.75rem}.pending-flag{color:var(--ocre)}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
