*{box-sizing:border-box}.search-tag{display:inline-flex;align-items:center;flex-wrap:wrap;max-width:100%;border:1px solid var(--line);border-radius:14px;padding:3px;gap:2px}.search-tag .chip{white-space:normal;overflow-wrap:anywhere;max-width:100%}.search-tag .danger{font-size:.75rem;min-height:40px;padding:6px 8px}#tag-delete-dialog{max-width:min(540px,calc(100vw - 24px));overflow-wrap:anywhere} :root{--ink:#293c31;--green:#385445;--green-dark:#243d2e;--sage:#e6ece3;--cream:#f8f5ed;--paper:#fffdf8;--line:#dedfd2;--muted:#6d7467;--rust:#9a4d32;--gold:#ad7929;--shadow:0 8px 26px #293c3109;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--cream);font-size:15px}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,textarea,select{touch-action:manipulation}button,.button{cursor:pointer;border:1px solid transparent;border-radius:8px;min-height:43px;padding:10px 16px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:7px;text-decoration:none;color:var(--ink);background:transparent}button:hover,.button:hover{filter:brightness(.96)}button:disabled{opacity:.48;cursor:wait}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:3px}input,textarea,select{border:1px solid #cbd0c2;border-radius:7px;min-height:43px;padding:10px 12px;background:#fffefa;color:var(--ink);width:100%;min-width:0}input:focus,textarea:focus,select:focus{outline:2px solid #708773;outline-offset:1px}input[type=checkbox]{width:19px;height:19px;min-height:19px;accent-color:var(--green);flex-shrink:0}textarea{resize:vertical;line-height:1.6}label{font-weight:600;display:flex;flex-direction:column;gap:7px;font-size:.85rem}form{display:grid;gap:18px}h1,h2,h3,p{overflow-wrap:anywhere}h1,h2,h3{font-family:Georgia,"Times New Roman",serif;font-weight:500;margin:0;line-height:1.15}h1{font-size:clamp(2rem,4vw,2.8rem);letter-spacing:-1px}h2{font-size:1.6rem}h3{font-size:1.35rem}p{line-height:1.6;margin:10px 0}a{color:var(--green)}[hidden]{display:none!important}.primary{background:var(--green);color:white}.secondary{border-color:var(--line);background:var(--paper)}.quiet{color:var(--green);background:transparent}.quiet:hover{background:var(--sage)}.danger{color:#a13f2b}.muted,.hint{color:var(--muted)}.small,.hint{font-size:.8rem}.hint{margin:0;line-height:1.6}.eyebrow{font-size:.66rem;font-weight:750;letter-spacing:1.9px;display:block;margin-bottom:10px;color:var(--muted)}.masthead{max-width:1264px;margin:auto;padding:26px 32px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:13px}.brand-mark{width:49px;height:52px;display:flex;align-items:center;justify-content:center;border:1px solid #9da98f;border-radius:24px 24px 7px 7px;font:30px Georgia,serif;color:var(--green);position:relative}.brand-mark span{font-size:19px;margin:11px 0 0 -5px}.brand .eyebrow{margin:0 0 4px;font-size:.58rem}.brand-title{font:1.2rem Georgia,serif}.sync-status{font-size:.72rem;color:var(--muted)}#account{display:flex;align-items:center;gap:12px}.tabs{max-width:1200px;margin:0 auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;gap:22px;padding:0 4px}.tabs button{border-radius:0;padding:18px 9px;border-bottom:3px solid transparent;font-size:.87rem;color:var(--muted)}.tabs button[aria-current=page]{color:var(--green);border-bottom-color:var(--green)}.count{font-size:.7rem;background:var(--sage);padding:2px 7px;border-radius:12px}main{max-width:1200px;margin:0 auto;padding:40px 4px 60px;min-height:65vh}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}.section-heading p{margin-bottom:0}.filter-card{background:var(--paper);border:1px solid var(--line);padding:23px;border-radius:12px;box-shadow:var(--shadow);gap:14px}.search-row{display:flex;gap:18px}.wide{flex:1}.filter-row{display:flex;align-items:center;flex-wrap:wrap;gap:18px}.filter-row label:not(.check-label){position:relative}.filter-row input[type=number]{width:115px;padding-right:36px}.unit{position:absolute;right:11px;bottom:13px;font-weight:400;color:var(--muted);font-size:.75rem}.check-label{flex-direction:row;align-items:center;font-size:.86rem;gap:9px;min-height:43px}.filter-row>.check-label{align-self:flex-end}.filter-row>button{align-self:flex-end}.filter-row select{width:auto}.filter-card details{border-top:1px solid var(--line);padding-top:13px}.filter-card summary{font-size:.82rem;cursor:pointer;color:var(--green);font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.chip{border:1px solid var(--line);border-radius:20px;font-size:.75rem;min-height:33px;padding:6px 12px;background:#f6f5ed;font-weight:500}.chip[aria-pressed=true],.chip.active{background:var(--green);color:#fff;border-color:var(--green)}.tag{font-size:.69rem;border-radius:4px;background:var(--sage);padding:4px 8px;display:inline-block;color:var(--green);overflow-wrap:anywhere}.results-heading{display:flex;align-items:center;justify-content:space-between;margin:23px 0 13px}.results-heading p{margin:0;font-size:.85rem;font-weight:600}.recipe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.recipe-card{border:1px solid var(--line);border-radius:11px;background:var(--paper);padding:23px;display:flex;flex-direction:column;min-height:245px;box-shadow:var(--shadow);position:relative;border-top:4px solid #9ba78e}.recipe-card:nth-child(3n+2){border-top-color:#c4a57b}.recipe-card:nth-child(3n){border-top-color:#b18672}.card-top{display:flex;justify-content:space-between;align-items:start;gap:8px}.recipe-title{text-align:left;padding:0;min-height:0;display:block;font:1.5rem Georgia,serif;line-height:1.2;overflow-wrap:anywhere}.favorite-button{padding:3px;min-width:35px;min-height:35px;color:var(--muted);font-size:23px;margin-top:-7px}.favorite-button[aria-pressed=true]{color:var(--rust)}.recipe-meta{font-size:.76rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px 14px;margin:14px 0}.card-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:15px}.card-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:15px;border-top:1px solid #ecece2}.rating{font-size:.76rem;color:var(--gold)}.card-bottom button{font-size:.78rem;min-height:36px;padding:8px 12px}.empty{border:1px dashed #c9cfbf;border-radius:12px;padding:45px 25px;text-align:center;grid-column:1/-1;background:#f3f2e9}.empty h2{margin-bottom:10px}.empty p{color:var(--muted);max-width:440px;margin:8px auto}.pagination{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:28px;font-size:.83rem}footer{border-top:1px solid var(--line);padding:25px 32px;text-align:center;font:1rem Georgia,serif;color:var(--muted)}footer span{font: .75rem system-ui; margin-left:12px}.stack{display:grid;gap:12px;margin-top:24px}.list-row{display:flex;align-items:center;gap:14px;border:1px solid var(--line);background:var(--paper);padding:18px 20px;border-radius:9px;min-width:0}.grow{flex:1;min-width:0}.list-row h3{font-size:1.3rem}.list-row p{margin:5px 0 0}.list-row .actions{display:flex;gap:5px}.inline-form{display:flex;align-items:flex-end;gap:13px;background:var(--paper);padding:22px;border:1px solid var(--line);border-radius:10px;margin-bottom:14px}.info{background:var(--sage);border-radius:8px;padding:15px 20px;font-size:.85rem}.grocery-text{display:block;font-weight:550;white-space:pre-wrap;overflow-wrap:anywhere}.checked .grocery-text{text-decoration:line-through;color:var(--muted)}.sources{font-size:.73rem;color:var(--muted);line-height:1.5;margin-top:5px;overflow-wrap:anywhere}.list-row input[type=checkbox]{align-self:flex-start;margin-top:5px}.badge{background:var(--sage);padding:8px 13px;border-radius:20px;font-size:.8rem}.tag-management{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:25px 0}.tag-management .list-row{justify-content:space-between}.backup{margin-top:45px;padding-top:25px;border-top:1px solid var(--line)}dialog{border:1px solid var(--line);border-radius:16px;padding:28px 32px;width:min(820px,calc(100% - 28px));max-height:90dvh;overflow-y:auto;color:var(--ink);background:var(--paper);box-shadow:0 25px 100px #18291d44}dialog::backdrop{background:#1c3029a6;backdrop-filter:blur(3px)}.dialog-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:10px}.dialog-toolbar .eyebrow{margin:0}.close-dialog{font-size:28px;min-width:44px;padding:0}.dialog-notice{background:var(--sage);padding:12px 15px;border-radius:7px;font-size:.85rem}.dialog-notice.error{background:#f8e7df;color:#8c3422}.detail-header{margin-bottom:22px}.detail-section{border-top:1px solid var(--line);padding-top:24px;margin-top:24px}.detail-section h2{margin-bottom:15px}.ingredient-list{padding:0;list-style:none}.ingredient-list li{padding:11px 0;border-bottom:1px solid #edeee5;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.directions{padding-left:25px}.directions li{line-height:1.75;padding:0 0 16px 8px;white-space:pre-wrap;overflow-wrap:anywhere}.directions li::marker{color:var(--rust);font-weight:700}.review-flags{background:#faf0d8;border-left:3px solid #c49d51;padding:13px 18px;font-size:.83rem}.review-flags p{margin:5px 0}.detail-actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.detail-source{font-size:.8rem;overflow-wrap:anywhere}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.time-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}#recipe-form{margin-top:22px}fieldset{border:1px solid var(--line);border-radius:9px;padding:15px;min-width:0}legend{font-weight:600;font-size:.85rem}.tag-entry{display:flex;gap:10px;align-items:flex-end;margin-top:13px}.editor-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding-top:20px}.auth-card{max-width:510px;margin:65px auto;padding:38px;border:1px solid var(--line);border-radius:15px;background:var(--paper);box-shadow:var(--shadow)}.auth-card p{color:var(--muted)}.auth-card form{margin-top:25px}.auth-card h1{font-size:2.5rem}#notice{position:relative;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 24px;background:#f6e7ce;border-bottom:1px solid #d6ba8c;color:#633d24;font-size:.87rem}#notice.error{background:#f8e7df;color:#8c3422}#notice-text{overflow-wrap:anywhere}.skip{position:absolute;left:10px;top:-100px;background:white;padding:15px;z-index:50}.skip:focus{top:10px}.inline-edit{display:flex;gap:8px;flex-wrap:wrap}.inline-edit input{flex:1;min-width:130px}.note-form{margin-top:16px}.note-form button{justify-self:start}.detail-controls{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.detail-controls label{min-width:150px}.detail-controls button{align-self:flex-end}@media(min-width:1500px){main{padding-top:50px}}@media(max-width:1260px){main,.tabs{margin-left:28px;margin-right:28px}}@media(max-width:850px){.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sync-status{display:none}.tabs{gap:10px}.results-heading>.small{display:none}.section-heading{align-items:flex-start}.section-heading>.primary{white-space:nowrap}.filter-row{gap:14px}.tag-management{grid-template-columns:1fr}}@media(max-width:560px){:root{font-size:14px}.masthead{padding:20px 16px}.brand-title{font-size:1.05rem}.brand-mark{width:39px;height:43px;font-size:25px}.brand{gap:9px}.brand .eyebrow{font-size:.5rem;letter-spacing:1.3px}#logout{font-size:.75rem;padding:8px}.tabs{margin:0 12px;gap:0;justify-content:space-between}.tabs button{font-size:.74rem;padding:15px 5px;gap:4px}.tabs .count{padding:2px 5px}main{margin:0;padding:27px 16px 40px}.section-heading{gap:14px;flex-wrap:wrap;margin-bottom:22px}.section-heading h1{font-size:2.25rem}.section-heading .eyebrow{font-size:.58rem}.section-heading p{font-size:.87rem}.section-heading>.primary{min-height:39px;padding:9px 13px;font-size:.8rem}.search-row{flex-direction:column;gap:14px}.filter-card{padding:17px}.filter-row{gap:12px}.filter-row>.check-label{width:100%}.filter-row input[type=number]{width:100%}.filter-row label:not(.check-label){flex:1;min-width:110px}.filter-row select{width:100%}.recipe-grid{grid-template-columns:1fr;gap:13px}.recipe-card{min-height:210px;padding:20px}.recipe-title{font-size:1.6rem}.results-heading{margin-top:22px}.inline-form{padding:16px;gap:10px}.inline-form button{padding:10px 12px;font-size:.82rem}.list-row{padding:16px 13px;gap:10px;flex-wrap:wrap}.list-row .actions{margin-left:auto}.list-row>.grow{flex-basis:65%}.grocery-row .actions{flex-basis:100%;justify-content:flex-end}.grocery-row .actions button{min-height:34px;padding:6px 12px}.grocery-row{gap:8px}.sources{font-size:.74rem}.form-grid{grid-template-columns:1fr}.time-grid{gap:8px}.time-grid label{font-size:.73rem}dialog{padding:19px;width:calc(100% - 16px);max-height:94dvh;border-radius:12px}dialog h1{font-size:2rem}.detail-actions button{flex:1}.tag-entry{flex-wrap:wrap}.tag-entry .grow{flex-basis:70%}.auth-card{margin:35px 16px;padding:26px}.auth-card h1{font-size:2.2rem}footer{padding:22px 16px}footer span{display:block;margin:8px 0 0}.tag-management .list-row{flex-wrap:nowrap}.backup{margin-top:30px}.grocery-row>.grow{flex-basis:75%}#notice{padding:9px 16px}.inline-edit{width:100%}}
/* Photos stay inside their grid track, regardless of the source dimensions. */
.photo-controls{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.photo-editor{margin:16px 0;padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--sage);min-width:0}
.photo-editor button{margin:6px 8px 0 0;min-height:44px}
.photo-preview{display:block;max-width:100%;width:100%;height:240px;object-fit:contain;border-radius:8px;background:var(--paper)}
.photo-status.error{color:#a13f2b;font-weight:600}
@media(max-width:480px){.photo-controls button{flex:1 1 auto;min-height:44px}.photo-preview{height:190px}.photo-editor{padding:12px}.photo-editor button{max-width:100%}}
.recipe-card{min-width:0}
.card-photo{display:block;width:100%;min-height:0;padding:0;margin:0 0 18px;overflow:hidden;border-radius:7px;background:var(--sage);aspect-ratio:16/10;flex-shrink:0}
.recipe-photo{display:block;width:100%;height:100%;object-fit:cover}
.detail-photo{margin:22px 0;min-width:0}
.detail-photo .recipe-photo{aspect-ratio:16/9;height:auto;max-height:420px;object-fit:cover;border-radius:10px;background:var(--sage)}
.photo-attribution{font-size:.78rem;line-height:1.6;color:var(--muted);margin-top:8px;overflow-wrap:anywhere}
.grocery-export{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:20px}
.grocery-export .hint{flex-basis:100%}
#grocery-print{display:none}
@media print{
  @page{margin:16mm}
  body.printing-groceries{background:white;color:black;font-size:11pt}
  body.printing-groceries> :not(#grocery-print){display:none!important}
  body.printing-groceries>#grocery-print{display:block!important}
  #grocery-print h1{font-size:26pt;letter-spacing:0}
  #grocery-print p{font-size:10pt}
  .print-list{padding:0;list-style:none;margin-top:22px}
  .print-list li{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid #bbb;break-inside:avoid;page-break-inside:avoid}
  .print-checkbox{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border:1px solid black;flex-shrink:0;margin-top:3px;font-size:11px}
  #grocery-print .sources{color:#333;font-size:9pt}
}
