/* ============================================================================
   FOUR WINDS MINISTRY — components.css
   Reusable component primitives. Requires colors_and_type.css.
   ============================================================================ */

/* ---- Buttons --------------------------------------------------------------
   Square-ish, confident, streetwear. Default radius is small (not pill) to
   match the gritty/utility feel; .fw-btn--pill available for softer contexts.
*/
.fw-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--font-display);font-weight:800;font-size:14px;
  letter-spacing:.08em;text-transform:uppercase;
  padding:14px 26px;border-radius:var(--radius-sm);border:2px solid transparent;
  cursor:pointer;text-decoration:none;line-height:1;
  transition:transform .12s ease, background-color .15s ease, color .15s ease, opacity .15s ease, backdrop-filter .15s ease;
  -webkit-tap-highlight-color:transparent;
}
.fw-btn:active{transform:translateY(1px) scale(.99);}
.fw-btn--primary{background:var(--flare);color:var(--day);}
.fw-btn--primary:hover{background:#e23f0f;}
.fw-btn--dark{background:var(--night);color:var(--day);}
.fw-btn--dark:hover{background:var(--shadow);}
.fw-btn--ghost{background:transparent;color:var(--fg);border-color:var(--night);}
.fw-btn--ghost:hover{background:var(--night);color:var(--day);}
.fw-btn--foam{background:var(--sea-foam);color:var(--moss);}
.fw-btn--foam:hover{background:var(--foam);color:var(--day);}
.fw-btn--pill{border-radius:var(--radius-pill);}
.fw-btn--sm{padding:9px 16px;font-size:12px;}
.fw-btn--lg{padding:18px 34px;font-size:16px;}

/* Glass hover — frosted, translucent fill on hover. Stack onto any button
   (best on light-text variants: --primary / --dark / --foam-hover / --ghost-hover).
   On hover the button's own fill gives way to a blurred warm-grey scrim. */
.fw-btn--glass:hover{
  background-color:#9690907a;
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  color:var(--day);
}
.fw-btn--glass.fw-btn--ghost{border-color:transparent;}

/* Icons inside buttons: the base .fw-btn is already inline-flex with gap, so a
   leading or trailing <i class="ph …"> just works. These tune size + optics. */
.fw-btn .ph,.fw-btn [class^="ph-"]{font-size:1.15em;line-height:0;}
.fw-btn--sm .ph,.fw-btn--sm [class^="ph-"]{font-size:1.05em;}
.fw-btn--lg .ph,.fw-btn--lg [class^="ph-"]{font-size:1.25em;}
/* nudge optical balance when an icon leads/trails text */
.fw-btn--icon-l{padding-left:20px;}
.fw-btn--icon-r{padding-right:20px;}

/* Icon-only square button — equal padding, 1:1 footprint */
.fw-btn--icon{padding:13px;aspect-ratio:1/1;}
.fw-btn--icon .ph,.fw-btn--icon [class^="ph-"]{font-size:1.35em;}
.fw-btn--icon.fw-btn--sm{padding:9px;}
.fw-btn--icon.fw-btn--lg{padding:17px;}
.fw-btn--icon.fw-btn--pill{border-radius:var(--radius-pill);}

/* ---- Tags / badges -------------------------------------------------------- */
.fw-tag{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-display);font-weight:800;font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;
  padding:6px 12px;border-radius:var(--radius-pill);
  background:var(--night);color:var(--day);line-height:1;
}
.fw-tag--foam{background:var(--sea-foam);color:var(--moss);}
.fw-tag--flare{background:var(--flare);color:var(--day);}
.fw-tag--outline{background:transparent;color:var(--fg);border:1.5px solid var(--night);}
.fw-tag--gold{background:var(--golden-hour);color:var(--night);}

