:root{--blue: #0071dc;--blue-dark: #004f9a;--yellow: #ffc220;--bg: #f4f6f9;--card: #ffffff;--text: #1a1f2b;--muted: #5c6675;--border: #e2e7ee;--green: #1d8a48;--red: #d33c2f;--radius: 12px;--shadow: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.45}button{font:inherit;cursor:pointer}input,select{font:inherit}.app{max-width:1200px;margin:0 auto;padding:0 20px 80px}.header{position:sticky;top:0;z-index:40;background:var(--blue);color:#fff;margin:0 -20px 20px;padding:0 20px;box-shadow:var(--shadow)}.header-inner{max-width:1160px;margin:0 auto;display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:12px 0}.logo{font-size:20px;font-weight:800;letter-spacing:-.3px;display:flex;align-items:center;gap:8px}.logo .spark{color:var(--yellow)}.nav{display:flex;gap:4px;flex:1;flex-wrap:wrap}.nav button{background:transparent;border:none;color:#ffffffd9;padding:8px 14px;border-radius:8px;font-weight:600;font-size:14px}.nav button:hover{background:#ffffff1f;color:#fff}.nav button.active{background:#fff3;color:#fff}.nav button .badge{background:var(--yellow);color:#1a1f2b;border-radius:99px;font-size:11px;font-weight:800;padding:1px 7px;margin-left:6px}.family-control{display:flex;align-items:center;gap:8px;background:#ffffff24;border-radius:99px;padding:5px 10px}.family-control .fc-label{font-size:12px;font-weight:600;opacity:.9}.family-control button{width:26px;height:26px;border-radius:50%;border:none;background:#fff;color:var(--blue);font-weight:800;font-size:15px;display:flex;align-items:center;justify-content:center}.family-control button:disabled{opacity:.4;cursor:default}.family-control .fc-num{font-weight:800;font-size:16px;min-width:20px;text-align:center}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.section-title{font-size:18px;font-weight:800;margin:22px 0 12px}.muted{color:var(--muted)}.small{font-size:13px}.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:16px}.filters input[type=search]{flex:1;min-width:200px;padding:9px 14px;border:1px solid var(--border);border-radius:99px;background:#fff;outline:none}.filters input[type=search]:focus{border-color:var(--blue)}.filters select{padding:8px 12px;border:1px solid var(--border);border-radius:99px;background:#fff}.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.chip{border:1px solid var(--border);background:#fff;color:var(--text);padding:6px 14px;border-radius:99px;font-size:13px;font-weight:600}.chip.active{background:var(--blue);border-color:var(--blue);color:#fff}.chip .count{opacity:.65;font-weight:500;margin-left:4px}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:14px}.recipe-card{display:flex;flex-direction:column;overflow:hidden;transition:transform .1s,box-shadow .1s;position:relative}.fav-btn{position:absolute;top:12px;right:12px;z-index:2;border:none;background:none;padding:0;color:#b7c1cd;font-size:16px;line-height:1;transition:transform .1s,color .1s}.fav-btn:hover{transform:scale(1.15);color:var(--red)}.fav-btn.on{color:var(--red)}.fav-btn.inline{position:static;vertical-align:middle;font-size:17px;margin-left:2px}.pi-heart{color:var(--red)}.recipe-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #1018281f}.rc-top{padding:14px 16px 6px;cursor:pointer;flex:1}.rc-cuisine{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--blue)}.rc-name{font-size:16px;font-weight:700;margin:3px 0 8px}.rc-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.rc-bottom{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 14px;gap:8px}.rc-price{display:flex;flex-direction:column}.rc-price .total{font-size:17px;font-weight:800;color:var(--green)}.rc-price .per{font-size:11.5px;color:var(--muted)}.btn{border:none;border-radius:8px;padding:8px 14px;font-weight:700;font-size:13.5px;background:var(--blue);color:#fff}.btn:hover{background:var(--blue-dark)}.btn.secondary{background:#eef2f7;color:var(--text)}.btn.secondary:hover{background:#e2e8f0}.btn.ghost{background:transparent;color:var(--blue)}.btn.small{padding:5px 10px;font-size:12.5px}.btn.danger{background:#fdecea;color:var(--red)}.pill{border-radius:99px;padding:2px 9px;font-size:11.5px;font-weight:700}.pill.h5{background:#d7f2e0;color:#14683a}.pill.h4{background:#e2f4d9;color:#3a7418}.pill.h3{background:#fdf3d0;color:#8a6d0d}.pill.h2{background:#ffe4cc;color:#a4511a}.pill.h1{background:#fdd9d5;color:#a3271b}.pill.time{background:#e8eef6;color:#33507a}.pill.tag{background:#f0f0f5;color:#555b6b;font-weight:600}.pill.five{background:#e6e0f8;color:#4d3a99}.stars{color:#c9d2dd;font-size:13px;letter-spacing:1px}.stars .on{color:var(--green)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto}.modal{background:#fff;border-radius:16px;max-width:660px;width:100%;padding:26px 28px;position:relative;margin-bottom:40px}.modal-close{position:absolute;top:14px;right:14px;border:none;background:#eef2f7;width:32px;height:32px;border-radius:50%;font-size:16px;font-weight:700}.modal h2{font-size:22px;margin:2px 0 4px}.detail-meta{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}.detail-cols{display:grid;grid-template-columns:1fr 1.2fr;gap:22px}@media (max-width: 640px){.detail-cols{grid-template-columns:1fr}}.detail-cols h3{font-size:14px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:8px}.ing-list{list-style:none}.ing-list li{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed var(--border);font-size:13.5px}.ing-list li .cost{color:var(--muted);white-space:nowrap}.steps-list{padding-left:20px}.steps-list li{margin-bottom:8px;font-size:13.5px}.detail-pricebar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;background:#f0f7ff;border:1px solid #d4e6fb;border-radius:10px;padding:12px 16px;margin:16px 0}.detail-pricebar .big{font-size:20px;font-weight:800;color:var(--green)}.planner-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px}.budget-box{padding:14px 18px;margin-bottom:18px}.budget-row{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px;margin-bottom:8px}.budget-row .amount{font-size:22px;font-weight:800}.budget-row .amount.over{color:var(--red)}.budget-row .amount.under{color:var(--green)}.budget-bar{height:10px;background:#e8edf3;border-radius:99px;overflow:hidden}.budget-bar .fill{height:100%;border-radius:99px;background:var(--green);transition:width .3s}.budget-bar .fill.warn{background:#e8a213}.budget-bar .fill.over{background:var(--red)}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px}@media (max-width: 1000px){.week-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width: 700px){.week-grid{grid-template-columns:repeat(2,1fr)}}.day-col{padding:10px;display:flex;flex-direction:column;gap:8px;min-height:180px}.dinner-grid .day-col{min-height:150px}.dinner-slot{flex:1}.side-slot{background:#fbfcfe}.side-slot .slot-label{color:#8b7bc2}.day-col h4{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);text-align:center}.slot{border:1px dashed var(--border);border-radius:8px;padding:7px 8px;font-size:12px}.slot .slot-label{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:700;letter-spacing:.5px}.slot.filled{border-style:solid;background:#f7fafd;border-color:#cfe2f5}.slot .meal-name{font-weight:700;font-size:12.5px;margin:2px 0;cursor:pointer;color:var(--blue-dark)}.slot .meal-cost{color:var(--green);font-weight:700;font-size:11.5px}.slot .add-btn{width:100%;border:none;background:transparent;color:var(--muted);font-size:12px;padding:4px;font-weight:600}.slot .add-btn:hover{color:var(--blue)}.slot .remove{border:none;background:transparent;color:var(--red);font-size:11px;padding:0;font-weight:600}.picker-list{max-height:420px;overflow-y:auto;margin-top:12px}.picker-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 6px;border-bottom:1px solid var(--border);cursor:pointer;border-radius:6px}.picker-item:hover{background:#f0f7ff}.picker-item .pi-name{font-weight:600;font-size:14px}.picker-item .pi-price{color:var(--green);font-weight:700;white-space:nowrap}.grocery-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:16px}.grocery-totals{padding:16px 20px;margin-bottom:18px;display:flex;gap:30px;flex-wrap:wrap}.gt-item .gt-label{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.4px}.gt-item .gt-value{font-size:22px;font-weight:800}.gt-item .gt-value.green{color:var(--green)}.grocery-section{margin-bottom:20px}.grocery-section h3{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--blue-dark);margin-bottom:8px;padding-left:4px}.grocery-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border)}.grocery-item:last-child{border-bottom:none}.grocery-item input[type=checkbox]{width:17px;height:17px;accent-color:var(--green);flex-shrink:0}.grocery-item.checked .gi-name{text-decoration:line-through;opacity:.5}.gi-main{flex:1;min-width:0}.gi-name{font-weight:600;font-size:14px}.gi-detail{font-size:12px;color:var(--muted)}.gi-price{font-weight:700;color:var(--text);white-space:nowrap}.gi-link{font-size:12px;color:var(--blue);text-decoration:none;font-weight:600;white-space:nowrap}.gi-link:hover{text-decoration:underline}.gi-link-btn{border:1px dashed var(--border);background:#fff;color:var(--muted);font-size:12px;font-weight:600;border-radius:99px;padding:3px 10px;white-space:nowrap}.gi-link-btn:hover{color:var(--blue);border-color:var(--blue)}.gi-linked{border:1px solid #bfe5cc;background:#e9f7ee;color:var(--green);font-size:12px;font-weight:700;border-radius:99px;padding:3px 10px;white-space:nowrap}.cart-btn{background:var(--yellow);color:#1a1f2b}.cart-btn:hover{background:#f0b71c}.cart-btn:disabled{opacity:.55;cursor:default}.cart-hint{margin-bottom:16px;padding:0 4px}.link-editor{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.link-editor input{flex:1;min-width:220px;padding:7px 12px;border:1.5px solid var(--blue);border-radius:8px;outline:none;font-size:13px}.side-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-top:14px;max-height:420px;overflow-y:auto}.side-card{border:1px solid var(--border);border-radius:10px;background:#fff;padding:10px 12px;text-align:left;display:flex;flex-direction:column;gap:6px}.side-card:hover{border-color:var(--blue);background:#f0f7ff}.side-card .sc-name{font-weight:700;font-size:13.5px}.side-card .sc-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.side-card .sc-price{color:var(--green);font-weight:800;font-size:14px}.empty-state{text-align:center;padding:60px 20px;color:var(--muted)}.empty-state .big-emoji{font-size:42px;margin-bottom:12px}.onboard-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:linear-gradient(135deg,var(--blue) 0%,var(--blue-dark) 100%);display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto}.onboard-card{background:#fff;border-radius:18px;max-width:520px;width:100%;padding:32px 34px;box-shadow:0 20px 60px #0000004d;margin:auto}.onboard-card h1{font-size:24px;margin-bottom:4px}.onboard-card .step-dots{display:flex;gap:6px;margin:14px 0 22px}.step-dots span{width:28px;height:5px;border-radius:99px;background:#e2e7ee}.step-dots span.on{background:var(--yellow)}.form-group{margin-bottom:18px}.form-group label{display:block;font-weight:700;font-size:14px;margin-bottom:6px}.form-group .hint{font-size:12.5px;color:var(--muted);margin-bottom:8px}.form-group input[type=text],.form-group input[type=number]{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;outline:none}.form-group input:focus{border-color:var(--blue)}.size-picker{display:flex;gap:8px;flex-wrap:wrap}.size-picker button{width:44px;height:44px;border-radius:10px;border:1.5px solid var(--border);background:#fff;font-weight:800;font-size:16px}.size-picker button.active{background:var(--blue);border-color:var(--blue);color:#fff}.option-cards{display:grid;gap:10px}.option-card{border:1.5px solid var(--border);border-radius:10px;padding:12px 14px;background:#fff;text-align:left;display:flex;gap:10px;align-items:center}.option-card.active{border-color:var(--blue);background:#f0f7ff}.option-card .oc-title{font-weight:700;font-size:14px}.option-card .oc-sub{font-size:12.5px;color:var(--muted)}.check-row{display:flex;align-items:center;gap:10px;padding:8px 2px;font-size:14px;font-weight:600}.check-row input{width:17px;height:17px;accent-color:var(--blue)}.onboard-nav{display:flex;justify-content:space-between;margin-top:26px}.onboard-nav .btn{padding:11px 22px;font-size:15px}.profile-card{max-width:560px;padding:24px 28px}.profile-card h3{margin:18px 0 10px;font-size:15px}.budget-input-row{display:flex;align-items:center;gap:8px}.budget-input-row input{width:120px;padding:9px 12px;border:1.5px solid var(--border);border-radius:10px}.portal-card{max-width:480px}.portal-tile{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--text);border:1.5px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:10px;transition:border-color .1s,background .1s}.portal-tile:hover{border-color:var(--blue);background:#f0f7ff}.portal-tile .pt-emoji{font-size:26px}.portal-tile .pt-name{display:block;font-weight:800;font-size:15px}.portal-tile .pt-desc{display:block;font-size:12.5px;color:var(--muted)}.portal-tile .pt-arrow{margin-left:auto;color:var(--blue);font-weight:800;font-size:18px}.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:var(--muted)}.auth-main{width:100%;padding:12px;font-size:15px;margin-top:4px}.auth-links{display:flex;justify-content:space-between;margin-top:14px;flex-wrap:wrap;gap:8px}.linklike{background:none;border:none;color:var(--blue);font-weight:600;font-size:13.5px;padding:0}.linklike:hover{text-decoration:underline}.auth-error{background:#fdecea;color:var(--red);border-radius:10px;padding:10px 14px;font-size:13.5px;font-weight:600;margin-bottom:14px}.auth-notice{background:#e9f7ee;color:var(--green);border-radius:10px;padding:10px 14px;font-size:13.5px;font-weight:600;margin-bottom:14px}.form-group input[type=password]{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:10px;outline:none}.form-group input[type=password]:focus{border-color:var(--blue)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--text);color:#fff;padding:11px 22px;border-radius:99px;font-weight:600;font-size:14px;z-index:300;box-shadow:0 6px 20px #00000040;animation:toast-in .2s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}
