:root{--color-primary: #E85D24;--color-primary-dark: #C94E1C;--color-bg: #FAFAF8;--color-surface: #FFFFFF;--color-text: #1A1A1A;--color-muted: #6B6B6B;--color-border: #E8E4DF;--color-danger: #DC2626;--color-success: #16A34A;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 12px rgba(0,0,0,.1);--shadow-lg: 0 8px 24px rgba(0,0,0,.12);--nav-height: 64px;--font-size-base: 16px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:var(--font-size-base);-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--color-bg);color:var(--color-text);line-height:1.6;min-height:100vh;min-height:-webkit-fill-available;overflow-x:hidden}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit;font-size:inherit}input,select,textarea{font-family:inherit;font-size:var(--font-size-base)}#app{max-width:640px;margin:0 auto;min-height:100vh;position:relative}.page{padding:var(--space-md);padding-bottom:calc(var(--nav-height) + var(--space-xl) + env(safe-area-inset-bottom));min-height:100vh}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg);padding-top:var(--space-sm)}.page-title{font-size:1.5rem;font-weight:700;color:var(--color-text)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:640px;height:calc(var(--nav-height) + env(safe-area-inset-bottom));background:var(--color-surface);border-top:1px solid var(--color-border);display:flex;align-items:flex-start;justify-content:space-around;padding-top:8px;padding-bottom:env(safe-area-inset-bottom);z-index:100;box-shadow:0 -2px 12px #0000000f}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 16px;min-width:64px;min-height:44px;border:none;background:none;color:var(--color-muted);font-size:.7rem;font-weight:500;transition:color .15s ease;-webkit-tap-highlight-color:transparent;text-decoration:none}.nav-item:active{opacity:.7}.nav-item.active{color:var(--color-primary)}.nav-item svg{width:24px;height:24px;stroke-width:2}.card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);overflow:hidden;box-shadow:var(--shadow-sm)}.recipe-card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);overflow:hidden;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;transition:transform .15s ease,box-shadow .15s ease;-webkit-tap-highlight-color:transparent}.recipe-card:active{transform:scale(.98);box-shadow:none}.recipe-card-image{width:100%;height:180px;object-fit:cover;background:var(--color-bg)}.recipe-card-image-placeholder{width:100%;height:180px;background:linear-gradient(135deg,#f5e6dc,#fce8da);display:flex;align-items:center;justify-content:center;font-size:3rem}.recipe-card-body{padding:var(--space-md)}.recipe-card-title{font-size:1rem;font-weight:600;line-height:1.3;margin-bottom:var(--space-xs);color:var(--color-text)}.recipe-card-meta{display:flex;align-items:center;gap:var(--space-sm);color:var(--color-muted);font-size:.8rem;flex-wrap:wrap}.recipe-card-category{background:#fef3ee;color:var(--color-primary);padding:2px 8px;border-radius:var(--radius-full);font-size:.75rem;font-weight:500}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:12px 20px;border-radius:var(--radius-md);font-size:1rem;font-weight:600;border:none;cursor:pointer;min-height:44px;transition:opacity .15s,transform .1s;-webkit-tap-highlight-color:transparent;white-space:nowrap}.btn:active{transform:scale(.97);opacity:.85}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-secondary{background:#fef3ee;color:var(--color-primary);border:1px solid #f5c9b3}.btn-ghost{background:transparent;color:var(--color-text);border:1px solid var(--color-border)}.btn-danger{background:var(--color-danger);color:#fff}.btn-sm{padding:8px 14px;font-size:.875rem;min-height:36px}.btn-full{width:100%}.btn-icon{padding:10px;border-radius:var(--radius-full);min-width:44px;min-height:44px}.fab{position:fixed;bottom:calc(var(--nav-height) + var(--space-md) + env(safe-area-inset-bottom));right:var(--space-md);width:56px;height:56px;border-radius:var(--radius-full);background:var(--color-primary);color:#fff;border:none;box-shadow:var(--shadow-lg);display:flex;align-items:center;justify-content:center;font-size:1.5rem;cursor:pointer;z-index:50;transition:transform .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent;text-decoration:none}.fab:active{transform:scale(.94);box-shadow:var(--shadow-md)}.form-group{display:flex;flex-direction:column;gap:var(--space-xs);margin-bottom:var(--space-md)}.form-label{font-size:.875rem;font-weight:600;color:var(--color-text)}.form-hint{font-size:.75rem;color:var(--color-muted)}.input,.select,.textarea{width:100%;padding:12px 14px;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:16px;color:var(--color-text);background:var(--color-surface);transition:border-color .15s;-moz-appearance:none;appearance:none;-webkit-appearance:none;min-height:44px}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary)}.input::placeholder,.textarea::placeholder{color:#b0aba5}.textarea{resize:vertical;min-height:100px;line-height:1.5}.select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236B6B6B' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}.checkbox-row{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm) 0;cursor:pointer}.checkbox-row input[type=checkbox]{width:20px;height:20px;min-width:20px;accent-color:var(--color-primary);cursor:pointer;margin-top:2px}.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--radius-full);font-size:.75rem;font-weight:500;background:var(--color-bg);color:var(--color-muted);border:1px solid var(--color-border)}.badge-primary{background:#fef3ee;color:var(--color-primary);border-color:#f5c9b3}.chips{display:flex;gap:var(--space-sm);overflow-x:auto;padding-bottom:var(--space-xs);scrollbar-width:none;-ms-overflow-style:none}.chips::-webkit-scrollbar{display:none}.chip{display:inline-flex;align-items:center;padding:6px 14px;border-radius:var(--radius-full);font-size:.875rem;font-weight:500;white-space:nowrap;border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-muted);cursor:pointer;transition:all .15s;min-height:36px;-webkit-tap-highlight-color:transparent}.chip.active,.chip:active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.recipe-list{display:flex;flex-direction:column;gap:var(--space-md)}.recipe-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-xl) var(--space-md);gap:var(--space-md)}.empty-state-icon{font-size:3.5rem;line-height:1}.empty-state-title{font-size:1.125rem;font-weight:600;color:var(--color-text)}.empty-state-text{color:var(--color-muted);font-size:.9rem;max-width:260px}.divider{height:1px;background:var(--color-border);margin:var(--space-md) 0}.spinner{width:24px;height:24px;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)}}.loading-center{display:flex;justify-content:center;padding:var(--space-xl)}.alert{padding:var(--space-md);border-radius:var(--radius-md);font-size:.9rem;line-height:1.5}.alert-error{background:#fef2f2;color:#991b1b;border:1px solid #FECACA}.alert-success{background:#f0fdf4;color:#166534;border:1px solid #BBF7D0}.alert-info{background:#eff6ff;color:#1e40af;border:1px solid #BFDBFE}.section-title{font-size:1rem;font-weight:700;color:var(--color-text);margin-bottom:var(--space-sm)}.row-with-remove{display:flex;gap:var(--space-sm);align-items:flex-start}.row-with-remove .input,.row-with-remove .select{flex:1}.btn-remove{min-width:44px;min-height:44px;border:none;background:none;color:var(--color-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);padding:0;flex-shrink:0}.btn-remove:hover{background:#fef2f2;color:var(--color-danger)}.cook-mode{background:var(--color-surface);min-height:100vh}.cook-step{font-size:1.2rem;line-height:1.7;padding:var(--space-xl) var(--space-md)}.upload-area{border:2px dashed var(--color-border);border-radius:var(--radius-md);padding:var(--space-xl) var(--space-md);text-align:center;cursor:pointer;transition:border-color .15s,background .15s;color:var(--color-muted)}.upload-area:hover,.upload-area.drag-over{border-color:var(--color-primary);background:#fef3ee;color:var(--color-primary)}.tabs{display:flex;border-bottom:2px solid var(--color-border);gap:0;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{padding:10px 16px;border:none;background:none;font-size:.9rem;font-weight:500;color:var(--color-muted);cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s;min-height:44px}.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.nutrition-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-sm);text-align:center}.nutrition-item{background:var(--color-bg);border-radius:var(--radius-sm);padding:var(--space-sm)}.nutrition-value{font-size:1.1rem;font-weight:700;color:var(--color-primary)}.nutrition-label{font-size:.7rem;color:var(--color-muted);margin-top:2px}.serving-scaler{display:flex;align-items:center;gap:var(--space-md);background:var(--color-bg);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md)}.serving-scaler button{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--color-border);background:var(--color-surface);font-size:1.25rem;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent}.serving-scaler .serving-count{font-size:1.25rem;font-weight:700;min-width:60px;text-align:center}.stars{display:flex;gap:4px}.star{font-size:1.25rem;cursor:pointer;color:var(--color-border);transition:color .1s}.star.filled{color:#f59e0b}
