.omr-app{--font-space:var(--font-body);--font-fraunces:var(--font-display);--ink:#0f172a;--ink-soft:#334155;--paper:#f6f1e8;--paper-strong:#fef9f0;--accent:#4287f5;--accent-dark:#2563eb;--accent-soft:#4287f51f;--card:#ffffffd1;--stroke:#0f172a1f;--shadow:0 18px 60px #0f172a1f;min-height:100vh;font-family:var(--font-space),system-ui,sans-serif;color:var(--ink);background:radial-gradient(600px 300px at 15% 10%,#4287f529,#0000 60%),radial-gradient(500px 380px at 90% 20%,#4287f51f,#0000 65%),linear-gradient(135deg,#fdf8f1 0%,#f4efe6 50%,#fdf8f1 100%)}.omr-app h1,.omr-app h2,.omr-app h3{font-family:var(--font-fraunces),"Times New Roman",serif;letter-spacing:-.02em}.omr-app input,.omr-app select,.omr-app button,.omr-app textarea{font-family:inherit}.omr-app .page-grid{background-image:linear-gradient(#0f172a0d 1px,#0000 1px),linear-gradient(90deg,#0f172a0d 1px,#0000 1px);background-size:34px 34px}.omr-app .card-glass{background:var(--card);border:1px solid var(--stroke);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.omr-app .badge{background:#ffffffb3;border:1px solid #0f172a33}@keyframes omrFloatIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes omrReveal{0%{opacity:0;transform:translateY(12px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.omr-app .float-in{animation:.8s ease-out both omrFloatIn}.omr-app .reveal{animation:.6s ease-out both omrReveal}.omr-app .reveal.delay-1{animation-delay:.12s}.omr-app .reveal.delay-2{animation-delay:.22s}.omr-app .reveal.delay-3{animation-delay:.32s}@keyframes omrDotBounce{0%,80%,to{opacity:.45;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}.omr-app .omr-dots{align-items:center;gap:3px;display:inline-flex}.omr-app .omr-dots span{background:currentColor;border-radius:9999px;width:5px;height:5px;animation:1.2s ease-in-out infinite both omrDotBounce}.omr-app .omr-dots span:nth-child(2){animation-delay:.15s}.omr-app .omr-dots span:nth-child(3){animation-delay:.3s}@keyframes omrMessageIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.omr-app .omr-fade-msg{animation:.45s ease-out both omrMessageIn}@media (prefers-reduced-motion:reduce){.omr-app .omr-dots span,.omr-app .omr-fade-msg{animation:none}}.omr-app .omr-crop .ReactCrop,.omr-app .omr-crop .ReactCrop__child-wrapper{max-width:100%;min-height:0}
