:root{--bg:#f4f0e5;--ink:#201815;--card:#fffcf6;--accent:#bf4b2c;--accent-soft:#fce1d7;--line:#dbcfc4;--ok:#2f7d38;--warn:#a75819}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{background:radial-gradient(circle at 20% -10%,#ffe9ca 0,transparent 35%),radial-gradient(circle at 90% 0,#fbd5cd 0,transparent 30%),var(--bg);color:var(--ink);font-family:var(--font-body),sans-serif;line-height:1.4}a{color:inherit}.shell{width:min(1140px,100% - 2rem);margin:2rem auto 3rem}.hero{padding:1.4rem 1.6rem;border:1px solid var(--line);border-radius:18px;background:linear-gradient(145deg,#fff7ec,#fffdf9);box-shadow:0 7px 20px rgb(79 35 16/10%)}.hero h1,.hero h2,.hero h3{font-family:var(--font-display),serif;margin:0}.hero p{margin:.5rem 0 0;color:#5c4740}.grid{display:grid;grid-template-columns:1.1fr .9fr;grid-gap:1rem;gap:1rem}.add-recipe-wrap,.grid{margin-top:1rem}.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1rem}.add-recipe-panel{display:grid;grid-gap:.8rem;gap:.8rem;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}.add-recipe-panel.drag-active{border-color:var(--accent);background:#fff7ec;box-shadow:0 0 0 3px rgb(191 75 44/14%)}.drop-zone-status{border:1px dashed #d1ad99;border-radius:12px;padding:.55rem .7rem;background:#fff8ef;color:#6a4b42;font-size:.88rem;font-weight:700}.manual-recipe-form{grid-template-columns:1fr}.manual-components-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:.15rem 0 .3rem}.manual-components-header .hint{max-width:48rem}.manual-components{display:grid;grid-gap:.75rem;gap:.75rem}.manual-component-card{display:grid;grid-gap:.55rem;gap:.55rem;border:1px solid var(--line);border-radius:14px;padding:.85rem;background:#fffdf9}.manual-component-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.manual-component-card .field-label{margin:0}.add-recipe-header{display:grid;grid-gap:.3rem;gap:.3rem}.add-recipe-header h2{margin:0;font-family:var(--font-display),serif;font-size:1.4rem}.mode-tabs{display:inline-flex;flex-wrap:wrap;width:-moz-fit-content;width:fit-content;max-width:100%;border:1px solid var(--line);border-radius:999px;background:#fff7ec;padding:.2rem;gap:.2rem}.mode-tab{border:none;border-radius:999px;padding:.35rem .75rem;background:transparent;color:#60473f;font-weight:600;cursor:pointer}.mode-tab.active{background:#fff;color:var(--accent);box-shadow:0 1px 3px rgb(79 35 16/12%)}.add-recipe-form{display:grid;grid-gap:.6rem;gap:.6rem}.field-label{font-weight:600;color:#5b4740}.add-recipe-form input[type=file],.add-recipe-form input[type=number],.add-recipe-form input[type=text],.add-recipe-form select,.add-recipe-form textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:.55rem .65rem;font:inherit;color:var(--ink);background:#fff}.add-recipe-form textarea{resize:vertical}.hint{margin:0;color:#6f5b52;font-size:.85rem}.action-btn{border:none;width:-moz-fit-content;width:fit-content;border-radius:999px;padding:.45rem .95rem;font:inherit;font-weight:700;background:var(--accent);color:#fff;cursor:pointer}.action-btn:disabled{opacity:.65;cursor:not-allowed}.status-line{margin:.1rem 0 0;font-size:.9rem;font-weight:600}.status-line.info{color:#6a564e}.status-line.success{color:var(--ok)}.status-line.error{color:#b5342e}.recipe-editor-panel{display:grid;grid-gap:.8rem;gap:.8rem}.recipe-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap}.recipe-editor-toolbar h2{margin:0;font-family:var(--font-display),serif;font-size:1.3rem}.recipe-editor-actions{display:inline-flex;gap:.55rem;align-items:center;flex-wrap:wrap}.recipe-editor-form{display:grid;grid-gap:.6rem;gap:.6rem}.recipe-editor-form input[type=number],.recipe-editor-form input[type=text],.recipe-editor-form textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:.55rem .65rem;font:inherit;color:var(--ink);background:#fff}.recipe-editor-form textarea{resize:vertical}.inline-fields{display:grid;grid-gap:.45rem;gap:.45rem;grid-template-columns:repeat(3,minmax(0,1fr))}.inline-field-group{display:grid;grid-gap:.35rem;gap:.35rem}.classification-filter-panel{margin-top:1rem}.filter-summary{display:flex;align-items:center;justify-content:space-between;gap:.75rem;cursor:pointer;list-style:none;font-family:var(--font-display),serif;font-size:1.25rem;font-weight:700}.filter-summary::-webkit-details-marker{display:none}.filter-summary:after{content:"+";display:inline-grid;place-items:center;width:1.65rem;height:1.65rem;border:1px solid var(--line);border-radius:999px;background:#fff8ef;color:var(--accent);font-family:var(--font-body),sans-serif;font-size:1.15rem;line-height:1}.classification-filter-panel[open] .filter-summary:after{content:"-"}.classification-filter-body{margin-top:.8rem}.classification-filter-body,.classification-filter-form{display:grid;grid-gap:.8rem;gap:.8rem}.classification-editor{display:grid;grid-gap:.75rem;gap:.75rem}.classification-editor h3,.classification-selected-list h4{margin:0;font-family:var(--font-display),serif}.classification-grid{display:grid;grid-gap:.65rem;gap:.65rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.classification-fieldset{border:1px solid var(--line);border-radius:12px;padding:.6rem;margin:0}.classification-fieldset legend{padding:0 .3rem;color:#5f4740;font-weight:600}.classification-option-list{display:grid;grid-gap:.3rem;gap:.3rem;max-height:13rem;overflow:auto;padding-right:.25rem}.classification-option{display:flex;gap:.45rem;align-items:flex-start;color:#5e4740;font-size:.88rem}.classification-option input{margin-top:.1rem}.classification-selected-list{display:grid;grid-gap:.5rem;gap:.5rem}.classification-selected-item{border:1px solid var(--line);border-radius:10px;padding:.5rem .6rem;display:grid;grid-gap:.45rem;gap:.45rem}.classification-selected-label{margin:0;color:#4f3b35;font-weight:600}.classification-inline-field{display:inline-flex;align-items:center;gap:.35rem;color:#5e4740;font-size:.88rem}.classification-inline-field input[type=number]{width:5.2rem;border:1px solid var(--line);border-radius:10px;padding:.3rem .45rem;font:inherit;color:var(--ink);background:#fff}.classification-chip-row{display:flex;flex-wrap:wrap;gap:.35rem}.classification-chip{border:1px solid var(--line);border-radius:999px;padding:.16rem .55rem;background:#fff8ef;color:#624840;font-size:.8rem;font-weight:600}.danger-btn{border:none;border-radius:999px;padding:.45rem .95rem;background:#b5342e;color:#fff}.danger-btn,.ghost-btn{width:-moz-fit-content;width:fit-content;font:inherit;font-weight:700;cursor:pointer}.ghost-btn{border:1px solid var(--line);border-radius:999px;padding:.42rem .92rem;background:#fff;color:#5d4740}.danger-btn:disabled,.ghost-btn:disabled{opacity:.65;cursor:not-allowed}.panel h2{margin:0 0 .6rem;font-family:var(--font-display),serif;font-size:1.4rem}.meta{margin:0;color:#7a655d;font-size:.9rem}.recipe-list{display:grid;grid-gap:.8rem;gap:.8rem;margin-top:.8rem}.recipe-card{border:1px solid var(--line);border-radius:14px;background:#fff;padding:.9rem;display:grid;grid-gap:.35rem;gap:.35rem}.recipe-thumb-wrap{width:100%;aspect-ratio:16/9;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(140deg,#f2c6a1,#e5b090)}.recipe-thumb{width:100%;height:100%;object-fit:cover;display:block}.recipe-card strong{font-family:var(--font-display),serif;font-size:1.2rem}.badge{display:inline-block;width:-moz-fit-content;width:fit-content;border-radius:999px;padding:.18rem .56rem;font-size:.82rem;font-weight:600}.badge.ok{color:var(--ok);background:#e5f4e8}.badge.warn{color:var(--warn);background:#fff1e2}.missing{margin:0;color:#5f4742;font-size:.9rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;margin-top:.5rem;font-size:.92rem}td,th{text-align:left;padding:.5rem .4rem;border-bottom:1px solid var(--line)}th{color:#765f57;font-weight:600}.detail-shell{width:min(920px,100% - 2rem);margin:2rem auto}.back-link{text-decoration:none;font-weight:600}.instruction-list{margin:.6rem 0 0;padding-left:1.1rem}.instruction-list li{margin-bottom:.5rem}.section-block+.section-block{margin-top:1rem}.section-title{margin:.2rem 0 .5rem;font-family:var(--font-display),serif;font-size:1.1rem}@media (max-width:900px){.grid,.inline-fields{grid-template-columns:1fr}.manual-component-header,.manual-components-header{flex-direction:column;align-items:stretch}.manual-component-header .table-action,.manual-components-header .ghost-btn{width:100%}}.pantry-manager-panel{display:grid;grid-gap:.85rem;gap:.85rem}.pantry-manager-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem}.pantry-add-form{display:grid;grid-gap:.5rem;gap:.5rem}.pantry-add-grid{display:grid;grid-template-columns:minmax(160px,1fr) minmax(74px,.42fr) minmax(78px,.44fr) minmax(100px,.55fr) auto;grid-gap:.45rem;gap:.45rem;align-items:center}.missing-add-form input,.missing-add-form select,.pantry-add-grid input,.pantry-add-grid select{width:100%;border:1px solid var(--line);border-radius:10px;padding:.48rem .55rem;font:inherit;color:var(--ink);background:#fff}.pantry-table-wrap{max-height:33rem;overflow:auto}.table-action{border:1px solid var(--line);border-radius:8px;padding:.28rem .5rem;background:#fff8ef;color:#5d4740;font:inherit;font-size:.82rem;font-weight:700;cursor:pointer;white-space:nowrap}.table-action:focus-visible,.table-action:hover{border-color:var(--accent);color:var(--accent);outline:none}.table-action:disabled{opacity:.65;cursor:not-allowed}.table-action.danger{color:#94302b}.missing-ingredient-tools{display:grid;grid-gap:.45rem;gap:.45rem;min-width:15rem}.missing-label{color:var(--warn);font-size:.88rem}.available-label{color:var(--ok);font-weight:700}.substitute-list{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;color:#6f5b52;font-size:.82rem}.substitute-chip{display:inline-flex;align-items:center;border:1px solid #d9c3b1;border-radius:8px;padding:.12rem .38rem;background:#fff8ef;color:#5d4740;font-weight:700}.missing-add-form{display:grid;grid-template-columns:minmax(130px,1fr) minmax(64px,.38fr) minmax(70px,.4fr) minmax(90px,.5fr) auto;grid-gap:.35rem;gap:.35rem;align-items:center}@media (max-width:900px){.missing-add-form,.pantry-add-grid{grid-template-columns:1fr}.missing-add-form .action-btn,.pantry-add-grid .action-btn{width:100%}}