/* BeginThings free-tools factory CSS (wave1, 23 Oct 2026). Tool pages + the categorised hub.
   Self-contained: no external requests. Fonts: Inter (SIL OFL), self-hosted subset. Icons: Lucide (ISC), inlined as svg.bt-ic.
   Themes: follows html[data-theme]/[data-bt-theme] set by /assets/bt-theme.js (dark default, light, high-contrast aware). */
@font-face{font-family:"BT Inter";src:url(/assets/ft/fonts/inter-latin.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
:root{--ft-r:14px;--ft-r-sm:10px;--ft-gap:clamp(14px,2.2vw,22px);--ft-w:1120px;
 --ft-font:"BT Inter","DM Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans","Noto Sans Devanagari",sans-serif;
 --ft-bg:#0c111b;--ft-surface:#141b29;--ft-surface2:#1b2637;--ft-fg:#eef3fa;--ft-muted:#aebdd1;--ft-border:#2a3850;--ft-ctl:#71829d;
 --ft-accent:#8cc8ff;--ft-ink:#10151f;--ft-ok:#72dfd2;--ft-warn:#ffd28a;--ft-err:#ff9fb6;--ft-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 10px 30px -18px rgba(0,0,0,.7)}
html[data-theme="light"],html[data-bt-theme="light"]{--ft-bg:#f8faff;--ft-surface:#ffffff;--ft-surface2:#e8eef7;--ft-fg:#192438;--ft-muted:#506179;--ft-border:#cfd9e8;--ft-ctl:#687a93;
 --ft-accent:#155ca8;--ft-ink:#ffffff;--ft-ok:#086f68;--ft-warn:#7a4f00;--ft-err:#a93360;--ft-shadow:0 1px 2px rgba(25,36,56,.06),0 10px 28px -18px rgba(25,36,56,.25)}
html[data-bt-contrast="high"]{--ft-muted:var(--ft-fg);--ft-border:var(--ft-fg);--ft-ctl:var(--ft-fg)}
body.ft{margin:0;background:var(--ft-bg);color:var(--ft-fg);font-family:var(--ft-font);font-size:16px;line-height:1.6;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}
body.ft *,body.ft *::before,body.ft *::after{box-sizing:border-box}
body.ft :where(h1,h2,h3,h4,p,ul,ol,dl,dd,figure){margin:0}
body.ft :where(ul,ol){padding:0;list-style:none}
body.ft a{color:var(--ft-accent);text-underline-offset:3px}
body.ft :focus-visible{outline:2px solid var(--ft-accent);outline-offset:2px;border-radius:6px}
.ft-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* icons (same markup/convention as the iconography pass: svg.bt-ic, Lucide 24 grid, currentColor) */
svg.bt-ic{display:inline-block;flex:none;width:1.15em;height:1.15em;vertical-align:-.2em;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;overflow:visible;pointer-events:none}
svg.bt-ic--lead{margin-inline-end:.42em}svg.bt-ic--trail{margin-inline-start:.3em}
[dir=rtl] svg.bt-ic--flip{transform:scaleX(-1)}
/* layout */
.ft-wrap{width:100%;max-width:var(--ft-w);margin-inline:auto;padding-inline:var(--bts-gutter,clamp(16px,3.5vw,32px))}
.ft-crumbs{padding-block:14px 0;font-size:13px;color:var(--ft-muted)}
.ft-crumbs ol{display:flex;flex-wrap:wrap;gap:4px 8px}
.ft-crumbs li+li::before{content:"/";margin-inline-end:8px;opacity:.6}
.ft-crumbs a{color:var(--ft-muted)}
.ft-hero{padding-block:clamp(22px,4vw,44px) clamp(14px,2.4vw,24px)}
.ft-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--ft-accent);margin-bottom:12px}
.ft-hero h1{font-size:clamp(28px,4.6vw,46px);line-height:1.1;letter-spacing:-.025em;font-weight:700;max-width:22ch;overflow-wrap:anywhere}
.ft-lede{margin-top:14px;max-width:64ch;color:var(--ft-muted);font-size:clamp(16px,1.6vw,18px)}
.ft-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.ft-chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 12px;border:1px solid var(--ft-border);border-radius:999px;font-size:13px;color:var(--ft-muted);background:var(--ft-surface)}
.ft-chip svg{color:var(--ft-ok)}
.ft-section{padding-block:clamp(18px,3vw,32px)}
.ft-section>h2,.ft-prose h2{font-size:clamp(21px,2.6vw,28px);line-height:1.2;letter-spacing:-.015em;font-weight:700;margin-bottom:12px}
/* app card */
.ft-card{background:var(--ft-surface);border:1px solid var(--ft-border);border-radius:var(--ft-r);box-shadow:var(--ft-shadow);padding:clamp(16px,2.4vw,26px)}
.ft-card+.ft-card{margin-top:var(--ft-gap)}
.ft-card>h2,.ft-card>h3,.ft-card-h{font-size:17px;font-weight:650;letter-spacing:-.005em;margin-bottom:14px;display:flex;align-items:center;gap:8px;line-height:1.3}
.ft-card-h .ft-sub{font-weight:400;color:var(--ft-muted);font-size:14px}
.ft-split{display:grid;gap:var(--ft-gap);grid-template-columns:minmax(0,1fr)}
@media(min-width:960px){.ft-split{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:start}.ft-sticky{position:sticky;top:calc(var(--bts-header-height,72px) + 16px)}}
.ft-cols{display:grid;gap:12px 14px;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}
.ft-cols.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:420px){.ft-cols.c2{grid-template-columns:minmax(0,1fr)}}
/* form controls */
.ft-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.ft-field>label,.ft-lbl{font-size:13px;font-weight:600;color:var(--ft-fg);line-height:1.3}
.ft-hint{font-size:12.5px;color:var(--ft-muted);line-height:1.45}
.ft-in,.ft-sel,.ft-ta{width:100%;min-height:44px;padding:9px 12px;border-radius:var(--ft-r-sm);border:1px solid var(--ft-ctl);background:var(--ft-bg);color:var(--ft-fg);font:inherit;font-size:16px;line-height:1.35;appearance:none;-webkit-appearance:none;transition:border-color .15s,box-shadow .15s}
html[data-theme="light"] .ft-in,html[data-theme="light"] .ft-sel,html[data-theme="light"] .ft-ta{background:#fff}
.ft-ta{min-height:92px;resize:vertical}
.ft-sel{background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 18px) 52%,calc(100% - 12px) 52%;background-size:6px 6px;background-repeat:no-repeat;padding-inline-end:34px}
[dir=rtl] .ft-sel{background-position:18px 52%,12px 52%}
.ft-in:hover,.ft-sel:hover,.ft-ta:hover{border-color:var(--ft-accent)}
.ft-in:focus,.ft-sel:focus,.ft-ta:focus{outline:none;border-color:var(--ft-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--ft-accent) 30%,transparent)}
.ft-in[aria-invalid="true"]{border-color:var(--ft-err)}
.ft-in.num{font-variant-numeric:tabular-nums}
.ft-in::placeholder,.ft-ta::placeholder{color:var(--ft-muted);opacity:.75}
.ft-input-group{display:flex;align-items:stretch}
.ft-input-group>.ft-addon{display:inline-flex;align-items:center;padding:0 12px;border:1px solid var(--ft-ctl);border-inline-end:0;border-start-start-radius:var(--ft-r-sm);border-end-start-radius:var(--ft-r-sm);background:var(--ft-surface2);color:var(--ft-muted);font-size:15px}
.ft-input-group>.ft-in{border-start-start-radius:0;border-end-start-radius:0}
.ft-input-group.after>.ft-addon{order:2;border-inline-end:1px solid var(--ft-ctl);border-inline-start:0;border-start-start-radius:0;border-end-start-radius:0;border-start-end-radius:var(--ft-r-sm);border-end-end-radius:var(--ft-r-sm)}
.ft-input-group.after>.ft-in{border-start-end-radius:0;border-end-end-radius:0;border-start-start-radius:var(--ft-r-sm);border-end-start-radius:var(--ft-r-sm)}
.ft-check{display:flex;align-items:center;gap:10px;min-height:44px;font-size:14.5px;cursor:pointer}
.ft-check input{width:20px;height:20px;accent-color:var(--ft-accent);flex:none}
.ft-err{color:var(--ft-err);font-size:13px;min-height:0}
.ft-err:empty{display:none}
/* buttons */
.ft-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:9px 18px;border-radius:var(--ft-r-sm);border:1px solid transparent;background:var(--ft-accent);color:var(--ft-ink);font:inherit;font-size:15px;font-weight:650;line-height:1.2;cursor:pointer;text-decoration:none;transition:filter .15s,background-color .15s,border-color .15s,transform .05s;text-align:center;touch-action:manipulation}
body.ft a.ft-btn{color:var(--ft-ink)}
.ft-btn:hover{filter:brightness(1.08)}.ft-btn:active{transform:translateY(1px)}
.ft-btn[disabled],.ft-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed;filter:none}
.ft-btn.sec,body.ft a.ft-btn.sec{background:transparent;border-color:var(--ft-ctl);color:var(--ft-fg)}
.ft-btn.sec:hover{border-color:var(--ft-accent);color:var(--ft-accent);filter:none}
.ft-btn.ghost,body.ft a.ft-btn.ghost{background:transparent;color:var(--ft-accent);padding-inline:10px}
.ft-btn.sm{min-height:44px;padding:6px 12px;font-size:14px}
.ft-btn.icon{width:44px;padding:0}
.ft-btn.danger{color:var(--ft-err)}
.ft-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
/* segmented control / tabs */
.ft-seg{display:flex;flex-wrap:wrap;gap:4px;padding:4px;background:var(--ft-surface2);border-radius:12px;border:1px solid var(--ft-border);width:fit-content;max-width:100%}
.ft-seg>button,.ft-seg>label{flex:1 1 auto;min-height:40px;padding:6px 14px;border-radius:9px;border:0;background:transparent;color:var(--ft-muted);font:inherit;font-size:14px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-align:center}
.ft-seg>button[aria-selected="true"],.ft-seg>button[aria-pressed="true"],.ft-seg>label:has(input:checked){background:var(--ft-surface);color:var(--ft-fg);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.ft-seg input{position:absolute;opacity:0;pointer-events:none}
.ft-seg>label:has(input:focus-visible){outline:2px solid var(--ft-accent)}
.ft-tabpanel[hidden]{display:none}
/* result */
.ft-result{background:linear-gradient(180deg,color-mix(in srgb,var(--ft-accent) 9%,var(--ft-surface)),var(--ft-surface));}
.ft-big{font-size:clamp(30px,5vw,44px);line-height:1.1;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ft-big small{font-size:.42em;font-weight:600;color:var(--ft-muted);letter-spacing:0;margin-inline-start:4px}
.ft-kicker{font-size:13px;color:var(--ft-muted);font-weight:600;margin-bottom:4px}
.ft-dl{display:grid;gap:0;margin-top:14px}
.ft-dl>div{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-top:1px solid var(--ft-border);font-size:15px;align-items:baseline}
.ft-dl dt{color:var(--ft-muted);min-width:0;overflow-wrap:anywhere}
.ft-dl dd{font-weight:600;text-align:end;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ft-dl>div.tot{font-size:17px}.ft-dl>div.tot dd{color:var(--ft-accent)}
.ft-words{margin-top:12px;padding:10px 12px;border-radius:var(--ft-r-sm);background:var(--ft-surface2);font-size:14px;color:var(--ft-fg);overflow-wrap:anywhere}
/* notes */
.ft-note{display:flex;gap:10px;padding:12px 14px;border-radius:var(--ft-r-sm);border:1px solid var(--ft-border);background:var(--ft-surface2);font-size:14px;line-height:1.5;color:var(--ft-fg)}
.ft-note svg{margin-top:.2em;flex:none}
.ft-note.warn{border-color:color-mix(in srgb,var(--ft-warn) 55%,transparent)}.ft-note.warn svg{color:var(--ft-warn)}
.ft-note.err{border-color:color-mix(in srgb,var(--ft-err) 55%,transparent)}.ft-note.err svg{color:var(--ft-err)}
.ft-note.ok svg{color:var(--ft-ok)}
.ft-note.draft{border-style:dashed;border-color:var(--ft-warn);background:color-mix(in srgb,var(--ft-warn) 10%,var(--ft-surface))}
.ft-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:650;letter-spacing:.02em;border:1px solid var(--ft-border);color:var(--ft-muted);white-space:nowrap;line-height:1.5}
.ft-badge.new{color:var(--ft-ink);background:var(--ft-accent);border-color:transparent}
.ft-badge.ai{color:var(--ft-ok);border-color:color-mix(in srgb,var(--ft-ok) 45%,transparent)}
.ft-badge.soon{color:var(--ft-warn);border-color:color-mix(in srgb,var(--ft-warn) 45%,transparent)}
/* line-item table: grid rows, stacked on mobile */
.ft-items{display:grid;gap:10px}
.ft-item{display:grid;gap:8px 10px;grid-template-columns:repeat(3,minmax(0,1fr)) 44px;align-items:end;padding:12px;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);background:var(--ft-bg)}
html[data-theme="light"] .ft-item{background:#fbfcff}
.ft-item .ft-field>label{font-size:12px}
.ft-item .d{grid-column:1 / -1}
.ft-item .amt{grid-column:1 / -2;align-self:center;font-weight:650;font-variant-numeric:tabular-nums;text-align:start;min-height:20px}
.ft-items.no-gst .ft-item{grid-template-columns:repeat(2,minmax(0,1fr)) 44px}
.ft-items.no-gst .gstf{display:none}
@media(max-width:360px){.ft-item{grid-template-columns:repeat(2,minmax(0,1fr)) 44px}}
.ft-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm)}
table.ft-table{width:100%;border-collapse:collapse;font-size:14.5px;font-variant-numeric:tabular-nums}
.ft-table th,.ft-table td{padding:10px 12px;text-align:start;border-bottom:1px solid var(--ft-border);white-space:nowrap}
.ft-table th{font-size:12.5px;color:var(--ft-muted);font-weight:650;background:var(--ft-surface2)}
.ft-table td.r,.ft-table th.r{text-align:end}
.ft-table tfoot td{font-weight:700;border-bottom:0}
.ft-table input.ft-in{min-height:40px;padding:6px 8px;font-size:15px}
/* drop zone / thumbs */
.ft-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:28px 16px;border:2px dashed var(--ft-ctl);border-radius:var(--ft-r);background:var(--ft-bg);cursor:pointer;transition:border-color .15s,background-color .15s;min-height:160px}
.ft-drop:hover,.ft-drop.over{border-color:var(--ft-accent);background:color-mix(in srgb,var(--ft-accent) 7%,var(--ft-bg))}
.ft-drop svg{width:34px;height:34px;color:var(--ft-accent);stroke-width:1.5}
.ft-drop strong{font-size:16px}.ft-drop span{color:var(--ft-muted);font-size:14px}
.ft-files{display:grid;gap:10px;margin-top:14px}
.ft-file{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);background:var(--ft-bg)}
.ft-file img{width:56px;height:56px;object-fit:cover;border-radius:8px;background:var(--ft-surface2)}
.ft-file .n{font-weight:600;font-size:14px;overflow-wrap:anywhere}.ft-file .m{font-size:13px;color:var(--ft-muted);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ft-progress{height:6px;border-radius:6px;background:var(--ft-surface2);overflow:hidden;margin-top:12px}
.ft-progress>i{display:block;height:100%;width:0;background:var(--ft-accent);transition:width .2s}
/* next-step band */
.ft-next{display:grid;gap:14px;padding:clamp(18px,3vw,28px);border:1px solid color-mix(in srgb,var(--ft-accent) 40%,var(--ft-border));border-radius:var(--ft-r);background:linear-gradient(135deg,color-mix(in srgb,var(--ft-accent) 12%,var(--ft-surface)),var(--ft-surface))}
@media(min-width:760px){.ft-next{grid-template-columns:minmax(0,1fr) auto;align-items:center}}
.ft-next h2{font-size:clamp(19px,2.2vw,24px);letter-spacing:-.01em;line-height:1.25;margin:0 0 6px}
.ft-next p{color:var(--ft-muted);max-width:60ch;font-size:15px}
.ft-next .ft-actions{margin:0}
/* prose, faq, related */
.ft-prose{max-width:760px}
.ft-prose p,.ft-prose li{color:var(--ft-fg);opacity:.92;margin-bottom:12px}
.ft-prose ul,.ft-prose ol{padding-inline-start:1.2em;list-style:revert}
.ft-formula{font:600 15px/1.7 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;border-inline-start:3px solid var(--ft-accent);padding:6px 0 6px 16px;margin:14px 0;overflow-wrap:anywhere;color:var(--ft-fg)}
.ft-faq details{border-bottom:1px solid var(--ft-border);padding:4px 0}
.ft-faq summary{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;font-weight:600;font-size:16px;list-style:none}
.ft-faq summary::-webkit-details-marker{display:none}
.ft-faq summary::after{content:"+";font-size:22px;color:var(--ft-muted);line-height:1}
.ft-faq details[open] summary::after{content:"\2212"}
.ft-faq details p{padding-bottom:14px;color:var(--ft-muted);max-width:68ch}
.ft-related{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}
.ft-related a{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);background:var(--ft-surface);color:var(--ft-fg);text-decoration:none;min-height:64px}
.ft-related a:hover{border-color:var(--ft-accent)}
.ft-related svg{color:var(--ft-accent);margin-top:2px}
.ft-related b{display:block;font-size:15px;line-height:1.3}.ft-related small{display:block;color:var(--ft-muted);font-size:13px;line-height:1.4;margin-top:2px}
/* toast */
.ft-toast{position:fixed;inset-inline:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));margin-inline:auto;width:fit-content;max-width:min(92vw,420px);padding:11px 16px;border-radius:12px;background:var(--ft-fg);color:var(--ft-bg);font-size:14px;font-weight:600;box-shadow:0 12px 30px -10px rgba(0,0,0,.5);z-index:9500;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .2s,transform .2s}
.ft-toast.on{opacity:1;transform:none}
/* A4 document preview (quotation / reminder) */
.ft-doc{background:#fff;color:#1a2233;border-radius:8px;border:1px solid var(--ft-border);padding:clamp(16px,3vw,32px);font-size:13px;line-height:1.5;box-shadow:var(--ft-shadow);overflow-wrap:anywhere}
.ft-doc h3{font-size:22px;letter-spacing:.04em;text-transform:uppercase;color:#10151f;margin:0}
.ft-doc .dh{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;border-bottom:2px solid #10151f;padding-bottom:12px;margin-bottom:14px}
.ft-doc .dm{text-align:end;font-size:12.5px}
.ft-doc .parties{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:14px}
.ft-doc .parties h4{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#5b677c;margin:0 0 4px}
.ft-doc .parties p{white-space:pre-line;margin:0}
.ft-doc table{width:100%;border-collapse:collapse;margin:10px 0;font-size:12.5px;font-variant-numeric:tabular-nums}
.ft-doc th{background:#eef2f8;text-align:start;padding:7px 8px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#3b475c}
.ft-doc td{padding:7px 8px;border-bottom:1px solid #e1e7f0;vertical-align:top}
.ft-doc .r{text-align:end}
.ft-doc .tots{margin-inline-start:auto;width:min(100%,300px);margin-top:6px}
.ft-doc .tots div{display:flex;justify-content:space-between;padding:4px 0;gap:12px}
.ft-doc .tots .g{border-top:2px solid #10151f;margin-top:4px;padding-top:7px;font-size:15px;font-weight:700}
.ft-doc .terms{margin-top:14px;white-space:pre-line;color:#3b475c;font-size:12px}
.ft-doc .inw{margin-top:8px;font-size:12.5px}
.ft-doc small{color:#5b677c}
.ft-doc .sig{margin-top:26px;display:flex;justify-content:flex-end}
.ft-doc .sig div{border-top:1px solid #8a94a6;padding-top:4px;min-width:160px;text-align:center;font-size:12px}
@media print{
 @page{size:A4;margin:14mm}
 body.ft{background:#fff!important}
 body.ft.ft-printing>*:not(#ft-printroot){display:none!important}
 body.ft.ft-printing #ft-printroot .ft-doc{border:0;box-shadow:none;padding:0;border-radius:0}
}
@media screen{#ft-printroot{display:none}}
/* ===== categorised hub ===== */
.fth-hero{padding-block:clamp(26px,5vw,56px) clamp(10px,2vw,18px)}
.fth-hero h1{max-width:18ch}
.fth-promise{display:grid;gap:10px 22px;margin-top:22px;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr))}
.fth-promise li{display:flex;gap:10px;font-size:14px;color:var(--ft-muted);line-height:1.45}
.fth-promise svg{color:var(--ft-ok);margin-top:2px}
.fth-promise b{display:block;color:var(--ft-fg);font-size:14.5px}
.fth-bar{position:sticky;top:var(--bts-header-height,72px);z-index:20;background:color-mix(in srgb,var(--ft-bg) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-block:1px solid var(--ft-border);margin-top:20px}
.fth-bar .ft-wrap{padding-block:10px;display:grid;gap:10px}
.fth-search{position:relative}
.fth-search svg{position:absolute;inset-inline-start:13px;top:50%;transform:translateY(-50%);color:var(--ft-muted);width:18px;height:18px}
.fth-search .ft-in{padding-inline-start:40px;border-radius:999px}
.fth-cats{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.fth-cats::-webkit-scrollbar{display:none}
.fth-cat-btn{flex:none;scroll-snap-align:start;display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:6px 14px;border-radius:999px;border:1px solid var(--ft-border);background:var(--ft-surface);color:var(--ft-fg);font:inherit;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap}
.fth-cat-btn small{color:var(--ft-muted);font-weight:600;font-size:12px}
.fth-cat-btn:hover{border-color:var(--ft-accent)}
.fth-cat-btn[aria-pressed="true"]{background:var(--ft-accent);color:var(--ft-ink);border-color:transparent}
.fth-cat-btn[aria-pressed="true"] small{color:inherit;opacity:.8}
.fth-count{font-size:13px;color:var(--ft-muted);min-height:20px}
.fth-cat{padding-block:clamp(22px,3.5vw,38px) 4px;scroll-margin-top:calc(var(--bts-header-height,72px) + 130px)}
.fth-cat[hidden]{display:none}
.fth-cat-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:16px}
.fth-cat-ic{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:color-mix(in srgb,var(--ft-accent) 14%,var(--ft-surface));color:var(--ft-accent);border:1px solid var(--ft-border)}
.fth-cat-ic svg{width:22px;height:22px}
.fth-cat-head h2{font-size:clamp(20px,2.4vw,26px);letter-spacing:-.015em;line-height:1.2}
.fth-cat-head p{color:var(--ft-muted);font-size:14.5px;margin-top:4px;max-width:70ch}
.fth-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}
.fth-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:16px;border:1px solid var(--ft-border);border-radius:var(--ft-r);background:var(--ft-surface);min-width:0}
.fth-card[hidden]{display:none}
.fth-card:hover{border-color:var(--ft-accent)}
.fth-card .t{display:flex;align-items:center;gap:10px}
.fth-card .t svg{color:var(--ft-accent);width:20px;height:20px;flex:none}
.fth-card h3{font-size:16px;line-height:1.3;font-weight:650;letter-spacing:-.005em;overflow-wrap:anywhere}
.fth-card h3 a{color:var(--ft-fg);text-decoration:none}
.fth-card h3 a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.fth-card p{font-size:14px;color:var(--ft-muted);line-height:1.45}
.fth-card .bd{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.fth-card .vars{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;position:relative;z-index:1}
.fth-card .vars a{display:inline-flex;align-items:center;min-height:32px;padding:3px 10px;border:1px solid var(--ft-border);border-radius:999px;font-size:12.5px;color:var(--ft-muted);text-decoration:none;background:var(--ft-bg)}
.fth-card .vars a:hover{color:var(--ft-accent);border-color:var(--ft-accent)}
.fth-card.soon{border-style:dashed;background:transparent}
.fth-card.soon h3{color:var(--ft-muted)}
.fth-empty{padding:32px 0;color:var(--ft-muted)}
.fth-feat{margin-top:clamp(18px,3vw,30px)}
.fth-end{display:grid;gap:14px;margin-top:clamp(26px,4vw,44px)}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media(forced-colors:active){.ft-btn,.ft-in,.ft-sel,.ft-ta,.ft-card,.fth-card{border:1px solid CanvasText}}
.mt-10{margin-top:10px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mb-14{margin-bottom:14px}.pad-12{padding:12px}.kick-pad{padding:4px 6px 8px}
body.ft [hidden]{display:none!important}
.ft-ta.letter{min-height:260px;font-size:15px;line-height:1.5}
.ft-drop:focus-within{outline:2px solid var(--ft-accent);outline-offset:2px}
.ft-drop input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
button.ft-chip{cursor:pointer;font:inherit;font-size:13px;color:var(--ft-fg)}button.ft-chip:hover{border-color:var(--ft-accent)}
.ft-in.color{padding:4px;min-height:44px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.02em}
.ft-in.mono,.ft-ta.mono{text-transform:uppercase}
[data-ok="1"]{color:var(--ft-ok)}[data-ok="0"]{color:var(--ft-err,#ff8a8a)}
.ft-table td.wrap{white-space:normal;min-width:260px}
.ft-big[data-ok]{font-size:clamp(24px,5vw,32px)}
html{scroll-padding-top:96px;scroll-padding-bottom:24px}body.ft .ft-in,body.ft .ft-sel,body.ft .ft-ta,body.ft .ft-btn,body.ft .ft-seg>button{scroll-margin-block:96px 24px}
.fth-cat-btn{text-decoration:none}
.fth-promise{margin-top:28px}
@media(min-width:900px){.fth-cats{flex-wrap:wrap;overflow:visible}}
.fth-card.soon{border-style:dashed;opacity:.85}
.fth-grid-s{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}
.fth-empty{padding:24px 0}
.fth-bar{position:static}
.fth-cat{scroll-margin-top:calc(var(--bts-header-height,72px) + 16px)}
input[type=range]{width:100%;height:44px;accent-color:var(--ft-accent);cursor:pointer}
.fth-bar .ft-wrap>*{min-width:0}
.fth-legal{margin-top:14px;max-width:70ch}.fth-suggest{padding-block:22px}
main h1,main h2,main h3{overflow-wrap:break-word;hyphens:auto;min-width:0}.fth-hero{min-width:0}
/* ---- wave2 runner ---- */
.ft-cols>.span{grid-column:1/-1}
.ft-bar{display:flex;height:14px;border-radius:8px;overflow:hidden;background:var(--ft-surface2);margin-top:16px;border:1px solid var(--ft-border)}
.ft-bar>i{display:block;height:100%}
.ft-bar>i.c0,.ft-legend .sw.c0{background:var(--ft-accent)}
.ft-bar>i.c1,.ft-legend .sw.c1{background:var(--ft-ok)}
.ft-bar>i.c2,.ft-legend .sw.c2{background:var(--ft-warn)}
.ft-bar>i.c3,.ft-legend .sw.c3{background:var(--ft-muted)}
.ft-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:13.5px;color:var(--ft-muted);list-style:none;padding:0}
.ft-legend li{display:inline-flex;align-items:center;gap:6px}
.ft-legend .sw{width:10px;height:10px;border-radius:3px;display:inline-block}
.ft-legend b{color:var(--ft-fg)}
.ft-diff{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:12px;padding:12px;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);background:var(--ft-surface2);font:13.5px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;max-height:520px;overflow:auto}
.ft-diff .add{background:color-mix(in srgb,var(--ft-ok) 28%,transparent);border-radius:3px}
.ft-diff .del{background:color-mix(in srgb,var(--ft-err) 26%,transparent);text-decoration:line-through;border-radius:3px}
.ft-ta.mono-out{font:13.5px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-transform:none}
.ft-ta.mono-in{font:14px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-transform:none}
.ft-stack>.ft-card+.ft-card{margin-top:var(--ft-gap)}
[data-show][hidden]{display:none!important}

.ft-list{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px;grid-template-columns:minmax(0,1fr)}.ft-list>li{min-width:0}
.ft-list li{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:8px 10px;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);background:var(--ft-surface2)}
.ft-li-t{min-width:0;flex:1 1 auto;display:grid;gap:2px;grid-template-columns:minmax(0,1fr)}.ft-li-t small{color:var(--ft-muted);font-size:12.5px;overflow-wrap:anywhere}.ft-list .ft-btn.sm{flex:none}
.ft-li-t code{font:14px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-wrap:anywhere;word-break:break-all}
.ft-btn.sm{min-height:44px;padding:6px 12px;font-size:13.5px;flex:none}
.ft-serp{margin-top:14px;padding:14px 16px;border-radius:var(--ft-r-sm);background:#fff;color:#202124;border:1px solid #dadce0;font-family:Arial,Helvetica,sans-serif;max-width:620px}
.ft-serp .u{font-size:12px;color:#4d5156;overflow-wrap:anywhere}.ft-serp .t{font-size:20px;line-height:1.3;color:#1a0dab;margin:2px 0 3px;overflow-wrap:anywhere}.ft-serp .d{font-size:14px;line-height:1.58;color:#4d5156;overflow-wrap:anywhere}
.ft-chipnote{font-size:13px;color:var(--ft-muted)}

.ft-doc .dp{margin:8px 0;white-space:pre-line}.ft-doc .dsign{display:flex;gap:24px;flex-wrap:wrap;margin-top:40px}.ft-doc .dsign>div{flex:1 1 140px;border-top:1px solid #1a2233;padding-top:6px;text-align:center;font-size:12px}.ft-doc .dfoot{font-size:11px;color:#5b677c;margin:14px 0 0}.ft-doc td.num{text-align:end}.ft-docblk+.ft-docblk{margin-top:16px}
@media print{.ft-docblk{break-after:page}.ft-docblk:last-child{break-after:auto}}
.ty-bar{display:flex;gap:18px;font-size:15px;color:var(--ft-muted)}.ty-bar b{font-size:22px;color:var(--ft-fg);font-variant-numeric:tabular-nums}
.ty-text{margin-top:12px;height:8.2em;overflow:hidden;font:20px/1.9 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;padding:10px 14px;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);background:var(--ft-surface2);color:var(--ft-muted);overflow-wrap:anywhere;position:relative;cursor:text}
.ty-w{border-radius:4px}.ty-w.ok{color:var(--ft-ok)}.ty-w.bad{color:var(--ft-err);text-decoration:underline wavy}.ty-w.cur{background:rgba(127,160,255,.14);outline:1px solid var(--ft-border)}.ty-w .g{color:var(--ft-ok)}.ty-w .b{color:var(--ft-err);text-decoration:underline}.ty-w .x{color:var(--ft-err);opacity:.7}
.ft-h-inline{display:inline}
@media(max-width:600px){.ty-text{font-size:17px}}
.sg-pad{display:block;width:100%;max-width:640px;height:auto;aspect-ratio:900/260;background:#fff;border:1px dashed var(--ft-border);border-radius:var(--ft-r-sm);touch-action:none;cursor:crosshair}
.sg-prev-box{background:#fff;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);padding:10px;max-width:420px}.sg-prev-box img{display:block;max-width:100%;max-height:90px}
.sg-nav{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.sg-nav #sg-pg{font-size:14px;color:var(--ft-muted);min-width:7em;text-align:center}
.sg-scroll{overflow:auto;max-width:100%;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);background:var(--ft-surface2);padding:8px}
.sg-page{position:relative;margin:0 auto;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.25)}.sg-page canvas{display:block}
.sg-ov{position:absolute;inset:0}.sg-stamp{position:absolute;touch-action:none;cursor:grab;outline:1px dashed transparent;line-height:0}.sg-stamp img{width:100%;height:auto;display:block;pointer-events:none;user-select:none}.sg-stamp.on,.sg-stamp:focus-visible{outline:2px solid #2b6fe6;outline-offset:1px}.sg-stamp.drag{cursor:grabbing}
.ft-field input[type=range]{width:100%;min-height:44px}
.ic-scroll{overflow:auto;max-width:100%;padding:6px;border:1px solid var(--ft-border);border-radius:var(--ft-r-sm);background:var(--ft-surface2)}
.ic-wrap{position:relative;margin:0 auto;overflow:hidden;line-height:0;background:repeating-conic-gradient(#8883 0 25%,transparent 0 50%) 0 0/16px 16px}.ic-wrap canvas{display:block}
.ic-box{position:absolute;border:2px solid #fff;box-shadow:0 0 0 9999px rgba(0,0,0,.55);cursor:move;touch-action:none;outline:1px solid rgba(0,0,0,.5)}.ic-box:focus-visible{outline:3px solid #6db3ff;outline-offset:2px}
.ic-h{position:absolute;width:22px;height:22px;background:#fff;border:2px solid #1b1f2a;border-radius:50%;touch-action:none;margin:-11px 0 0 -11px}
.ic-nw{left:0;top:0;cursor:nwse-resize}.ic-n{left:50%;top:0;cursor:ns-resize}.ic-ne{left:100%;top:0;cursor:nesw-resize}.ic-e{left:100%;top:50%;cursor:ew-resize}.ic-se{left:100%;top:100%;cursor:nwse-resize}.ic-s{left:50%;top:100%;cursor:ns-resize}.ic-sw{left:0;top:100%;cursor:nesw-resize}.ic-w{left:0;top:50%;cursor:ew-resize}
progress.ft-progress{display:block;width:100%;height:14px;appearance:auto;accent-color:var(--ft-accent)}

/* ---- Hub tool showcase: compact, slow marquee rows of real links (CSS-only animation; JS only adds aria-hidden clones + pause control) ---- */
.fth-show{padding-block:0 10px;--fth-l:64%}
html[data-theme="light"] .fth-show,html[data-bt-theme="light"] .fth-show{--fth-l:29%}
.fth-show [data-cat]{--h:hsl(var(--hue,210) 72% var(--fth-l))}
.fth-show [data-cat="freelancer"]{--hue:32}.fth-show [data-cat="finance-global"]{--hue:152}.fth-show [data-cat="finance-india"]{--hue:24}
.fth-show [data-cat="pdf"]{--hue:2}.fth-show [data-cat="image"]{--hue:196}.fth-show [data-cat="text-ai"]{--hue:262}.fth-show [data-cat="calculators"]{--hue:216}
.fth-show [data-cat="dev-data"]{--hue:176}.fth-show [data-cat="health"]{--hue:340}.fth-show [data-cat="study"]{--hue:48}.fth-show [data-cat="productivity"]{--hue:120}
.fth-show [data-cat="social-links"]{--hue:286}.fth-show [data-cat="design"]{--hue:310}
.fth-show-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}
.fth-show-head h2{display:flex;align-items:center;gap:8px;margin:0;font-size:15px;line-height:1.3;font-weight:650}
.fth-show-head h2 svg{width:18px;height:18px;color:var(--ft-accent);flex:none}
.fth-show-head h2 b{color:var(--ft-accent)}
.fth-pp{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:4px 14px;border-radius:999px;border:1px solid var(--ft-border);background:var(--ft-surface);color:var(--ft-fg);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.fth-pp[hidden]{display:none}
.fth-pp:hover{border-color:var(--ft-accent)}
.fth-pp span{display:inline-flex;align-items:center;gap:6px}
.fth-pp svg{width:15px;height:15px}
.fth-pp[aria-pressed="true"] .fth-pp-p,.fth-pp[aria-pressed="false"] .fth-pp-g{display:none}
.fth-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 6px;-webkit-overflow-scrolling:touch}
.fth-chips::-webkit-scrollbar{display:none}
.fth-chip{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:3px 11px;border-radius:999px;font-size:12.5px;font-weight:600;line-height:1.2;color:var(--ft-fg);text-decoration:none;border:1px solid color-mix(in srgb,var(--h) 45%,var(--ft-border));background:color-mix(in srgb,var(--h) 13%,var(--ft-surface))}
.fth-chip svg{width:14px;height:14px;color:var(--h)}
.fth-chip small{color:var(--ft-muted);font-size:11.5px;font-weight:600}
.fth-chip:hover{border-color:var(--h)}
.fth-rows{display:grid;gap:6px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 3.5%,#000 96.5%,transparent);mask-image:linear-gradient(90deg,transparent,#000 3.5%,#000 96.5%,transparent)}
.fth-row{height:38px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;overscroll-behavior-x:contain}
.fth-row::-webkit-scrollbar{display:none}
.fth-track{display:flex;align-items:center;width:max-content;height:100%;margin:0;padding:0;list-style:none}
.fth-track>li{flex:none;margin:0 8px 0 0}
.fth-tile{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 13px 0 10px;border-radius:12px;font-size:13.5px;font-weight:600;line-height:1;white-space:nowrap;color:var(--ft-fg);text-decoration:none;border:1px solid color-mix(in srgb,var(--h) 40%,var(--ft-border));background:color-mix(in srgb,var(--h) 11%,var(--ft-surface))}
.fth-tile svg{width:18px;height:18px;flex:none;color:var(--h)}
.fth-tile:hover{border-color:var(--h);background:color-mix(in srgb,var(--h) 20%,var(--ft-surface))}
.fth-tlab{padding:0 6px 0 10px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--h);white-space:nowrap}
.js-anim .fth-row{overflow:hidden}
.js-anim .fth-track{animation:fth-roll var(--fth-d,240s) linear infinite;will-change:transform}
.fth-d2{--fth-d:40s}.fth-d3{--fth-d:60s}.fth-d4{--fth-d:80s}.fth-d5{--fth-d:100s}.fth-d6{--fth-d:120s}.fth-d7{--fth-d:140s}.fth-d8{--fth-d:160s}.fth-d9{--fth-d:180s}.fth-d10{--fth-d:200s}.fth-d11{--fth-d:220s}.fth-d12{--fth-d:240s}.fth-d13{--fth-d:260s}.fth-d14{--fth-d:280s}.fth-d15{--fth-d:300s}.fth-d16{--fth-d:320s}.fth-d17{--fth-d:340s}.fth-d18{--fth-d:360s}.fth-d19{--fth-d:380s}.fth-d20{--fth-d:400s}.fth-d21{--fth-d:420s}.fth-d22{--fth-d:440s}.fth-d23{--fth-d:460s}.fth-d24{--fth-d:480s}.fth-d25{--fth-d:500s}
.js-anim .fth-row[data-row="1"] .fth-track{animation-direction:reverse}
@keyframes fth-roll{to{transform:translateX(-50%)}}
[dir="rtl"] .fth-track>li{margin:0 0 0 8px}
[dir="rtl"] .js-anim .fth-track{animation-name:fth-roll-rtl}
@keyframes fth-roll-rtl{to{transform:translateX(50%)}}
.js-anim .fth-row:hover .fth-track,.js-anim.is-paused .fth-track,.js-anim .fth-row.is-held .fth-track{animation-play-state:paused}
.js-anim .fth-row.is-focus{overflow-x:auto}
.js-anim .fth-row.is-focus .fth-track{animation:none;transform:none}
.fth-skip:focus,.fth-skip:focus-visible{position:static;width:auto;height:auto;clip:auto;margin:4px 0;display:inline-block;padding:6px 12px;border-radius:8px;background:var(--ft-accent);color:var(--ft-ink)}
@media (prefers-reduced-motion:reduce){.js-anim .fth-track{animation:none!important;transform:none!important}.js-anim .fth-row{overflow-x:auto}.fth-clone{display:none!important}.fth-pp{display:none}}
@media (max-width:640px){.fth-show-head h2{font-size:14px}.fth-tile{font-size:13px}}
.fth-show .fth-tile,.fth-show .fth-chip{color:var(--ft-fg)}
.fth-show .fth-tile:hover,.fth-show .fth-chip:hover{color:var(--ft-fg);text-decoration:none}
