:root{--bg:#1a1a2e;--bg-card:#16213e;--bg-input:#0f3460;--accent:#e94560;--accent-hover:#ff6b81;--text:#eaeaea;--text-muted:#8892b0;--text-dim:#5a6380;--border:#233554;--success:#00d2a0;--warning:#ffc048;--font-body:"DM Sans", sans-serif;--font-display:"DM Serif Display", serif;--radius:12px;--radius-sm:8px}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;min-height:100dvh}input,select,textarea,button{font-family:inherit;font-size:inherit}.pin-container{flex-direction:column;justify-content:center;align-items:center;gap:32px;min-height:100dvh;padding:24px;display:flex}.pin-title{font-family:var(--font-display);letter-spacing:.02em;font-size:2.5rem}.pin-subtitle{color:var(--text-muted);margin-top:-20px;font-size:.95rem}.pin-dots{gap:16px;display:flex}.pin-dot{border:2px solid var(--text-muted);border-radius:50%;width:16px;height:16px;transition:all .2s}.pin-dot.filled{background:var(--accent);border-color:var(--accent);transform:scale(1.1)}.pin-dot.error{border-color:var(--accent);animation:.4s shake}.pin-keypad{grid-template-columns:repeat(3,1fr);gap:12px;width:100%;max-width:280px;display:grid}.pin-key{background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;padding:18px;font-size:1.5rem;font-weight:500;transition:all .15s}.pin-key:active{background:var(--bg-input);transform:scale(.95)}.pin-key.empty{visibility:hidden}.pin-key.backspace{font-size:1.2rem}.app-container{max-width:600px;min-height:100dvh;margin:0 auto;padding:24px}.app-header{justify-content:space-between;align-items:center;margin-bottom:32px;display:flex}.app-title{font-family:var(--font-display);font-size:1.8rem}.header-actions{gap:12px;display:flex}.icon-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.2rem;transition:all .15s;display:flex}.icon-btn:hover,.icon-btn:active{color:var(--text);border-color:var(--text-muted)}.client-list{flex-direction:column;gap:12px;display:flex}.client-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;-webkit-tap-highlight-color:transparent;padding:20px;transition:all .2s}.client-card:active{border-color:var(--accent);transform:scale(.98)}.client-name{margin-bottom:4px;font-size:1.1rem;font-weight:600}.client-meta{color:var(--text-muted);font-size:.85rem}.client-meta .next-invoice{color:var(--accent);font-weight:500}.back-btn{color:var(--text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;align-items:center;gap:6px;margin-bottom:24px;padding:8px 0;font-size:.95rem;display:flex}.back-btn:hover{color:var(--text)}.section-title{font-family:var(--font-display);margin-bottom:8px;font-size:1.4rem}.section-subtitle{color:var(--text-muted);margin-bottom:24px;font-size:.9rem}.form-group{margin-bottom:20px}.form-label{color:var(--text-muted);margin-bottom:8px;font-size:.85rem;font-weight:500;display:block}.form-input{background:var(--bg-input);border:1px solid var(--border);width:100%;color:var(--text);border-radius:var(--radius-sm);outline:none;padding:14px 16px;font-size:1rem;transition:border-color .2s}.form-input:focus{border-color:var(--accent)}.form-input::placeholder{color:var(--text-dim)}.date-entries{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.date-entry{align-items:center;gap:10px;display:flex}.date-entry .form-input{flex:1}.date-entry .hours-input{text-align:center;width:80px}.remove-date{color:var(--text-dim);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;padding:8px;font-size:1.3rem;line-height:1}.remove-date:hover{color:var(--accent)}.add-date-btn{border:1px dashed var(--border);color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;width:100%;padding:12px;font-size:.9rem;transition:all .15s}.add-date-btn:hover,.add-date-btn:active{border-color:var(--accent);color:var(--accent)}.invoice-summary{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin:24px 0;padding:20px}.summary-row{justify-content:space-between;padding:8px 0;font-size:.95rem;display:flex}.summary-row.total{border-top:1px solid var(--border);margin-top:8px;padding-top:16px;font-size:1.1rem;font-weight:700}.summary-label{color:var(--text-muted)}.btn-primary{background:var(--accent);color:#fff;border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;width:100%;padding:16px;font-size:1rem;font-weight:600;transition:all .15s}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-secondary{background:var(--bg-card);width:100%;color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;-webkit-tap-highlight-color:transparent;padding:14px;font-size:.95rem;font-weight:500;transition:all .15s}.btn-secondary:hover{border-color:var(--text-muted)}.admin-section{margin-bottom:32px}.admin-section-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:16px;font-size:.8rem;font-weight:600}.admin-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:20px}.admin-card-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.admin-card-title{font-weight:600}.admin-actions{gap:8px;display:flex}.btn-small{background:var(--bg-input);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:.8rem;transition:all .15s}.btn-small:hover{color:var(--text);border-color:var(--text-muted)}.btn-small.danger:hover{color:var(--accent);border-color:var(--accent)}.status-badge{border-radius:20px;align-items:center;gap:6px;padding:4px 10px;font-size:.8rem;font-weight:500;display:inline-flex}.status-badge.connected{color:var(--success);background:#00d2a01a}.status-badge.disconnected{color:var(--accent);background:#e945601a}.toast{background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);z-index:100;text-align:center;max-width:calc(100% - 48px);padding:14px 24px;font-size:.9rem;animation:.3s slideUp;position:fixed;bottom:32px;left:50%;transform:translate(-50%)}.toast.success{border-color:var(--success)}.toast.error{border-color:var(--accent)}.spinner{vertical-align:middle;border:2px solid #0000;border-top-color:#fff;border-radius:50%;width:20px;height:20px;margin-right:8px;animation:.6s linear infinite spin;display:inline-block}.tabs{background:var(--bg-card);border-radius:var(--radius-sm);border:1px solid var(--border);gap:0;margin-bottom:24px;display:flex;overflow:hidden}.tab{text-align:center;color:var(--text-muted);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex:1;padding:12px;font-size:.9rem;font-weight:500;transition:all .15s}.tab.active{background:var(--bg-input);color:var(--text)}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-8px)}75%{transform:translate(8px)}}@keyframes slideUp{0%{opacity:0;transform:translate(-50%)translateY(20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.3s fadeIn}.modal-overlay{z-index:50;background:#000000b3;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-content{border-radius:var(--radius);background:#fff;width:100%;max-width:600px;max-height:80vh;padding:0;overflow-y:auto}.modal-actions{background:var(--bg-card);border-radius:0 0 var(--radius) var(--radius);gap:12px;padding:16px 24px;display:flex;position:sticky;bottom:0}.modal-actions .btn-primary,.modal-actions .btn-secondary{flex:1}
