/* TradesFolks Tailwind UI foundation — Sprint 120 */
@tailwind components;
@tailwind utilities;

@layer components {
  .tf-ui-shell { @apply tw-mx-auto tw-w-full tw-max-w-app tw-px-4 md:tw-px-6; }
  .tf-ui-card { @apply tw-rounded-tf-lg tw-border tw-border-tf-line tw-bg-tf-surface tw-shadow-tf-card; }
  .tf-ui-btn { @apply tw-inline-flex tw-min-h-10 tw-items-center tw-justify-center tw-gap-2 tw-rounded-tf tw-px-4 tw-text-sm tw-font-bold tw-transition; }
  .tf-ui-btn-primary { @apply tf-ui-btn tw-bg-tf-blue tw-text-white hover:tw-bg-tf-blueDark; }
  .tf-ui-btn-secondary { @apply tf-ui-btn tw-border tw-border-tf-line tw-bg-white tw-text-tf-ink hover:tw-border-blue-300 hover:tw-text-tf-blue; }
  .tf-ui-input { @apply tw-min-h-11 tw-w-full tw-rounded-tf tw-border tw-border-tf-line tw-bg-white tw-px-3 tw-text-sm tw-text-tf-ink tw-outline-none focus:tw-border-tf-blue focus:tw-ring-4 focus:tw-ring-blue-100; }
  .tf-ui-icon { @apply tw-size-4 tw-shrink-0; }
}

