:root{--paper: #f6f4ec;--paper-2: #ece7d8;--card: #fffffe;--ink: #232a1e;--ink-soft: #47513c;--muted: #6e7862;--line: #dcd6c2;--line-soft: #e8e3d2;--basil: #35513c;--basil-deep: #263d2b;--moss: #6b7a33;--mustard: #d3a23a;--sage: #edefe0;--danger: #b23a2e;--danger-deep: #8f2c22;--shadow-sm: 0 1px 2px rgba(42, 63, 77, .08);--shadow: 0 8px 24px -12px rgba(42, 63, 77, .3);--shadow-lg: 0 24px 60px -24px rgba(42, 63, 77, .42);--radius: 18px;--radius-sm: 12px;--serif: "Playfair Display", Georgia, "Times New Roman", serif;--sans: "Karla", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:hidden}body{font-family:var(--sans);color:var(--ink);background-color:var(--paper);background-image:radial-gradient(circle at 12% -8%,#f6ecc9 0%,transparent 42%),radial-gradient(circle at 92% 0%,#e3ecd6 0%,transparent 38%);background-attachment:fixed;-webkit-font-smoothing:antialiased;line-height:1.55}button{font-family:inherit;cursor:pointer}::selection{background:var(--sage)}.app{max-width:1140px;margin:0 auto;padding:0 24px 80px}.account-bar{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;padding:18px 0 0;font-size:13px;color:var(--muted)}.account-email{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-icon{flex:none;width:30px;height:30px;border-radius:50%;border:0;background:var(--sage);color:var(--basil);display:flex;align-items:center;justify-content:center;cursor:pointer}.account-icon:hover{background:var(--basil);color:#fffefa}.profile-page{max-width:560px;margin:0 auto}.profile-email{font-family:var(--serif);font-size:22px;margin:4px 0 20px;color:var(--ink);word-break:break-all}.profile-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 20px;margin-bottom:16px}.profile-card-title{font-weight:700;font-size:15px;margin:0 0 6px;color:var(--ink)}.profile-card-body{margin:0 0 6px;color:var(--ink-soft);font-size:14px}.profile-card-body:last-child{margin-bottom:0}.profile-benefits{background:var(--sage);border-radius:16px;padding:18px 20px;margin-bottom:16px}.profile-benefits .profile-card-title{color:var(--basil)}.profile-benefits ul{margin:0 0 14px;padding-left:20px;color:var(--basil-deep);font-size:14px;line-height:1.6}.profile-links{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.profile-link-row{display:block;width:100%;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 18px;color:var(--ink);text-decoration:none;font-size:14px;font-weight:700;font-family:inherit;cursor:pointer}.profile-link-row:hover{border-color:var(--basil)}.profile-signout{color:var(--danger);border-color:var(--danger)}.profile-signout:hover{background:var(--danger);color:#fffefa}.masthead{position:relative;text-align:center;padding:56px 0 30px}.masthead .kicker{font-family:var(--sans);text-transform:uppercase;letter-spacing:.32em;font-size:12px;font-weight:600;color:var(--basil);margin:0 0 12px}.masthead h1{font-family:var(--serif);font-weight:600;font-size:clamp(40px,7vw,68px);line-height:1.02;margin:0;color:var(--ink)}.masthead h1 .accent{font-style:italic;color:var(--basil)}.masthead-pot{position:absolute;top:24px;left:0;width:40px;height:40px;border-radius:22%}.login-pot{top:24px;left:24px}.masthead p{max-width:500px;margin:16px auto 0;color:var(--ink-soft);font-size:17px}.masthead .divider{width:64px;height:2px;background:var(--line);border:0;margin:26px auto 0;position:relative}.masthead .divider:after{content:"❧";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--paper);padding:0 10px;color:var(--mustard);font-size:15px}.view-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 0 28px}.view-nav button{border:1px solid var(--line);background:var(--card);color:var(--ink-soft);border-radius:999px;padding:9px 22px;font-size:14px;font-weight:700;transition:all .15s}.view-nav button:hover{border-color:var(--basil);color:var(--basil)}.view-nav button.active{background:var(--basil);border-color:var(--basil);color:#fbfeff}.add-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin:8px auto 40px;max-width:760px}.arf-ai-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14100a73;z-index:55}.arf-ai-fab-wrap{position:fixed;right:24px;bottom:24px;z-index:60}.arf-ai-fab{width:56px;height:56px;border-radius:50%;background:var(--basil);color:#fbfeff;border:none;box-shadow:var(--shadow);font-size:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,transform .12s}.arf-ai-fab:hover{background:var(--basil-deep)}.arf-ai-fab:active{transform:translateY(1px)}.arf-ai-panel{position:absolute;right:0;bottom:calc(100% + 14px);width:min(360px,calc(100vw - 48px));background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.arf-ai-panel .section-title{font-size:16px;margin:0 0 10px;padding-right:26px}.arf-ai-panel .qa-form{flex-wrap:wrap}.arf-ai-panel .qa-form input{font-size:16px}.arf-ai-close{position:absolute;top:10px;right:10px;border:none;background:var(--paper-2);color:var(--ink-soft);width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px}.arf-ai-close:hover{background:var(--line);color:var(--ink)}.arf-ai-active-chip{display:inline-flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:6px 8px 6px 14px;font-size:13px;color:var(--ink-soft);margin-bottom:18px}.arf-ai-active-chip strong{color:var(--ink)}.arf-ai-active-chip button{border:none;background:var(--paper-2);color:var(--ink-soft);width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px}.arf-ai-active-chip button:hover{background:var(--line);color:var(--ink)}.save-link-banner{margin-top:14px;padding:14px 16px;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--radius-sm)}.save-link-banner p{margin:0 0 10px;font-size:14px;color:var(--ink-soft)}.save-link-actions{display:flex;gap:10px}input[type=url],input[type=text],input[type=email],input[type=password],textarea{width:100%;font-family:inherit;font-size:16px;color:var(--ink);background:#fdfefc;border:1px solid var(--line);border-radius:var(--radius-sm);padding:13px 16px;outline:none;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus{border-color:var(--basil);box-shadow:0 0 0 3px #c2703d21}textarea{resize:vertical;min-height:130px;line-height:1.5}.hint{font-size:13px;color:var(--muted);margin:10px 2px 0}.extraction-limit-hint{text-align:right}.extraction-limit-hint.is-low{color:var(--danger);font-weight:600}.extraction-locked-hint{text-align:left;line-height:1.4}.page-blurb{font-size:13px;font-style:italic;color:var(--muted);margin:0 2px 14px}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{max-width:420px;width:100%;text-align:center;margin:0}.login-card .kicker{font-family:var(--sans);text-transform:uppercase;letter-spacing:.28em;font-size:11px;font-weight:600;color:var(--basil);margin:0 0 10px}.login-title{font-family:var(--serif);font-weight:600;font-size:34px;margin:0 0 10px;color:var(--ink)}.login-title .accent{font-style:italic;color:var(--basil)}.login-subtitle{margin:0 0 22px;text-align:center}.login-divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.1em}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--line)}.login-form{display:flex;flex-direction:column;gap:10px}.login-actions{display:flex;gap:10px;margin-top:4px}.login-actions .btn{flex:1;justify-content:center}.login-forgot{align-self:center;border:0;background:transparent;color:var(--muted);font-size:13px;text-decoration:underline;cursor:pointer;margin-top:2px}.login-forgot:hover:not(:disabled){color:var(--basil)}.login-error{margin:16px 0 0;color:var(--basil-deep);font-size:13.5px}.login-notice{margin:16px 0 0;color:var(--ink-soft);font-size:13.5px}.btn{border:1px solid transparent;border-radius:var(--radius-sm);padding:13px 22px;font-weight:700;font-size:15px;white-space:nowrap;transition:transform .12s ease,background .15s,box-shadow .15s,color .15s;display:inline-flex;align-items:center;gap:8px}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--basil);color:#fbfeff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--basil-deep)}.keep-awake-btn{margin:22px 24px 0 0}.keep-awake-btn.is-on{box-shadow:0 0 0 3px #d3a23a59,0 0 14px 2px #d3a23a8c}.qa-form button:disabled{background:var(--line);color:var(--muted);opacity:1;box-shadow:none}.btn-ghost{background:transparent;color:var(--ink-soft);border-color:var(--line)}.btn-ghost:hover:not(:disabled){background:var(--paper-2);color:var(--ink)}.btn-danger{background:var(--danger);color:#fff8f6;box-shadow:var(--shadow-sm)}.btn-danger:hover:not(:disabled){background:var(--danger-deep)}.btn-danger-ghost{color:var(--danger)!important}.btn-danger-ghost:hover:not(:disabled){color:var(--danger-deep)!important;background:var(--paper-2)}.icon-danger{color:var(--danger)!important}.icon-danger:hover{color:var(--danger-deep)!important}.btn-block{width:100%;justify-content:center;margin-top:14px}.btn-sm{padding:8px 14px;font-size:13px;border-radius:10px}.btn-icon{padding:8px;min-width:34px;justify-content:center}.toolbar{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;justify-content:space-between;margin:6px 2px 22px}.toolbar-left{display:flex;flex-direction:column;gap:10px;flex:1;min-width:240px}.toolbar .count{font-family:var(--serif);font-size:22px;color:var(--ink)}.toolbar .count span{color:var(--muted);font-family:var(--sans);font-size:14px;font-weight:600;margin-left:8px}.toolbar-right{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding-top:6px}.select-toggle-btn{padding:6px 14px;border-radius:999px}.search{position:relative}.search input{padding-left:38px;padding-right:34px;width:240px}.search-lg,.search-lg input{width:100%}.search-lg input{border-radius:999px;padding-top:10px;padding-bottom:10px}.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--muted)}.search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--muted);font-size:14px;line-height:1;cursor:pointer;padding:6px}.search-clear:hover{color:var(--basil-deep)}.select-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 16px;margin-bottom:18px}.select-count{color:var(--ink-soft);font-size:13.5px;font-weight:600;margin-right:auto}.tag-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:26px}.owner-filter{position:relative}.owner-filter-trigger{cursor:pointer}.owner-filter-panel{position:absolute;z-index:20;top:calc(100% + 8px);left:0;width:min(260px,calc(100vw - 32px));background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:10px}.owner-filter-panel input{width:100%;padding:8px 10px;font-size:13px;font-family:inherit;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);margin-bottom:8px}.owner-filter-list{display:flex;flex-direction:column;gap:2px;max-height:220px;overflow-y:auto}.owner-filter-list button{display:flex;align-items:center;justify-content:space-between;gap:8px;border:0;background:transparent;text-align:left;padding:7px 9px;border-radius:8px;font-size:13.5px;color:var(--ink-soft)}.owner-filter-list button:hover,.owner-filter-list button.is-active{background:var(--paper-2);color:var(--ink)}.owner-filter-list .owner-filter-clear{color:var(--basil);font-weight:600;border-bottom:1px dashed var(--line);border-radius:0;margin-bottom:4px}.owner-filter-count{color:var(--muted);font-size:11.5px;flex-shrink:0}.chip{border:1px solid var(--line);background:var(--card);color:var(--ink-soft);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:600;transition:all .15s}.chip:hover{border-color:var(--basil);color:var(--basil)}.chip.active{background:var(--basil);border-color:var(--basil);color:#fbfeff}.planner-toolbar{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.planner-toolbar-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.planner-view-toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px}.planner-view-toggle button{border:0;background:transparent;color:var(--ink-soft);border-radius:999px;padding:7px 18px;font-size:13px;font-weight:700;transition:all .15s}.planner-view-toggle button:hover{color:var(--basil)}.planner-view-toggle button.active{background:var(--basil);color:#fbfeff}.planner-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px;flex-wrap:wrap}.planner-range{display:flex;align-items:center;gap:12px;font-family:var(--serif);font-size:18px;color:var(--ink)}.planner-month-headrow{display:grid;grid-template-columns:repeat(7,1fr);gap:12px;margin-bottom:8px}.planner-month-headcell{text-align:center;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.planner-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:12px}.planner-grid.is-month{gap:8px}.planner-day{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;min-height:180px;min-width:0;display:flex;flex-direction:column}.planner-day.is-today{border-color:var(--basil);box-shadow:0 0 0 1px var(--basil)}.planner-day.is-compact{min-height:92px;padding:8px}.planner-day.is-outside{opacity:.45}.planner-day.is-drag-over{border-color:var(--basil);background:var(--paper-2)}.planner-day-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;padding-bottom:8px;border-bottom:1px dashed var(--line)}.planner-day-head-actions{display:flex;align-items:center;gap:6px;margin-left:auto}.planner-day-head-actions button{border:0;background:transparent;color:var(--muted);font-size:12px;line-height:1;opacity:.6}.planner-day-head-actions button:hover{opacity:1;color:var(--basil-deep)}.planner-day.is-compact .planner-day-head{margin-bottom:6px;padding-bottom:4px;justify-content:flex-start}.planner-day-name{font-weight:700;font-size:13px;color:var(--ink)}.planner-day.is-today .planner-day-name{color:var(--basil)}.planner-day.is-compact.is-today .planner-day-date{color:var(--basil);font-weight:700}.planner-day-date{font-size:12px;color:var(--muted)}.planner-chips{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0;margin-bottom:10px}.planner-chip{display:flex;flex-direction:column;gap:4px;background:var(--sage);border-radius:8px;padding:6px 8px;font-size:12.5px;color:var(--ink-soft);font-weight:600;min-width:0;cursor:grab}.planner-chip:active{cursor:grabbing}.planner-chip-main{display:flex;align-items:flex-start;gap:6px;min-width:0}.planner-chip-actions{display:flex;align-items:center;justify-content:flex-end;gap:2px}.planner-chip-grab{flex-shrink:0;color:var(--muted);opacity:.55;font-size:12px;line-height:1}.planner-chip span{overflow-wrap:break-word;min-width:0}.planner-chip button{border:0;background:transparent;color:var(--muted);font-size:15px;line-height:1;flex-shrink:0}.planner-chip button:hover{color:var(--basil-deep)}.planner-chip .planner-chip-repeat{font-size:11px;opacity:.6}.planner-chip .planner-chip-repeat:hover{opacity:1}.planner-chip .planner-chip-menu{font-size:13px;font-weight:700;opacity:.6}.planner-chip .planner-chip-menu:hover{opacity:1}.planner-day.is-compact .planner-chip{padding:4px 6px;font-size:11px;border-radius:6px}.planner-add{border:1px dashed var(--line);background:transparent;color:var(--muted);border-radius:8px;padding:8px;font-size:12.5px;font-weight:600}.planner-add:hover{border-color:var(--basil);color:var(--basil)}.planner-add.is-compact{padding:3px;line-height:1;font-size:14px}.planner-day-actions{position:relative}.planner-chip.is-text{border:1px dashed var(--line);background:transparent;font-style:italic}.entry-picker{display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px}.planner-day-actions .entry-picker{position:absolute;bottom:100%;left:0;right:0;z-index:30;width:max-content;min-width:200px;max-width:260px;margin-bottom:6px;box-shadow:var(--shadow)}.entry-picker input{width:100%;font-size:13px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-family:inherit;outline:none}.entry-picker input:focus{border-color:var(--basil)}.entry-picker-list{display:flex;flex-direction:column;gap:3px;max-height:160px;overflow-y:auto}.entry-picker-list button{text-align:left;border:0;background:var(--paper-2);color:var(--ink);padding:6px 8px;border-radius:6px;font-size:12.5px}.entry-picker-list button:hover{background:var(--sage)}.entry-picker-list button.entry-picker-text-option{border:1px dashed var(--line);background:transparent;color:var(--basil-deep);font-weight:700}.entry-picker-paste{border:1px dashed var(--line);background:transparent;color:var(--basil-deep);font-weight:700;text-align:left;padding:6px 8px;border-radius:6px;font-size:12.5px;align-self:stretch}.entry-picker-paste:hover{background:var(--sage)}.context-menu{position:fixed;z-index:200;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:4px;min-width:200px}.context-menu button{display:block;width:100%;text-align:left;padding:8px 10px;border:0;background:transparent;color:var(--ink);font-size:13px;border-radius:8px}.context-menu button:hover{background:var(--paper-2);color:var(--basil-deep)}.entry-picker-close{border:0;background:transparent;color:var(--muted);font-size:11.5px;text-decoration:underline;align-self:flex-start}.event-create,.cookbook-create{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:24px}.cookbook-create-trigger,.event-create-trigger{margin-bottom:24px}.cancel-link{text-decoration:underline}.event-create input[type=text],.cookbook-create input[type=text]{flex:1;min-width:220px}.cookbook-search,.event-search{position:relative;margin-bottom:24px;padding-top:18px;border-top:1px dashed var(--line)}.cookbook-search svg,.event-search svg{position:absolute;left:13px;top:50%;transform:translateY(calc(-50% + 9px));color:var(--muted)}.cookbook-search input,.event-search input{width:100%;padding-left:38px}.event-list,.cookbook-list{display:flex;flex-direction:column;gap:16px}.event-card,.cookbook-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}.event-card-head,.cookbook-card-head{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px}.event-card-head h3,.cookbook-card-head h3{font-family:var(--serif);font-weight:600;font-size:19px;margin:0 0 4px;color:var(--ink);display:flex;align-items:center;gap:8px;min-width:0}.cookbook-rename-trigger{border:0;background:transparent;color:var(--ink-soft);width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;line-height:1;cursor:pointer;flex-shrink:0}.cookbook-rename-trigger:hover,.cookbook-rename-trigger:focus-visible{color:var(--basil)}.cookbook-rename-form{display:flex;align-items:center;gap:8px;flex:1}.cookbook-rename-form input{flex:1;min-width:0;padding:7px 10px;font-size:15px;font-family:var(--serif);border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink)}.event-date{color:var(--muted);font-size:13px;font-weight:600}.event-card-head-actions,.cookbook-card-head-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.event-card .planner-chips,.cookbook-card .planner-chips{margin-bottom:12px}.planner-chip .chip-label-btn{border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;overflow-wrap:break-word;text-align:left;min-width:0;flex:1}.planner-chip .chip-label-btn:hover{color:var(--basil)}.grid{columns:3 300px;column-gap:22px}.grid>*{break-inside:avoid;margin-bottom:22px}.recipe-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .18s ease,box-shadow .18s ease,border-color .18s;cursor:pointer;display:block;width:100%;text-align:left;padding:0}.recipe-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--line-soft)}.recipe-card .thumb{height:118px;background:linear-gradient(135deg,var(--sage),#f5f0dc);display:flex;align-items:center;justify-content:center;position:relative;border-bottom:1px solid var(--line-soft)}.recipe-card .thumb .glyph{font-size:44px;filter:saturate(.9)}.recipe-card .thumb .thumb-image{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.recipe-card .thumb .src-badge{position:absolute;top:12px;right:12px;background:#fffdf9eb;color:var(--ink-soft);border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:4px 10px}.recipe-card .thumb .card-delete{position:absolute;bottom:12px;right:12px;border:0;background:#fffdf9eb;color:var(--danger);border-radius:999px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-size:14px;cursor:pointer;transition:transform .15s,color .15s,background .15s}.recipe-card .thumb .card-delete:hover{transform:scale(1.12);color:var(--danger-deep);background:#fff}.recipe-card .thumb .card-select{position:absolute;bottom:12px;left:12px;background:#fffdf9eb;border-radius:999px;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.recipe-card .thumb .card-select input[type=checkbox]{width:18px;height:18px;accent-color:var(--basil);cursor:pointer}.recipe-card.is-selected{border-color:var(--basil);box-shadow:0 0 0 2px var(--basil)}.fav-toggle{border:0;background:transparent;color:var(--muted);cursor:pointer;transition:transform .15s,color .15s;line-height:1}.fav-toggle:hover{transform:scale(1.12)}.fav-toggle.active{color:var(--basil)}.recipe-card .thumb .fav-toggle{position:absolute;top:12px;left:12px;background:#fffdf9eb;border-radius:999px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-size:16px}.recipe-card .body{padding:18px 18px 20px}.recipe-card h3{font-family:var(--serif);font-weight:600;font-size:21px;line-height:1.2;margin:0 0 8px;color:var(--ink)}.recipe-card .owner{color:var(--muted);font-size:12.5px;font-weight:600;margin:-4px 0 8px}.recipe-card .desc{color:var(--ink-soft);font-size:14.5px;margin:0 0 14px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.recipe-card .meta{display:flex;flex-wrap:wrap;gap:12px;color:var(--muted);font-size:13px;font-weight:600;border-top:1px dashed var(--line);padding-top:13px}.recipe-card .meta span{display:inline-flex;align-items:center;gap:5px}.recipe-card .card-quick-actions{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px;margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}.recipe-card .card-quick-actions .add-to-planner.is-compact,.recipe-card .card-quick-actions .add-to-cookbook.is-compact,.recipe-card .card-quick-actions .add-to-event.is-compact{display:block}.card-plan-toggle,.card-cookbook-toggle,.card-event-toggle,.card-grocery-toggle{border:0;background:transparent;color:var(--muted);font-size:13px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:5px;padding:0;transition:color .15s}.card-plan-toggle:hover,.card-cookbook-toggle:hover,.card-event-toggle:hover,.card-grocery-toggle:hover{color:var(--basil)}.recipe-card .card-quick-actions .calendar-picker{margin-top:8px;width:100%}.card-tags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}.card-tags .t{background:var(--paper-2);color:var(--moss);border-radius:6px;font-size:11.5px;font-weight:700;padding:3px 8px}.empty{text-align:center;padding:70px 20px;color:var(--ink-soft)}.empty .big{font-size:52px;margin-bottom:8px}.empty h2{font-family:var(--serif);font-weight:500;font-size:26px;color:var(--ink);margin:0 0 8px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2a3f4d80;display:flex;justify-content:center;align-items:flex-start;padding:40px 20px;overflow-y:auto;z-index:50;animation:fade .2s ease}@keyframes fade{0%{opacity:0}}.modal{background:var(--card);border-radius:22px;box-shadow:var(--shadow-lg);max-width:720px;width:100%;overflow:hidden;animation:rise .25s cubic-bezier(.2,.8,.2,1)}@keyframes rise{0%{transform:translateY(16px);opacity:0}}.repeat-modal{background:var(--card);border-radius:22px;box-shadow:var(--shadow-lg);max-width:380px;width:100%;padding:30px 34px 26px;animation:rise .25s cubic-bezier(.2,.8,.2,1)}.repeat-modal h3{font-family:var(--serif);font-size:20px;margin-bottom:18px}.repeat-modal-field{display:flex;flex-direction:column;gap:4px;margin-bottom:16px}.repeat-modal-field .label{text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;font-weight:700;color:var(--muted)}.repeat-modal-field input{padding:9px 12px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);outline:none}.repeat-modal-field input:focus{border-color:var(--basil)}.repeat-modal-interval{display:flex;align-items:center;gap:8px}.repeat-modal-interval input{width:70px}.repeat-modal-interval span{font-size:13.5px;color:var(--ink-soft)}.repeat-modal-interval select{padding:9px 10px;font-size:13.5px;font-family:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);outline:none}.repeat-modal-interval select:focus{border-color:var(--basil)}.repeat-modal-actions{display:flex;gap:10px}.help-modal{position:relative;background:var(--card);border-radius:22px;box-shadow:var(--shadow-lg);max-width:480px;width:100%;padding:30px 34px 26px;animation:rise .25s cubic-bezier(.2,.8,.2,1)}.help-modal .close{position:absolute;top:20px;right:20px;width:32px;height:32px;border-radius:50%;border:0;background:var(--paper-2);color:var(--ink);font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center}.help-modal .close:hover{background:var(--line)}.help-modal-title{font-family:var(--serif);font-size:20px;margin:0 0 16px;padding-right:30px}.help-modal-block+.help-modal-block{margin-top:18px}.help-modal-heading{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--basil-deep);margin:0 0 8px}.help-modal ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px}.help-modal li{font-size:14px;line-height:1.5;color:var(--ink-soft)}.help-btn{flex-shrink:0;width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink-soft);font-size:12px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.help-btn:hover{background:var(--paper-2);color:var(--ink)}.page-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin:0 2px 14px}.page-header-row .page-blurb{margin:0}.page-header-row .help-btn{margin-top:1px}.confirm-dialog{position:relative;background:var(--card);border-radius:22px;box-shadow:var(--shadow-lg);max-width:360px;width:100%;padding:28px 30px 24px;animation:rise .25s cubic-bezier(.2,.8,.2,1)}.confirm-dialog .close{position:absolute;top:16px;right:16px;width:32px;height:32px;border-radius:50%;border:0;background:var(--paper-2);color:var(--ink);font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center}.confirm-dialog .close:hover{background:var(--line)}.confirm-dialog p{font-size:15px;line-height:1.5;color:var(--ink);margin-bottom:22px;padding-right:28px}.confirm-dialog-actions{display:flex;justify-content:flex-end;gap:10px}.grocery-modal{background:var(--card);border-radius:22px;box-shadow:var(--shadow-lg);max-width:480px;width:100%;padding:30px 34px 26px;animation:rise .25s cubic-bezier(.2,.8,.2,1)}.grocery-page{background:var(--card);border-radius:22px;box-shadow:var(--shadow);max-width:560px;margin:0 auto;padding:30px 34px 26px}.grocery-modal h2{font-family:var(--serif);font-size:22px;margin-bottom:10px}.grocery-disclaimer{margin-bottom:18px}.grocery-range-picker{display:flex;align-items:flex-end;flex-wrap:wrap;gap:14px;margin-bottom:18px;padding:14px;background:var(--paper-2);border-radius:var(--radius-sm)}.grocery-range-picker label{display:flex;flex-direction:column;gap:4px}.grocery-range-picker .label{text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;font-weight:700;color:var(--muted)}.grocery-range-picker input{padding:9px 12px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink)}.grocery-range-label{font-size:13px;color:var(--muted);font-weight:600;margin-bottom:12px}.grocery-items{display:flex;flex-direction:column;gap:4px;max-height:340px;overflow-y:auto;margin-bottom:16px}.grocery-items li{display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:8px 10px;border-radius:var(--radius-sm)}.grocery-items li:hover{background:var(--paper-2)}.grocery-item-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.grocery-items li label{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink);cursor:pointer}.grocery-items li input[type=checkbox]{width:17px;height:17px;accent-color:var(--basil);cursor:pointer}.grocery-items li.is-checked label{color:var(--muted);text-decoration:line-through}.grocery-item-row button{border:0;background:transparent;color:var(--muted);font-size:15px;line-height:1;flex-shrink:0}.grocery-item-row button:hover{color:var(--basil-deep)}.grocery-item-sources{font-size:11.5px;color:var(--muted);padding-left:27px}.grocery-source-link{border:0;background:transparent;color:var(--moss);font-size:11.5px;font-weight:600;text-decoration:underline;padding:0}.grocery-source-link:hover{color:var(--basil)}.grocery-add{display:flex;align-items:center;gap:8px;margin-bottom:18px}.grocery-add-trigger{margin-bottom:18px}.grocery-add input{flex:1;padding:9px 12px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink)}.grocery-actions-generate{margin-bottom:10px}.grocery-actions-generate .btn{width:100%}.grocery-actions{display:flex;flex-wrap:wrap;gap:10px}.btn-generate-wrap{white-space:normal;text-align:center;font-size:12px;line-height:1.35;padding:10px 16px}.add-recipe-alt-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.write-recipe-trigger{margin-top:20px;border:1.5px solid var(--basil);background:var(--sage);color:var(--basil);font-weight:700}.write-recipe-trigger:hover:not(:disabled){background:var(--sage);color:var(--basil-deep)}.write-recipe-modal{background:var(--card);border-radius:22px;box-shadow:var(--shadow-lg);max-width:640px;width:100%;max-height:88vh;overflow-y:auto;padding:30px 34px 26px;animation:rise .25s cubic-bezier(.2,.8,.2,1)}.write-recipe-modal h2{font-family:var(--serif);font-size:22px;margin-bottom:18px}.write-recipe-field{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}.write-recipe-field .label,.write-recipe-stat-row .label,.write-recipe-meta-row .label,.write-recipe-columns .label{display:block;text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;font-weight:700;color:var(--muted);margin-bottom:4px}.write-recipe-field input,.write-recipe-field textarea,.write-recipe-stat-row input,.write-recipe-meta-row input{width:100%;padding:9px 12px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);outline:none}.write-recipe-field input:focus,.write-recipe-field textarea:focus,.write-recipe-stat-row input:focus,.write-recipe-meta-row input:focus{border-color:var(--basil)}.write-recipe-stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.write-recipe-meta-row{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px}.write-recipe-meta-row label{flex:1;min-width:200px}.write-recipe-nutrition-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.write-recipe-nutrition-row label{min-width:84px}.write-recipe-nutrition-row .label{display:block;text-transform:uppercase;letter-spacing:.1em;font-size:10px;font-weight:700;color:var(--muted);margin-bottom:4px}.write-recipe-nutrition-row input{width:100%;padding:7px 9px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);outline:none}.write-recipe-nutrition-row input:focus{border-color:var(--basil)}.write-recipe-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:18px}.write-recipe-actions{display:flex;gap:10px}.modal .hero{background:linear-gradient(140deg,var(--sage),#f5f0dc 70%);padding:34px 40px 28px;position:relative;border-bottom:1px solid var(--line-soft)}.modal .hero .glyph{font-size:40px;margin-bottom:12px}.modal .hero .hero-image{width:72px;height:72px;object-fit:cover;border-radius:var(--radius-sm);margin-bottom:12px;box-shadow:var(--shadow-sm)}.image-picker{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}.image-picker-grid{display:flex;gap:10px;flex-wrap:wrap}.image-picker-preview{width:72px;height:72px;border-radius:var(--radius-sm);object-fit:cover;box-shadow:var(--shadow-sm);flex-shrink:0}.image-picker-preview.image-picker-glyph{display:flex;align-items:center;justify-content:center;font-size:30px;background:linear-gradient(135deg,var(--sage),#f5f0dc)}.image-picker-thumb{position:relative;cursor:grab}.image-picker-thumb.is-dragging{opacity:.4}.image-picker-thumb.is-drop-target{outline:2px solid var(--basil);outline-offset:2px;border-radius:var(--radius-sm)}.image-picker-remove{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:none;background:var(--ink);color:#fff;font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.image-picker-remove:hover{opacity:.85}.staged-photos{margin-top:12px}.staged-photos-actions{display:flex;gap:8px;margin-top:10px}.image-picker-actions{display:flex;gap:8px;flex-wrap:wrap}.image-picker-upload{cursor:pointer}.modal .hero h2{font-family:var(--serif);font-weight:600;font-size:clamp(28px,5vw,40px);line-height:1.06;margin:0 0 12px;color:var(--ink);max-width:90%}.modal .hero .desc{color:var(--ink-soft);font-size:16px;font-style:italic;margin:0;max-width:92%}.hero-title-row{display:flex;align-items:center;gap:10px;max-width:90%;margin:0 0 12px;flex-wrap:wrap}.hero-title-row h2{margin:0}.hero .fav-toggle{font-size:24px}.hero-edit-btn{margin-left:auto}.tried-toggle{border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:600;transition:all .15s}.tried-toggle:hover{border-color:var(--moss);color:var(--moss)}.tried-toggle.active{background:var(--moss);border-color:var(--moss);color:#fbfeff}.rating-row{display:flex;gap:2px;margin:-4px 0 12px}.rating-row .star{border:0;background:transparent;color:var(--line);font-size:20px;line-height:1;transition:transform .1s,color .1s}.rating-row .star:hover{transform:scale(1.15)}.rating-row .star.filled{color:var(--mustard)}.detail-input{width:100%;padding:10px 13px;font-size:15px;font-family:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);outline:none}.detail-input:focus{border-color:var(--basil)}.hero-edit-name{font-family:var(--serif);font-weight:600;font-size:28px;padding:8px 13px;width:100%;max-width:92%;margin:0 0 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);outline:none}.hero-edit-name:focus{border-color:var(--basil)}.hero-edit-desc{width:100%;max-width:92%;padding:10px 13px;font-size:15px;font-family:inherit;font-style:italic;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);resize:vertical;outline:none}.hero-edit-desc:focus{border-color:var(--basil)}.detail-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:13px;color:var(--ink-soft);font-weight:600}.detail-meta .card-tags{margin:0}.modal .close{position:absolute;top:20px;right:20px;width:38px;height:38px;border-radius:50%;border:0;background:#fffdf9d9;color:var(--ink);font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.modal .close:hover{background:#fff}.modal .hero-help{position:absolute;top:20px;right:66px;width:32px;height:32px;border:0;background:#fffdf9d9;color:var(--ink);box-shadow:var(--shadow-sm)}.modal .hero-help:hover{background:#fff;color:var(--ink)}.stat-row{display:flex;flex-wrap:wrap;gap:0;border-bottom:1px solid var(--line-soft)}.stat{flex:1;min-width:90px;text-align:center;padding:16px 8px;border-right:1px solid var(--line-soft)}.stat:last-child{border-right:0}.stat .label{text-transform:uppercase;letter-spacing:.12em;font-size:10.5px;font-weight:700;color:var(--muted)}.stat .value{font-family:var(--serif);font-size:19px;color:var(--ink);margin-top:3px}.stat .value.stepper{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:6px}.stepper-btn{width:24px;height:24px;border-radius:50%;border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:15px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,color .15s}.stepper-btn:hover:not(:disabled){background:var(--basil);color:#fbfeff;border-color:var(--basil)}.stepper-btn:disabled{opacity:.4;cursor:not-allowed}.edit-stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:16px 40px;border-bottom:1px solid var(--line-soft)}.edit-stat-row label{display:flex;flex-direction:column;gap:4px}.edit-stat-row .label{text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;font-weight:700;color:var(--muted)}.edit-stat-row input{padding:7px 9px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);outline:none}.edit-stat-row input:focus{border-color:var(--basil)}.nutrition-facts{padding:18px 40px 0}.nutrition-facts .section-title{display:flex;align-items:baseline;gap:8px;margin:0 0 10px}.nutrition-facts .hint-inline{font-size:11.5px;font-weight:400;font-style:italic;color:var(--muted);text-transform:none;letter-spacing:normal}.nutrition-grid{display:flex;flex-wrap:wrap;gap:10px}.nutrition-item{min-width:84px;text-align:center;padding:10px 14px;background:var(--paper-2);border-radius:var(--radius-sm)}.nutrition-item .label{text-transform:uppercase;letter-spacing:.1em;font-size:10px;font-weight:700;color:var(--muted)}.nutrition-item .value{font-family:var(--serif);font-size:16px;color:var(--ink);margin-top:2px}.edit-nutrition-row{display:flex;flex-wrap:wrap;gap:10px}.edit-nutrition-row label{display:flex;flex-direction:column;gap:4px;min-width:84px}.edit-nutrition-row .label{text-transform:uppercase;letter-spacing:.1em;font-size:10px;font-weight:700;color:var(--muted)}.edit-nutrition-row input{padding:7px 9px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);outline:none;width:100%}.edit-nutrition-row input:focus{border-color:var(--basil)}.edit-meta-row{display:flex;gap:16px;padding:16px 40px 0;flex-wrap:wrap}.edit-meta-row label{flex:1;min-width:200px;display:flex;flex-direction:column;gap:4px}.edit-meta-row .label{text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;font-weight:700;color:var(--muted)}.edit-meta-row input{padding:9px 12px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);outline:none}.edit-meta-row input:focus{border-color:var(--basil)}.edit-list{width:100%;font-family:inherit;font-size:14.5px;line-height:1.7;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);resize:vertical;outline:none}.edit-list:focus{border-color:var(--basil)}.tag-editor{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:7px 8px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper)}.tag-editor:focus-within{border-color:var(--basil)}.tag-chip{display:inline-flex;align-items:center;gap:4px;background:var(--paper-2);color:var(--moss);border-radius:6px;padding:3px 4px 3px 8px;font-size:12.5px;font-weight:700}.tag-chip button{border:0;background:transparent;color:var(--muted);font-size:14px;line-height:1;padding:0 2px}.tag-chip button:hover{color:var(--basil-deep)}.tag-editor-input{flex:1;min-width:90px;border:0;background:transparent;font-family:inherit;font-size:13.5px;color:var(--ink);outline:none;padding:3px 4px}.modal .content{padding:30px 40px 36px;display:grid;grid-template-columns:.9fr 1.3fr;gap:36px}.notes-section{padding:26px 40px;border-top:1px solid var(--line-soft)}.notes-section .section-title{font-size:18px;margin-bottom:12px}.notes-list{display:flex;flex-direction:column;margin-bottom:14px}.note-entry{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line)}.note-entry p{flex:1;margin:0;font-size:15px;line-height:1.6;white-space:pre-wrap;color:var(--ink-soft)}.note-entry-delete{flex:none;border:0;background:transparent;color:var(--muted);padding:2px;margin-top:2px}.note-entry-delete:hover{color:var(--danger)}.add-note-box{display:flex;flex-direction:column;gap:8px}.add-note-actions{display:flex;align-items:center;gap:12px}.notes-section textarea{width:100%;padding:11px 14px;font-size:14px;font-family:inherit;line-height:1.6;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);resize:vertical;outline:none}.notes-section textarea:focus{border-color:var(--basil)}.notes-section .btn{margin-top:10px}.recipe-qa{padding:26px 40px 30px;border-top:1px solid var(--line-soft)}.recipe-qa .section-title{font-size:18px;margin-bottom:12px}.qa-form{display:flex;gap:10px}.qa-form input{flex:1;padding:11px 14px;font-size:14px;font-family:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink)}.qa-error{margin:12px 0 0;color:var(--basil-deep);font-size:14px}.qa-asked{margin:12px 0 0;font-size:13.5px;color:var(--ink-soft)}.qa-asked strong{color:var(--ink)}.qa-answer{margin:14px 0 0;padding:14px 16px;background:var(--paper-2);border-radius:var(--radius-sm);font-size:14.5px;line-height:1.6;color:var(--ink)}.qa-answer-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.qa-revision-preview{margin-top:16px;padding:18px 20px;background:var(--paper-2);border:1px solid var(--basil);border-radius:var(--radius-sm)}.qa-revision-preview h4{font-family:var(--serif);font-weight:600;font-size:16px;margin:0 0 10px;color:var(--basil-deep)}.qa-revision-name{font-family:var(--serif);font-weight:600;font-size:18px;margin:0 0 6px;color:var(--ink)}.qa-revision-desc{font-size:13.5px;color:var(--ink-soft);font-style:italic;margin:0 0 14px}.qa-revision-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:14px}.qa-revision-columns h5{font-size:12.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 8px}.qa-revision-columns ul,.qa-revision-columns ol{margin:0;padding-left:20px;font-size:13.5px;line-height:1.55;color:var(--ink)}.qa-revision-columns li{margin-bottom:5px}.qa-revision-actions{display:flex;gap:10px}.section-title{font-family:var(--serif);font-weight:600;font-size:22px;color:var(--ink);margin:0 0 16px;display:flex;align-items:center;gap:10px}.section-title:after{content:"";flex:1;height:1px;background:var(--line)}.measurement-toggle{display:flex;align-items:center;gap:6px;font-family:var(--sans);font-size:13px;font-weight:400}.measurement-toggle-chip{font-family:var(--sans);font-size:13px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink);cursor:pointer}.measurement-toggle-chip:hover{border-color:var(--basil)}.measurement-dialog{max-width:320px;padding:26px 28px 24px}.measurement-dialog-options{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px}.measurement-dialog-option{text-align:center;font-family:var(--sans);font-size:14px;padding:8px 16px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s}.measurement-dialog-option:hover{border-color:var(--basil)}.measurement-dialog-option.active{border-color:var(--basil);background:var(--basil-tint, var(--paper-2));font-weight:600}.ingredients{list-style:none;padding:0;margin:0}.ingredients li{padding:9px 0 9px 26px;position:relative;border-bottom:1px dashed var(--line);font-size:15px;color:var(--ink-soft)}.ingredients li:before{content:"";position:absolute;left:4px;top:17px;width:7px;height:7px;border-radius:50%;background:var(--mustard)}.steps{list-style:none;padding:0;margin:0;counter-reset:step}.steps li{position:relative;padding:0 0 22px 48px;counter-increment:step;font-size:15.5px;color:var(--ink-soft);line-height:1.62}.steps li:before{content:counter(step);position:absolute;left:0;top:-2px;width:32px;height:32px;border-radius:50%;background:var(--basil);color:#fbfeff;font-family:var(--serif);font-size:16px;font-weight:600;display:flex;align-items:center;justify-content:center}.steps li:not(:last-child):after{content:"";position:absolute;left:15.5px;top:34px;bottom:6px;width:1px;background:var(--line)}.modal .footer{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start;justify-content:space-between;padding:20px 40px;border-top:1px solid var(--line-soft);background:var(--paper)}.modal .footer .left{display:flex;flex-direction:column;align-items:flex-start;gap:12px}.footer-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.footer-chip{display:inline-flex;align-items:center;gap:4px;background:var(--paper-2);color:var(--moss);border-radius:6px;font-size:11.5px;font-weight:700;padding:3px 6px 3px 8px}.footer-chip button{background:none;border:none;padding:0;font:inherit;font-weight:700;color:inherit;cursor:pointer;line-height:1}.footer-chip button:hover{color:var(--basil-deep)}.add-to-planner{display:inline-flex;flex-direction:column;align-items:flex-start;gap:6px}.planner-next-date{font-size:12px;color:var(--muted)}.calendar-picker{display:flex;flex-direction:column;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;box-shadow:var(--shadow-sm);width:max-content;min-width:240px}.calendar-picker-nav{display:flex;align-items:center;justify-content:space-between}.calendar-picker-nav-btn{border:0;background:transparent;color:var(--muted);font-size:16px;padding:2px 8px;line-height:1}.calendar-picker-nav-btn:hover{color:var(--basil)}.calendar-picker-month{font-family:var(--serif);font-size:14px;color:var(--ink);font-weight:700}.calendar-picker-headrow{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.calendar-picker-headcell{text-align:center;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.calendar-picker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.calendar-picker-day{border:1px solid transparent;background:transparent;color:var(--ink);font-size:12.5px;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;margin:0 auto}.calendar-picker-day:hover{background:var(--paper-2)}.calendar-picker-day.is-outside{color:var(--muted);opacity:.45}.calendar-picker-day.is-today{font-weight:700;color:var(--basil)}.calendar-picker-day.is-planned{border-color:var(--basil);background:var(--sage);font-weight:700;color:var(--basil-deep)}.add-to-event{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.add-to-event.is-open{background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.add-to-event select,.add-to-event input{padding:7px 9px;font-size:13px;font-family:inherit;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink)}.add-to-event-new,.add-to-event-actions{display:flex;gap:6px}.add-to-cookbook{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.add-to-cookbook.is-open{background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.add-to-cookbook select,.add-to-cookbook input{padding:7px 9px;font-size:13px;font-family:inherit;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink)}.add-to-cookbook-new,.add-to-cookbook-actions{display:flex;gap:6px}.quick-notes-ask{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin-bottom:22px}.quick-notes-ask .section-title{margin-bottom:12px}.quick-notes-grid{display:flex;flex-wrap:wrap;gap:22px;margin-top:22px}.sticky-note{position:relative;width:220px;min-height:200px;background:#fdf0c4;box-shadow:var(--shadow);border-radius:4px;border:0;padding:16px 14px 30px;transition:transform .15s,box-shadow .15s;cursor:pointer;text-align:left;display:block}.sticky-note:hover{transform:scale(1.02);box-shadow:var(--shadow-lg)}.sticky-note-0{transform:rotate(-1.5deg)}.sticky-note-1{transform:rotate(1deg)}.sticky-note-2{transform:rotate(-.75deg)}.sticky-note-3{transform:rotate(1.5deg)}.sticky-note-0:hover,.sticky-note-1:hover,.sticky-note-2:hover,.sticky-note-3:hover{transform:rotate(0) scale(1.02)}.sticky-note-preview{margin:0;width:100%;min-height:150px;font-family:var(--sans);font-size:14px;line-height:1.6;color:var(--ink);white-space:pre-wrap;display:-webkit-box;-webkit-line-clamp:7;-webkit-box-orient:vertical;overflow:hidden}.sticky-note-empty{color:var(--muted);font-style:italic}.sticky-note-expand{position:absolute;bottom:10px;right:12px;font-size:14px;color:#2a3f4d52}.sticky-note-delete{position:absolute;top:6px;right:8px;border:0;background:transparent;color:var(--danger);font-size:15px;line-height:1;cursor:pointer}.sticky-note-delete:hover{color:var(--danger-deep)}.note-modal{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:min(640px,100%);padding:24px 26px;display:flex;flex-direction:column;animation:rise .25s cubic-bezier(.2,.8,.2,1)}.note-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.note-modal-head h2{font-family:var(--serif);font-size:22px;margin:0;color:var(--ink)}.note-modal-close{width:34px;height:34px;border-radius:50%;border:0;background:var(--paper);color:var(--ink-soft);font-size:18px;cursor:pointer;flex-shrink:0}.note-modal-close:hover{background:var(--line-soft)}.note-modal textarea{width:100%;height:50vh;max-height:500px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);padding:14px 16px;font-family:var(--sans);font-size:15px;line-height:1.7;color:var(--ink);resize:vertical;outline:none}.note-modal-actions{display:flex;justify-content:flex-end;margin-top:14px}.modal .footer a.source{color:var(--muted);font-size:13px;text-decoration:none;border-bottom:1px dashed var(--muted)}.modal .footer a.source:hover{color:var(--basil);border-color:var(--basil)}.migration-modal{max-width:460px}.migration-body{padding:34px 36px}.migration-body h2{font-family:var(--serif);font-weight:600;font-size:24px;margin:0 0 14px;color:var(--ink)}.migration-body p{color:var(--ink-soft);font-size:15px;line-height:1.6;margin:0}.migration-actions{display:flex;gap:10px;margin-top:24px}.migration-actions .btn{flex:1;justify-content:center}.toasts{position:fixed;bottom:24px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:10px;z-index:100;width:min(420px,calc(100vw - 32px))}.toast{background:var(--ink);color:#f2f8fa;padding:13px 18px;border-radius:12px;box-shadow:var(--shadow-lg);font-size:14px;display:flex;gap:10px;align-items:flex-start;animation:rise .25s ease}.toast.error{background:var(--basil-deep)}.toast.success{background:var(--moss)}.toast .dot{font-size:16px;line-height:1.4}.spinner{width:16px;height:16px;border:2px solid rgba(255,248,241,.4);border-top-color:#fbfeff;border-radius:50%;animation:spin .7s linear infinite}.btn-ghost .spinner{border-color:#6b57484d;border-top-color:var(--ink-soft)}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:720px){.modal .content{grid-template-columns:1fr;gap:26px;padding:24px 24px 30px}.write-recipe-columns{grid-template-columns:1fr}.write-recipe-stat-row{grid-template-columns:repeat(2,1fr)}.qa-revision-columns{grid-template-columns:1fr}.modal .hero,.modal .footer{padding-left:24px;padding-right:24px}.search input{width:100%}.search{flex:1}.planner-grid{grid-template-columns:1fr}.planner-month-headrow{display:none}.planner-range{font-size:15px;gap:8px}.planner-day.is-compact{min-height:auto}.grid{columns:1}.edit-stat-row{grid-template-columns:repeat(2,1fr);padding:16px 24px}}.print-only{display:none}@media print{.app,.overlay{display:none!important}html,body{background:#fff!important;background-image:none!important}.print-only{display:block;background:#fff}}.print-recipe{color:#1a1a1a;font-family:var(--sans);page-break-after:always}.print-recipe:last-child{page-break-after:auto}.print-image{display:block;width:100%;max-height:280px;object-fit:cover;border-radius:8px;margin:0 0 14px}.print-recipe h1{font-family:var(--serif);font-size:28px;margin:0 0 8px}.print-owner{font-size:13px;font-weight:700;color:#666;margin:0 0 8px}.print-recipe h2{font-family:var(--serif);font-size:18px;margin:20px 0 8px;border-bottom:1px solid #ccc;padding-bottom:4px}.print-desc{font-style:italic;color:#444;margin:0 0 10px}.print-meta,.print-tags{font-size:13px;color:#444;margin:0 0 6px}.print-recipe ul,.print-recipe ol{margin:0 0 10px;padding-left:22px}.print-recipe li{margin-bottom:5px;line-height:1.45}.print-notes{font-size:13.5px;color:#333;line-height:1.5;white-space:pre-wrap;margin:0 0 10px}.print-source{font-size:12px;color:#666;margin-top:14px}.print-mealplan{color:#1a1a1a;font-family:var(--sans);padding:24px}.print-mealplan h1{font-family:var(--serif);font-size:24px;margin:0 0 16px}.print-mealplan-day{margin:0 0 16px;page-break-inside:avoid}.print-mealplan-day h2{font-family:var(--serif);font-size:16px;margin:0 0 6px;border-bottom:1px solid #ccc;padding-bottom:4px}.print-mealplan-day ul{margin:0;padding-left:20px}.print-mealplan-day li{font-size:13.5px;line-height:1.5;margin-bottom:3px}.print-mealplan-empty{font-size:13px;color:#888;font-style:italic}.print-event{color:#1a1a1a;font-family:var(--sans);padding:24px}.print-event h1{font-family:var(--serif);font-size:24px;margin:0 0 4px}.print-event-date{font-size:13px;color:#666;margin:0 0 16px}.print-event ul{margin:0;padding-left:20px}.print-event li{font-size:13.5px;line-height:1.5;margin-bottom:3px}.print-event-empty{font-size:13px;color:#888;font-style:italic}.print-grocery{color:#1a1a1a;font-family:var(--sans);padding:24px}.print-grocery h1{font-family:var(--serif);font-size:24px;margin:0 0 8px}.print-grocery-range{font-size:13px;color:#666;margin:0 0 16px}.print-grocery-items{margin:0;padding:0;list-style:none}.print-grocery-items li{font-size:14px;line-height:1.6;margin-bottom:6px;display:flex;gap:8px;align-items:baseline}.print-grocery-checked{text-decoration:line-through;color:#888}.print-grocery-sources{font-size:11.5px;color:#888}.onboarding-modal{max-width:560px;display:flex;flex-direction:column;max-height:85vh}.onboarding-top{display:flex;align-items:center;justify-content:space-between;padding:20px 28px 0}.onboarding-content{padding:28px 36px;overflow-y:auto;display:flex;flex-direction:column;align-items:center;text-align:center}.onboarding-emoji{font-size:44px;line-height:1.3;margin-bottom:12px}.onboarding-welcome-title{margin:0 0 10px}.onboarding-welcome-body{color:var(--ink-soft);max-width:380px;margin:0 0 28px}.onboarding-stat-box{width:100%;border:1.5px solid var(--basil);border-radius:16px;padding:24px 28px;background:var(--paper)}.onboarding-stat-num{font-family:var(--serif);font-weight:700;font-size:44px;color:var(--basil);line-height:1}.onboarding-stat-label{font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:6px 0 14px}.onboarding-stat-desc{font-size:14.5px;line-height:1.5;color:var(--ink-soft);margin:0}.onboarding-feature-list{width:100%;display:flex;flex-direction:column;gap:14px;text-align:left}.onboarding-feature-card{display:flex;gap:14px;background:var(--paper);border-radius:14px;padding:18px 20px}.onboarding-feature-emoji{font-size:24px;flex:none}.onboarding-feature-title{font-weight:700;font-size:15.5px;margin-bottom:4px}.onboarding-feature-desc{font-size:14px;line-height:1.45;color:var(--ink-soft)}.onboarding-footer{padding:8px 36px 28px;display:flex;flex-direction:column;gap:18px}.onboarding-dots{display:flex;justify-content:center;gap:8px}.onboarding-dot{width:7px;height:7px;border-radius:50%;background:var(--line)}.onboarding-dot.is-active{background:var(--basil)}
