@import url("https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Sans:ital,opsz,wght@0,9..40,300..700;1,9..40,300..700&display=swap");:root{--bg:#fffbf5;--bg-card:#fff;--bg-warm:#fff5e9;--bg-accent:#fff0db;--text:#2d2017;--text-secondary:#7a6b5d;--text-muted:#b0a294;--accent:#e8703a;--accent-hover:#d45e2a;--accent-light:#fdece3;--border:#ede5da;--border-light:#f5efe7;--success:#4caf50;--shadow-sm:0 1px 3px rgba(45,32,23,.06);--shadow-md:0 4px 16px rgba(45,32,23,.08);--shadow-lg:0 8px 32px rgba(45,32,23,.12);--radius:16px;--radius-sm:10px;--radius-lg:24px}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:DM Sans,system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100dvh;overflow-x:hidden}h1,h2,h3,h4{font-family:"DM Serif Display",serif;font-weight:400}button{cursor:pointer;border:none;outline:none}button,input,textarea{font-family:DM Sans,system-ui,sans-serif}.app-container{padding:0 20px}.app-container,.landing{max-width:480px;margin:0 auto;min-height:100dvh}.landing{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:40px 20px}.landing-logo{font-family:"DM Serif Display",serif;font-size:2.5rem;color:var(--accent);margin-bottom:8px;letter-spacing:-.02em}.landing-logo span{color:var(--text)}.landing-tagline{font-size:1.1rem;color:var(--text-secondary);margin-bottom:40px;line-height:1.5;max-width:320px}.landing-illustration{width:220px;height:220px;margin-bottom:40px;border-radius:var(--radius-lg);background:linear-gradient(145deg,var(--bg-warm),var(--accent-light));display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg)}.landing-illustration svg{width:100px;height:100px;opacity:.7}.landing-features{display:flex;flex-direction:column;gap:12px;margin-bottom:40px;width:100%;max-width:300px}.landing-feature{display:flex;align-items:center;gap:12px;font-size:.9rem;color:var(--text-secondary);text-align:left}.landing-feature-icon{width:36px;height:36px;border-radius:10px;background:var(--accent-light);flex-shrink:0;font-size:1.1rem}.btn-google,.landing-feature-icon{display:flex;align-items:center;justify-content:center}.btn-google{width:100%;max-width:300px;padding:14px 24px;background:var(--bg-card);border:1.5px solid var(--border);border-radius:var(--radius);font-size:.95rem;font-weight:500;color:var(--text);gap:10px;transition:all .2s;box-shadow:var(--shadow-sm)}.btn-google:hover{border-color:var(--accent);background:var(--accent-light)}.btn-guest{width:100%;max-width:300px;padding:14px 24px;background:none;border:none;font-size:.9rem;color:var(--text-muted);margin-top:8px;text-decoration:underline;text-underline-offset:3px}.btn-guest:hover{color:var(--accent)}.header{display:flex;align-items:center;justify-content:space-between;padding:20px 0 16px}.header-logo{font-family:"DM Serif Display",serif;font-size:1.5rem;color:var(--accent)}.header-logo span{color:var(--text)}.header-right{display:flex;align-items:center;gap:10px}.header-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;border:2px solid var(--border)}.btn-signout{font-size:.8rem;color:var(--text-muted);background:none;padding:6px 12px;border-radius:var(--radius-sm);border:1px solid var(--border-light)}.btn-signout:hover{color:var(--accent);border-color:var(--accent)}.greeting{margin-bottom:28px}.greeting h2{font-size:1.6rem;margin-bottom:4px}.greeting p{color:var(--text-secondary);font-size:.95rem}.upload-section{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px;margin-bottom:36px}.upload-card{background:var(--bg-card);border:2px dashed var(--border);border-radius:var(--radius);padding:28px 16px;display:flex;flex-direction:column;align-items:center;gap:12px;transition:all .25s;cursor:pointer;position:relative;overflow:hidden}.upload-card:hover{border-color:var(--accent);background:var(--accent-light);transform:translateY(-2px);box-shadow:var(--shadow-md)}.upload-card:active{transform:translateY(0)}.upload-card-icon{width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center}.upload-card-icon.camera{background:linear-gradient(135deg,#fdece3,#fcd6bd)}.upload-card-icon.gallery{background:linear-gradient(135deg,#e3f0fd,#bdd6fc)}.upload-card-label{font-size:.85rem;font-weight:600;color:var(--text)}.upload-card-sub{font-size:.75rem;color:var(--text-muted)}.upload-card input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}.past-section h3{font-size:1.15rem;margin-bottom:14px;color:var(--text)}.past-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:12px;gap:12px;margin-bottom:40px}.past-card{background:var(--bg-card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);cursor:pointer;transition:all .2s;border:1.5px solid var(--border-light)}.past-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--accent)}.past-card-thumb{width:100%;aspect-ratio:4/3;background:var(--bg-warm);display:flex;align-items:center;justify-content:center;overflow:hidden}.past-card-thumb img{width:100%;height:100%;object-fit:cover}.past-card-info{padding:10px 12px}.past-card-name{font-size:.82rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.past-card-date{font-size:.72rem;color:var(--text-muted);margin-top:2px}.past-empty{text-align:center;color:var(--text-muted);font-size:.9rem;padding:24px;background:var(--bg-warm);border-radius:var(--radius)}.progress-overlay{position:fixed;inset:0;background:rgba(255,251,245,.95);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100;padding:40px}.progress-spinner{width:56px;height:56px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:24px}@keyframes spin{to{transform:rotate(1turn)}}.progress-text{font-size:1rem;color:var(--text);text-align:center;font-weight:500}.progress-sub{font-size:.85rem;color:var(--text-muted);margin-top:6px;text-align:center}.progress-bar-container{width:200px;height:6px;background:var(--border);border-radius:3px;margin-top:20px;overflow:hidden}.progress-bar-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .4s ease}.results-header{gap:12px;padding:20px 0 8px}.btn-back,.results-header{display:flex;align-items:center}.btn-back{width:40px;height:40px;border-radius:12px;background:var(--bg-card);border:1.5px solid var(--border);justify-content:center;flex-shrink:0}.btn-back:hover{border-color:var(--accent)}.results-title h2{font-size:1.3rem;line-height:1.2}.results-title p{font-size:.8rem;color:var(--text-muted)}.category-section{margin-top:24px;margin-bottom:8px}.category-label{font-family:"DM Serif Display",serif;font-size:1.1rem;color:var(--accent);margin-bottom:12px;padding-bottom:6px;border-bottom:1.5px solid var(--accent-light)}.menu-item{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--border-light);animation:fadeIn .4s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.menu-item-image{width:88px;height:88px;border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0;background:var(--bg-warm);display:flex;align-items:center;justify-content:center}.menu-item-image img{width:100%;height:100%;object-fit:cover;transition:opacity .3s}.menu-item-image .shimmer{width:100%;height:100%;background:linear-gradient(90deg,var(--bg-warm) 25%,var(--accent-light) 50%,var(--bg-warm) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.menu-item-info{flex:1 1;min-width:0}.menu-item-name{font-weight:600;font-size:.95rem;margin-bottom:4px;color:var(--text)}.menu-item-desc{font-size:.82rem;color:var(--text-secondary);line-height:1.4;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.menu-item-price{font-size:.88rem;font-weight:700;color:var(--accent)}.results-bottom-pad{height:40px}.gen-status{background:var(--accent-light);border-radius:var(--radius);padding:14px 16px;margin:16px 0;display:flex;align-items:center;gap:12px;font-size:.85rem;color:var(--text-secondary)}.gen-status-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);animation:pulse 1.2s ease infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.gen-complete{background:#e8f5e9}.gen-complete .gen-status-dot{background:var(--success);animation:none}