:root{--bg:#fff;--surface:#fff;--text:#111827;--muted:#6b7280;--border:#e5e7eb;--accent:#2563eb;--danger:#b91c1c;--warn:#92400e;--warn-bg:#fff7ed;--shadow:0 10px 30px #00000014;--radius:14px;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font:16px/1.5 var(--sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--bg:#0b0d12;--surface:#111827;--text:#e5e7eb;--muted:#9ca3af;--border:#1f2937;--accent:#60a5fa;--danger:#fca5a5;--warn:#fde68a;--warn-bg:#fbbf241f;--shadow:0 16px 40px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%}body{color:var(--text);background:var(--bg);margin:0}#root{min-height:100svh}a{color:inherit}.app{flex-direction:column;min-height:100svh;display:flex}.topbar{z-index:10;border-bottom:1px solid var(--border);background:color-mix(in oklab, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;font-weight:700}.nav{gap:14px;display:flex}@media (width<=640px),(pointer:coarse) and (width<=960px){.desktopNav{display:none}}.bottomNav{display:none}@media (width<=640px),(pointer:coarse) and (width<=960px){.bottomNav{z-index:20;background:color-mix(in oklab, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom,0px);display:flex;position:fixed;bottom:0;left:0;right:0}.bottomNavItem{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;min-height:52px;padding:8px 4px;font-size:11px;font-weight:500;text-decoration:none;transition:color .15s;display:flex}.bottomNavItem.active{color:var(--accent)}.main{padding-bottom:calc(60px + env(safe-area-inset-bottom,0px))}}@media (pointer:coarse) and (width<=960px){.main{padding-bottom:calc(60px + env(safe-area-inset-bottom,0px))}}.main{flex:1;width:min(920px,100%);margin:0 auto;padding:16px 14px 28px}.icpFooter{text-align:center;padding:10px 14px;font-size:12px}.icpFooter a{color:var(--muted);text-decoration:none}.icpFooter a:hover{color:var(--accent);text-decoration:underline}@media (width<=640px),(pointer:coarse) and (width<=960px){.icpFooter{padding-bottom:calc(10px + 60px + env(safe-area-inset-bottom,0px))}}.page{text-align:left}.title{letter-spacing:-.03em;margin:6px 0 8px;font-size:26px;line-height:1.15}.h2{letter-spacing:-.01em;margin:0;font-size:16px}.muted{color:var(--muted);margin:0 0 14px}.small{font-size:13px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin:12px 0;padding:14px}.sectionHead{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.field{flex-direction:column;gap:8px;margin:10px 0;display:flex}.label{color:var(--muted);font-size:13px}.input,.textarea,select.input{border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 92%, transparent);width:100%;color:var(--text);border-radius:12px;padding:10px 12px;font-size:16px}.textarea{resize:vertical;min-height:92px}.row2{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (width<=720px){.row2{grid-template-columns:1fr}}.check{align-items:flex-start;gap:10px;font-size:14px;display:flex}.actions{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:10px;margin:14px 0 6px;display:flex}.btn{border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 92%, transparent);color:var(--text);border-radius:12px;padding:10px 12px;font-weight:600}.btn.primary{border-color:color-mix(in oklab, var(--accent) 35%, var(--border));background:color-mix(in oklab, var(--accent) 18%, var(--surface))}.btn.secondary{background:0 0}.btn.danger{border-color:color-mix(in oklab, var(--danger) 35%, var(--border));color:var(--danger);background:0 0}.link{color:var(--accent);font-weight:600;text-decoration:none}.mono{font-family:var(--mono)}.monoBox{font-family:var(--mono);border:1px dashed color-mix(in oklab, var(--accent) 35%, var(--border));word-break:break-all;border-radius:12px;padding:12px;font-size:13px}.error{border:1px solid color-mix(in oklab, var(--danger) 35%, var(--border));background:color-mix(in oklab, var(--danger) 10%, var(--surface));color:var(--text);border-radius:12px;margin:12px 0;padding:12px;overflow:auto}.warn{border:1px solid color-mix(in oklab, var(--warn) 35%, var(--border));background:var(--warn-bg);color:var(--warn);border-radius:12px;margin:10px 0 0;padding:10px 12px}.toast{background:color-mix(in oklab, var(--accent) 10%, var(--surface));border:1px solid color-mix(in oklab, var(--accent) 30%, var(--border));color:var(--text);border-radius:12px;justify-content:space-between;align-items:center;gap:8px;margin:0 0 12px;padding:10px 14px;font-size:14px;animation:.3s toastIn;display:flex}.toast.success{background:color-mix(in oklab, #22c55e 10%, var(--surface));border-color:color-mix(in oklab, #22c55e 35%, var(--border));color:var(--text)}.warnBox{background:color-mix(in oklab, var(--warn) 10%, var(--surface));border:1px solid color-mix(in oklab, var(--warn) 35%, var(--border));color:var(--text);border-radius:10px;padding:10px 14px;font-size:13px;line-height:1.5}.timerAlertBanner{z-index:100;background:var(--danger);color:#fff;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;animation:1.2s ease-in-out infinite timerAlertPulse;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 4px 16px #00000040}.timerAlertText{font-size:14px;line-height:1.4}.timerAlertBanner .btn{color:var(--danger);background:#fff;border:none;flex-shrink:0}@keyframes timerAlertPulse{0%,to{opacity:1}50%{opacity:.78}}.stepDoneFlash{z-index:90;color:#fff;background:#22c55e;border-radius:999px;padding:10px 18px;font-size:14px;font-weight:700;animation:.25s stepDoneIn,.3s 1.5s forwards stepDoneOut;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #00000040}@keyframes stepDoneIn{0%{opacity:0;transform:translate(-50%)translateY(-12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes stepDoneOut{to{opacity:0;transform:translate(-50%)translateY(-12px)}}.celebrateOverlay{z-index:200;background:#00000073;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0;overflow:hidden}.celebrateCard{z-index:2;background:var(--surface);text-align:center;border-radius:18px;width:min(360px,100%);padding:28px 24px;animation:.35s cubic-bezier(.18,.89,.32,1.28) celebratePop;position:relative;box-shadow:0 12px 40px #0000004d}@keyframes celebratePop{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.celebrateEmoji{font-size:48px;line-height:1}.celebrateTitle{margin:12px 0 0;font-size:24px;font-weight:800}.celebrateStats{border:1px solid var(--border);border-radius:12px;margin-top:18px;padding:6px 14px}.celebrateStatRow{color:var(--muted);justify-content:space-between;align-items:center;padding:8px 0;font-size:14px;display:flex}.celebrateStatRow+.celebrateStatRow{border-top:1px solid var(--border)}.celebrateStatRow .strong{color:var(--text)}.confetti{z-index:1;pointer-events:none;position:absolute;inset:0}.confetti span{opacity:.9;border-radius:2px;width:9px;height:14px;animation-name:confettiFall;animation-timing-function:linear;animation-iteration-count:1;position:absolute;top:-20px}.cookHeaderSummary{cursor:pointer;width:100%;color:var(--text);text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:0;display:flex}@media (pointer:coarse){.cookStepTechInfo{display:none}}.toastClose{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:16px}.toastClose:hover{background:var(--border)}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.table{gap:8px;display:grid}.tableRow{grid-template-columns:1.4fr .7fr .7fr .8fr auto;align-items:center;gap:8px;display:grid}.tableRow.header{color:var(--muted);font-size:12px}@media (width<=720px){.tableRow{border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 96%, transparent);border-radius:10px;grid-template-columns:1fr 1fr;grid-template-areas:"name name""amount unit""group actions";gap:6px;padding:10px}.tableRow>:first-child{grid-area:name}.tableRow>:nth-child(2){grid-area:amount}.tableRow>:nth-child(3){grid-area:unit}.tableRow>:nth-child(4){grid-area:group}.tableRow>:nth-child(5){grid-area:actions;justify-self:end}.tableRow.header{display:none}}.steps{gap:12px;display:grid}.step{border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 94%, transparent);border-radius:14px;padding:12px}.stepTop{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.stepHeader{-webkit-user-select:none;user-select:none;align-items:flex-start;gap:8px;padding:2px 0;display:flex}.stepNum{font-variant-numeric:tabular-nums;flex-shrink:0;min-width:20px;padding-top:10px}.stepInlineText{resize:none;border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text);field-sizing:content;border-radius:8px;flex:1;padding:8px 10px;font-family:inherit;font-size:16px;line-height:1.5;overflow:hidden}.stepTypeBadge{background:color-mix(in oklab, var(--accent) 12%, var(--surface));color:var(--muted);white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-radius:6px;flex-shrink:0;max-width:120px;padding:4px 8px;font-size:12px;overflow:hidden}.stepChevron{color:var(--muted);flex-shrink:0;padding-top:10px;font-size:14px}.stepBody{border-top:1px solid var(--border);margin-top:12px;padding-top:12px}.stepActions{align-items:center;gap:6px;display:flex}.stepActions .btn{min-width:36px;padding:6px 10px;font-size:13px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--border);color:var(--text);background:color-mix(in oklab, var(--surface) 92%, transparent);border-radius:999px;padding:6px 10px;font-size:13px}.list,.olist{margin:8px 0 0;padding-left:18px}.strong{font-weight:700}.stepTitle{margin-bottom:6px}.seg{flex-wrap:wrap;gap:8px;display:flex}.segBtn{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:999px;padding:8px 12px;font-weight:650}.segBtn.active{border-color:color-mix(in oklab, var(--accent) 35%, var(--border));background:color-mix(in oklab, var(--accent) 14%, var(--surface))}.slots{gap:12px;display:grid}.slot{border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 94%, transparent);border-radius:14px;padding:12px}.slotHead{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.plans{gap:12px;display:grid}.plan{border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 96%, transparent);border-radius:14px;padding:12px}.planTop{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.planTitle{letter-spacing:-.02em;font-weight:800}.details{margin-top:10px}.details summary{cursor:pointer;color:var(--muted);font-size:13px}.recipeList{gap:12px;display:grid}.viewToggle{border:1px solid var(--border);background:var(--surface);border-radius:10px;display:inline-flex;overflow:hidden}.viewToggleBtn{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:8px 12px;font-size:16px;line-height:1}.viewToggleBtn.active{background:color-mix(in oklab, var(--accent) 14%, var(--surface));color:var(--accent)}.recipeGrid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}@media (width>=640px){.recipeGrid{grid-template-columns:repeat(3,1fr)}}@media (width>=960px){.recipeGrid{grid-template-columns:repeat(4,1fr)}}.recipeGridCard{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex;position:relative;overflow:hidden}.recipeGridCard:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.recipeGridCover{aspect-ratio:1;background:color-mix(in oklab, var(--accent) 5%, var(--surface));display:block;position:relative;overflow:hidden}.recipeGridCover img{object-fit:cover;width:100%;height:100%;transition:transform .25s}.recipeGridCard:hover .recipeGridCover img{transform:scale(1.04)}.recipeGridCoverPlaceholder{background:linear-gradient(135deg, color-mix(in oklab, var(--accent) 15%, var(--surface)), color-mix(in oklab, var(--accent) 30%, var(--surface)));color:color-mix(in oklab, var(--accent) 70%, var(--text));letter-spacing:.04em;text-align:center;justify-content:center;align-items:center;padding:12px;font-size:22px;font-weight:700;display:flex;position:absolute;inset:0}.recipeGridFav{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2;background:#00000073;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:18px;line-height:1;display:flex;position:absolute;top:8px;right:8px}.recipeGridFav.active{background:color-mix(in oklab, var(--accent) 80%, transparent);color:#fff}.recipeGridFav:disabled{opacity:.5;cursor:default}.recipeGridMenuBtn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2;background:#00000073;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;font-weight:700;line-height:1;display:flex}.recipeGridBody{flex-direction:column;gap:4px;padding:10px 12px 12px;display:flex}.recipeGridTitle{color:var(--text);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.3;text-decoration:none;display:-webkit-box;overflow:hidden}.recipeGridTitle:hover{color:var(--accent)}.recipeGridMeta{font-size:12px;line-height:1.3}.recipeCard{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex}.recipeCardMain{flex:1;min-width:200px}.recipeCardTitle{color:var(--text);font-size:17px;font-weight:700;text-decoration:none}.recipeCardTitle:hover{color:var(--accent)}.recipeCardActions{flex-wrap:wrap;gap:8px;display:flex}.tagRow{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.searchBar{margin:10px 0 8px}.tagFilter{flex-wrap:wrap;gap:6px;margin:0 0 12px;display:flex}.chipBtn{cursor:pointer;transition:background .15s,border-color .15s,color .15s}.chipBtn:hover{border-color:color-mix(in oklab, var(--accent) 40%, var(--border));color:var(--accent)}.chipBtn.active{border-color:color-mix(in oklab, var(--accent) 50%, var(--border));background:color-mix(in oklab, var(--accent) 14%, var(--surface));color:var(--accent);font-weight:700}.chip.small{padding:3px 8px;font-size:12px}@media (width<=520px){.recipeCard{flex-direction:column;align-items:stretch}.recipeCardActions{margin-top:8px}}.timerDisplay{background:color-mix(in oklab, var(--accent) 8%, var(--surface));border:1px solid color-mix(in oklab, var(--accent) 25%, var(--border));border-radius:12px;align-items:center;gap:12px;margin:10px 0;padding:12px;display:flex}.timerTime{font-family:var(--mono);letter-spacing:.05em;flex:1;font-size:28px;font-weight:700}.autoAdvanceBadge{color:var(--accent);background:color-mix(in oklab, var(--accent) 10%, var(--surface));border:1px solid color-mix(in oklab, var(--accent) 25%, var(--border));border-radius:999px;margin:6px 0;padding:4px 10px;font-size:12px;font-weight:600;display:inline-block}.shareMetaRow{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.imageUploader{width:100%}.imageUploaderEmpty{border:2px dashed var(--border);border-radius:var(--radius);background:color-mix(in oklab, var(--surface) 92%, transparent);width:100%;min-height:140px;color:var(--text);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;padding:20px;transition:border-color .15s,background .15s;display:flex}.imageUploaderEmpty:hover:not(:disabled){border-color:color-mix(in oklab, var(--accent) 50%, var(--border));background:color-mix(in oklab, var(--accent) 6%, var(--surface))}.imageUploaderEmpty:disabled{cursor:default;opacity:.7}.imageUploaderPreview{aspect-ratio:16/9;border-radius:var(--radius);border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 92%, transparent);width:100%;position:relative;overflow:hidden}.imageUploaderPreview img{object-fit:cover;width:100%;height:100%;display:block}.imageUploaderOverlay{gap:6px;display:flex;position:absolute;bottom:8px;right:8px}.imageUploaderOverlay .btn{background:color-mix(in oklab, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:6px 10px;font-size:13px}.recipeCardCover{object-fit:cover;background:color-mix(in oklab, var(--surface) 92%, transparent);border-radius:10px;flex-shrink:0;width:64px;height:64px}@media (width>=521px){.recipeCardCover{width:80px;height:80px}}.recipeHeroImage{aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius);background:color-mix(in oklab, var(--surface) 92%, transparent);width:100%;margin:8px 0 16px;display:block}.stepImage{background:color-mix(in oklab, var(--surface) 92%, transparent);border-radius:10px;width:100%;max-width:480px;height:auto;margin:8px 0 4px;display:block}.captureArea{background:var(--bg);margin:0;padding:0}.avatar{object-fit:cover;border-radius:50%;flex-shrink:0}.avatar.sm{width:32px;height:32px}.avatar.md{width:48px;height:48px}.avatar.lg{width:80px;height:80px}.avatarFallback{background:color-mix(in oklab, var(--accent) 18%, var(--surface));color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.avatarFallback.sm{width:32px;height:32px;font-size:14px}.avatarFallback.md{width:48px;height:48px;font-size:18px}.avatarFallback.lg{width:80px;height:80px;font-size:28px}.userMenu{position:relative}.userMenuTrigger{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:4px 8px;transition:background .15s;display:flex}.userMenuTrigger:hover{background:color-mix(in oklab, var(--accent) 8%, var(--surface))}.userMenuName{text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:14px;font-weight:600;overflow:hidden}.adminBadge{color:var(--accent);background:color-mix(in oklab, var(--accent) 12%, var(--surface));border:1px solid color-mix(in oklab, var(--accent) 25%, var(--border));border-radius:4px;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:600;display:inline-block}.heatBadge{vertical-align:middle;align-items:center;gap:0;font-size:13px;display:inline-flex}.dropdown{background:var(--surface);border:1px solid var(--border);min-width:120px;box-shadow:var(--shadow);z-index:100;border-radius:12px;padding:4px;position:absolute;top:calc(100% + 6px);right:0}.dropdownItem{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px 12px;font-size:14px;transition:background .12s;display:block}.dropdownItem:hover{background:color-mix(in oklab, var(--accent) 10%, var(--surface))}.profileHeader{align-items:center;gap:16px;margin:16px 0 20px;display:flex}.profileHeaderInfo{flex:1;min-width:0}.cropModalBackdrop{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.cropModal{background:var(--surface);border-radius:var(--radius);width:min(640px,100%);max-height:90vh;box-shadow:var(--shadow);flex-direction:column;display:flex;overflow:hidden}.cropModalHeader{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.cropModalHeader .btn{padding:4px 12px;font-size:18px;line-height:1}.cropContainer{background:#000;width:100%;height:min(60vh,400px);position:relative}.cropControls{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding:12px 16px;display:flex}.cropControlRow{align-items:center;gap:10px;display:flex}.cropModalFooter{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.ganttScroll{-webkit-overflow-scrolling:touch;margin:0 -2px;overflow-x:auto}.ganttGrid{min-width:100%;width:max(100%, calc(var(--total-min,60) * 6px + 96px));position:relative}.ganttAxis{border-bottom:1px solid var(--border);height:24px;margin-left:96px;position:relative}.ganttTick{border-left:1px solid color-mix(in oklab, var(--border) 80%, transparent);position:absolute;top:0;bottom:0}.ganttTickLabel{color:var(--muted);font-size:11px;font-family:var(--mono);white-space:nowrap;position:absolute;top:2px;left:4px}.ganttBody{flex-direction:column;gap:18px;padding-top:22px;display:flex}.ganttRow{align-items:stretch;min-height:36px;display:flex}.ganttRowLabel{width:96px;color:var(--text);white-space:nowrap;text-overflow:ellipsis;border-right:1px solid var(--border);flex-shrink:0;align-items:center;padding:6px 8px 6px 0;font-size:13px;font-weight:600;display:flex;overflow:hidden}.ganttRowTrack{background:color-mix(in oklab, var(--surface) 96%, transparent);flex:1;min-height:36px;position:relative}.ganttGridLine{background:color-mix(in oklab, var(--border) 60%, transparent);pointer-events:none;width:1px;position:absolute;top:0;bottom:0}.ganttBlock{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;text-align:left;z-index:1;border-radius:6px;align-items:center;min-width:70px;padding:4px 8px;font-size:12px;transition:transform .1s,box-shadow .1s;display:flex;position:absolute;top:4px;bottom:4px;overflow:hidden}.ganttBlock:hover{z-index:2;transform:translateY(-1px);box-shadow:0 2px 6px #00000026}.ganttBlock.selected{outline:2px solid var(--accent);outline-offset:1px;z-index:3}.ganttBlockLabel{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.ganttBlock.status-pending{background:color-mix(in oklab, var(--surface) 92%, transparent);color:var(--muted)}.ganttBlock.status-ready{background:color-mix(in oklab, var(--accent) 14%, var(--surface));border-color:color-mix(in oklab, var(--accent) 40%, var(--border));color:var(--accent);font-weight:600}.ganttBlock.status-running{background:color-mix(in oklab, var(--warn) 22%, var(--surface));border-color:color-mix(in oklab, var(--warn) 50%, var(--border));color:var(--warn);font-weight:600;animation:1.5s ease-in-out infinite ganttPulse}@keyframes ganttPulse{0%,to{box-shadow:0 0 0 0 color-mix(in oklab, var(--warn) 35%, transparent)}50%{box-shadow:0 0 0 4px color-mix(in oklab, var(--warn) 0%, transparent)}}.ganttBlock.status-done{background:color-mix(in oklab, var(--surface) 90%, transparent);color:var(--muted);opacity:.6;text-decoration:line-through}.ganttNow{border-left:2px solid var(--danger);pointer-events:none;z-index:4;width:0;margin-left:96px;position:absolute;top:24px;bottom:0}.ganttNowDot{background:var(--danger);border-radius:50%;width:8px;height:8px;animation:1.6s ease-in-out infinite ganttNowPulse;position:absolute;top:-4px;left:-5px}@keyframes ganttNowPulse{0%,to{box-shadow:0 0 0 0 color-mix(in oklab, var(--danger) 50%, transparent)}50%{box-shadow:0 0 0 6px color-mix(in oklab, var(--danger) 0%, transparent)}}.ganttLegend{border-top:1px solid var(--border);color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:10px;padding-top:10px;font-size:12px;display:flex}.ganttLegend span{align-items:center;gap:4px;display:inline-flex}.ganttLegendDot{border:1px solid var(--border);border-radius:3px;width:10px;height:10px;display:inline-block}.ganttLegendDot.status-pending{background:color-mix(in oklab, var(--surface) 92%, transparent)}.ganttLegendDot.status-ready{background:color-mix(in oklab, var(--accent) 14%, var(--surface));border-color:color-mix(in oklab, var(--accent) 40%, var(--border))}.ganttLegendDot.status-running{background:color-mix(in oklab, var(--warn) 22%, var(--surface));border-color:color-mix(in oklab, var(--warn) 50%, var(--border))}.ganttLegendDot.status-done{background:color-mix(in oklab, var(--surface) 90%, transparent)}.ganttDetail{border:1px solid var(--border);background:color-mix(in oklab, var(--accent) 5%, var(--surface));border-radius:12px;margin-top:14px;padding:12px}.ganttDetailHeader{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.prepareRecipeList{flex-direction:column;gap:10px;display:flex}.prepareRecipeCard{border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 96%, transparent);border-radius:12px;padding:10px}.prepareRecipeHead{align-items:center;gap:12px;display:flex}.prepareRecipeCover{object-fit:cover;background:color-mix(in oklab, var(--surface) 92%, transparent);border-radius:8px;flex-shrink:0;width:56px;height:56px}.prepareRecipeCoverEmpty{background:linear-gradient(135deg, color-mix(in oklab, var(--accent) 15%, var(--surface)), color-mix(in oklab, var(--accent) 30%, var(--surface)));color:color-mix(in oklab, var(--accent) 70%, var(--text));justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex}.prepareRecipeMeta{flex:1;min-width:0}.prepareRecipeDetail{border-top:1px dashed var(--border);margin-top:10px;padding-top:10px}.ganttBlockWrap{min-width:70px;position:absolute;top:4px;bottom:4px}.ganttBlockWrap>.ganttBlock{width:100%;min-width:0;position:absolute;inset:0}.ganttBlockTimer{font-size:11px;font-family:var(--mono);background:color-mix(in oklab, var(--warn) 22%, var(--surface));border:1px solid color-mix(in oklab, var(--warn) 50%, var(--border));color:var(--warn);white-space:nowrap;z-index:5;pointer-events:none;border-radius:4px;padding:2px 6px;font-weight:700;position:absolute;bottom:calc(100% + 2px);left:0}.ganttBlockTimer.low{background:color-mix(in oklab, var(--danger) 18%, var(--surface));border-color:color-mix(in oklab, var(--danger) 50%, var(--border));color:var(--danger);animation:.9s ease-in-out infinite ganttTimerBlink}.ganttBlockTimer.expired{background:var(--danger);border-color:var(--danger);color:#fff;animation:.7s ease-in-out infinite ganttTimerBlink}@keyframes ganttTimerBlink{0%,to{opacity:1}50%{opacity:.65}}.ganttBlockAction{border:1px solid var(--border);background:var(--surface);width:22px;height:22px;color:var(--text);cursor:pointer;z-index:4;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:11px;font-weight:700;line-height:1;transition:transform .1s;display:inline-flex;position:absolute;bottom:2px;right:2px}.ganttBlockAction:hover{transform:scale(1.1)}.ganttBlockAction.start{background:color-mix(in oklab, var(--accent) 80%, transparent);border-color:var(--accent);color:#fff}.ganttBlockAction.stop{background:color-mix(in oklab, var(--warn) 80%, transparent);border-color:var(--warn);color:#fff}.ganttBlockActions{z-index:4;gap:3px;display:flex;position:absolute;bottom:2px;right:2px}.ganttBlockActions>.ganttBlockAction{position:static}.ganttBlockAction.pause{background:color-mix(in oklab, var(--warn) 80%, transparent);border-color:var(--warn);color:#fff}.ganttBlockAction.done{background:var(--accent);border-color:var(--accent);color:#fff;animation:none}.ganttBlockAction.done.blink{background:var(--danger);border-color:var(--danger);animation:.8s ease-in-out infinite ganttTimerBlink}.ganttBlockTimer.paused,.ganttBlockTimer.paused.low,.ganttBlockTimer.paused.expired{background:color-mix(in oklab, var(--muted) 18%, var(--surface));border-color:color-mix(in oklab, var(--muted) 40%, var(--border));color:var(--muted);animation:none}.mealPlanCollapsible{padding:0;overflow:hidden}.mealPlanCollapsibleHead{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:10px;padding:14px;display:flex}.mealPlanCollapsibleHead:hover{background:color-mix(in oklab, var(--accent) 4%, var(--surface))}.mealPlanCollapsibleHead .h2{flex-shrink:0}.mealPlanCollapsibleHead .muted{text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;overflow:hidden}.mealPlanChevron{color:var(--muted);flex-shrink:0;font-size:11px}.mealPlanCollapsibleBody{border-top:1px solid var(--border);padding:0 14px 14px}.mealPlanStickyBar{z-index:20;background:color-mix(in oklab, var(--bg) 90%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;margin:0 -14px;padding:10px 14px;display:flex;position:sticky;bottom:0}.mealPlanAdvancedToggle{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;margin-top:4px;padding:6px 0;font-size:13px;display:inline-flex}.mealPlanAdvancedToggle:hover{color:var(--accent)}.mealPlanAdvancedDot{background:var(--accent);border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.mealPlanAdvancedBody{background:color-mix(in oklab, var(--surface) 94%, transparent);border:1px dashed var(--border);border-radius:10px;margin-top:8px;padding:10px}.planResultHeader{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.planRecipeGrid{grid-template-columns:1fr;gap:10px;display:grid}@media (width>=600px){.planRecipeGrid{grid-template-columns:repeat(2,1fr)}}.planRecipeCard{border:1px solid var(--border);background:color-mix(in oklab, var(--surface) 96%, transparent);border-radius:12px;gap:12px;padding:10px;display:flex}.planRecipeCover{object-fit:cover;border-radius:8px;flex-shrink:0;width:72px;height:72px}.planRecipeCoverEmpty{background:linear-gradient(135deg, color-mix(in oklab, var(--accent) 15%, var(--surface)), color-mix(in oklab, var(--accent) 30%, var(--surface)));width:72px;height:72px;color:color-mix(in oklab, var(--accent) 70%, var(--text));border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:flex}.planRecipeBody{flex:1;min-width:0}.planRecipeTitle{color:var(--text);font-size:15px;font-weight:700;line-height:1.3;text-decoration:none;display:block}.planRecipeTitle:hover{color:var(--accent)}.planRecipeMeta{flex-wrap:wrap;gap:4px;margin-top:5px;display:flex}.planRecipeIngredients{background:color-mix(in oklab, var(--surface) 92%, transparent);border:1px dashed var(--border);border-radius:8px;margin-top:6px;padding:8px}.ingredientCoverage{background:color-mix(in oklab, var(--surface) 94%, transparent);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:8px;margin-top:12px;padding:10px 12px;display:flex}.ingredientCoverageRow{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.ingredientCoverageLabel{white-space:nowrap;padding-top:3px;font-size:12px;font-weight:600}.ingredientCoverageLabel.matched{color:#16a34a}.ingredientCoverageLabel.missing{color:var(--warn)}.ingredientChipMatched{background:color-mix(in oklab, #16a34a 12%, var(--surface));border-color:color-mix(in oklab, #16a34a 35%, var(--border));color:#16a34a}.ingredientChipMissing{background:color-mix(in oklab, var(--warn) 12%, var(--surface));border-color:color-mix(in oklab, var(--warn) 35%, var(--border));color:var(--warn)}.fabSave{background:var(--accent);color:#fff;cursor:pointer;z-index:50;border:none;border-radius:999px;justify-content:center;align-items:center;height:48px;padding:0 20px;font-size:15px;font-weight:700;transition:transform .15s,box-shadow .15s,opacity .15s;display:flex;position:fixed;bottom:24px;right:20px;box-shadow:0 4px 16px #00000038}.fabSaveInner{align-items:center;gap:6px;display:inline-flex}.fabSave:hover:not(:disabled){transform:scale(1.05);box-shadow:0 6px 20px #00000047}.fabSave:active:not(:disabled){transform:scale(.97)}.fabSave:disabled{opacity:.6;cursor:not-allowed}@media (width>=720px){.fabSave{bottom:32px;right:32px}}@media (pointer:coarse) and (width<=960px){.fabSave{bottom:calc(52px + env(safe-area-inset-bottom,0px) + 12px)}}.fabBack{background:var(--accent);color:#fff;z-index:50;border-radius:999px;justify-content:center;align-items:center;height:48px;padding:0 20px;font-size:15px;font-weight:700;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex;position:fixed;bottom:24px;right:20px;box-shadow:0 4px 16px #00000038}.fabBack:hover{color:#fff;transform:scale(1.05);box-shadow:0 6px 20px #00000047}.fabBack:active{transform:scale(.97)}@media (width>=720px){.fabBack{bottom:32px;right:32px}}@media (pointer:coarse) and (width<=960px){.fabBack{bottom:calc(52px + env(safe-area-inset-bottom,0px) + 12px)}}.stepSelected{border-color:color-mix(in oklab, var(--accent) 55%, var(--border));background:color-mix(in oklab, var(--accent) 7%, var(--surface));box-shadow:0 0 0 2px color-mix(in oklab, var(--accent) 20%, transparent)}@keyframes confettiFall{0%{opacity:1;transform:translateY(-20px)rotate(0)}to{opacity:.6;transform:translateY(100vh)rotate(720deg)}}@media (orientation:landscape) and (pointer:coarse) and (height<=500px){.cookLandscapeCard{grid-template-columns:1fr 1fr;align-items:start;gap:12px;display:grid}.cookLandscapeRight{flex-direction:column;gap:8px;display:flex}}.filterBtnActive{border-color:color-mix(in oklab, var(--accent) 50%, var(--border));color:var(--accent)}.filterBadge{background:var(--accent);color:#fff;pointer-events:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;font-weight:700;display:flex;position:absolute;top:-6px;right:-6px}.filterOverlay{z-index:150;background:#0006;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.filterSheet{background:var(--surface);border-radius:18px 18px 0 0;flex-direction:column;width:min(640px,100%);max-height:85vh;animation:.25s sheetUp;display:flex}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.filterSheetHeader{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 16px 12px;display:flex}.filterSheetBody{flex:1;padding:4px 16px 8px;overflow-y:auto}.filterSection{border-bottom:1px solid var(--border);padding:12px 0}.filterSection:last-child{border-bottom:none}.filterSheetFooter{border-top:1px solid var(--border);padding:12px 16px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px));flex-shrink:0}.dishSuggestList{z-index:200;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:10px;position:absolute;top:calc(100% + 4px);left:0;right:40px;overflow:hidden}.dishSuggestItem{width:100%;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.dishSuggestItem:hover{background:color-mix(in oklab, var(--accent) 8%, var(--surface))}.dishSuggestItem+.dishSuggestItem{border-top:1px solid var(--border)}.snackbar{bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:80;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;min-width:min(320px,100vw - 32px);max-width:calc(100vw - 32px);padding:12px 16px;font-size:14px;animation:.25s snackbarIn;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #00000040}.snackbarSuccess{color:#dcfce7;background:#166534}.snackbarWarn{background:var(--surface);border:1px solid color-mix(in oklab, var(--warn) 35%, var(--border));color:var(--text)}.snackbarWarn .toastClose{color:var(--muted)}@media (pointer:coarse) and (width<=960px){.snackbar{bottom:calc(52px + env(safe-area-inset-bottom,0px) + 12px)}}@keyframes snackbarIn{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.wizardSteps{gap:6px;margin:8px 0 14px;display:flex}.wizardStep{cursor:pointer;color:var(--muted);border:none;border-top:2px solid var(--border);background:0 0;flex-direction:column;flex:1;align-items:center;gap:4px;padding:8px 4px;font-size:12px;transition:color .15s,border-color .15s;display:flex}.wizardStep.active{color:var(--accent);border-top-color:var(--accent);font-weight:700}.wizardStep.done{color:var(--accent);border-top-color:color-mix(in oklab, var(--accent) 50%, var(--border))}.wizardStepNum{background:color-mix(in oklab, var(--accent) 12%, var(--surface));border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;font-weight:700;display:inline-flex}.wizardStep.active .wizardStepNum{background:var(--accent);color:#fff}.wizardStepLabel{white-space:nowrap}.wizardNav{justify-content:space-between;align-items:center;gap:12px;margin:16px 0;display:flex}.wizardNav .btn{min-width:110px;padding:12px 16px;font-size:15px}.todayListBar{bottom:calc(64px + env(safe-area-inset-bottom,0px));z-index:60;background:var(--surface);border:1px solid var(--border);border-radius:14px;justify-content:space-between;align-items:center;gap:12px;width:min(480px,100vw - 32px);padding:12px 16px;animation:.25s snackbarIn;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #0003}.todayListCount{font-size:14px;font-weight:600}@media (width>=961px){.todayListBar{bottom:24px}}.todayListBtn{width:100%;margin-top:8px;padding:5px 8px;font-size:12px}
