.ft{max-width:880px}
.ft-drop{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 16px;border:2px dashed var(--line,#cfd6e0);border-radius:12px;text-align:center}
.ft-drop.over{border-color:var(--teal,#0b8f76);background:rgba(11,143,118,.06)}
.ft-drop input[type=file]{max-width:100%}
.ft-opts{display:flex;flex-wrap:wrap;gap:16px;margin:16px 0}
.ft-opts label{display:flex;align-items:center;gap:8px;min-height:44px}
.ft-msg{margin:16px 0;padding:12px 16px;border-radius:8px;background:var(--soft,#f1f4f8)}
.ft-msg.err{background:#fdecea;color:#7a1d12}
.ft-actions{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}
.ft-actions button,.ft-btn{min-height:44px;padding:10px 18px;border-radius:8px;border:0;background:#0b6b5a;color:#fff;font:inherit;font-weight:600;cursor:pointer}
.ft-actions button.sec{background:transparent;color:inherit;border:1px solid var(--line,#cfd6e0)}
.ft-prev{overflow-x:auto;max-height:420px;border:1px solid var(--line,#cfd6e0);border-radius:8px}
.ft-prev table{border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
.ft-prev td{padding:4px 8px;border:1px solid var(--line,#e3e8ef);white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis}
.ft-private{font-weight:600}
.ft-steps li{margin:6px 0}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .ft-msg.err{background:#3a1a16;color:#f6c9c2}}
:root[data-theme="dark"] .ft-msg.err{background:#3a1a16;color:#f6c9c2}
.dc-form{display:grid;gap:12px;grid-template-columns:1fr}
@media (min-width:700px){.dc-form{grid-template-columns:2fr 1fr auto;align-items:end}}
.dc-form label{display:flex;flex-direction:column;gap:6px;font-weight:600}
.dc-form input,.dc-form select{min-height:44px;padding:8px 12px;border:1px solid var(--line,#cfd6e0);border-radius:8px;font:inherit;background:var(--paper,#fff);color:inherit}
.dc-list{list-style:none;padding:0;margin:16px 0;display:grid;gap:8px}
.dc-list li{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:baseline;padding:12px 16px;border:1px solid var(--line,#cfd6e0);border-radius:8px}
.dc-list b{flex:1 1 200px;overflow-wrap:anywhere}
.dc-st{font-weight:600}.dc-yes .dc-st{color:var(--teal-ink,#0b6b5a)}.dc-no{opacity:.7}
.dc-pr{flex-basis:100%;font-variant-numeric:tabular-nums}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .dc-yes .dc-st{color:#4fd1b5}}
:root[data-theme="dark"] .dc-yes .dc-st{color:#4fd1b5}
.ft-gate{margin:16px 0;padding:20px;border:1px solid var(--line,#cfd6e0);border-radius:12px;background:var(--soft,#f1f4f8)}
.ft-gate form{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:8px 0}
.ft-gate input[type=email]{flex:1 1 220px;min-height:44px;padding:8px 12px;border:1px solid var(--line,#cfd6e0);border-radius:8px;font:inherit}
.ft-gate .hp{position:absolute;left:-9999px}
.ft-gate small{display:block;color:var(--steel,#5b6676)}
.ft-gate-err{color:#a12a1c}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .ft-gate input[type=email]{background:#0f1726;color:inherit}}
/* n8n template library */
.n8-cards{list-style:none;padding:0;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.n8-cards li{border:1px solid var(--line,#d8dee4);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:6px}
.n8-cards small,.n8-meta{color:var(--muted,#5b6670)}
.n8-meta{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px}
.n8-pack{border-left:4px solid #0b6b5a;background:var(--soft,#f2f7f6);padding:12px 16px;border-radius:6px;margin:16px 0}
.n8 code{overflow-wrap:anywhere}
.n8 .ft-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}
/* invoice generator */
.iv-form fieldset{border:1px solid var(--line,#d8dee4);border-radius:10px;padding:12px 16px;margin:0 0 14px;display:grid;gap:10px}
.iv-form legend{font-weight:700;padding:0 6px}
.iv-form label{display:grid;gap:4px;font-weight:600}
.iv-form input,.iv-form textarea,.iv-form select{font:inherit;padding:8px 10px;border:1px solid var(--line,#b9c2ca);border-radius:6px;min-width:0;width:100%;box-sizing:border-box;background:var(--bg,#fff);color:inherit}
.iv-meta{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.iv-row{display:grid;grid-template-columns:minmax(0,1fr) 64px 96px 96px 36px;gap:6px;align-items:center;margin-bottom:6px}
.iv-head{font-size:14px;color:var(--muted,#5b6670);font-weight:600;margin:0}
.iv-amt{text-align:right;font-variant-numeric:tabular-nums}
.iv-x{min-height:36px;border:1px solid var(--line,#b9c2ca);background:none;color:inherit;border-radius:6px;cursor:pointer}
.iv-add{justify-self:start;min-height:40px;padding:6px 14px;border:1px dashed #0b6b5a;background:none;color:inherit;border-radius:6px;cursor:pointer;font:inherit}
.iv-totals{display:grid;grid-template-columns:1fr auto;gap:6px 16px;justify-self:end;align-items:center;min-width:240px;font-variant-numeric:tabular-nums}
.iv-totals b{text-align:right}.iv-taxrow{display:flex;gap:8px;align-items:center;justify-content:flex-end}.iv-taxrow input{width:72px}
.iv-big{font-size:20px}
@media(max-width:600px){.iv-row{grid-template-columns:1fr 1fr 1fr 36px}.iv-row .iv-d{grid-column:1/-1}.iv-head{display:none}.iv-amt{grid-column:3}.iv-totals{min-width:0;justify-self:stretch}}
.iv-ts{margin:8px 0;min-height:65px}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .n8-pack{background:rgba(23,195,162,.08)}:root:not([data-theme="light"]) .n8-cards small{color:#a9b4bf}:root:not([data-theme="light"]) .n8-meta{color:#a9b4bf}:root:not([data-theme="light"]) .iv-head{color:#a9b4bf}:root:not([data-theme="light"]) .n8-cards li{border-color:#2b3a4d}:root:not([data-theme="light"]) .iv-form fieldset{border-color:#2b3a4d}}
:root[data-theme="dark"] .n8-pack{background:rgba(23,195,162,.08)}:root[data-theme="dark"] .n8-cards small{color:#a9b4bf}:root[data-theme="dark"] .n8-meta{color:#a9b4bf}:root[data-theme="dark"] .iv-head{color:#a9b4bf}:root[data-theme="dark"] .n8-cards li{border-color:#2b3a4d}:root[data-theme="dark"] .iv-form fieldset{border-color:#2b3a4d}
/* tap targets (business.sites visual QA 11/02): checkbox 24px inside its 44px label; file input hidden behind a 48px button label */
.ft-opts label{cursor:pointer;padding:0 4px}
.ft-opts input[type=checkbox]{width:24px;height:24px;margin:0;flex:none;accent-color:var(--teal,#0b8f76);cursor:pointer}
.ft-drop input[type=file]{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.ft-drop{position:relative}
.ft-drop label[for=ft-file]{display:inline-flex;align-items:center;min-height:48px;padding:0 20px;border-radius:10px;background:#0b6b5a;color:#fff;cursor:pointer}
.ft-drop label[for=ft-file] b{font-weight:700}
.ft-drop:focus-within label[for=ft-file]{outline:3px solid #0b6b5a;outline-offset:3px}
/* free Apps Script pages (/free/scripts/) */
.sc-video{aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;border:2px dashed var(--line,#cfd6e0);border-radius:12px;margin:0 0 24px;color:#5b6670}
.sc-code{position:relative;margin:16px 0}
.sc-code pre{overflow-x:auto;max-height:520px;padding:16px;border-radius:10px;background:#0f1722;color:#e6edf3;font-size:13px;line-height:1.5}
.sc-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:12px 0}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .sc-video{color:#a9b4bf}}
:root[data-theme="dark"] .sc-video{color:#a9b4bf}
/* script pages: free download by email, or install for you (Ben #freelance-snippets 11/03 20:06) */
.sc-opts{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));margin:16px 0;align-items:start}
.sc-opt{padding:20px;border:1px solid var(--line,#cfd6e0);border-radius:12px;background:var(--soft,#f1f4f8)}
.sc-opt h3{margin:0 0 8px}
#sc-form{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:8px 0}
#sc-form input[type=email]{flex:1 1 220px;min-height:44px;padding:8px 12px;border:1px solid var(--line,#cfd6e0);border-radius:8px;font:inherit}
#sc-form .hp{position:absolute;left:-9999px}
#sc-form .iv-ts{flex-basis:100%}
#sc-form small{display:block;flex-basis:100%;color:var(--steel,#5b6676)}
.ft-btn-alt{display:inline-flex;align-items:center;text-decoration:none;background:transparent;color:inherit;border:1px solid currentColor}
.sc-done{padding:12px 16px;border-radius:8px;background:var(--paper,#fff);border:1px solid var(--line,#cfd6e0)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) #sc-form input[type=email]{background:#0f1726;color:inherit}}
.sc-price{font-weight:600}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .sc-opt,:root:not([data-theme="light"]) .sc-done{background:#152036;border-color:#2A3650}:root:not([data-theme="light"]) #sc-form small{color:#A9B4C4}}
:root[data-theme="dark"] .sc-opt,:root[data-theme="dark"] .sc-done{background:#152036;border-color:#2A3650}:root[data-theme="dark"] #sc-form small{color:#A9B4C4}
/* /free/qr-code-generator/ */
.qr-form textarea{min-height:88px;padding:10px 12px;border:1px solid var(--line,#cfd6e0);border-radius:8px;font:inherit;background:var(--paper,#fff);color:inherit;resize:vertical}
.qr-row{display:flex;flex-wrap:wrap;gap:12px}.qr-row label{flex:1 1 180px;min-width:0}
.qr-prev{background:#fff;border:1px solid var(--line,#cfd6e0);border-radius:14px;padding:16px;max-width:320px;margin:16px 0}
.qr-prev svg{display:block;width:100%;height:auto}
.qr-acts{display:flex;flex-wrap:wrap;gap:12px;margin:0 0 24px}
.qr-form label,.qr-form textarea,.qr-form select{min-width:0;max-width:100%;box-sizing:border-box}.qr-form textarea,.qr-form select{width:100%}
.ft-pre{overflow-x:auto;max-width:100%;background:var(--paper,#F5F7FA);border:1px solid var(--line,#D9DEE5);border-radius:8px;padding:12px 16px;font-size:14px;line-height:1.5}
