:root{--brand:#1f5f8b;--brand-ink:#fff;--brand-hover:#1b5479;--brand-soft:#e9eff4;--brand-softer:#f4f7fa;--brand-text:#1f5f8b;--ink:#15181c;--muted:#646b73;--line:#e7e8ea;--bg:#fff;--panel:#f5f6f7;--green:#1d7a4c;--green-soft:#e6f4ec;--red:#b42318;--red-soft:#fdecea;--amber:#b45309;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Inter,Roboto,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;margin:0}button{font:inherit;color:inherit}.clock-shell{max-width:440px;min-height:100dvh;padding:max(16px, env(safe-area-inset-top)) 20px max(16px, env(safe-area-inset-bottom));flex-direction:column;margin:0 auto;display:flex}.clock-header{align-items:center;gap:10px;padding:4px 0 8px;display:flex}.logo{object-fit:contain;border-radius:9px;flex:none;width:36px;height:36px}.logo.mono{background:var(--brand);color:var(--brand-ink);letter-spacing:.02em;place-items:center;font-size:14px;font-weight:700;display:grid}.org{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.clock-main{flex-direction:column;flex:1;display:flex}.clock-main.center{text-align:center;justify-content:center;gap:12px}.step{flex-direction:column;gap:12px;padding-top:18px;animation:.22s ease-out rise;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.title{letter-spacing:-.02em;margin:0;font-size:30px;font-weight:700;line-height:1.15}.lead{color:var(--muted);margin:-4px 0 4px;font-size:17px;line-height:1.4}.muted{color:var(--muted);margin:0}.label{color:var(--muted);margin-bottom:-6px;font-size:13px;font-weight:600}.optional{font-weight:400}.display{letter-spacing:.01em;font-variant-numeric:tabular-nums;background:var(--panel);border-radius:14px;align-items:center;min-height:66px;padding:14px 16px;font-size:30px;font-weight:600;display:flex}.display.empty{color:#b3b8be;font-weight:500}.pin-dots{justify-content:center;gap:16px;padding:18px 0 6px;display:flex}.dot{border:2px solid #c9cdd2;border-radius:50%;width:18px;height:18px;transition:background .1s,border-color .1s}.dot.filled{background:var(--ink);border-color:var(--ink)}.hint{text-align:center;color:var(--muted);min-height:22px;margin:0}.error{color:var(--red);text-align:center;margin:0;font-size:15px;font-weight:500}.keypad{grid-template-columns:repeat(3,1fr);gap:10px;margin:6px 0 4px;display:grid}.key{background:var(--panel);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;border:0;border-radius:16px;place-items:center;height:64px;font-size:26px;font-weight:500;transition:background 80ms,transform 80ms;display:grid}.key:active{background:#e4e6e9;transform:scale(.97)}.key-fn{color:var(--muted);background:0 0;font-size:16px;font-weight:500}.key:disabled{opacity:.5}.primary{background:var(--brand);height:56px;color:var(--brand-ink);cursor:pointer;touch-action:manipulation;border:0;border-radius:16px;font-size:18px;font-weight:600;transition:background .12s,opacity .12s}.primary:hover:not(:disabled){background:var(--brand-hover)}.primary:disabled{opacity:.4;cursor:default}.primary.big{border-radius:20px;height:76px;margin-top:4px;font-size:22px}.primary.out{background:var(--ink);color:#fff}.primary.out:hover:not(:disabled){background:#2b3036}.link{color:var(--brand-text);cursor:pointer;background:0 0;border:0;align-self:center;padding:12px;font-size:16px;font-weight:500}.state{background:var(--panel);border-radius:16px;align-items:center;gap:14px;padding:16px 18px;display:flex}.state.on{background:var(--green-soft)}.state-dot{background:#a2a8af;border-radius:50%;flex:none;width:12px;height:12px}.state.on .state-dot{background:var(--green);box-shadow:0 0 0 5px #1d7a4c29}.state-title{font-size:18px;font-weight:600}.state-sub{color:var(--muted);margin-top:2px;font-size:15px}.cap{flex-direction:column;gap:8px;padding:2px 2px 0;display:flex}.cap-row{color:var(--muted);justify-content:space-between;font-size:14px;display:flex}.cap-left{color:var(--ink);font-weight:600}.cap-left.low{color:var(--amber)}.bar{background:var(--panel);border-radius:99px;height:8px;overflow:hidden}.bar span{background:var(--brand);border-radius:99px;height:100%;display:block}.bar span.warn{background:#d97706}.bar span.over{background:var(--red)}.note{font:inherit;border:1px solid var(--line);resize:none;border-radius:14px;outline:none;padding:12px 14px;font-size:16px}.note:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.blocked{background:var(--red-soft);color:var(--red);border-radius:16px;padding:16px 18px;font-weight:500;line-height:1.4}.recent h2{color:var(--muted);text-transform:none;margin:10px 0 6px;font-size:13px;font-weight:600}.recent ul{margin:0;padding:0;list-style:none}.recent li{border-top:1px solid var(--line);font-variant-numeric:tabular-nums;grid-template-columns:1fr auto auto;gap:14px;padding:10px 0;font-size:15px;display:grid}.r-time{color:var(--muted)}.r-dur{text-align:right;min-width:54px;font-weight:600}.done{text-align:center;align-items:center;padding-top:48px}.check{background:var(--green-soft);width:88px;height:88px;color:var(--green);border-radius:50%;place-items:center;margin-bottom:8px;animation:.3s cubic-bezier(.2,1.4,.4,1) pop;display:grid}.check.out{background:var(--panel);color:var(--ink)}@keyframes pop{0%{opacity:0;transform:scale(.6)}}.big-time{color:var(--ink);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:0;font-size:44px;font-weight:700}.done .primary{align-self:stretch;margin-top:20px}.countdown{background:var(--panel);border-radius:99px;align-self:stretch;height:3px;overflow:hidden}.countdown span{background:#c3c8ce;height:100%;animation:8s linear forwards drain;display:block}@keyframes drain{0%{width:100%}to{width:0}}.clock-footer{text-align:center;color:var(--muted);padding:18px 8px 4px;font-size:14px;line-height:1.4}.shake-a{animation:.35s shake-a}.shake-b{animation:.35s shake-b}@keyframes shake-a{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}@keyframes shake-b{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}@media (height>=860px){.key{height:72px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.countdown span{animation-duration:8s!important}}.device-tag{color:#8a9199;margin-top:6px;font-size:12px}.location-note{color:var(--muted);justify-content:center;align-items:center;gap:6px;margin:-2px 0 0;font-size:13px;display:flex}.check-x{color:var(--red);font-size:40px;font-weight:700}.loading-dot{border:3px solid var(--panel);border-top-color:var(--brand);border-radius:50%;width:28px;height:28px;margin:0 auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.pay .r-day{flex-direction:column;gap:2px;display:flex}.pay-status{color:var(--muted);font-size:13px}.pay-status.approved{color:var(--brand-text);font-weight:600}.pay-status.paid{color:var(--green);font-weight:600}.pay li{align-items:center}.display-input{width:100%;color:var(--ink);border:0;outline:none;font-family:inherit}.display-input::placeholder{color:#b3b8be;font-weight:500}.display-input:focus,.pin-input:focus{box-shadow:0 0 0 3px var(--brand-soft)}.pin-input{background:var(--panel);letter-spacing:.5em;width:100%;height:72px;color:var(--ink);border:0;border-radius:14px;outline:none;font-family:inherit;font-size:34px}.pin-input::placeholder{letter-spacing:normal;color:#8a9199;font-size:17px}.clock-header{justify-content:center}.step{text-align:center}.display{text-align:center;justify-content:center}.state{justify-content:center}.cap-row{justify-content:center;gap:10px}.cap-row>span+span:before{content:"·";color:var(--muted);margin-right:10px;font-weight:400}.recent h2,.blocked,.pin-input{text-align:center}.recent li{flex-direction:column;align-items:center;gap:2px;display:flex}.recent .r-main{font-weight:600}.recent .r-sub{color:var(--muted)}.recent .r-sub strong{color:var(--ink)}