/* ---- Inputs --------------------------------------------------------------- */
.fw-field{display:flex;flex-direction:column;gap:7px;}
.fw-field > label{
  font-family:var(--font-display);font-weight:800;font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--fg-2);
}
.fw-input,.fw-select,.fw-textarea{
  font-family:var(--font-body);font-size:16px;color:var(--fg);
  background:var(--day);border:1.5px solid var(--border);border-radius:var(--radius-sm);
  padding:13px 15px;outline:none;width:100%;box-sizing:border-box;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.fw-input::placeholder{color:var(--fg-3);}
/* Select: custom chevron with breathing room on the right */
.fw-select{
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  padding-right:42px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 256 256'%3E%3Cpath fill='%23797979' d='M213.66 101.66l-80 80a8 8 0 0 1-11.32 0l-80-80a8 8 0 0 1 11.32-11.32L128 164.69l74.34-74.35a8 8 0 0 1 11.32 11.32Z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;
}
.fw-input:focus,.fw-select:focus,.fw-textarea:focus{
  border-color:var(--flare);box-shadow:0 0 0 3px rgba(254,88,36,0.18);
}

/* ---- Card ----------------------------------------------------------------- */
.fw-card{
  background:var(--day);border:1.5px solid var(--border-on-light);border-radius:var(--radius-md);
  padding:var(--space-5);
}
.fw-card--soft{border:1px solid var(--line);box-shadow:var(--elev-2);}
.fw-card--kraft{background:var(--bg-kraft);border-color:var(--night);}
.fw-card--dark{background:var(--shadow);border-color:var(--shadow);color:var(--fg-inverse);}
.fw-card--white{background:var(--white);border-color:var(--border-on-light);}
.fw-card--foam{background:var(--foam);border-color:var(--foam);color:var(--foam-deep);}
.fw-card--flare{background:var(--flare);border-color:var(--flare);color:var(--day);}
.fw-card--sunshine{background:var(--sunshine);border-color:var(--sunshine);color:var(--sunshine-deep);}
.fw-card--sea-foam{background:var(--sea-foam);border-color:var(--sea-foam);color:var(--sea-foam-deep);}
.fw-card--sky{background:var(--sky);border-color:var(--sky);color:var(--sky-deep);}
.fw-card--golden-hour{background:var(--golden-hour);border-color:var(--golden-hour);color:var(--golden-hour-deep);}
.fw-card--shore{background:var(--shore);border-color:var(--shore);color:var(--shore-deep);}

/* Fully-clickable card — wrap the entire card in an <a> or <button> */
a.fw-card--btn{text-decoration:none;color:inherit;}
button.fw-card--btn{font:inherit;text-align:left;appearance:none;}
.fw-card--btn{cursor:pointer;transition:transform .12s ease, box-shadow .15s ease;}
.fw-card--btn:hover{transform:translateY(-2px);box-shadow:var(--elev-2);}
.fw-card--btn:active{transform:translateY(0);box-shadow:none;}

/* ---- Divider / rule ------------------------------------------------------- */
.fw-rule{height:2px;background:var(--night);border:0;}
.fw-rule--hair{height:1px;background:var(--line);}

/* ---- Text color utilities ------------------------------------------------- */
.fw-text-flare{color:var(--flare)!important;}
.fw-text-sunshine{color:var(--sunshine)!important;}
.fw-text-foam{color:var(--foam)!important;}
.fw-text-sea-foam{color:var(--sea-foam)!important;}
.fw-text-moss{color:var(--moss)!important;}
.fw-text-night{color:var(--night)!important;}
.fw-text-day{color:var(--day)!important;}
.fw-text-muted{color:var(--fg-3)!important;}

/* ---- Alerts / notifications ("nuggets") -----------------------------------
   Status messaging built on the system colors. Default is a soft tinted
   surface; .fw-alert--solid for a louder filled version. Pair with a Phosphor
   icon. Set the status with a modifier: --success / --danger / --info / --warning.
*/
.fw-alert{
  display:flex;align-items:flex-start;gap:12px;
  padding:14px 16px;border-radius:var(--radius-md);
  border:1.5px solid transparent;background:var(--shell);
  font-family:var(--font-body);color:var(--fg);
}
.fw-alert__icon{flex:none;line-height:0;margin-top:1px;font-size:20px;}
.fw-alert__body{display:flex;flex-direction:column;gap:2px;min-width:0;}
.fw-alert__title{font-family:var(--font-display);font-weight:800;font-size:13px;
  letter-spacing:.06em;text-transform:uppercase;line-height:1.2;}
.fw-alert__text{font-size:14px;line-height:1.45;color:var(--fg-2);}
.fw-alert__close{margin-left:auto;flex:none;background:none;border:0;cursor:pointer;
  line-height:0;font-size:18px;color:var(--fg-3);padding:2px;}
.fw-alert__close:hover{color:var(--fg);}

.fw-alert--success{background:var(--success-soft);border-color:var(--success);}
.fw-alert--success .fw-alert__icon,.fw-alert--success .fw-alert__title{color:var(--success-deep);}
.fw-alert--danger{background:var(--danger-soft);border-color:var(--danger);}
.fw-alert--danger .fw-alert__icon,.fw-alert--danger .fw-alert__title{color:var(--danger-deep);}
.fw-alert--info{background:var(--info-soft);border-color:var(--info);}
.fw-alert--info .fw-alert__icon,.fw-alert--info .fw-alert__title{color:var(--info-deep);}
.fw-alert--warning{background:var(--warning-soft);border-color:var(--warning);}
.fw-alert--warning .fw-alert__icon,.fw-alert--warning .fw-alert__title{color:var(--warning-deep);}

/* Solid variant — filled status color, light text */
.fw-alert--solid{border-color:transparent;color:var(--day);}
.fw-alert--solid .fw-alert__text{color:rgba(247,243,240,.9);}
.fw-alert--solid .fw-alert__icon,.fw-alert--solid .fw-alert__title{color:var(--day);}
.fw-alert--solid.fw-alert--success{background:var(--success);}
.fw-alert--solid.fw-alert--danger{background:var(--danger);}
.fw-alert--solid.fw-alert--info{background:var(--info);}
.fw-alert--solid.fw-alert--warning{background:var(--warning);}
.fw-alert--solid.fw-alert--warning{color:var(--night);}
.fw-alert--solid.fw-alert--warning .fw-alert__icon,
.fw-alert--solid.fw-alert--warning .fw-alert__title{color:var(--night);}
.fw-alert--solid.fw-alert--warning .fw-alert__text{color:rgba(17,17,17,.75);}

/* Inline field validation message */
.fw-hint{display:flex;align-items:center;gap:6px;font-family:var(--font-body);
  font-size:12.5px;line-height:1.3;color:var(--fg-3);}
.fw-hint .ph,.fw-hint [class^="ph-"]{font-size:14px;line-height:0;}
.fw-hint--error{color:var(--danger-deep);}
.fw-hint--success{color:var(--success-deep);}
.fw-input--error{border-color:var(--danger)!important;}
.fw-input--error:focus{box-shadow:0 0 0 3px rgba(196,74,54,0.18)!important;}
.fw-input--success{border-color:var(--success)!important;}

/* ---- Icons ----------------------------------------------------------------
   Icons use Phosphor (https://phosphoricons.com) via CDN. Add to <head>:
     <link rel="stylesheet" href="https://unpkg.com/@phosphor-icons/web@2.1.1/src/regular/style.css">
     <link rel="stylesheet" href="https://unpkg.com/@phosphor-icons/web@2.1.1/src/bold/style.css">
   Then:  <i class="ph ph-wind"></i>   (regular)   <i class="ph-bold ph-cross"></i> (bold)
   Icons inherit `color` and `font-size` from their parent, so size them with
   font-size. .fw-ico is an optional sizing helper. */
.fw-ico{font-size:1.25em;line-height:0;vertical-align:-0.18em;}
.fw-ico--sm{font-size:1em;}
.fw-ico--lg{font-size:1.6em;}
.fw-ico--xl{font-size:2.4em;}
