:root{--color-bg-primary: #F7F4EF;--color-bg-secondary: #FFFFFF;--color-bg-elevated: #FAF8F5;--color-surface-cream: #EDE8E0;--color-surface-warm: #E8E2D9;--color-text-primary: #2C2420;--color-text-secondary: #5C534A;--color-text-muted: #8A8279;--color-text-disabled: #B8B2A9;--color-accent: #C9A66B;--color-accent-hover: #B8955A;--color-accent-light: rgba(201, 166, 107, .12);--color-accent-muted: rgba(201, 166, 107, .15);--color-roast-green: #7CB342;--color-roast-light: #C4A77D;--color-roast-medium: #8D6E63;--color-roast-dark: #4E342E;--color-success: #4CAF50;--color-success-light: rgba(76, 175, 80, .12);--color-warning: #E6A23C;--color-warning-light: rgba(230, 162, 60, .12);--color-error: #D32F2F;--color-error-light: rgba(211, 47, 47, .12);--color-border: #E8E2D9;--color-border-subtle: #F0EBE4;--font-family: "Vazirmatn", system-ui, -apple-system, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-size-4xl: 3rem;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: .5rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-xl: 1.25rem;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(44, 36, 32, .04);--shadow-md: 0 2px 8px rgba(44, 36, 32, .06);--shadow-lg: 0 4px 16px rgba(44, 36, 32, .08);--shadow-button: 0 2px 4px rgba(201, 166, 107, .3);--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px);--safe-area-right: env(safe-area-inset-right, 0px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font-family);background-color:var(--color-bg-primary);color:var(--color-text-primary);line-height:1.6;min-height:100vh;min-height:100dvh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;color:var(--color-text-primary)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-bg-elevated)}::-webkit-scrollbar-thumb{background:var(--color-surface-warm);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.container{width:100%;max-width:430px;margin:0 auto;padding:var(--spacing-md);padding-top:calc(var(--safe-area-top) + var(--spacing-md));padding-bottom:calc(var(--safe-area-bottom) + var(--spacing-md))}.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}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);font-family:inherit;font-size:var(--font-size-base);font-weight:500;text-decoration:none;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);min-height:52px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:scale(.98)}.btn-primary{background:var(--color-accent);color:#fff;box-shadow:var(--shadow-button)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-primary:active:not(:disabled){box-shadow:0 1px 2px #c9a66b33}.btn-secondary{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg-elevated);border-color:var(--color-accent)}.btn-ghost{background:transparent;color:var(--color-text-muted);border:none;padding:var(--spacing-sm) var(--spacing-md);min-height:44px}.btn-ghost:hover:not(:disabled){color:var(--color-accent)}.btn-full{width:100%}.input{width:100%;padding:var(--spacing-md);font-family:inherit;font-size:var(--font-size-base);color:var(--color-text-primary);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast);min-height:52px}.input:focus{border-color:var(--color-accent);outline:none}.input::placeholder{color:var(--color-text-muted)}.card{background:var(--color-bg-secondary);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-md)}.card-elevated{box-shadow:var(--shadow-lg)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideRight{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-fade-in{animation:fadeIn var(--transition-normal) ease-out}.animate-slide-up{animation:slideUp var(--transition-slow) ease-out}.animate-slide-right{animation:slideRight var(--transition-slow) ease-out}.animate-pulse{animation:pulse 1.5s ease-in-out infinite}.animate-scale-in{animation:scaleIn var(--transition-normal) ease-out}.badge{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);font-weight:500;border-radius:var(--radius-full);gap:var(--spacing-xs)}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-error{background:var(--color-error-light);color:var(--color-error)}.badge-neutral{background:var(--color-surface-cream);color:var(--color-text-secondary)}.progress-bar{width:100%;height:4px;background:var(--color-surface-cream);border-radius:var(--radius-full);overflow:hidden;position:relative}.progress-bar-fill{height:100%;background:var(--color-accent);border-radius:var(--radius-full);transition:width var(--transition-normal)}.progress-bar-indeterminate:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,var(--color-accent) 50%,transparent 100%);animation:shimmer 1.5s ease-in-out infinite}.rank-meter{width:100%;height:8px;background:linear-gradient(to right,var(--color-roast-green) 0%,var(--color-roast-light) 33%,var(--color-roast-medium) 66%,var(--color-roast-dark) 100%);border-radius:var(--radius-full);position:relative}.rank-meter-indicator{position:absolute;top:50%;width:16px;height:16px;background:var(--color-bg-secondary);border:2px solid var(--color-text-primary);border-radius:50%;transform:translate(-50%,-50%);box-shadow:var(--shadow-md);transition:left var(--transition-normal)}.divider{display:flex;align-items:center;gap:var(--spacing-md);color:var(--color-text-muted);font-size:var(--font-size-sm)}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);min-height:56px}.header-title{font-size:var(--font-size-lg);font-weight:600}.header-back{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;background:transparent;color:var(--color-text-primary);cursor:pointer;border-radius:var(--radius-md);transition:background var(--transition-fast)}.header-back:hover{background:var(--color-surface-cream)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl) var(--spacing-lg);text-align:center}.empty-state-icon{width:80px;height:80px;border-radius:var(--radius-lg);background:var(--color-accent-light);display:flex;align-items:center;justify-content:center;margin-bottom:var(--spacing-lg)}.empty-state-title{font-size:var(--font-size-lg);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--spacing-sm)}.empty-state-description{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--spacing-xl)}.history-item{display:flex;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-bg-secondary);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);cursor:pointer;transition:all var(--transition-fast);border-right:3px solid transparent}.history-item:hover{box-shadow:var(--shadow-md)}.history-item-success{border-right-color:var(--color-success)}.history-item-warning{border-right-color:var(--color-warning)}.history-item-thumbnail{width:60px;height:60px;border-radius:var(--radius-sm);object-fit:cover;background:var(--color-surface-cream)}.history-item-content{flex:1;display:flex;flex-direction:column;justify-content:center;gap:var(--spacing-xs)}.history-item-label{font-size:var(--font-size-base);font-weight:500;color:var(--color-text-primary)}.history-item-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.capture-btn{width:72px;height:72px;border-radius:50%;background:var(--color-bg-secondary);border:3px solid var(--color-accent);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);box-shadow:var(--shadow-md)}.capture-btn:hover{border-color:var(--color-accent-hover);transform:scale(1.02)}.capture-btn:active{transform:scale(.95)}.capture-btn-inner{width:56px;height:56px;border-radius:50%;background:var(--color-bg-secondary);box-shadow:var(--shadow-sm)}.score-display{display:flex;align-items:baseline;justify-content:center;gap:var(--spacing-xs)}.score-value{font-size:var(--font-size-4xl);font-weight:700;color:var(--color-text-primary);line-height:1;font-variant-numeric:tabular-nums}.score-suffix{font-size:var(--font-size-base);color:var(--color-text-muted);font-weight:400}.image-preview-container{position:relative;aspect-ratio:4/3;border-radius:var(--radius-lg);overflow:hidden;background:#3e342e}.image-preview{width:100%;height:100%;object-fit:contain}.processing-dots{display:flex;gap:var(--spacing-sm);justify-content:center}.processing-dot{width:8px;height:8px;border-radius:50%;background:var(--color-accent)}.text-display{font-size:var(--font-size-3xl);font-weight:700;line-height:1.2}.text-h1{font-size:var(--font-size-2xl);font-weight:600;line-height:1.3}.text-h2{font-size:var(--font-size-xl);font-weight:600;line-height:1.35}.text-h3{font-size:var(--font-size-lg);font-weight:500;line-height:1.4}.text-body{font-size:var(--font-size-base);font-weight:400;line-height:1.6}.text-caption{font-size:var(--font-size-sm);font-weight:400;line-height:1.5}.text-mono{font-size:var(--font-size-sm);font-weight:500;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.text-accent{color:var(--color-accent)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-error{color:var(--color-error)}.text-center{text-align:center}.pill{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-surface-cream);border-radius:var(--radius-full);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.icon-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.icon-btn:hover{background:var(--color-surface-cream);color:var(--color-text-primary)}.toggle-group{display:flex;gap:var(--spacing-sm);padding:var(--spacing-xs);background:var(--color-surface-cream);border-radius:var(--radius-md)}.toggle-item{flex:1;padding:var(--spacing-sm) var(--spacing-md);border:none;background:transparent;color:var(--color-text-muted);font-family:inherit;font-size:var(--font-size-sm);font-weight:500;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.toggle-item:hover{color:var(--color-text-secondary)}.toggle-item-active{background:var(--color-bg-secondary);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}
