/**
 * DS1 .fp-c-* component library.
 * RP B4 -- ported verbatim from the source theme's assets/css/components.css
 * (theme 2.4.0+, live-verified 2026-08-09). Mobile breakpoint: 600px. No build pipeline.
 * Only the pieces B4 (forms + sign-in) uses are ported here: Modal, Page-head, Empty state,
 * Form fields. List-detail/Tabs/Search-filter/Badge belong to dashboard/nav rows (C17) and
 * are intentionally left for that row rather than ported speculatively.
 */

/* ============================================================
 * Modal (B1) -- used for confirm-before-submit and draft-recovery prompts
 * ========================================================= */
body.fp-c-modal-lock{overflow:hidden;position:relative;width:100%;}
.fp-c-modal{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:24px;}
.fp-c-modal[hidden]{display:none;}
.fp-c-modal__backdrop{position:absolute;inset:0;background:rgba(46,46,46,0.55);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);}
.fp-c-modal__card{position:relative;background:var(--surface);border:1px solid var(--rule);border-radius:14px;box-shadow:var(--shadow-pop);width:100%;max-width:640px;max-height:calc(100vh - 48px);display:flex;flex-direction:column;overflow:hidden;animation:fpcModalIn 160ms ease-out;}
@keyframes fpcModalIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}
.fp-c-modal--narrow .fp-c-modal__card{max-width:480px;}
.fp-c-modal--wide .fp-c-modal__card{max-width:880px;}
.fp-c-modal--full .fp-c-modal__card{max-width:95vw;max-height:95vh;}
.fp-c-modal__head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--rule);}
.fp-c-modal__title{flex:1;font-family:var(--serif);font-weight:600;font-size:22px;line-height:1.15;color:var(--ink);margin:0;}
.fp-c-modal__close{background:none;border:none;font-size:28px;line-height:1;color:var(--taupe);cursor:pointer;width:36px;height:36px;border-radius:999px;display:flex;align-items:center;justify-content:center;transition:background 0.12s ease,color 0.12s ease;}
.fp-c-modal__close:hover{background:var(--linen-deep);color:var(--ink);}
.fp-c-modal__close:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.fp-c-modal__body{padding:20px;overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch;}
.fp-c-modal__foot{padding:14px 20px;border-top:1px solid var(--rule);display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;}
@media (max-width:600px){
  .fp-c-modal{padding:0;align-items:flex-end;}
  .fp-c-modal__card{max-width:100%;max-height:92vh;border-radius:14px 14px 0 0;}
  .fp-c-modal--full .fp-c-modal__card{max-height:100vh;border-radius:0;}
}

/* ============================================================
 * Page-head (B6)
 * ========================================================= */
.fp-c-pagehead{display:flex;align-items:flex-start;gap:16px;padding:20px 0 16px;margin-bottom:16px;border-bottom:1px solid var(--rule);}
.fp-c-pagehead__bar{width:4px;align-self:stretch;background:var(--accent);border-radius:2px;min-height:36px;margin-top:2px;}
.fp-c-pagehead[data-accent="clay"] .fp-c-pagehead__bar{background:var(--clay);}
.fp-c-pagehead[data-accent="brick"] .fp-c-pagehead__bar{background:var(--brick);}
.fp-c-pagehead__text{flex:1;min-width:0;}
.fp-c-pagehead__title{margin:0;}
.fp-c-pagehead__subtitle{margin:4px 0 0;color:var(--taupe);}
.fp-c-pagehead__actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
@media (max-width:600px){
  .fp-c-pagehead{flex-wrap:wrap;}
  .fp-c-pagehead__actions{width:100%;margin-top:12px;}
}

/* ============================================================
 * Empty state (B8)
 * ========================================================= */
.fp-c-empty{text-align:center;padding:48px 24px;color:var(--taupe);}
.fp-c-empty__icon{display:inline-flex;width:64px;height:64px;align-items:center;justify-content:center;border-radius:50%;background:var(--linen-deep);color:var(--accent-deep);margin-bottom:12px;}
.fp-c-empty__title{font-family:var(--serif);font-weight:600;font-size:20px;color:var(--ink);margin:0 0 6px;}
.fp-c-empty__body{margin:0 auto;max-width:420px;font-size:14px;line-height:1.5;color:var(--charcoal-soft);}
.fp-c-empty__cta{margin-top:16px;}

/* ============================================================
 * Form fields (B9)
 * ========================================================= */
.fp-c-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.fp-c-field__req{color:var(--brick);margin-left:4px;font-weight:700;}
.fp-c-field__error{color:var(--brick);}
.fp-c-field.is-error .field-input,
.fp-c-field.is-error .field-textarea{border-color:var(--brick) !important;box-shadow:0 0 0 3px rgba(140,32,32,0.10) !important;}
.fp-c-field--checkbox .fp-c-field__check{display:inline-flex;align-items:center;gap:10px;cursor:pointer;min-height:44px;}
.fp-c-field--checkbox input[type="checkbox"]{width:18px;height:18px;accent-color:var(--accent);flex:0 0 18px;}
.fp-c-field__check-label{font-size:15px;color:var(--ink);}
.fp-c-field--radios{border:none;padding:0;margin:0 0 14px;}
.fp-c-field--radios .field-label{margin-bottom:8px;}
.fp-c-field__radios{display:flex;flex-direction:column;gap:6px;}
.fp-c-field__radio{display:inline-flex;align-items:center;gap:10px;cursor:pointer;min-height:44px;}
.fp-c-field__radio input[type="radio"]{accent-color:var(--accent);width:18px;height:18px;}

/* ============================================================
 * RP B4 additions (not in source -- new field kinds the WP form system never needed
 * because fp-forms never had platform-native voice dictation or draft-autosave chrome)
 * ========================================================= */
.fp-c-field__voice-btn{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--rule-strong);border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600;color:var(--accent);cursor:pointer;min-height:32px;transition:border-color 0.15s,background 0.15s,color 0.15s;}
.fp-c-field__voice-btn:hover{border-color:var(--accent);background:rgba(107,124,94,0.08);}
.fp-c-field__voice-btn[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#FBF8F2;}
.fp-c-field__voice-btn:disabled{opacity:0.5;cursor:not-allowed;}
.fp-c-autosave{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);}
.fp-c-autosave[data-state="saving"]{color:var(--taupe);}
.fp-c-autosave[data-state="saved"]{color:var(--ok);}
.fp-c-autosave[data-state="error"]{color:var(--danger);}
.fp-c-photo-input{display:flex;flex-direction:column;gap:8px;}
.fp-c-photo-input__preview{display:flex;flex-wrap:wrap;gap:8px;}
.fp-c-photo-input__thumb{width:72px;height:72px;border-radius:10px;object-fit:cover;border:1px solid var(--rule);}