/* 121 shared primitives + migrated dual CTA */
.tf-ui-badge{display:inline-flex;align-items:center;width:max-content;min-height:24px;padding:0 9px;border:1px solid var(--tf-ui-line);border-radius:999px;background:#f8fafc;color:var(--tf-ui-muted);font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.tf-dual-cta-enterprise{margin-block:24px}.tf-dual-cta-enterprise>.tf-dual-cta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.tf-dual-cta-card{position:relative;overflow:hidden;display:flex;min-height:240px;flex-direction:column;align-items:flex-start;padding:28px}.tf-dual-cta-card h2{max-width:620px;margin:16px 0 10px;color:var(--tf-ui-ink);font-size:clamp(24px,2vw,34px);line-height:1.08;letter-spacing:-.03em}.tf-dual-cta-card p{max-width:620px;margin:0;color:var(--tf-ui-muted);font-size:14px;line-height:1.65}.tf-dual-cta-card>div{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:auto;padding-top:24px}.tf-dual-cta-card small{color:var(--tf-ui-muted);font-size:12px}.tf-dual-cta-card.is-buyer{background:linear-gradient(145deg,#fff,#f8fbff)}.tf-dual-cta-card.is-supplier{background:linear-gradient(145deg,#fff,#fffaf0)}@media(max-width:767px){.tf-dual-cta-enterprise>.tf-dual-cta-grid{grid-template-columns:1fr;gap:12px}.tf-dual-cta-card{min-height:0;padding:20px}.tf-dual-cta-card h2{font-size:25px}.tf-dual-cta-card>div{width:100%;align-items:stretch;flex-direction:column;gap:8px;padding-top:20px}.tf-dual-cta-card .tf-ui-btn{width:100%}}
/* Lucide-compatible shared icon primitive — Sprint 122 */
.tf-ui-icon,.tf-lucide{width:1em;height:1em;display:inline-block;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.125em}.tf-ui-btn .tf-ui-icon{width:16px;height:16px;transition:transform .16s ease}.tf-ui-btn:hover .tf-ui-icon{transform:translateX(2px)}@media(prefers-reduced-motion:reduce){.tf-ui-btn .tf-ui-icon{transition:none}.tf-ui-btn:hover .tf-ui-icon{transform:none}}

/* Sprint 123 — shared form primitives + Instant Inquiry migration */
.tf-ui-field{display:grid;gap:6px;margin:10px 0}.tf-ui-label{padding-left:1px;color:#334155;font-size:11px;font-weight:700;line-height:1.35}.tf-ui-input,.tf-ui-textarea,.tf-ui-select{box-sizing:border-box;width:100%;border:1px solid var(--tf-ui-line,#cbd5e1);border-radius:10px;background:#fff;color:var(--tf-ui-ink,#0f172a);font:inherit;outline:none;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.tf-ui-input,.tf-ui-select{min-height:42px;padding:9px 12px}.tf-ui-textarea{min-height:82px;padding:10px 12px;resize:vertical}.tf-ui-input::placeholder,.tf-ui-textarea::placeholder{color:#94a3b8}.tf-ui-input:focus,.tf-ui-textarea:focus,.tf-ui-select:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}.tf-ui-input[aria-invalid="true"],.tf-ui-textarea[aria-invalid="true"],.tf-ui-select[aria-invalid="true"]{border-color:#e11d48;box-shadow:0 0 0 3px rgba(225,29,72,.10)}.tf-ui-help{color:#64748b;font-size:11px;line-height:1.45}.tf-ui-error{color:#b42318;font-size:11px;font-weight:650;line-height:1.45}.tf-iq-submit.tf-ui-btn{width:100%;min-height:44px;margin-top:6px;border:0;background:#e11d48;box-shadow:0 8px 18px rgba(225,29,72,.16)}.tf-iq-submit.tf-ui-btn:hover{background:#be123c}.tf-iq-submit.tf-ui-btn:disabled{opacity:.55;cursor:wait}.tf-iq-submit.tf-ui-btn .tf-ui-icon{width:17px;height:17px}.tf-iq-form-panel .tf-ui-field{color:#334155}.tf-iq-form-panel .tf-ui-input,.tf-iq-form-panel .tf-ui-textarea{font-size:11px}@media(max-width:760px){.tf-iq-grid{grid-template-columns:1fr;gap:0}.tf-iq-form-panel .tf-ui-input{min-height:44px}.tf-iq-submit.tf-ui-btn{min-height:46px}}@media(max-width:767px){.tf-ui-input,.tf-ui-textarea,.tf-ui-select{font-size:16px}}


/* Sprint 124 — shared Dialog / IconButton / Notice / Feedback primitives + Instant Inquiry modal migration */
.tf-ui-dialog{position:relative;isolation:isolate;color:var(--tf-ui-ink);outline:0}.tf-ui-icon-btn{display:inline-flex;width:36px;height:36px;min-height:36px;align-items:center;justify-content:center;padding:0;border:1px solid var(--tf-ui-line);border-radius:10px;background:#fff;color:#475569;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.tf-ui-icon-btn:hover{background:#f8fafc;color:#0f172a}.tf-ui-icon-btn:focus-visible{outline:2px solid var(--tf-ui-blue);outline-offset:2px;box-shadow:0 0 0 4px rgba(37,99,235,.12)}.tf-ui-notice{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid #dbeafe;border-radius:10px;background:#f8fbff;color:#52657c;font-size:11px;line-height:1.45}.tf-ui-notice>.tf-ui-icon{width:16px;height:16px;color:#2563eb}.tf-ui-feedback{min-height:18px;font-size:11px;font-weight:700}.tf-ui-feedback.is-error{color:#b42318}.tf-ui-feedback.is-ok{color:#087443}
.tf-instant-inquiry[hidden]{display:none}.tf-instant-inquiry{position:fixed;inset:0;z-index:10020;display:grid;place-items:center;padding:clamp(10px,2vw,24px)}.tf-iq-backdrop{position:absolute;inset:0;border:0;background:rgba(2,8,23,.68);backdrop-filter:blur(8px)}.tf-iq-card.tf-ui-dialog{width:min(880px,calc(100vw - 32px));max-height:min(760px,calc(100vh - 32px));overflow:auto;display:grid;grid-template-columns:minmax(260px,.78fr) minmax(0,1.22fr);border-radius:24px;box-shadow:0 28px 80px rgba(2,8,23,.28)}.tf-iq-brand{position:relative;overflow:hidden;min-height:100%;padding:28px;background:linear-gradient(155deg,#07182f 0%,#0b2850 68%,#123d70 100%);color:#fff}.tf-iq-brand:after{content:"";position:absolute;right:-82px;bottom:-100px;width:230px;height:230px;border:1px solid rgba(255,255,255,.12);border-radius:999px}.tf-iq-brand-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.tf-iq-brand-top em{font-style:normal;padding:6px 9px;border:1px solid rgba(250,204,21,.38);border-radius:999px;background:rgba(250,204,21,.08);color:#fde68a;font-size:10px;font-weight:800}.tf-iq-brand-copy{margin-top:46px}.tf-iq-brand-copy>span{font-size:10px;letter-spacing:.14em;color:#93c5fd;font-weight:800}.tf-iq-brand-copy h2{margin:9px 0 12px;font-size:clamp(34px,3.2vw,43px);line-height:1.02;letter-spacing:-.04em}.tf-iq-brand-copy h2 b{color:#fb7185}.tf-iq-brand-copy p{max-width:290px;margin:0;color:#cbd5e1;font-size:13px;line-height:1.6}.tf-iq-benefits{display:grid;gap:10px;margin-top:26px}.tf-iq-benefits>div{display:flex;align-items:center;gap:10px}.tf-iq-benefits i{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border:1px solid rgba(255,255,255,.1);border-radius:10px;background:rgba(255,255,255,.07);color:#fde68a;font-style:normal}.tf-iq-benefits p{display:grid;gap:1px;margin:0}.tf-iq-benefits b{font-size:12px}.tf-iq-benefits small{font-size:10px;color:#94a3b8}.tf-iq-bot{position:absolute;right:22px;bottom:16px;width:100px;filter:drop-shadow(0 10px 18px rgba(0,0,0,.22))}.tf-iq-bot span{position:absolute;left:43px;bottom:4px;font-size:9px;font-weight:800;color:#163a68}.tf-iq-form-panel{position:relative;padding:32px 34px 24px;background:#fff}.tf-iq-close{position:absolute;right:16px;top:16px}.tf-iq-kicker.tf-ui-badge{border-color:#fecdd3;background:#fff1f2;color:#be123c}.tf-iq-form-panel>h2{margin:10px 44px 4px 0;font-size:29px;line-height:1.15;letter-spacing:-.03em;color:#0f172a}.tf-iq-form-panel>h2 b{color:#e11d48}.tf-iq-sub{margin:0 0 18px;color:#64748b;font-size:12px;line-height:1.5}.tf-iq-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tf-iq-trust{margin:10px 0}.tf-iq-status{margin-top:8px}.tf-iq-verified-mail{margin:16px 0 8px}.tf-iq-foot{text-align:center;color:#94a3b8;font-size:9px;margin-top:9px}.tf-iq-hp{position:absolute!important;left:-9999px!important}@media(max-width:760px){.tf-instant-inquiry{padding:8px}.tf-iq-card.tf-ui-dialog{grid-template-columns:1fr;width:min(520px,calc(100vw - 16px));max-height:calc(100vh - 16px);border-radius:18px}.tf-iq-brand{display:none}.tf-iq-form-panel{padding:26px 18px 20px}.tf-iq-form-panel>h2{font-size:25px}.tf-iq-grid{grid-template-columns:1fr;gap:0}.tf-iq-close{right:12px;top:12px}}@media(max-width:420px){.tf-iq-form-panel{padding:24px 14px 18px}.tf-iq-form-panel>h2{font-size:23px}.tf-iq-sub{font-size:11px}.tf-iq-card.tf-ui-dialog{border-radius:16px}}

/* Sprint 125 — shared menu / sheet primitives (shadcn-inspired) */
.tf-ui-sheet{background:var(--tf-ui-card,#fff);border:1px solid var(--tf-ui-border,#e2e8f0);box-shadow:0 24px 64px rgba(15,23,42,.18)}
.tf-ui-menu{color:var(--tf-ui-fg,#0f172a)}
.tf-ui-menu-group{padding:8px}
.tf-ui-menu-group>a,.tf-ui-menu-group summary{border-radius:10px;transition:background-color .15s ease,color .15s ease}
.tf-ui-menu-group>a:hover,.tf-ui-menu-group>a:focus-visible,.tf-ui-menu-group summary:hover,.tf-ui-menu-group summary:focus-visible{background:#f8fafc;color:#0f3f8f;outline:none}
.tf-ui-menu-sub{margin:0 8px 8px;padding:6px;border-radius:12px;background:#f8fafc}
.tf-ui-menu-actions{display:flex;gap:10px;padding:16px}
.tf-ui-icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid var(--tf-ui-border,#e2e8f0);border-radius:10px;background:#fff;color:#475569;cursor:pointer}
.tf-ui-icon-button:hover{background:#f8fafc;color:#0f172a}
.tf-ui-icon-button:focus-visible{outline:3px solid rgba(37,99,235,.2);outline-offset:2px}
.tf-ui-icon-button .tf-ui-icon{width:18px;height:18px}

/* Sprint 126 — shared combobox + search suggestion primitives (single owner) */
.tf-ui-combobox{position:relative;overflow:visible}.tf-ui-combobox.tf-search-v4-open{z-index:2147482000}.tf-ui-combobox-control{display:flex;align-items:center;min-width:0;border:1px solid var(--tf-ui-line,#cbd5e1);border-radius:12px;background:#fff;transition:border-color .15s ease,box-shadow .15s ease}.tf-ui-combobox:focus-within .tf-ui-combobox-control{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}.tf-ui-combobox-select,.tf-ui-combobox-input{border:0;background:transparent;color:var(--tf-ui-ink,#0f172a);outline:0;font:inherit}.tf-ui-combobox-select{height:100%;padding:0 12px;border-right:1px solid var(--tf-ui-line,#e2e8f0);font-size:12px;font-weight:700}.tf-ui-combobox-input{min-width:0;flex:1;height:100%;padding:0 12px;font-size:14px}.tf-ui-combobox-input::placeholder{color:#94a3b8}.tf-search-v4-panel{position:absolute;z-index:2147483000;top:calc(100% + 8px);left:0;right:0;width:100%;max-height:min(72vh,680px);overflow:auto;overscroll-behavior:contain;border:1px solid var(--tf-ui-line,#e2e8f0);border-radius:16px;background:#fff;color:var(--tf-ui-ink,#0f172a);box-shadow:0 24px 64px rgba(15,23,42,.16)}.tf-search-v4-panel[hidden]{display:none}.tf-search-v4-body{padding:6px}.tf-search-v4-group{padding:4px}.tf-search-v4-group+.tf-search-v4-group{border-top:1px solid #eef2f7}.tf-search-v4-group h3{margin:0;padding:8px 10px 6px;color:#64748b;font-size:11px;font-weight:800;line-height:1.2;letter-spacing:.075em;text-transform:uppercase}.tf-search-v4-group>a{display:grid;grid-template-columns:42px minmax(0,1fr) 20px;align-items:center;gap:10px;min-height:52px;padding:6px 8px;border-radius:10px;color:#0f172a;text-decoration:none;outline:0}.tf-search-v4-group>a:hover,.tf-search-v4-group>a.is-active,.tf-search-v4-group>a:focus-visible{background:#f8fafc}.tf-search-v4-icon{display:grid;width:42px;height:42px;place-items:center;overflow:hidden;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;color:#2563eb}.tf-search-v4-icon img{display:block;width:100%;height:100%;object-fit:cover}.tf-search-v4-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tf-search-v4-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.tf-search-v4-copy strong{overflow:hidden;color:#0f172a;font-size:14px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.tf-search-v4-copy small{overflow:hidden;color:#64748b;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.tf-search-v4-arrow{color:#94a3b8;font-size:17px;text-align:center}.tf-search-v4-all{display:flex;align-items:center;justify-content:space-between;margin:4px;padding:11px 12px;border:1px solid #fde68a;border-radius:10px;background:#fffbeb;color:#0f3f8f!important;font-size:13px;font-weight:800;text-decoration:none}.tf-search-v4-all:hover,.tf-search-v4-all.is-active,.tf-search-v4-all:focus-visible{background:#fef3c7}.tf-search-v4-footer{position:sticky;bottom:0;display:flex;gap:18px;padding:8px 12px;border-top:1px solid #e2e8f0;background:#f8fafc;color:#64748b;font-size:10px;font-weight:700}.tf-search-v4-loading,.tf-search-v4-empty{display:flex;align-items:center;gap:10px;padding:18px;color:#64748b;font-size:12px}.tf-search-v4-empty{align-items:flex-start;flex-direction:column;gap:4px}.tf-search-v4-empty strong{color:#0f172a;font-size:13px}.tf-search-v4-loading i{width:17px;height:17px;border:2px solid #dbe3ee;border-top-color:#2563eb;border-radius:999px;animation:tfUiSearchSpin .75s linear infinite}@keyframes tfUiSearchSpin{to{transform:rotate(360deg)}}@media(max-width:767px){.tf-ui-combobox-select{display:none}.tf-search-v4-panel{position:fixed;top:116px;right:10px;left:10px;width:auto;max-height:calc(100vh - 138px);border-radius:14px}.tf-search-v4-group>a{min-height:50px}.tf-search-v4-footer{display:none}}@media(prefers-reduced-motion:reduce){.tf-search-v4-loading i{animation-duration:1.5s}}
