.toast-container{position:fixed;top:calc(var(--safe-top) + 64px);left:var(--space-md);right:var(--space-md);z-index:300;display:flex;flex-direction:column;gap:var(--space-sm);pointer-events:none}.toast{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:.9375rem;font-weight:500;pointer-events:auto;cursor:pointer;animation:toastIn .25s ease}.toast-success{background:var(--color-success);color:#fff}.toast-error{background:var(--color-error);color:#fff}.toast-info{background:var(--color-primary);color:#fff}.toast-icon{font-size:1.125rem;flex-shrink:0}.toast-message{flex:1}@keyframes toastIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.login-page{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:var(--space-md);padding-top:var(--safe-top);padding-bottom:var(--safe-bottom)}.login-card{width:100%;max-width:380px;background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-xl);box-shadow:var(--shadow-md)}.login-title{font-size:1.75rem;font-weight:700;color:var(--color-primary);text-align:center;margin-bottom:var(--space-xs)}.login-subtitle{text-align:center;color:var(--color-text-secondary);margin-bottom:var(--space-lg)}.login-form{display:flex;flex-direction:column;gap:var(--space-md)}.login-field{display:flex;flex-direction:column;gap:var(--space-xs)}.login-field label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}.login-field input{height:var(--touch-min);padding:0 var(--space-md);border:2px solid var(--color-border);border-radius:var(--radius-sm);font-size:1rem;background:var(--color-bg);transition:border-color .15s}.login-field input:focus{outline:none;border-color:var(--color-primary)}.login-error{background:#fde8e8;color:var(--color-error);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-size:.875rem;text-align:center}.header{display:flex;align-items:center;height:56px;padding:0 var(--space-sm);padding-top:var(--safe-top);background:var(--color-primary);color:#fff;position:sticky;top:0;z-index:100}.header-left,.header-right{width:48px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.header-title{flex:1;text-align:center;font-size:1.125rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-btn{width:var(--touch-min);height:var(--touch-min);display:flex;align-items:center;justify-content:center;color:#fff;border-radius:var(--radius-sm)}.header-btn:active{background:#ffffff26}.home-page{display:flex;flex-direction:column;min-height:100dvh}.home-content{flex:1;display:flex;flex-direction:column;justify-content:center;gap:var(--space-lg);padding:var(--space-xl);max-width:400px;margin:0 auto;width:100%}.home-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-xl) var(--space-lg);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm);transition:transform .1s,box-shadow .1s;-webkit-user-select:none;user-select:none}.home-card:active{transform:scale(.98);box-shadow:var(--shadow-md)}.home-card-icon{color:var(--color-primary)}.home-card-title{font-size:1.375rem;font-weight:700;color:var(--color-text)}.home-card-desc{font-size:.875rem;color:var(--color-text-secondary)}.manual-entry{display:flex;gap:var(--space-sm);width:100%;max-width:400px}.manual-entry-compact{max-width:none}.manual-entry-input{flex:1;height:var(--touch-min);padding:0 var(--space-md);border:2px solid var(--color-border);border-radius:var(--radius-sm);font-size:1rem;background:var(--color-surface)}.manual-entry-compact .manual-entry-input{background:#ffffffe6;border-color:transparent}.manual-entry-input:focus{outline:none;border-color:var(--color-primary)}.manual-entry-btn{padding:0 var(--space-lg);flex-shrink:0}.scanner{position:relative;flex:1;display:flex;flex-direction:column;background:#000;overflow:hidden}.scanner-video{width:100%;height:100%;object-fit:cover;position:absolute;top:0;right:0;bottom:0;left:0}.scanner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.scanner-frame{width:260px;height:160px;border:3px solid rgba(255,255,255,.8);border-radius:var(--radius-md);box-shadow:0 0 0 9999px #0006,inset 0 0 0 1px #ffffff1a}.scanner-controls{position:absolute;top:var(--space-md);right:var(--space-md);display:flex;gap:var(--space-sm)}.scanner-torch{width:44px;height:44px;border-radius:50%;background:#00000080;color:#fff;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.scanner-torch.active{background:#ffc800b3;color:#000}.scanner-manual{position:absolute;bottom:0;left:0;right:0;padding:var(--space-md);padding-bottom:calc(var(--space-md) + var(--safe-bottom));background:linear-gradient(transparent,#000000b3)}.scanner-fallback{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-xl);gap:var(--space-lg)}.scanner-error{color:var(--color-error);text-align:center;font-weight:500}.bottom-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:200;animation:fadeIn .2s ease}.bottom-sheet{position:fixed;bottom:0;left:0;right:0;background:var(--color-surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:var(--space-md) var(--space-lg);padding-bottom:calc(var(--space-lg) + var(--safe-bottom));z-index:201;animation:slideUp .25s ease;max-height:80dvh;overflow-y:auto}.bottom-sheet-handle{width:40px;height:4px;background:var(--color-border);border-radius:2px;margin:0 auto var(--space-md)}.bottom-sheet-content{display:flex;flex-direction:column;gap:var(--space-md)}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.sell-page{display:flex;flex-direction:column;height:100dvh}.sheet-title{font-size:1.25rem;font-weight:600;text-align:center}.sheet-code{text-align:center;font-size:1.5rem;font-weight:700;font-family:SF Mono,Menlo,Monaco,monospace;padding:var(--space-md);background:var(--color-bg);border-radius:var(--radius-md);letter-spacing:.05em}.stepper{display:flex;justify-content:center;gap:var(--space-xl);padding:var(--space-md)}.stepper-step{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs)}.stepper-dot{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.875rem;font-weight:600;background:var(--color-border);color:var(--color-text-secondary);transition:all .2s}.stepper-step.active .stepper-dot{background:var(--color-primary);color:#fff}.stepper-step.done .stepper-dot{background:var(--color-success);color:#fff}.stepper-label{font-size:.75rem;color:var(--color-text-secondary);white-space:nowrap}.stepper-step.active .stepper-label{color:var(--color-primary);font-weight:600}.validate-page{display:flex;flex-direction:column;height:100dvh}.validate-codes{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);background:var(--color-bg);border-radius:var(--radius-md)}.validate-code-row{display:flex;justify-content:space-between;align-items:center}.validate-code-label{font-size:.875rem;color:var(--color-text-secondary)}.validate-code-value{font-family:SF Mono,Menlo,Monaco,monospace;font-weight:600;font-size:1rem}.validate-win{text-align:center;padding:var(--space-lg);background:linear-gradient(135deg,#fff3e0,#ffe0b2);border-radius:var(--radius-md);border:2px solid var(--color-win)}.validate-win-label{display:block;font-size:1.25rem;font-weight:700;color:var(--color-win);margin-bottom:var(--space-xs)}.validate-win-amount{display:block;font-size:2rem;font-weight:800;color:var(--color-primary-dark)}.sheet-actions{display:flex;gap:var(--space-sm)}.sheet-actions .btn{flex:1}.sheet-result{text-align:center;font-size:1.125rem;font-weight:500;padding:var(--space-md);border-radius:var(--radius-md)}.sheet-result.success{background:#e8f5e9;color:var(--color-success)}.sheet-result.error{background:#fde8e8;color:var(--color-error)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{min-height:100dvh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input,button,textarea,select{font:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}img,video{display:block;max-width:100%}:root{--color-primary: #1a5c2e;--color-primary-light: #2a7a40;--color-primary-dark: #0f3d1d;--color-success: #2e7d32;--color-error: #c62828;--color-warning: #f57f17;--color-win: #ff8f00;--color-bg: #f5f5f5;--color-surface: #ffffff;--color-text: #1a1a1a;--color-text-secondary: #666666;--color-border: #e0e0e0;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .12);--shadow-md: 0 4px 12px rgba(0, 0, 0, .15);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .2);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--touch-min: 48px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px)}body{background-color:var(--color-bg);color:var(--color-text)}#root{min-height:100dvh;display:flex;flex-direction:column}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:var(--touch-min);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-size:1rem;font-weight:600;transition:background-color .15s,opacity .15s;user-select:none;-webkit-user-select:none}.btn:active{opacity:.8}.btn:disabled{opacity:.5;pointer-events:none}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:active{background-color:var(--color-primary-dark)}.btn-large{min-height:64px;font-size:1.25rem;border-radius:var(--radius-lg);width:100%}.btn-outline{border:2px solid var(--color-primary);color:var(--color-primary);background:transparent}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loading-screen{display:flex;align-items:center;justify-content:center;min-height:100dvh}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
