
#page-pantry{ background:#FBF8F2 !important; }
.pn-page{ --pn-green:#2f5d3a; --pn-sage:#7d9e77; --pn-olive:#5f7350; --pn-tint:#eef4ec; --pn-ink:#243447; --pn-body:#5b6470; --pn-line:#e7ede4; --pn-cream:#FBF8F2; font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; color:var(--pn-body); padding-bottom:40px; }
.pn-serif{ font-family:'Playfair Display',Georgia,serif; }
.pn-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; }
.pn-back{ max-width:1180px; margin:0 auto; padding:14px 24px 0; }
.pn-back button{ display:inline-flex; align-items:center; gap:6px; background:transparent; border:1.5px solid rgba(30,45,60,.18); color:var(--pn-ink); border-radius:999px; padding:8px 16px; font-family:inherit; font-size:.86rem; font-weight:600; cursor:pointer; transition:background .15s; }
.pn-back button:hover{ background:#fff; }

.pn-hd{ padding:22px 0 6px; }
.pn-h1{ font-family:'Playfair Display',Georgia,serif; font-weight:700; color:var(--pn-ink); font-size:clamp(2.1rem,5vw,3rem); line-height:1.05; margin:0; }
.pn-sub{ font-family:'Playfair Display',Georgia,serif; font-style:italic; color:#3c4a3f; font-size:clamp(1.05rem,2.4vw,1.35rem); margin:12px 0 0; }
.pn-intro{ color:var(--pn-body); font-size:1rem; line-height:1.6; margin:12px 0 0; max-width:760px; }

.pn-pbar{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; background:#fff; border:1px solid var(--pn-line); border-radius:16px; padding:12px 16px; margin:20px 0 4px; }
.pn-pbar-lab{ font-size:.72rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; color:var(--pn-green); }
.pn-psel{ font-family:inherit; font-size:.92rem; font-weight:600; color:var(--pn-ink); background:#fff; border:1.5px solid var(--pn-line); border-radius:999px; padding:8px 14px; cursor:pointer; outline:none; }
.pn-psel:focus{ border-color:var(--pn-sage); box-shadow:0 0 0 3px rgba(125,158,119,.18); }
.pn-pbar-hint{ font-size:.86rem; color:#7d8a7a; flex:1; min-width:180px; }

.pn-tabs{ display:flex; gap:8px; flex-wrap:wrap; margin:18px 0 22px; }
.pn-tab{ background:#fff; border:1px solid var(--pn-line); color:#516049; border-radius:999px; padding:10px 18px; font-family:inherit; font-size:.9rem; font-weight:600; cursor:pointer; transition:all .16s; }
.pn-tab:hover{ background:var(--pn-tint); }
.pn-tab.pn-on{ background:var(--pn-olive); color:#fff; border-color:var(--pn-olive); }

.pn-ctas{ display:flex; gap:12px; flex-wrap:wrap; margin:0 0 18px; }
.pn-cta-go{ display:inline-flex; align-items:center; gap:9px; background:#fff; border:1px solid var(--pn-line); color:var(--pn-ink); border-radius:14px; padding:13px 18px; font-family:inherit; font-size:.9rem; font-weight:600; cursor:pointer; box-shadow:0 4px 16px rgba(58,74,58,.05); transition:transform .16s, box-shadow .16s, background .16s; }
.pn-cta-go:hover{ transform:translateY(-2px); box-shadow:0 12px 26px rgba(58,74,58,.10); background:#fcfdfb; }
.pn-cta-go.pn-solid{ background:var(--pn-olive); color:#fff; border-color:var(--pn-olive); }
.pn-cta-go.pn-solid:hover{ background:#54663f; }
.pn-cta-em{ font-size:1.1rem; }

.pn-tips{ display:flex; gap:10px; flex-wrap:wrap; margin:0 0 20px; }
.pn-tip{ background:var(--pn-tint); color:#3e5a41; border-radius:999px; padding:7px 14px; font-size:.8rem; font-weight:500; }

.pn-cats{ display:flex; gap:8px; flex-wrap:wrap; margin:0 0 18px; }
.pn-cat{ background:#fff; border:1px solid var(--pn-line); color:#5b6470; border-radius:999px; padding:7px 15px; font-family:inherit; font-size:.83rem; font-weight:600; cursor:pointer; transition:all .15s; }
.pn-cat:hover{ background:var(--pn-tint); }
.pn-cat.pn-on{ background:var(--pn-sage); color:#fff; border-color:var(--pn-sage); }

.pn-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:16px; }
.pn-box{ background:#fff; border:1px solid var(--pn-line); border-radius:20px; padding:20px; box-shadow:0 4px 18px rgba(58,74,58,.05); display:flex; flex-direction:column; }
.pn-box-hd{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.pn-nm{ font-family:'Playfair Display',Georgia,serif; font-weight:700; color:var(--pn-ink); font-size:1.2rem; line-height:1.2; }
.pn-catlab{ font-size:.7rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:#9aa79a; margin-top:3px; }
.pn-dtl{ font-size:.9rem; color:var(--pn-body); margin-top:12px; line-height:1.5; }
.pn-dtl strong{ color:#3f4750; font-weight:600; }
.pn-st{ display:inline-flex; align-items:center; gap:6px; font-size:.76rem; font-weight:700; border-radius:999px; padding:5px 11px; margin-top:12px; align-self:flex-start; }
.pn-st.ok{ background:#e7f0e5; color:#2f5d3a; }
.pn-st.low{ background:#f6ecd5; color:#8a5e18; }
.pn-st.warn{ background:#f4e2da; color:#a4553e; }
.pn-flags{ display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }
.pn-flag{ font-size:.7rem; font-weight:600; color:#5f7350; background:#eef4ec; border-radius:999px; padding:3px 9px; }
.pn-acts{ display:flex; gap:8px; flex-wrap:wrap; margin-top:16px; padding-top:14px; border-top:1px solid #f0f2ee; }
.pn-ab{ flex:1; min-width:0; background:#f6f8f4; border:1px solid #e7ede4; color:#41513f; border-radius:11px; padding:9px 10px; font-family:inherit; font-size:.82rem; font-weight:600; cursor:pointer; transition:background .15s; white-space:nowrap; }
.pn-ab:hover{ background:#eaf1e7; }
.pn-ab.pn-key{ background:var(--pn-olive); color:#fff; border-color:var(--pn-olive); flex-basis:100%; }
.pn-ab.pn-key:hover{ background:#54663f; }

.pn-empty{ text-align:center; background:#fff; border:1px dashed #d8e0d5; border-radius:24px; padding:52px 26px; }
.pn-empty-em{ font-size:2.6rem; }
.pn-empty-h{ font-family:'Playfair Display',Georgia,serif; font-weight:700; color:var(--pn-ink); font-size:1.5rem; margin:12px 0 8px; }
.pn-empty-p{ color:var(--pn-body); max-width:440px; margin:0 auto 22px; line-height:1.6; }

.pn-lead{ background:#fff; border:1px solid var(--pn-line); border-radius:20px; padding:22px 24px; margin:0 0 18px; display:flex; align-items:center; gap:18px; box-shadow:0 4px 18px rgba(58,74,58,.05); }
.pn-lead-em{ width:58px; height:58px; border-radius:18px; background:var(--pn-tint); display:grid; place-items:center; font-size:1.7rem; flex:none; }
.pn-lead-h{ font-family:'Playfair Display',Georgia,serif; font-weight:700; color:var(--pn-ink); font-size:1.35rem; margin:0 0 4px; }
.pn-lead-p{ color:var(--pn-body); font-size:.94rem; margin:0; line-height:1.5; }

.pn-rgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; }
.pn-rbox{ background:#fff; border:1px solid var(--pn-line); border-radius:20px; padding:20px; box-shadow:0 4px 18px rgba(58,74,58,.05); display:flex; flex-direction:column; }
.pn-r-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.pn-r-nm{ font-family:'Playfair Display',Georgia,serif; font-weight:700; color:var(--pn-ink); font-size:1.25rem; line-height:1.2; }
.pn-r-time{ font-size:.82rem; color:#8a8578; margin-top:4px; }
.pn-match{ font-size:.76rem; font-weight:800; border-radius:999px; padding:6px 12px; white-space:nowrap; flex:none; }
.pn-match.g{ background:#e2efdd; color:#2f5d3a; }
.pn-match.a{ background:#f7ecd3; color:#8a5e18; }
.pn-match.r{ background:#f4ddd4; color:#a4553e; }
.pn-r-miss{ font-size:.88rem; color:var(--pn-body); margin-top:14px; line-height:1.5; }
.pn-r-miss strong{ color:#3f4750; font-weight:600; }
.pn-r-prof{ display:flex; gap:6px; flex-wrap:wrap; margin-top:12px; }
.pn-r-suit{ font-size:.72rem; font-weight:600; color:#516049; background:#f1f5ef; border:1px solid #e4ebe1; border-radius:999px; padding:4px 10px; }
.pn-r-note{ background:var(--pn-tint); border-radius:12px; padding:11px 13px; font-size:.85rem; color:#3e5a41; margin-top:14px; line-height:1.45; display:flex; gap:8px; }
.pn-r-acts{ display:flex; gap:8px; flex-wrap:wrap; margin-top:16px; padding-top:14px; border-top:1px solid #f0f2ee; }

.pn-plan{ display:flex; flex-direction:column; gap:14px; }
.pn-day{ background:#fff; border:1px solid var(--pn-line); border-radius:18px; padding:16px 18px; box-shadow:0 3px 14px rgba(58,74,58,.04); }
.pn-day-nm{ font-family:'Playfair Display',Georgia,serif; font-weight:700; color:var(--pn-ink); font-size:1.1rem; margin:0 0 10px; }
.pn-slot{ display:flex; align-items:flex-start; gap:12px; padding:11px; border-radius:12px; background:#f8faf7; margin-bottom:8px; }
.pn-slot:last-child{ margin-bottom:0; }
.pn-slot-time{ font-size:.7rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; color:#9aa79a; width:74px; flex:none; padding-top:3px; }
.pn-slot-main{ flex:1; min-width:0; }
.pn-slot-rc{ font-weight:700; color:var(--pn-ink); font-size:.98rem; }
.pn-plabel{ display:inline-block; font-size:.72rem; font-weight:700; color:#5f7350; background:#eef4ec; border-radius:999px; padding:3px 10px; margin-left:8px; }
.pn-slot-note{ font-size:.84rem; color:#7d8a7a; margin-top:4px; line-height:1.45; }
.pn-slot-acts{ display:flex; gap:6px; flex-wrap:wrap; margin-top:9px; }
.pn-sb{ background:#fff; border:1px solid #e2e9de; color:#4a5a47; border-radius:9px; padding:6px 11px; font-family:inherit; font-size:.78rem; font-weight:600; cursor:pointer; transition:background .15s; }
.pn-sb:hover{ background:#eef4ec; }
.pn-sb.pn-key{ background:var(--pn-olive); color:#fff; border-color:var(--pn-olive); }
.pn-sb.pn-key:hover{ background:#54663f; }
.pn-addmeal{ background:transparent; border:1.5px dashed #cdd8c8; color:#6b7a5f; border-radius:12px; padding:10px; width:100%; font-family:inherit; font-size:.85rem; font-weight:600; cursor:pointer; transition:background .15s; }
.pn-addmeal:hover{ background:#f4f7f2; }

.pn-trolley{ display:flex; flex-direction:column; gap:16px; }
.pn-grp{ background:#fff; border:1px solid var(--pn-line); border-radius:18px; padding:18px 20px; box-shadow:0 3px 14px rgba(58,74,58,.04); }
.pn-grp-hd{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.pn-grp-nm{ font-family:'Playfair Display',Georgia,serif; font-weight:700; color:var(--pn-ink); font-size:1.08rem; display:flex; align-items:center; gap:9px; }
.pn-grp-em{ font-size:1.05rem; }
.pn-grp-count{ font-size:.76rem; font-weight:700; color:#9aa79a; }
.pn-ln{ display:flex; align-items:flex-start; gap:12px; padding:10px 0; border-bottom:1px solid #f2f4f0; }
.pn-ln:last-child{ border-bottom:none; }
.pn-ln-check{ width:20px; height:20px; border-radius:6px; border:1.5px solid #cdd8c8; flex:none; margin-top:2px; cursor:pointer; background:#fff; }
.pn-ln-main{ flex:1; min-width:0; }
.pn-ln-nm{ font-weight:600; color:var(--pn-ink); font-size:.96rem; }
.pn-src{ font-size:.78rem; color:#9aa79a; margin-top:2px; }
.pn-ln-x{ background:transparent; border:none; color:#b9c2b4; font-size:1rem; cursor:pointer; padding:2px 6px; }
.pn-ln-x:hover{ color:#7d8a7a; }
.pn-grp-empty{ color:#a7b0a4; font-size:.88rem; font-style:italic; padding:4px 0; }

/* modals */
.pn-modal{ position:fixed; inset:0; z-index:300001; display:none; align-items:center; justify-content:center; padding:20px; background:rgba(36,52,71,.5); -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px); }
.pn-modal.pn-on{ display:flex; }
.pn-mb{ background:#FBF8F2; width:100%; max-width:540px; max-height:88vh; overflow:auto; border-radius:24px; box-shadow:0 30px 80px rgba(36,52,71,.35); border:1px solid var(--pn-line); position:relative; }
.pn-mx{ position:absolute; top:15px; right:15px; width:34px; height:34px; border-radius:50%; border:none; background:#eef4ec; color:#4a5a47; font-size:.95rem; cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:2; }
.pn-mx:hover{ background:#e2ebde; }
.pn-mh{ padding:26px 28px 2px; }
.pn-mh-h{ font-family:'Playfair Display',Georgia,serif; font-weight:700; color:var(--pn-ink); font-size:1.5rem; margin:0 0 6px; }
.pn-mh-p{ color:var(--pn-body); font-size:.93rem; margin:0; line-height:1.5; }
.pn-mbody{ padding:20px 28px 6px; }
.pn-fld{ margin-bottom:14px; }
.pn-lab{ display:block; font-size:.8rem; font-weight:600; color:#4a5a47; margin-bottom:6px; }
.pn-modal input, .pn-modal select, .pn-modal textarea{ width:100%; box-sizing:border-box; font-family:inherit; font-size:.94rem; color:var(--pn-ink); background:#fff; border:1px solid #dbe4d7; border-radius:12px; padding:11px 13px; outline:none; transition:border-color .15s, box-shadow .15s; }
.pn-modal input:focus, .pn-modal select:focus, .pn-modal textarea:focus{ border-color:var(--pn-sage); box-shadow:0 0 0 3px rgba(125,158,119,.16); }
.pn-modal textarea{ min-height:70px; resize:vertical; }
.pn-row2{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.pn-toggle{ display:flex; align-items:center; justify-content:space-between; gap:10px; background:#fff; border:1px solid #dbe4d7; border-radius:12px; padding:11px 14px; margin-bottom:12px; }
.pn-toggle span{ font-size:.9rem; color:#41513f; font-weight:500; }
.pn-sw{ width:44px; height:25px; border-radius:999px; background:#d5ddd1; border:none; position:relative; cursor:pointer; flex:none; transition:background .18s; }
.pn-sw::after{ content:""; position:absolute; top:3px; left:3px; width:19px; height:19px; border-radius:50%; background:#fff; transition:transform .18s; box-shadow:0 1px 3px rgba(0,0,0,.2); }
.pn-sw.pn-swon{ background:var(--pn-sage); }
.pn-sw.pn-swon::after{ transform:translateX(19px); }
.pn-mf{ padding:16px 28px 26px; display:flex; gap:12px; justify-content:flex-end; flex-wrap:wrap; }
.pn-btn{ background:var(--pn-olive); color:#fff; border:none; border-radius:999px; padding:12px 24px; font-family:inherit; font-size:.92rem; font-weight:600; cursor:pointer; transition:background .18s, transform .18s; }
.pn-btn:hover{ background:#54663f; transform:translateY(-1px); }
.pn-btn2{ background:transparent; color:var(--pn-body); border:1px solid #dbe4d7; border-radius:999px; padding:12px 22px; font-family:inherit; font-size:.92rem; font-weight:600; cursor:pointer; }
.pn-btn2:hover{ background:#f1f5ef; color:var(--pn-ink); }

.pn-flash{ position:fixed; left:50%; bottom:26px; transform:translateX(-50%) translateY(20px); background:#2f5d3a; color:#fff; padding:13px 22px; border-radius:14px; font-size:.9rem; font-weight:600; box-shadow:0 14px 40px rgba(47,93,58,.4); z-index:300002; opacity:0; pointer-events:none; transition:opacity .25s, transform .25s; max-width:90vw; text-align:center; }
.pn-flash.pn-show{ opacity:1; transform:translateX(-50%) translateY(0); }

#page-pantry a:focus-visible, #page-pantry button:focus-visible, #page-pantry select:focus-visible{ outline:2px solid var(--pn-olive); outline-offset:2px; }
@media(max-width:600px){ .pn-row2{ grid-template-columns:1fr; } .pn-slot-time{ width:100%; } .pn-slot{ flex-direction:column; gap:4px; } }
@media (prefers-reduced-motion: reduce){ #page-pantry *{ transition:none !important; } }
