#app{background-color:var(--surface);width:100vw;height:100vh;color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overflow:hidden}*,:before,:after{box-sizing:border-box}*{font:inherit;margin:0;padding:0}html,body{height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;background-color:var(--bg,#f5f5f5);color:var(--text,#333);line-height:1.5;overflow-x:hidden}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{cursor:pointer;background:0 0;border:none}:root{--primary:#1a73e8;--primary-dark:#1557b0;--primary-light:#e8f0fe;--danger:#d93025;--danger-light:#fce8e6;--success:#1e8e3e;--success-light:#e6f4ea;--warning:#f29900;--warning-light:#fef7e0;--text:#202124;--text-secondary:#5f6368;--text-tertiary:#9aa0a6;--bg:#f8f9fa;--surface:#fff;--border:#dadce0;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--font-xs:.75rem;--font-sm:.875rem;--font-md:1rem;--font-lg:1.25rem;--font-xl:1.5rem;--font-xxl:2rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-full:9999px;--shadow-sm:0 1px 2px 0 #3c40434d, 0 1px 3px 1px #3c404326;--shadow-md:0 1px 3px 0 #3c40434d, 0 4px 8px 3px #3c404326;--shadow-lg:0 4px 6px -1px #0000001a, 0 2px 4px -1px #0000000f;--shadow-sheet:0 -4px 12px #0000001a;--z-header:100;--z-overlay:150;--z-bottom-sheet:200;--z-toast:300;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px)}.slide-up-enter-active,.slide-up-leave-active{transition:transform .3s cubic-bezier(.2,.8,.2,1)}.slide-up-enter-from,.slide-up-leave-to{transform:translateY(100%)}.slide-up-enter-to,.slide-up-leave-from{transform:translateY(0)}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter-from,.fade-leave-to{opacity:0}@keyframes pulse{0%{opacity:.5;transform:scale(.95)}50%{opacity:1;transform:scale(1)}to{opacity:.5;transform:scale(.95)}}.pulse{animation:2s ease-in-out infinite pulse}@keyframes scan-line{0%{opacity:0;top:0}10%{opacity:1}90%{opacity:1}to{opacity:0;top:100%}}.scan-line-anim{animation:2.5s linear infinite scan-line}
