html.fht-modal-open, html.fht-modal-open body { overflow: hidden !important; }
.fht-modal { position: fixed; inset: 0; z-index: 2147483600; display: none; }
.fht-modal.open { display: block; }
.fht-backdrop { position: absolute; inset: 0; background: rgba(4, 34, 28, .54); backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px); }
.fht-panel { position: absolute; inset: 5vh max(18px, calc((100vw - 980px)/2)); max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; border: 1px solid rgba(7,58,48,.12); border-radius: 28px; background: #fffefb; color: #073a30; box-shadow: 0 30px 90px rgba(0,0,0,.22); }
.fht-topbar { flex: 0 0 auto; min-height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 16px 22px; border-bottom: 1px solid rgba(7,58,48,.09); background: rgba(255,254,251,.96); }
.fht-topbar > span { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 850; letter-spacing: -.01em; }
.fht-top-mark { width: 15px; height: 15px; color: #18b982; }
.fht-topbar button { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 999px; background: #eef8f3; color: #073a30; font-size: 23px; line-height: 1; }
.fht-body { flex: 1; overflow: auto; padding: 34px; }
.fht-body svg { display: block; }
.fht-kicker { margin: 0 0 10px; color: #0b765e; font-size: 11px; font-weight: 900; letter-spacing: .12em; text-transform: uppercase; }
.fht-body h2 { margin: 0; font-size: clamp(34px, 5vw, 58px); line-height: .97; letter-spacing: -.055em; color: #073a30; }
.fht-body p { color: #60706b; line-height: 1.6; }
.fht-primary, .fht-secondary { min-height: 46px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 0 18px; border-radius: 999px; font: inherit; font-size: 13px; font-weight: 850; cursor: pointer; }
.fht-primary { border: 1px solid #073a30; background: #073a30; color: #fff; }
.fht-secondary { border: 1px solid rgba(7,58,48,.14); background: #fff; color: #073a30; }
.fht-btn-mark { width: 15px; height: 15px; color: #20d19a; }
.fht-loading, .fht-error, .fht-empty { min-height: 420px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 44px 20px; }
.fht-loading > svg, .fht-error > svg, .fht-hero-mark > svg { width: 42px; height: 42px; color: #18b982; margin-bottom: 18px; }
.fht-loading strong { font-size: 20px; }
.fht-loading span { margin-top: 4px; color: #80908b; font-size: 13px; }
.fht-error h2, .fht-empty h2 { font-size: clamp(34px, 5vw, 52px); }
.fht-error p, .fht-empty p { max-width: 560px; margin: 14px auto 22px; }
.fht-applicant-head, .fht-admin-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; }
.fht-applicant-head > div > p:last-child, .fht-admin-head > div > p:last-child { max-width: 620px; margin: 14px 0 0; }
.fht-status { flex: 0 0 auto; display: inline-flex; align-items: center; min-height: 34px; padding: 0 12px; border-radius: 999px; font-size: 11px; font-weight: 900; white-space: nowrap; }
.fht-status.neutral { background: #f1f2ef; color: #5f6d68; }
.fht-status.good { background: #e5f8ef; color: #0b765e; }
.fht-status.warm { background: #fff4d9; color: #805a00; }
.fht-status.pending { background: #e8f4ff; color: #205f8e; }
.fht-status.danger { background: #fff0ed; color: #a64735; }
.fht-status.confirmed { background: #d9f8e9; color: #075b48; }
.fht-timeline { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 34px 0 24px; }
.fht-step { min-width: 0; display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 10px; align-items: start; padding: 14px; border: 1px solid rgba(7,58,48,.09); border-radius: 16px; background: #f8faf7; opacity: .62; }
.fht-step i { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: #e8ece8; color: #61706b; font-style: normal; font-size: 12px; font-weight: 900; }
.fht-step strong, .fht-step span { display: block; }
.fht-step strong { font-size: 13px; }
.fht-step span { margin-top: 2px; color: #7a8984; font-size: 11px; line-height: 1.35; }
.fht-step.done, .fht-step.current { opacity: 1; }
.fht-step.done { background: #effaf5; }
.fht-step.done i { background: #18b982; color: #fff; }
.fht-step.current { border-color: rgba(24,185,130,.38); background: #fff; box-shadow: inset 0 0 0 1px rgba(24,185,130,.12); }
.fht-step.current i { background: #073a30; color: #fff; }
.fht-detail-grid, .fht-admin-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; }
.fht-detail-grid > div, .fht-admin-grid > div { min-width: 0; padding: 15px; border: 1px solid rgba(7,58,48,.09); border-radius: 15px; background: #fff; }
.fht-detail-grid span, .fht-admin-grid span, .fht-app-id span, .fht-admin-idea > span { display: block; margin-bottom: 4px; color: #83918d; font-size: 10px; font-weight: 850; letter-spacing: .06em; text-transform: uppercase; }
.fht-detail-grid strong, .fht-admin-grid strong { display: block; overflow: hidden; color: #073a30; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.fht-app-id { margin-top: 10px; padding: 15px; border-radius: 15px; background: #eff9f4; }
.fht-app-id strong { display: block; overflow-wrap: anywhere; font-size: 12px; }
.fht-alert { margin: 0 0 18px; padding: 18px; display: grid; gap: 5px; border: 1px solid #f0c9bf; border-radius: 17px; background: #fff5f1; color: #783426; }
.fht-alert strong { font-size: 15px; }
.fht-alert span { font-size: 12px; }
.fht-alert button { width: max-content; margin-top: 8px; padding: 9px 13px; border-radius: 999px; background: #783426; color: #fff; font-weight: 800; }
.fht-footer-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; }
.fht-admin-head h2 { font-size: clamp(32px, 4vw, 48px); }
.fht-admin-stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 10px; margin: 28px 0 18px; }
.fht-admin-stats div { padding: 17px; border-radius: 17px; background: #e8f8f0; }
.fht-admin-stats strong, .fht-admin-stats span { display: block; }
.fht-admin-stats strong { font-size: 27px; letter-spacing: -.04em; }
.fht-admin-stats span { margin-top: 3px; color: #567069; font-size: 11px; }
.fht-admin-list { display: grid; gap: 12px; }
.fht-admin-card { padding: 20px; border: 1px solid rgba(7,58,48,.1); border-radius: 20px; background: #fff; }
.fht-admin-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.fht-admin-card-head h3 { margin: 0; color: #073a30; font-size: 19px; letter-spacing: -.025em; }
.fht-admin-card-head p { margin: 4px 0 0; color: #7a8984; font-size: 12px; }
.fht-admin-grid { margin-top: 14px; }
.fht-admin-idea { margin-top: 10px; padding: 15px; border-radius: 15px; background: #f8faf7; }
.fht-admin-idea p { margin: 0; color: #334741; font-size: 13px; }
.fht-admin-card-actions { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 14px; padding-top: 14px; border-top: 1px solid rgba(7,58,48,.08); }
.fht-admin-card-actions > div:last-child { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.fht-admin-card-actions a { color: #0b765e; font-size: 12px; font-weight: 850; }
.fht-no-proof, .fht-confirmed-note { color: #7c8b86; font-size: 12px; font-weight: 750; }
.fht-admin-empty { min-height: 240px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 1px dashed rgba(7,58,48,.16); border-radius: 20px; text-align: center; }
.fht-admin-empty svg { width: 30px; height: 30px; margin-bottom: 10px; color: #18b982; }
.fht-admin-empty span { margin-top: 4px; color: #7c8b86; font-size: 12px; }

@media (max-width: 760px) {
  .fht-panel { inset: 8px; max-height: calc(100vh - 16px); border-radius: 22px; }
  .fht-body { padding: 22px 16px 28px; }
  .fht-applicant-head, .fht-admin-head, .fht-admin-card-head, .fht-admin-card-actions { flex-direction: column; align-items: stretch; }
  .fht-status { width: max-content; }
  .fht-timeline { grid-template-columns: 1fr; }
  .fht-step { grid-template-columns: 32px 1fr; }
  .fht-detail-grid, .fht-admin-grid, .fht-admin-stats { grid-template-columns: 1fr 1fr; }
  .fht-footer-actions { flex-direction: column; }
  .fht-footer-actions > *, .fht-admin-head > button { width: 100%; }
  .fht-admin-card-actions > div:last-child { justify-content: stretch; }
  .fht-admin-card-actions button { flex: 1 1 180px; }
}

@media (max-width: 420px) {
  .fht-detail-grid, .fht-admin-grid, .fht-admin-stats { grid-template-columns: 1fr; }
}


/* V26 private /admin */
.fht-admin-page-shell{min-height:calc(100vh - 60px);padding:92px max(22px,calc((100vw - 1120px)/2)) 64px;background:#fffefb;color:#073a30}.fht-admin-page-brand{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.fht-admin-page-brand img{width:126px;height:auto;display:block}.fht-admin-page-brand span{padding:7px 11px;border-radius:999px;background:#e8f8f0;color:#0b765e;font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.fht-admin-page-body{padding:30px;border:1px solid rgba(7,58,48,.1);border-radius:26px;background:#fff;box-shadow:0 20px 60px rgba(3,42,35,.06)}.fht-admin-page-body svg{display:block}.fht-admin-page-body h2{margin:0;font-size:clamp(34px,4.6vw,58px);line-height:.96;letter-spacing:-.055em}.fht-admin-access{min-height:520px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.fht-admin-access>svg{width:44px;height:44px;margin-bottom:18px;color:#18b982}.fht-admin-access p:not(.fht-kicker){max-width:540px;margin:14px auto 22px;color:#60706b;line-height:1.6}@media(max-width:760px){.fht-admin-page-shell{padding:82px 12px 32px}.fht-admin-page-body{padding:20px 14px;border-radius:20px}.fht-admin-page-brand{padding:0 6px}.fht-admin-page-brand img{width:112px}}

/* V30 admin diagnostics: only shown when Firestore explicitly rejects access. */
.fht-admin-diagnostic {
  margin: 14px auto 20px;
  padding: 12px 14px;
  max-width: 460px;
  border-radius: 14px;
  background: #f4faf7;
  border: 1px solid rgba(7,58,48,.10);
  color: #49615b;
  font-size: 12px;
  line-height: 1.6;
}
.fht-admin-diagnostic strong { color: #073a30; }
