:root{--bg:#1a1b1e;--surface:#2b2d31;--panel:#2b2d31;--ink:#fff;--muted:#9ba1a6;--line:#42454a;--field:#fff;--field-ink:#1a1b1e;--accent:#795eeb;--accent-ink:#fff;--accent-soft:#795eeb20;--ok:#2ea043;--ok-soft:#2ea04320;--warn:#d29922;--warn-soft:#d2992220;--bad:#f85149;--bad-soft:#f8514920;--danger:#f85149;--app-bg:#1a1b1e;--shadow:0 12px 28px #0006;--radius:12px;--font-display:"Barlow Condensed", "Arial Narrow", sans-serif;--font-body:"Barlow", system-ui, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;color:var(--ink);font-family:var(--font-body);margin:0;font-size:16px;line-height:1.45}button,input{font:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.splash{min-height:100vh;color:var(--muted);place-items:center;margin:0;display:grid}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.primary-button{background:var(--accent);height:52px;color:var(--accent-ink);cursor:pointer;border:0;border-radius:10px;font-weight:600}.primary-button:disabled{opacity:.6;cursor:progress}.link-button{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:4px 2px;font-weight:600}.login{flex-direction:column;justify-content:center;gap:24px;width:min(100%,420px);min-height:100vh;margin:0 auto;padding:32px 16px;display:flex}.login__intro h1{margin:0;font-size:28px}.login__form{flex-direction:column;gap:14px;display:flex}.login__form label{flex-direction:column;gap:6px;font-weight:600;display:flex}.login__form input{border:2px solid var(--line);background:var(--surface);height:48px;color:var(--ink);border-radius:10px;padding:0 12px}.login__form input:focus{border-color:var(--accent);outline:none}.form-error{min-height:1.4em;color:var(--danger);margin:0;font-size:14px}.app-layout{flex-direction:column;min-height:100vh;display:flex}.app-header{border-bottom:1px solid var(--line);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;display:flex}.app-header__brand{flex-direction:column;line-height:1.1;display:flex}.app-header__brand strong{font-family:var(--font-display);letter-spacing:.02em;font-size:20px;font-weight:700}.app-header__brand span,.app-header__user span{color:var(--muted);font-size:13px}.app-header__user{color:var(--muted);align-items:center;gap:10px;font-size:13px;display:flex}.app-main{flex:1;width:min(100%,480px);margin:0 auto;padding:20px 16px}.attendance-main{width:min(100%,420px);padding:20px 16px 24px}.view{flex-direction:column;flex:1;gap:16px;display:flex}.day{color:var(--muted);justify-content:space-between;align-items:baseline;gap:8px;font-size:13px;display:flex}.day strong{color:var(--ink);text-transform:capitalize;font-weight:600}.field-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:600}.code-row{gap:8px;display:flex}.code-input{border-radius:var(--radius);border:2px solid var(--line);background:var(--surface);min-width:0;height:56px;font-family:var(--font-mono);letter-spacing:.04em;font-variant-numeric:tabular-nums;color:var(--ink);flex:1;padding:0 14px;font-size:20px}.code-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.code-input[readonly]{background:var(--field);color:var(--field-ink)}.icon-btn{border-radius:var(--radius);border:2px solid var(--line);background:var(--surface);cursor:pointer;width:56px;height:56px;color:var(--ink);flex:none;place-items:center;display:grid}.icon-btn:hover{border-color:var(--accent)}.icon-btn svg{width:24px;height:24px}.hint{color:var(--muted);min-height:1.45em;font-size:13px}.meta{color:var(--muted);font-size:13px}.result{border:2px solid var(--line);background:var(--surface);border-radius:14px;flex-direction:column;gap:12px;padding:16px;display:flex}.result.is-pending{border-color:var(--warn);background:var(--warn-soft)}.result.is-done{border-color:var(--ok);background:var(--ok-soft)}.result.is-pending .pill{background:var(--warn);color:var(--ink)}.result.is-done .pill{background:var(--ok);color:var(--ink)}.result-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.num{font-family:var(--font-mono);color:var(--muted);letter-spacing:.06em;font-size:13px}.name{font-family:var(--font-display);text-wrap:balance;margin:2px 0 0;font-size:26px;font-weight:600;line-height:1.1}.pill{white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:6px;padding:5px 10px;font-size:13px;font-weight:600;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:8px;height:8px}.pill.pending{background:var(--warn-soft);color:var(--warn)}.pill.done{background:var(--ok-soft);color:var(--ok)}.primary{border-radius:var(--radius);background:var(--accent);height:56px;color:var(--accent-ink);font-family:var(--font-display);letter-spacing:.03em;cursor:pointer;border:0;justify-content:center;align-items:center;gap:10px;width:100%;font-size:21px;font-weight:600;display:inline-flex}.primary:hover:not(:disabled){filter:brightness(1.08)}.primary:disabled{background:var(--surface);color:var(--muted);cursor:not-allowed}.secondary{border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);cursor:pointer;height:44px;color:var(--ink);padding:0 14px;font-weight:600}.notice{border-radius:12px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:15px;display:flex}.notice b{display:block}.notice.bad{background:var(--bad-soft);color:#ff7b72}.notice.warn{background:var(--warn-soft);color:var(--warn)}.notice.ok{background:var(--ok-soft);color:var(--ok)}.notice p{color:var(--ink);margin:2px 0 0;font-size:14px}.notice .secondary{margin-top:8px}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.overlay{z-index:10;background:#0a1016bf;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);text-align:center;width:100%;max-width:360px;box-shadow:var(--shadow);border-radius:18px;flex-direction:column;align-items:center;gap:14px;padding:24px;display:flex}.check{background:var(--ok-soft);width:64px;height:64px;color:var(--ok);border-radius:50%;place-items:center;display:grid}.check svg{width:34px;height:34px}.modal h3{font-family:var(--font-display);margin:0;font-size:26px}.modal-name{font-family:var(--font-display);color:var(--ok);text-wrap:balance;margin:-6px 0 0;font-size:22px;font-weight:600}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}.notice-page h1{font-size:24px}.notice-page p{color:var(--muted)}.page-title{text-align:center;font-family:var(--font-display);letter-spacing:.02em;color:var(--ink);margin:0 0 24px;font-size:34px;font-weight:600}.card-container{background:var(--surface);border-radius:16px;flex-direction:column;gap:16px;padding:24px;display:flex;box-shadow:0 8px 24px #0003}.input-group{background:var(--field);border:1px solid #0000;border-radius:8px;height:52px;transition:border-color .2s;display:flex;overflow:hidden}.input-group:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input-group input{color:var(--field-ink);font-size:16px;font-family:var(--font-body);background:0 0;border:none;flex:1;padding:0 16px}.input-group input:focus{outline:none}.input-group input::placeholder{color:#8b949e}.input-action{color:#a0a6ac;cursor:pointer;background:#3b3e44;border:none;place-items:center;width:52px;transition:all .2s;display:grid}.input-action:hover:not(:disabled){color:#fff;background:#4b4f57}.input-action:disabled{opacity:.5;cursor:not-allowed}.input-action svg{width:22px;height:22px}@keyframes pulse-glow{0%{box-shadow:inset 0 0 #ffffff1a}50%{box-shadow:inset 0 0 15px 5px #ffffff26}to{box-shadow:inset 0 0 #ffffff1a}}.pulse-scanner{animation:2s infinite pulse-glow}.status-badge-custom{color:#fff;text-transform:uppercase;letter-spacing:.04em;border-radius:6px;align-self:flex-start;padding:6px 14px;font-size:14px;font-weight:700}.status-badge-custom.warn{background:var(--warn)}.status-badge-custom.ok{background:var(--ok)}.btn-registrar{cursor:pointer;border:1px solid #0000;border-radius:8px;height:52px;margin-top:8px;font-size:16px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1)}.btn-registrar:disabled{color:#ffffff40;cursor:not-allowed;background:#ffffff0f}.btn-registrar:not(:disabled){background:var(--accent);color:var(--accent-ink);box-shadow:0 4px 16px #795eeb40}.btn-registrar:not(:disabled):hover{filter:brightness(1.15);transform:translateY(-2px);box-shadow:0 8px 24px #795eeb66}.modal-premium{color:#1a1b1e;text-align:center;width:100%;max-width:320px;box-shadow:var(--shadow);background:#fff;border-radius:16px;flex-direction:column;align-items:center;gap:16px;padding:40px 32px;display:flex}.modal-premium .check-circle{place-items:center;margin-bottom:8px;display:grid}.animated-check{stroke-width:4px;stroke:#55d074;stroke-miterlimit:10;border-radius:50%;width:80px;height:80px;animation:.4s ease-in-out .4s forwards fill-check,.3s ease-in-out .9s both scale-check;display:block;box-shadow:inset 0 0 #55d074}.animated-check-circle{stroke-dasharray:166;stroke-dashoffset:166px;stroke-width:4px;stroke-miterlimit:10;stroke:#55d074;fill:none;animation:.6s cubic-bezier(.65,0,.45,1) forwards stroke-check}.animated-check-path{transform-origin:50%;stroke-dasharray:48;stroke-dashoffset:48px;fill:none;animation:.3s cubic-bezier(.65,0,.45,1) .6s forwards stroke-check}@keyframes stroke-check{to{stroke-dashoffset:0}}@keyframes scale-check{0%,to{transform:none}50%{transform:scale(1.1)}}@keyframes fill-check{to{box-shadow:inset 0 0 0 40px #e1f5e8}}.modal-premium h3{font-family:var(--font-body);margin:0;font-size:26px;font-weight:700;line-height:1.2}.modal-premium .modal-plumber-name{color:#4a4d55;margin:0;font-size:16px}.modal-premium .btn-modal{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-top:8px;padding:12px 32px;font-size:16px;font-weight:600;transition:opacity .2s}.modal-premium .btn-modal:hover{opacity:.9}.card-container{background:linear-gradient(145deg,#2b2d31 0%,#222428 100%);border:1px solid #ffffff0f;border-radius:20px;flex-direction:column;gap:16px;padding:28px;transition:box-shadow .5s,border-color .5s;display:flex}.toast-container{z-index:100;pointer-events:none;flex-direction:column;align-items:center;width:min(100% - 32px,420px);display:flex;position:fixed;bottom:32px;left:50%;transform:translate(-50%)}.toast-wrapper{pointer-events:auto;border-radius:12px;width:100%;animation:.4s cubic-bezier(.175,.885,.32,1.275) forwards slideUpFade;overflow:hidden;box-shadow:0 12px 32px #0006}.toast-wrapper .notice{-webkit-backdrop-filter:blur(12px);border:1px solid #ffffff1a;padding:16px}@keyframes slideUpFade{0%{opacity:0;transform:translateY(40px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.spinner-inline{border:2px solid #ffffff4d;border-right-color:#fff;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}.glow-idle{border-color:#795eeb1a;box-shadow:0 16px 40px #795eeb26,0 0 60px #795eeb0d}.glow-warn{border-color:#d2992233;box-shadow:0 16px 40px #d2992226,0 0 60px #d299220d}.glow-ok{border-color:#2ea0434d;box-shadow:0 16px 40px #2ea04333,0 0 60px #2ea04314}.glow-error{animation:2s ease-in-out infinite pulse-error}@keyframes pulse-error{0%,to{border-color:#f851494d;box-shadow:0 16px 40px #f8514933,0 0 60px #f851491a}50%{border-color:#f8514999;box-shadow:0 16px 40px #f8514959,0 0 90px #f8514933}}
