:root{--primary: #C4593B;--primary-hover: #A84B30;--accent: #3B5C4A;--bg: #FBF7F0;--bg-card: #FFFFFF;--text: #1C1A17;--text-muted: #6B655D;--border: #E5DDD0;--danger: #B53B3B;--success: #3B7A4A;--radius: 8px;--max-width: 720px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.5}a{color:var(--primary)}button{font:inherit;cursor:pointer}.loading-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--text-muted)}.app-shell{min-height:100vh;display:flex;flex-direction:column;padding-bottom:64px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bg-card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:8px;font-weight:600}.brand-dot{display:inline-block;width:14px;height:14px;border-radius:50%;background:var(--primary)}.content{flex:1;max-width:var(--max-width);margin:0 auto;width:100%}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--bg-card);border-top:1px solid var(--border);padding:6px 0 max(6px,env(safe-area-inset-bottom));z-index:10}.tab-link{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px;text-decoration:none;color:var(--text-muted);font-size:11px}.tab-link.active{color:var(--primary)}.tab-icon{font-size:20px}.page-pad{padding:16px;max-width:var(--max-width);margin:0 auto}.page-title{font-size:22px;margin:0 0 12px}.search-input{width:100%;padding:12px 38px 12px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:15px;background:var(--bg-card);margin-bottom:12px;box-sizing:border-box}.search-clear{position:absolute;right:10px;top:12px;width:24px;height:24px;border:none;background:#0000000f;color:#555;border-radius:50%;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.search-clear:hover{background:#0000001f;color:#000}.recipe-list{list-style:none;padding:0;margin:0}.recipe-row{background:var(--bg-card);border-radius:var(--radius);margin-bottom:8px;border:1px solid var(--border);overflow:hidden}.recipe-link{display:flex;gap:12px;padding:10px;align-items:center;text-decoration:none;color:inherit}.recipe-thumb{width:60px;height:60px;object-fit:cover;border-radius:6px;flex-shrink:0;background:var(--border)}.recipe-info{min-width:0}.recipe-title{font-weight:600;overflow:hidden;text-overflow:ellipsis}.recipe-meta{color:var(--text-muted);font-size:13px;margin-top:2px}.empty-state{padding:40px 20px;text-align:center;color:var(--text-muted)}.empty-state p{margin:0 0 4px}.empty-state .btn{display:inline-block}.recipe-detail{padding-bottom:80px}.back-link{display:inline-block;margin-bottom:12px;color:var(--text-muted);text-decoration:none}.hero-img{width:100%;max-height:280px;object-fit:cover;border-radius:var(--radius);margin-bottom:12px}.lead{font-size:16px;color:var(--text-muted)}.meta-row{display:flex;gap:16px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:16px;font-size:14px;color:var(--text-muted)}.meta-row a{color:var(--text-muted);text-decoration:none}.ingredient-list{padding-left:20px}.ingredient-list li{margin-bottom:4px}.ingredient-group+.ingredient-group{margin-top:12px}.ingredient-group-heading{font-size:15px;font-weight:600;margin:0 0 4px;color:var(--text)}.instruction-list{padding-left:24px}.instruction-list li{margin-bottom:12px}.instruction-list .section{display:block;margin-bottom:4px;color:var(--accent)}.action-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:24px}.btn{padding:10px 16px;border-radius:var(--radius);border:none;font-size:15px;font-weight:500}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.link-btn{background:none;border:none;color:var(--primary);padding:4px 8px;font-size:14px}.link-btn:hover{text-decoration:underline}.field{display:block;margin-bottom:12px}.field span{display:block;margin-bottom:4px;font-size:13px;color:var(--text-muted)}.field input{width:100%;padding:12px;border:1px solid var(--border);border-radius:var(--radius);font-size:15px;background:var(--bg-card)}.field input:focus{outline:2px solid var(--primary);outline-offset:-1px;border-color:transparent}.msg{margin-top:12px;padding:10px 14px;border-radius:var(--radius);font-size:14px}.msg-ok{background:#3b7a4a1a;color:var(--success)}.msg-err{background:#b53b3b1a;color:var(--danger)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card{background:var(--bg-card);border-radius:var(--radius);padding:32px;max-width:400px;width:100%;border:1px solid var(--border)}.auth-title{display:flex;align-items:center;gap:10px;margin:0 0 4px;font-size:24px}.auth-sub{color:var(--text-muted);margin:0 0 24px}.auth-links{display:flex;flex-direction:column;gap:4px;margin-top:16px;align-items:flex-start}.card{background:var(--bg-card);border-radius:var(--radius);padding:16px;border:1px solid var(--border);margin-bottom:16px}.card h2{margin:0 0 12px;font-size:16px}.kv{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);font-size:14px}.kv:last-child{border-bottom:none}.kv span{color:var(--text-muted)}.public-page{max-width:var(--max-width);margin:0 auto;padding:16px}.public-topbar{display:flex;justify-content:space-between;align-items:center;padding:8px 0 16px;border-bottom:1px solid var(--border);margin-bottom:16px}.public-footer{margin-top:40px;padding-top:16px;border-top:1px solid var(--border);text-align:center;color:var(--text-muted);font-size:13px}.desktop-nav{display:none}.desktop-nav-link{text-decoration:none;color:var(--text-muted);font-size:14px;font-weight:500;padding:8px 12px;border-radius:6px;transition:background .15s,color .15s}.desktop-nav-link:hover{background:#0000000d;color:var(--text)}.desktop-nav-link.active{color:var(--primary);background:#0000000a}@media (min-width: 768px){.bottom-nav{display:none}.desktop-nav{display:flex;gap:4px;flex:1;justify-content:center}.app-shell{padding-bottom:0}.topbar{padding:16px 24px}}.save-banner{position:sticky;top:0;z-index:20;background:var(--primary);color:#fff;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 2px 8px #00000026}.save-banner-text{font-size:14px;font-weight:500;flex:1;min-width:0}.save-banner-btn{background:#fff;color:var(--primary);font-weight:600;flex-shrink:0;padding:8px 14px;font-size:14px}.save-banner-btn:hover{background:#ffffffe6}.save-banner-btn:disabled{opacity:.7}.cta-card{margin-top:32px;padding:24px 20px;background:linear-gradient(135deg,#fff8f2,#fbf7f0);border:2px solid var(--primary);border-radius:12px;text-align:center}.cta-card h2{margin:0 0 12px;font-size:20px;color:var(--primary)}.cta-card p{margin:0 0 16px;font-size:15px}.cta-points{list-style:none;padding:0;margin:0 auto 20px;text-align:left;max-width:400px}.cta-points li{padding:6px 0;font-size:15px}.cta-btn{font-size:16px;padding:14px 24px;width:100%;max-width:400px}.cta-sub{margin-top:12px;font-size:13px;color:var(--text-muted)}.cta-sub a{color:var(--primary)}@media (min-width: 600px){.save-banner-text{font-size:15px}}.season-box{background:linear-gradient(135deg,#fff8f2,#fbf7f0);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:12px}.season-header{display:flex;justify-content:space-between;align-items:center;cursor:pointer;gap:12px}.season-header strong{font-size:15px}.season-sub{font-size:12px;color:var(--text-muted);margin-top:2px}.season-toggle{font-size:22px;color:var(--text-muted);width:24px;text-align:center;flex-shrink:0}.season-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.season-pill{background:#fff;border:1px solid var(--border);border-radius:999px;padding:6px 12px;font-size:13px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.season-pill:hover{border-color:var(--primary)}.tab-bar{margin-bottom:12px}.tab-scroll{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}.tab-scroll::-webkit-scrollbar{height:0}.tab-pill{flex-shrink:0;background:#fff;border:1px solid var(--border);border-radius:999px;padding:6px 12px;font-size:13px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:var(--text)}.tab-pill.active{background:var(--primary);color:#fff;border-color:var(--primary)}.tab-pill .tab-count{background:#00000014;color:inherit;padding:1px 7px;border-radius:999px;font-size:11px;min-width:18px;text-align:center}.tab-pill.active .tab-count{background:#ffffff40}.tab-pill.tab-add{font-size:18px;padding:4px 12px}.collection-row{display:flex;gap:8px;align-items:stretch;margin-bottom:12px}.collection-select{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;color:var(--text);font-size:14px;cursor:pointer}.collection-select:focus{outline:2px solid var(--primary);outline-offset:-1px}.collection-add{flex:0 0 auto;width:38px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;color:var(--text-muted, #666);font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.collection-add:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.collection-add:focus{outline:2px solid var(--primary);outline-offset:-1px}.cookbook-row-pwa{margin-bottom:8px}.cookbook-row-pwa .collection-select{background:#faf6e8}.cookbook-hint-btn{display:block;width:100%;padding:8px 12px;border:1px dashed var(--border);border-radius:var(--radius);background:transparent;color:#888;font-size:13px;text-align:left;cursor:pointer;margin-bottom:8px}.cookbook-hint-btn:hover{background:#faf6e8;color:var(--text);border-style:solid}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-card{background:var(--bg, #fff);border-radius:12px;max-width:560px;width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 10px 40px #0003}.bulk-modal-head{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 20px;border-bottom:1px solid var(--border)}.bulk-modal-head .bulk-sub{font-size:13px;color:#666;margin-top:2px}.bulk-modal-head .link-btn{font-size:24px;line-height:1;padding:0 8px}.bulk-search{margin:12px 16px 8px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;font-size:14px;width:calc(100% - 32px)}.bulk-toolbar{display:flex;gap:14px;align-items:center;padding:0 20px 8px;font-size:13px}.bulk-toolbar .link-btn{font-size:13px}.bulk-toolbar .bulk-count{margin-left:auto;color:#888}.bulk-list{flex:1;overflow-y:auto;padding:0 8px;margin:0 8px;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.bulk-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer}.bulk-row:hover{background:#c4593b0d}.bulk-row-sel{background:#c4593b1a}.bulk-row-already{opacity:.55;cursor:default}.bulk-row-already:hover{background:transparent}.bulk-thumb{width:44px;height:44px;border-radius:6px;object-fit:cover;background:#f0eee6;flex-shrink:0}.bulk-thumb-fallback{display:flex;align-items:center;justify-content:center;font-size:22px}.bulk-info{flex:1;min-width:0}.bulk-title-row{font-weight:500;font-size:14px;color:var(--text)}.bulk-meta{font-size:12px;color:#888;margin-top:2px}.bulk-modal-foot{display:flex;gap:8px;padding:14px 20px;border-top:1px solid var(--border);background:#faf8f3}.bulk-modal-foot .btn{flex:1}.bulk-modal-foot .btn-ghost{flex:0 0 auto;padding:10px 18px}.filter-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#888;margin:6px 0 4px}.inline-form{display:flex;gap:8px;margin-bottom:12px}.inline-form input{flex:1;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;background:#fff}.coll-list{list-style:none;padding:0;margin:0}.coll-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.coll-row:last-child{border-bottom:none}.coll-name{font-weight:500}.coll-actions{display:flex;gap:4px}.link-danger{color:var(--danger)!important;font-weight:700}.empty-inline{font-size:14px;color:var(--text-muted);margin:8px 0 0}.coll-section{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;margin-bottom:16px}.coll-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.coll-pills{display:flex;flex-wrap:wrap;gap:6px}.coll-pill{background:#c4593b1a;color:var(--primary);padding:4px 10px;border-radius:999px;font-size:13px;font-weight:500}.coll-pill-book{background:#f0e6c8;color:#6b5a2e}.coll-checklist{display:flex;flex-direction:column;gap:8px}.coll-check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}.coll-check input{width:18px;height:18px}.share-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14141e8c;display:flex;align-items:flex-end;justify-content:center;z-index:1000;animation:fadeIn .15s ease-out}@media (min-width: 640px){.share-overlay{align-items:center}}.share-sheet{background:#fff;width:100%;max-width:480px;border-radius:18px 18px 0 0;padding:18px 18px 24px;box-shadow:0 -8px 32px #0000002e;animation:slideUp .2s ease-out}@media (min-width: 640px){.share-sheet{border-radius:18px}}.share-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.share-head strong{font-size:17px}.share-close{background:none;border:none;font-size:22px;line-height:1;color:#555;cursor:pointer;padding:4px 8px}.share-close:hover{color:#000}.share-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}@media (min-width: 480px){.share-grid{grid-template-columns:repeat(4,1fr)}}.share-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#f5f3ee;border:1px solid #e8e3d8;border-radius:12px;padding:12px 6px;font-size:12px;color:#333;cursor:pointer;transition:background .1s,transform .05s;min-height:78px;text-align:center}.share-tile:hover:not(:disabled){background:#ece8df;transform:translateY(-1px)}.share-tile:disabled{opacity:.5;cursor:default}.share-emoji{font-size:24px;line-height:1}.share-hint{font-size:12px;color:#666;margin:8px 0 0;line-height:1.4}.share-url{margin-top:12px;padding:8px 10px;background:#faf8f3;border:1px solid #ebe6d8;border-radius:8px;font-size:12px;word-break:break-all}.share-url small{color:#888}.share-url a{color:#b04a2a}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@media print{body{background:#fff!important}.no-print,.app-header,header,nav,.tab-bar,.season-box,.auth-page{display:none!important}.recipe-detail{padding:0!important;max-width:100%!important}.hero-img{max-height:200px}a{color:#000!important;text-decoration:none}h1,h2{page-break-after:avoid}ol,ul{page-break-inside:avoid}}.edit-mode{padding-bottom:40px}.edit-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0 14px;margin-bottom:8px;border-bottom:1px solid #ebe6d8;position:sticky;top:0;background:var(--bg, #faf8f3);z-index:10}.edit-head strong{font-size:16px}.btn-sm{padding:6px 12px;font-size:13px}.btn-ghost{background:transparent;border:1px solid #d6cfc1;color:#444}.btn-ghost:hover{background:#ece8df}.edit-field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.edit-field>span{font-size:13px;color:#555;font-weight:500}.edit-field input[type=text],.edit-field input[type=number],.edit-field textarea{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid #d6cfc1;border-radius:8px;font:inherit;background:#fff}.edit-field input:focus,.edit-field textarea:focus{outline:none;border-color:#b04a2a}.edit-row-3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.edit-list{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}.edit-row{display:flex;align-items:center;gap:6px}.edit-row input[type=text]{flex:1;padding:7px 10px;border:1px solid #d6cfc1;border-radius:8px;font:inherit;background:#fff}.edit-mini{width:32px;height:32px;border:1px solid #d6cfc1;border-radius:6px;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:#444}.edit-mini:hover:not(:disabled){background:#f0eadb}.edit-mini:disabled{opacity:.35;cursor:default}.edit-mini-danger{color:#b03030;border-color:#e6c7c0}.edit-mini-danger:hover:not(:disabled){background:#fbeae5}.edit-step{border:1px solid #ebe6d8;border-radius:10px;padding:10px;background:#fff}.edit-step-head{display:flex;align-items:center;gap:6px;margin-bottom:8px}.edit-step-num{font-weight:600;min-width:22px;color:#b04a2a}.edit-step input[type=text],.edit-step textarea{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid #d6cfc1;border-radius:8px;font:inherit;background:#fff}.edit-foot{display:flex;gap:10px;margin-top:18px;padding-top:14px;border-top:1px solid #ebe6d8}.trial-banner{background:#fef3c7;color:#856404;padding:8px 14px;font-size:13px;text-align:center;border-bottom:1px solid #f3e1a0}.trial-banner a{color:inherit;font-weight:600;text-decoration:underline;margin-left:4px}.upgrade-page{min-height:100vh;background:var(--bg, #faf8f3);padding:32px 16px 64px;display:flex;justify-content:center}.upgrade-card{width:100%;max-width:720px}.upgrade-title{display:flex;align-items:center;gap:10px;font-size:28px;margin:0 0 12px}.upgrade-lead{color:#555;font-size:15px;line-height:1.5;margin-bottom:28px}.upgrade-grid{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:28px}@media (min-width: 640px){.upgrade-grid{grid-template-columns:1fr 1fr}}.upgrade-grid-single{max-width:420px;margin-left:auto;margin-right:auto}@media (min-width: 640px){.upgrade-grid-single{grid-template-columns:1fr}}.upgrade-tier{background:#fff;border:1px solid #ebe6d8;border-radius:12px;padding:20px;position:relative;display:flex;flex-direction:column}.upgrade-tier-highlight{border-color:#c4593b;border-width:2px;background:#fff8f5}.upgrade-tier-badge{position:absolute;top:-10px;right:16px;background:#c4593b;color:#fff;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.3px}.upgrade-tier-name{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:#888;margin-bottom:8px}.upgrade-tier-price{margin-bottom:16px}.price-amount{font-size:32px;font-weight:700;color:#222}.price-period{font-size:14px;color:#888;margin-left:4px}.upgrade-feature-list{list-style:none;padding:0;margin:0 0 20px;flex:1}.upgrade-feature-list li{padding:4px 0;font-size:14px;color:#444}.upgrade-feature-list li.muted{color:#999;font-size:13px}.upgrade-cta{display:block;text-align:center;text-decoration:none;width:100%;box-sizing:border-box}.upgrade-secondary{text-align:center;border-top:1px solid #ebe6d8;padding-top:18px}
