.sync-error-toast{position:fixed;bottom:1rem;left:1rem;right:1rem;background:#dc2626;color:#fff;padding:.75rem 1rem;border-radius:.75rem;font-size:.85rem;font-weight:500;z-index:9999;box-shadow:0 4px 12px #0000004d;text-align:center;cursor:pointer;word-break:break-word}*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;overscroll-behavior:none}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#f1f5f9;color:#1e293b;line-height:1.5;-webkit-font-smoothing:antialiased}#app{height:100%;display:flex;flex-direction:column}.page{display:flex;flex-direction:column;min-height:100dvh;width:100%;background:#f1f5f9}.page-content{flex:1;overflow-y:auto;padding:1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1.25rem;border-radius:.75rem;font-size:.9375rem;font-weight:600;border:none;cursor:pointer;transition:opacity .15s,transform .1s;text-decoration:none;min-height:48px}.btn:active:not(:disabled){transform:scale(.97);opacity:.85}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#2563eb;color:#fff}.btn-success{background:#16a34a;color:#fff}.btn-danger{background:#dc2626;color:#fff}.btn-outline{background:#fff;color:#475569;border:1.5px solid #e2e8f0}.btn-full{width:100%}.field{display:flex;flex-direction:column;gap:.35rem}.field label{font-size:.8rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.field input{padding:.75rem 1rem;border:1.5px solid #e2e8f0;border-radius:.75rem;font-size:1rem;color:#1e293b;background:#fff;outline:none;transition:border-color .15s;width:100%}.field input:focus{border-color:#2563eb}.alert{padding:.75rem 1rem;border-radius:.75rem;font-size:.875rem}.alert-error{background:#fee2e2;color:#dc2626}.spinner{width:1.25rem;height:1.25rem;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;flex-shrink:0}.spinner-dark{border-color:#0000001a;border-top-color:#2563eb}@keyframes spin{to{transform:rotate(360deg)}}
