:root{--paper: #faf7f2;--card: #ffffff;--ink: #1c1917;--ink-soft: #57534e;--ink-faint: #8b8378;--accent: #8a3324;--accent-soft: #f3e3df;--line: #e7e0d6;--warn: #9a6a00;--warn-soft: #fdf3dc;--radius: 10px;--serif: ui-serif, Georgia, "Iowan Old Style", "Times New Roman", serif;--sans: system-ui, -apple-system, "Segoe UI", sans-serif}@media(prefers-color-scheme:dark){:root{--paper: #1a1715;--card: #241f1c;--ink: #f2ede6;--ink-soft: #b8afa4;--ink-faint: #8a8177;--accent: #e0705a;--accent-soft: #3a231e;--line: #372f2a;--warn: #e8b64c;--warn-soft: #362c15}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-text-size-adjust:100%}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{max-width:760px;margin:0 auto;padding:0 20px 96px}.masthead{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:20px 0 16px;border-bottom:1px solid var(--line);margin-bottom:24px}.masthead h1{font-family:var(--serif);font-size:1.5rem;margin:0;letter-spacing:-.01em}.masthead h1 a{color:var(--ink)}.masthead nav{display:flex;gap:16px;align-items:baseline;font-size:.9rem}button,.button{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:8px 14px;border-radius:var(--radius);cursor:pointer;min-height:40px}button:hover{border-color:var(--ink-faint)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.ghost{background:transparent;border-color:transparent;color:var(--accent);padding:8px 6px}button.danger{color:var(--accent)}input,textarea,select{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px;min-height:40px;max-width:100%}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}label{font-size:.85rem;color:var(--ink-soft);display:block;margin-bottom:4px}.search{width:100%;margin-bottom:20px}.recipe-card{display:flex;gap:14px;align-items:flex-start;padding:16px 0;border-bottom:1px solid var(--line);color:var(--ink)}.card-body{flex:1;min-width:0}.card-thumb{width:76px;height:76px;flex-shrink:0;object-fit:cover;border-radius:var(--radius);background:var(--line)}.emoji{margin-right:.4em;font-size:.95em;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.recipe-card:hover{text-decoration:none}.recipe-card:hover h2{color:var(--accent)}.recipe-card h2{font-family:var(--serif);font-size:1.25rem;margin:0 0 4px;font-weight:600}.recipe-card p{margin:0;color:var(--ink-soft);font-size:.92rem}.meta-row{display:flex;flex-wrap:wrap;gap:10px;color:var(--ink-faint);font-size:.82rem;margin-top:6px}.tag{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.75rem;font-weight:500}.recipe-header{display:flex;gap:20px;align-items:flex-start}.recipe-header-text{flex:1;min-width:0}.recipe-photo{width:200px;flex-shrink:0;aspect-ratio:1;object-fit:cover;border-radius:var(--radius);background:var(--line)}@media(max-width:600px){.recipe-header{flex-direction:column-reverse;gap:12px}.recipe-photo{width:100%;aspect-ratio:16 / 10}}.recipe-header h1{font-family:var(--serif);font-size:2rem;line-height:1.2;margin:0 0 6px;letter-spacing:-.015em}.recipe-header .subtitle{color:var(--ink-soft);margin:0 0 10px;font-size:1.02rem}.recipe-header .source{font-size:.85rem;color:var(--ink-faint)}.scale-bar{position:sticky;top:0;z-index:10;background:var(--paper);border-bottom:1px solid var(--line);padding:12px 0;margin:20px 0 8px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}.scale-group{display:flex;gap:4px;align-items:center}.scale-group button{padding:6px 10px;min-height:36px;min-width:44px;border-radius:8px}.scale-group button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.servings-input{width:68px;text-align:center}.scale-note{font-size:.82rem;color:var(--ink-faint);width:100%}section.block{margin-top:28px}section.block>h2{font-family:var(--serif);font-size:1.15rem;margin:0 0 12px;padding-bottom:6px;border-bottom:1px solid var(--line)}ul.ingredients{list-style:none;margin:0;padding:0}ul.ingredients li{padding:7px 0;display:flex;gap:10px;align-items:baseline;border-bottom:1px dotted var(--line)}ul.ingredients li.section-heading{border:none;padding-top:18px;font-family:var(--serif);font-weight:600;color:var(--ink-soft);display:block}.qty{font-variant-numeric:tabular-nums;font-weight:600;min-width:5.2em;flex-shrink:0}.ingredient-name .prep{color:var(--ink-soft)}.flag{font-size:.72rem;padding:1px 6px;border-radius:999px;background:var(--warn-soft);color:var(--warn);margin-left:6px;white-space:nowrap}ol.method{padding-left:0;list-style:none;counter-reset:step;margin:0}ol.method li{counter-increment:step;display:flex;gap:12px;padding:10px 0;align-items:flex-start}ol.method li:before{content:counter(step);flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:.8rem;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:2px}.method-section{font-family:var(--serif);font-weight:600;color:var(--ink-soft);padding-top:16px}.notes{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;white-space:pre-wrap}.assumptions{font-size:.85rem;color:var(--ink-faint)}.assumptions ul{margin:6px 0 0;padding-left:18px}.cook{position:fixed;inset:0;background:var(--paper);overflow-y:auto;z-index:100;padding:20px 20px 60px}.cook-inner{max-width:720px;margin:0 auto}.cook h1{font-family:var(--serif);font-size:1.6rem;margin:0 0 4px}.cook .cook-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.cook ul.ingredients li,.cook ol.method li{font-size:1.22rem;padding:12px 0}.cook .qty{min-width:5.5em}.cook ol.method li{cursor:pointer}.cook ol.method li.done{opacity:.45;text-decoration:line-through}.cook ol.method li.done:before{background:var(--line);color:var(--ink-faint)}.wake-note{font-size:.78rem;color:var(--ink-faint);margin-top:4px}.version-row{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);align-items:flex-start}.version-no{font-weight:600;font-variant-numeric:tabular-nums;color:var(--accent);flex-shrink:0;min-width:3em}.version-body{flex:1;min-width:0}.version-body .note{margin:0}.version-body .when{font-size:.8rem;color:var(--ink-faint)}.diff{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.diff h3{margin:16px 0 8px;font-size:.9rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint)}.diff h3:first-child{margin-top:0}.diff ul{margin:0;padding-left:18px}.diff li{padding:3px 0}.diff .was{color:var(--ink-faint);text-decoration:line-through}.diff .now{color:var(--ink);font-weight:500}.diff .added{color:#2f7d32}.diff .removed{color:var(--accent)}@media(prefers-color-scheme:dark){.diff .added{color:#7bbf7e}}.editor-row{display:grid;grid-template-columns:80px 90px 1fr 130px 110px 40px;gap:8px;align-items:start;margin-bottom:8px}.editor-row input,.editor-row select{min-height:38px;width:100%}.editor-row.section-row{grid-template-columns:1fr 40px}.editor-head{display:grid;grid-template-columns:80px 90px 1fr 130px 110px 40px;gap:8px;font-size:.78rem;color:var(--ink-faint);margin-bottom:6px}.step-row{display:flex;gap:8px;margin-bottom:8px;align-items:flex-start}.step-row textarea{flex:1;min-height:66px}.step-num{padding-top:10px;color:var(--ink-faint);font-size:.85rem;min-width:1.6em}.photo-editor{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}.photo-editor img{width:140px;aspect-ratio:1;object-fit:cover;border-radius:var(--radius);background:var(--line)}.photo-editor .photo-actions{display:flex;flex-direction:column;gap:8px}.field{margin-bottom:16px}.field input,.field textarea{width:100%}.field-row{display:flex;gap:12px;flex-wrap:wrap}.field-row .field{flex:1;min-width:140px}.icon-btn{padding:6px;min-height:38px;min-width:38px;color:var(--ink-faint)}.editor-actions{position:sticky;bottom:0;background:var(--paper);border-top:1px solid var(--line);padding:12px 0;display:flex;gap:10px;align-items:center;flex-wrap:wrap}@media(max-width:640px){.editor-head{display:none}.editor-row,.editor-row.section-row{grid-template-columns:1fr 1fr;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);margin-bottom:12px}.editor-row .grow{grid-column:1 / -1}.recipe-header{display:flex;gap:20px;align-items:flex-start}.recipe-header-text{flex:1;min-width:0}.recipe-photo{width:200px;flex-shrink:0;aspect-ratio:1;object-fit:cover;border-radius:var(--radius);background:var(--line)}@media(max-width:600px){.recipe-header{flex-direction:column-reverse;gap:12px}.recipe-photo{width:100%;aspect-ratio:16 / 10}}.recipe-header h1{font-size:1.6rem}}.muted{color:var(--ink-faint)}.error{color:var(--accent)}.center{text-align:center}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spacer{flex:1}.empty{text-align:center;padding:60px 20px;color:var(--ink-faint)}.login-box{max-width:320px;margin:60px auto}.app-footer{margin-top:48px;padding-top:16px;border-top:1px solid var(--line);display:flex;gap:10px;align-items:center;justify-content:center;font-size:.78rem;color:var(--ink-faint)}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:var(--ink);color:var(--paper);padding:10px 18px;border-radius:999px;font-size:.9rem;z-index:200}
