.fp-plans { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px; }
.fp-card { border:1px solid var(--border); background:var(--card); padding:20px; border-radius:14px; min-width:0; }
.fp-card-heading { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.fp-card h4 { margin:0; font-size:16px; overflow-wrap:anywhere; }
.fp-card strong { white-space:nowrap; }
.fp-card p { margin:12px 0; font-size:13px; }
.fp-card .fp-overdue { color:var(--red); }
.fp-card-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.fp-card-actions button { padding:8px 10px; font-size:13px; }
.fp-card-actions [data-delete-plan] { color:var(--muted); }
.fp-paused { opacity:.75; }
.fp-notice { padding:14px; background:color-mix(in srgb,var(--accent) 12%,var(--card)); border:1px solid var(--border); border-radius:12px; }
.fp-dialog { position:fixed; inset:0; width:460px; max-width:calc(100vw - 24px); max-height:90dvh; margin:auto; overflow-y:auto; background:var(--card); color:var(--text); border:1px solid var(--border); padding:24px; border-radius:18px; box-sizing:border-box; }
.fp-dialog::backdrop { background:#0009; }
.fp-dialog * { box-sizing:border-box; min-width:0; }
.fp-dialog header { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; margin-bottom:18px; }
.fp-dialog h3 { margin:0; font-size:20px; overflow-wrap:anywhere; }
.fp-dialog button,.fp-dialog input,.fp-dialog select { font:inherit; color:var(--text); background:var(--bg); border:1px solid var(--border); border-radius:10px; padding:10px 12px; min-height:44px; }
.fp-dialog button { cursor:pointer; }
.fp-dialog button.fw-primary { background:var(--accent); color:white; }
.fp-dialog button:disabled { opacity:.6; cursor:wait; }
.fp-dialog .fp-close { border:0; background:transparent; font-size:24px; padding:0 6px; margin-top:-10px; }
.fp-dialog label { display:block; font-size:13px; margin:12px 0; }
.fp-dialog input,.fp-dialog select { display:block; width:100%; margin-top:6px; font-size:16px; }
.fp-dialog input.fp-amount { font-size:30px; font-weight:600; }
.fp-dialog .fp-check { display:flex; gap:8px; align-items:center; }
.fp-dialog input[type=checkbox] { width:18px; height:18px; min-height:18px; margin:0; }
.fp-two { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.fp-dialog footer { display:flex; justify-content:flex-end; gap:10px; margin-top:20px; }
.fp-dialog .fp-error { color:var(--red); font-size:14px; }
.fp-hint { color:var(--muted); font-size:13px; line-height:1.5; }
.fp-dialog summary { cursor:pointer; color:var(--muted); padding:12px 0; }
.fp-shopping { display:flex; justify-content:space-between; align-items:center; gap:16px; margin:16px 0 0; padding:16px; background:color-mix(in srgb,var(--accent) 10%,var(--card)); border:1px solid var(--border); border-radius:12px; }
.fp-shopping b { display:block; font-size:14px; }
.fp-shopping small { display:block; color:var(--muted); margin-top:6px; font-size:12px; line-height:1.5; }
.fp-shopping button { flex-shrink:0; cursor:pointer; min-height:44px; padding:10px 14px; border-radius:10px; border:1px solid var(--border); background:var(--accent); color:#fff; }
#fpUpcoming { margin:0 0 24px; }
@media(max-width:600px) {
 .fw-toolbar nav button { padding:8px 4px; font-size:13px; }
 .fp-plans { grid-template-columns:1fr; } .fp-card { padding:16px; }
 #fwPlans .fw-section-head { align-items:flex-start; flex-wrap:wrap; }
 .fp-shopping { flex-direction:column; align-items:stretch; gap:12px; }
 .fp-dialog { top:auto; bottom:0; width:100%; max-width:100%; max-height:92dvh; border-radius:20px 20px 0 0; padding:20px 18px calc(20px + env(safe-area-inset-bottom)); }
 .fp-two { grid-template-columns:1fr; gap:0; }
}
