/* Tiger Elements Forms — frontend styles (v2 "modern"). Compiled from scss/tigform-form.scss. */
.tigform-form{--tigform-col-gap:1.25rem;--tigform-row-gap:1.4rem;--tigform-submit-align:start;--tigform-input-radius:10px;--tigform-focus-ring:4px;--tigform-accent:#6f42c1;--tigform-accent-hover:#5a35a1;--tigform-accent-contrast:#fff;--tigform-accent-soft:rgba(111,66,193,.14);--tigform-text:#1f2533;--tigform-muted:#6b7280;--tigform-border:#d9dee8;--tigform-border-strong:#c2c9d6;--tigform-surface:#fff;--tigform-surface-subtle:#f6f7fb;--tigform-error:#e5484d;--tigform-error-soft:rgba(229,72,77,.12);--tigform-success:#2ba26b;--tigform-success-soft:rgba(43,162,107,.12);--tigform-shadow-sm:0 1px 2px rgba(16,24,40,.06);--tigform-shadow-md:0 6px 18px -6px rgba(16,24,40,.18);--tigform-control-h:2.875rem;display:block;max-width:100%;color:var(--tigform-text);font-feature-settings:"kern";-webkit-font-smoothing:antialiased;contain:layout style}
.tigform-form *,.tigform-form *::before,.tigform-form *::after{box-sizing:border-box}
/* Explicit form width (builder default / shortcode width="" / block control).
   Doubled class on purpose: WordPress' constrained-layout rule
   `.is-layout-constrained > :where(...)` caps children at the theme content
   width with the SAME specificity, and won on source order — an 800px form
   silently rendered at the theme width. (0,2,0) beats it, and still loses to
   Elementor's `{{WRAPPER}} .tigform-form` so the Style tab stays the final word.
   max-width:100% keeps a fixed width from overflowing narrow screens. */
.tigform-form.tigform-form--width{width:var(--tigform-w);max-width:100%;margin-inline:auto}
.tigform-form--dark{--tigform-text:#e7e9ee;--tigform-muted:#9aa3b2;--tigform-border:#353b49;--tigform-border-strong:#454c5c;--tigform-surface:#1c1f27;--tigform-surface-subtle:#232733;--tigform-shadow-md:0 8px 24px -8px rgba(0,0,0,.6)}

.tigform-fields{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--tigform-row-gap) var(--tigform-col-gap)}
.tigform-field{grid-column:span 12;min-width:0}
.tigform-field[data-width="50"]{grid-column:span 6}
.tigform-field[data-width="33"]{grid-column:span 4}
.tigform-field[data-width="25"]{grid-column:span 3}
.tigform-field[data-width="100"]{grid-column:span 12}
.tigform-field--hidden,.tigform-hidden{display:none !important}

.tigform-field-label{display:block;margin-bottom:.45rem;font-weight:600;font-size:.9375rem;line-height:1.35;letter-spacing:.005em;color:var(--tigform-text)}
.tigform-required{margin-left:3px;color:var(--tigform-error);font-weight:700}

.tigform-input{display:block;width:100%;min-height:var(--tigform-control-h);padding:.4375rem .875rem;border:1.5px solid var(--tigform-border);border-radius:var(--tigform-input-radius);background-color:var(--tigform-surface);color:var(--tigform-text);font:inherit;font-size:1rem;line-height:1.4;box-shadow:var(--tigform-shadow-sm);transition:border-color 140ms ease,box-shadow 140ms ease,background-color 140ms ease;appearance:none}
.tigform-input::placeholder{color:var(--tigform-muted);opacity:1}
.tigform-input:hover:not(:focus):not([disabled]){border-color:var(--tigform-border-strong)}
.tigform-input:focus,.tigform-input:focus-visible{outline:none;border-color:var(--tigform-accent);box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-accent-soft)}
.tigform-input[disabled],.tigform-input[readonly]{background-color:var(--tigform-surface-subtle);opacity:.7;cursor:not-allowed}
textarea.tigform-input{min-height:7rem;line-height:1.55;resize:vertical}
select.tigform-input{padding-right:2.5rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .9rem center;cursor:pointer}
select[multiple].tigform-input{background-image:none;padding-right:.875rem;min-height:8rem}

.tigform-has-error .tigform-input{border-color:var(--tigform-error) !important;box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-error-soft)}
.tigform-has-error .tigform-field-label{color:var(--tigform-error)}
.tigform-field-error{display:flex;align-items:center;gap:.35rem;min-height:1.25rem;margin:.4rem 0 0;color:var(--tigform-error);font-size:.8125rem;font-weight:500;line-height:1.3}
.tigform-field-error:empty{display:none}
.tigform-field-error::before{content:"";flex:0 0 auto;width:14px;height:14px;background:currentColor;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v5a1 1 0 01-2 0V8a1 1 0 011-1zm0 11a1.25 1.25 0 110-2.5 1.25 1.25 0 010 2.5z'/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v5a1 1 0 01-2 0V8a1 1 0 011-1zm0 11a1.25 1.25 0 110-2.5 1.25 1.25 0 010 2.5z'/%3E%3C/svg%3E") center/contain no-repeat}
.tigform-field-help{margin:.4rem 0 0;font-size:.8125rem;line-height:1.4;color:var(--tigform-muted)}

.tigform-choices{display:flex;flex-direction:column;gap:.625rem}
/* Inline layout: choices sit on one row and wrap. The author picks the shape;
   this decides what it means at each width, which is why the setting is a class
   and not an inline style. `column-gap` is wider than the stacked `gap` because
   neighbouring choices need more separation side by side than stacked. */
.tigform-choices--inline{flex-direction:row;flex-wrap:wrap;column-gap:1.25rem;row-gap:.625rem;align-items:center}
/* The "Other" text box. Stacked, it takes the row under its choice; inline, it
   sits beside it and is allowed to shrink rather than force a horizontal
   scrollbar on a narrow screen. */
.tigform-other-text{margin-top:.375rem}
.tigform-choices--inline .tigform-other-text{margin-top:0;flex:1 1 10rem;min-width:0;width:auto}
/* Show the box only once "Other" is actually picked — otherwise it reads as an
   unlabelled empty field sitting under the choices.
   Done in CSS rather than JavaScript on purpose: the server accepts a
   submission from a page where no script ran, so the box has to be reachable
   there too. `:has()` is what makes that possible without script, and the
   @supports guard means a browser without it simply keeps the box visible —
   usable, rather than a choice the visitor can select but never answer. */
@supports selector(:has(*)){
  .tigform-choices .tigform-other-text{display:none}
  .tigform-choices .tigform-choice--other:has(input:checked) ~ .tigform-other-text{display:block}
}
.tigform-choice,.tigform-checkbox{display:inline-flex;align-items:center;gap:.625rem;cursor:pointer;font-size:.9375rem;line-height:1.4;color:var(--tigform-text);user-select:none}
.tigform-checkbox{align-items:flex-start}
.tigform-choice input[type="radio"],.tigform-choice input[type="checkbox"],.tigform-checkbox input[type="checkbox"]{appearance:none;-webkit-appearance:none;flex:0 0 auto;display:grid;place-content:center;width:1.2em;height:1.2em;margin:.1em 0 0;border:1.5px solid var(--tigform-border-strong);background:var(--tigform-surface);cursor:pointer;transition:background-color 120ms ease,border-color 120ms ease,box-shadow 120ms ease}
.tigform-choice input[type="radio"]::before,.tigform-choice input[type="checkbox"]::before,.tigform-checkbox input[type="checkbox"]::before{content:"";transform:scale(0);transition:transform 120ms ease}
.tigform-choice input[type="radio"]:focus-visible,.tigform-choice input[type="checkbox"]:focus-visible,.tigform-checkbox input[type="checkbox"]:focus-visible{outline:2px solid var(--tigform-accent);outline-offset:2px}
.tigform-choice input[type="radio"]{border-radius:50%}
.tigform-choice input[type="radio"]::before{width:.6em;height:.6em;border-radius:50%;box-shadow:inset 1em 1em var(--tigform-accent)}
.tigform-choice input[type="radio"]:checked{border-color:var(--tigform-accent)}
.tigform-choice input[type="radio"]:checked::before{transform:scale(1)}
.tigform-choice input[type="checkbox"],.tigform-checkbox input[type="checkbox"]{border-radius:.375em}
.tigform-choice input[type="checkbox"]::before,.tigform-checkbox input[type="checkbox"]::before{width:.7em;height:.7em;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%);box-shadow:inset 1em 1em var(--tigform-accent-contrast)}
.tigform-choice input[type="checkbox"]:checked,.tigform-checkbox input[type="checkbox"]:checked{background:var(--tigform-accent);border-color:var(--tigform-accent)}
.tigform-choice input[type="checkbox"]:checked::before,.tigform-checkbox input[type="checkbox"]:checked::before{transform:scale(1)}

.tigform-dropzone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;min-height:9rem;padding:1.5rem 1rem;border:2px dashed var(--tigform-border-strong);border-radius:var(--tigform-input-radius);background-color:var(--tigform-surface-subtle);text-align:center;transition:background-color 140ms ease,border-color 140ms ease}
.tigform-dropzone::before{content:"";width:28px;height:28px;margin-bottom:.25rem;background:var(--tigform-muted);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4'/%3E%3Cpolyline points='17 8 12 3 7 8'/%3E%3Cline x1='12' y1='3' x2='12' y2='15'/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4'/%3E%3Cpolyline points='17 8 12 3 7 8'/%3E%3Cline x1='12' y1='3' x2='12' y2='15'/%3E%3C/svg%3E") center/contain no-repeat}
.tigform-dropzone--active,.tigform-dropzone.tigform-dropzone--active{background-color:var(--tigform-accent-soft);border-color:var(--tigform-accent)}
.tigform-dropzone--active::before,.tigform-dropzone.tigform-dropzone--active::before{background:var(--tigform-accent)}
.tigform-dropzone .tigform-file{max-width:100%;font-size:.875rem;color:var(--tigform-muted);cursor:pointer}
.tigform-dropzone .tigform-file::file-selector-button{margin-right:.75rem;padding:.45rem .95rem;border:1.5px solid var(--tigform-border-strong);border-radius:calc(var(--tigform-input-radius) - 3px);background:var(--tigform-surface);color:var(--tigform-text);font:inherit;font-weight:600;font-size:.8125rem;cursor:pointer;transition:background-color 120ms ease,border-color 120ms ease}
.tigform-dropzone .tigform-file::file-selector-button:hover{background:var(--tigform-accent-soft);border-color:var(--tigform-accent)}
.tigform-dropzone-hint{margin:0;font-size:.875rem;font-weight:500;color:var(--tigform-muted)}
.tigform-upload-list{margin:.75rem 0 0;padding:0;list-style:none;width:100%}
.tigform-upload-list li{display:flex;align-items:center;gap:.5rem;padding:.5rem .625rem;margin-bottom:.375rem;font-size:.8125rem;background:var(--tigform-surface-subtle);border:1px solid var(--tigform-border);border-radius:calc(var(--tigform-input-radius) - 3px)}
.tigform-upload-list li progress{flex:0 0 8rem;height:6px;margin-left:auto;accent-color:var(--tigform-accent)}
.tigform-upload-status{font-size:.75rem;color:var(--tigform-muted)}
.tigform-upload-remove{margin-left:.25rem;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;border:0;border-radius:6px;background:transparent;color:var(--tigform-muted);cursor:pointer;transition:background-color 120ms ease,color 120ms ease}
.tigform-upload-remove:hover,.tigform-upload-remove:focus-visible{background:rgba(229,57,53,.12);color:#e53935;outline:none}
.tigform-upload-remove svg{display:block;width:16px;height:16px}
.tigform-upload-item--notice{justify-content:center;color:var(--tigform-muted);font-style:italic}
.tigform-upload-item--error .tigform-upload-status{color:#e53935}
.tigform-confirm-backdrop{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(15,23,42,.55);animation:tigform-confirm-in 120ms ease}
.tigform-confirm{width:100%;max-width:24rem;background:var(--tigform-surface,#fff);color:var(--tigform-text,#1a1a1a);border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.28);padding:1.25rem 1.25rem 1rem;font-family:inherit}
.tigform-confirm-title{margin:0 0 .4rem;font-size:1.0625rem;font-weight:700;line-height:1.3}
.tigform-confirm-msg{margin:0 0 1rem;font-size:.9rem;line-height:1.45;color:var(--tigform-muted,#555);word-break:break-word}
.tigform-confirm-actions{display:flex;justify-content:flex-end;gap:.5rem}
.tigform-confirm-btn{appearance:none;-webkit-appearance:none;border:1px solid transparent;border-radius:8px;padding:.5rem .9rem;font:inherit;font-size:.875rem;font-weight:600;cursor:pointer;transition:background-color 120ms ease,border-color 120ms ease,color 120ms ease}
.tigform-confirm-btn--ghost{background:transparent;border-color:var(--tigform-border,#d1d5db);color:var(--tigform-text,#1a1a1a)}
.tigform-confirm-btn--ghost:hover{background:var(--tigform-surface-subtle,#f3f4f6)}
.tigform-confirm-btn--danger{background:#e53935;color:#fff}
.tigform-confirm-btn--danger:hover{background:#c62828}
.tigform-confirm-btn:focus-visible{outline:2px solid var(--tigform-accent,#6d28d9);outline-offset:2px}
@keyframes tigform-confirm-in{from{opacity:0}to{opacity:1}}
/* File field: icon lives inside a centered trigger button; hide the raw input. */
.tigform-dropzone::before{content:none}
.tigform-dropzone{gap:.55rem}
.tigform-dropzone .tigform-file{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;opacity:0}
.tigform-file-button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;margin:0 auto;padding:.55rem 1.15rem;border:1.5px solid var(--tigform-border-strong);border-radius:calc(var(--tigform-input-radius) - 3px);background:var(--tigform-surface);color:var(--tigform-text);font:inherit;font-weight:600;font-size:.8125rem;line-height:1;cursor:pointer;transition:background-color 120ms ease,border-color 120ms ease,color 120ms ease}
.tigform-file-button:hover,.tigform-file-button:focus-within{background:var(--tigform-accent-soft);border-color:var(--tigform-accent);color:var(--tigform-text)}
.tigform-file-button:focus-within{outline:2px solid var(--tigform-accent);outline-offset:2px}
.tigform-file-button-icon{flex:0 0 auto;width:18px;height:18px}

.tigform-calc{display:inline-flex;align-items:center;min-height:var(--tigform-control-h);padding:.625rem .875rem;background-color:var(--tigform-surface-subtle);border:1.5px solid var(--tigform-border);border-radius:var(--tigform-input-radius);font-variant-numeric:tabular-nums;font-weight:700;font-size:1.0625rem;color:var(--tigform-text)}

.tigform-step:not(.tigform-step--active){display:none}
.tigform-step-heading{margin:0 0 1.25rem;font-size:1.25rem;font-weight:700;line-height:1.3;color:var(--tigform-text)}
.tigform-step-nav{display:flex;justify-content:space-between;gap:.75rem;margin-top:1.5rem}
.tigform-btn-prev,.tigform-btn-next{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:var(--tigform-control-h);padding:.625rem 1.35rem;border-radius:var(--tigform-input-radius);font:inherit;font-weight:600;cursor:pointer;transition:background-color 140ms ease,border-color 140ms ease,transform 80ms ease,box-shadow 140ms ease}
.tigform-btn-prev:active,.tigform-btn-next:active{transform:translateY(1px)}
.tigform-btn-prev:focus-visible,.tigform-btn-next:focus-visible{outline:2px solid var(--tigform-accent);outline-offset:2px}
.tigform-btn-prev{border:1.5px solid var(--tigform-border-strong);background:var(--tigform-surface);color:var(--tigform-text)}
.tigform-btn-prev:hover{background:var(--tigform-surface-subtle)}
.tigform-btn-next{margin-left:auto;border:1.5px solid var(--tigform-accent);background:var(--tigform-accent);color:var(--tigform-accent-contrast);box-shadow:var(--tigform-shadow-sm)}
.tigform-btn-next:hover{background:var(--tigform-accent-hover);border-color:var(--tigform-accent-hover)}

.tigform-progress{margin-bottom:1.75rem}
.tigform-progress-list{display:flex;justify-content:space-between;gap:.5rem;list-style:none;padding:0;margin:0 0 .75rem;counter-reset:tigform-step;font-size:.8125rem}
.tigform-progress-step{counter-increment:tigform-step;position:relative;flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:.5rem;text-align:center;color:var(--tigform-muted);font-weight:500}
.tigform-progress-step::before{content:counter(tigform-step);display:grid;place-content:center;width:2rem;height:2rem;border-radius:50%;border:2px solid var(--tigform-border-strong);background:var(--tigform-surface);color:var(--tigform-muted);font-weight:700;transition:background-color 160ms ease,border-color 160ms ease,color 160ms ease}
.tigform-progress-step:not(:last-child)::after{content:"";position:absolute;top:1rem;left:calc(50% + 1.25rem);right:calc(-50% + 1.25rem);height:2px;background:var(--tigform-border-strong)}
.tigform-progress-step.is-active::before{border-color:var(--tigform-accent);color:var(--tigform-accent);box-shadow:0 0 0 4px var(--tigform-accent-soft)}
.tigform-progress-step.is-active{color:var(--tigform-text);font-weight:600}
.tigform-progress-step.is-complete::before{background:var(--tigform-accent);border-color:var(--tigform-accent);color:var(--tigform-accent-contrast)}
.tigform-progress-step.is-complete::after{background:var(--tigform-accent)}
.tigform-progress-bar{height:6px;background-color:var(--tigform-accent);border-radius:999px;width:0;transition:width 260ms ease}
.tigform-progress--bar .tigform-progress-bar{box-shadow:0 0 0 100rem var(--tigform-surface-subtle) inset}

.tigform-checkbox-text{flex:1 1 auto;min-width:0}
.tigform-field--gdpr .tigform-checkbox span{font-size:.875rem;color:var(--tigform-muted);line-height:1.5}
.tigform-field--gdpr a{color:var(--tigform-accent)}

.tigform-submit-row:not([hidden]){display:flex;justify-content:var(--tigform-submit-align,start);margin-top:1.75rem}
.tigform-submit-row[data-align="center"]{justify-content:center}
.tigform-submit-row[data-align="right"]{justify-content:flex-end}
.tigform-submit-row[data-align="stretch"] .tigform-submit{width:100%}
.tigform-submit{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;min-height:var(--tigform-control-h);padding:.75rem 1.75rem;border:0;border-radius:var(--tigform-input-radius);cursor:pointer;font:inherit;font-size:1rem;font-weight:600;letter-spacing:.01em;background-color:var(--tigform-accent);color:var(--tigform-accent-contrast);box-shadow:var(--tigform-shadow-sm);transition:background-color 140ms ease,box-shadow 160ms ease,transform 90ms ease}
.tigform-submit:hover:not([disabled]){background-color:var(--tigform-accent-hover);box-shadow:var(--tigform-shadow-md);transform:translateY(-1px)}
.tigform-submit:active:not([disabled]){transform:translateY(0);box-shadow:var(--tigform-shadow-sm)}
.tigform-submit:focus-visible{outline:2px solid var(--tigform-accent);outline-offset:3px}
.tigform-submit[disabled],.tigform-submit:disabled{opacity:.6;cursor:not-allowed;transform:none}
.tigform-submit--full{width:100%}
.tigform-submit-loading:not([hidden]){display:inline-flex;align-items:center;gap:.45rem}
.tigform-form.tigform-is-busy .tigform-submit-text{display:none}
.tigform-form.tigform-is-busy .tigform-submit-loading{display:inline-flex !important}
.tigform-form.tigform-is-busy .tigform-submit{cursor:progress}
.tigform-spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.45);border-top-color:currentColor;border-radius:50%;animation:tigform-spin 700ms linear infinite}
@keyframes tigform-spin{to{transform:rotate(360deg)}}

.tigform-success:not([hidden]),.tigform-form-error:not([hidden]){display:flex;align-items:flex-start;gap:.625rem;padding:.875rem 1.05rem;border-radius:var(--tigform-input-radius);border:1px solid transparent;margin:0 0 1.25rem;font-size:.9375rem;line-height:1.45;animation:tigform-banner-in 220ms ease}
.tigform-success::before,.tigform-form-error::before{content:"";flex:0 0 auto;width:18px;height:18px;margin-top:1px;background:currentColor}
.tigform-success{background-color:var(--tigform-success-soft);border-color:rgba(43,162,107,.3);color:var(--tigform-success)}
.tigform-success::before{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 100 20 10 10 0 000-20zm-1.1 14.3l-3.6-3.6 1.4-1.4 2.2 2.2 4.9-4.9 1.4 1.4-6.3 6.3z'/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 100 20 10 10 0 000-20zm-1.1 14.3l-3.6-3.6 1.4-1.4 2.2 2.2 4.9-4.9 1.4 1.4-6.3 6.3z'/%3E%3C/svg%3E") center/contain no-repeat}
.tigform-form-error{background-color:var(--tigform-error-soft);border-color:rgba(229,72,77,.3);color:var(--tigform-error)}
.tigform-form-error::before{mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v5a1 1 0 01-2 0V8a1 1 0 011-1zm0 11a1.25 1.25 0 110-2.5 1.25 1.25 0 010 2.5z'/%3E%3C/svg%3E") center/contain no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 100 20 10 10 0 000-20zm0 5a1 1 0 011 1v5a1 1 0 01-2 0V8a1 1 0 011-1zm0 11a1.25 1.25 0 110-2.5 1.25 1.25 0 010 2.5z'/%3E%3C/svg%3E") center/contain no-repeat}
@keyframes tigform-banner-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}

.tigform-labels--left .tigform-field{display:grid;grid-template-columns:9rem 1fr;align-items:center;gap:.5rem 1.25rem}
.tigform-labels--left .tigform-field-label{margin-bottom:0}
.tigform-labels--left .tigform-field-error,.tigform-labels--left .tigform-field-help{grid-column:2}
.tigform-labels--inside .tigform-field{position:relative}
.tigform-labels--inside .tigform-field-label{position:absolute;top:0;left:.65rem;margin:0;padding:0 .35rem;background:var(--tigform-surface);color:var(--tigform-muted);font-weight:500;transform:translateY(.85rem);pointer-events:none;transition:transform 130ms ease,font-size 130ms ease,color 130ms ease}
.tigform-labels--inside .tigform-field:focus-within .tigform-field-label,.tigform-labels--inside .tigform-field:has(.tigform-input:not(:placeholder-shown)) .tigform-field-label{transform:translateY(-.65rem);font-size:.75rem;color:var(--tigform-accent)}

.tigform-honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.tigform-sr-only,.tigform-labels--hidden .tigform-field-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@media (max-width:640px){
.tigform-field{grid-column:span 12 !important}
.tigform-form{--tigform-col-gap:.9rem;--tigform-row-gap:1.15rem}
.tigform-labels--left .tigform-field{grid-template-columns:1fr}
.tigform-labels--left .tigform-field-error,.tigform-labels--left .tigform-field-help{grid-column:1}
.tigform-step-nav{flex-direction:column-reverse}
.tigform-step-nav .tigform-btn-prev,.tigform-step-nav .tigform-btn-next{width:100%;margin-left:0}
.tigform-submit-row{justify-content:stretch}
.tigform-submit{width:100%}
.tigform-progress-list{font-size:.6875rem}
.tigform-progress-step::after{display:none}
}

/* Image choice — a grid of selectable image tiles. Column count comes from the
   field's `columns` (1–8) via the --tigform-ic-cols custom property set inline. */
.tigform-image-choice{display:grid;gap:.75rem;grid-template-columns:repeat(var(--tigform-ic-cols,3),minmax(0,1fr))}
.tigform-image-choice__tile{display:block;cursor:pointer}
.tigform-image-choice__input{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}
.tigform-image-choice__thumb{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;overflow:hidden;border:2px solid var(--tigform-border);border-radius:var(--tigform-input-radius);background:var(--tigform-surface-subtle);box-shadow:var(--tigform-shadow-sm);transition:border-color 140ms ease,box-shadow 140ms ease}
.tigform-image-choice__thumb img{width:100%;height:100%;object-fit:cover;display:block}
.tigform-image-choice__tile:hover .tigform-image-choice__thumb{border-color:var(--tigform-border-strong)}
.tigform-image-choice__input:focus-visible+.tigform-image-choice__thumb,
.tigform-image-choice__input:checked+.tigform-image-choice__thumb{outline:none;border-color:var(--tigform-accent);box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-accent-soft)}
.tigform-image-choice__caption{display:block;margin-top:.45rem;font-size:.875rem;font-weight:500;line-height:1.35;color:var(--tigform-text)}

@media (prefers-reduced-motion:reduce){
.tigform-spinner{animation:none}
.tigform-submit,.tigform-btn-prev,.tigform-btn-next,.tigform-progress-bar,.tigform-progress-step::before,.tigform-dropzone,.tigform-input,.tigform-success,.tigform-form-error,.tigform-labels--inside .tigform-field-label{transition:none;animation:none}
}

@media (prefers-contrast:more){
.tigform-form{--tigform-border:#6b7280;--tigform-border-strong:#4b5563}
}
.tigform-signature{display:flex;flex-direction:column;gap:.5rem}
.tigform-signature-canvas{display:block;width:100%;height:200px;border:2px solid var(--tigform-border-strong);border-radius:var(--tigform-input-radius);background:var(--tigform-surface);touch-action:none}
/* A pen, not the crosshair a canvas gets by default: the pad is a thing you
   sign, and a "+" reads as "select a region". White halo so it stays visible
   on the pad, and the hotspot sits on the nib (2 22) so ink appears at the tip
   rather than the middle of the glyph. `crosshair` is the fallback for anything
   that will not take an image cursor. */
.tigform-signature-canvas{cursor:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%3E%3Cpath%20d='M21.174%206.812a1%201%200%200%200-3.986-3.987L3.842%2016.174a2%202%200%200%200-.5.83l-1.321%204.352a.5.5%200%200%200%20.623.622l4.353-1.32a2%202%200%200%200%20.83-.497z'%20fill='none'%20stroke='%23ffffff'%20stroke-width='3.5'%20stroke-linejoin='round'/%3E%3Cpath%20d='M21.174%206.812a1%201%200%200%200-3.986-3.987L3.842%2016.174a2%202%200%200%200-.5.83l-1.321%204.352a.5.5%200%200%200%20.623.622l4.353-1.32a2%202%200%200%200%20.83-.497z'%20fill='%23111827'/%3E%3C/svg%3E") 2 22,crosshair}
.tigform-signature-bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
/* The hint carries the field's own mark, so the live form names the field the
   way the builder does. Sits on the text baseline and dims with the text. */
.tigform-signature-hint{font-size:.8125rem;color:var(--tigform-muted);display:inline-flex;align-items:center;gap:.375rem}
.tigform-signature-icon{flex:0 0 auto;opacity:.75}
.tigform-signature.is-signed .tigform-signature-hint{visibility:hidden}
.tigform-signature-clear{padding:.4rem .9rem;border:1.5px solid var(--tigform-border-strong);border-radius:calc(var(--tigform-input-radius) - 3px);background:var(--tigform-surface);color:var(--tigform-text);font:inherit;font-weight:600;font-size:.8125rem;cursor:pointer;transition:background-color 120ms ease,border-color 120ms ease}
.tigform-signature-clear:hover{background:var(--tigform-accent-soft);border-color:var(--tigform-accent)}
.tigform-range{display:flex;align-items:center;gap:.75rem}
.tigform-range-input{flex:1;min-width:0;accent-color:var(--tigform-accent,#ec7002);cursor:pointer}
.tigform-range-value{min-width:3ch;padding:.15rem .5rem;border-radius:calc(var(--tigform-input-radius) - 4px);background:var(--tigform-surface-subtle,#f4f7f6);color:var(--tigform-text);font-weight:600;font-size:.875rem;text-align:center;font-variant-numeric:tabular-nums}
/* Composite fields (name, address) — the author sets each part's width as a
   percentage, and those percentages are a DESKTOP intent. First + Last at 50/50
   are two usable boxes in a page column and two cramped ones in a phone; the
   parts have to go full width before that happens.

   The trigger is the container's own width, not the viewport's, and it is done
   with intrinsic flex wrapping rather than a media query or a container query.

   Not a media query, because the same form is rendered in a full-width page, an
   Elementor column, a block-editor group and a sidebar widget: a form 300px wide
   on a 1440px monitor needs to stack, and a viewport query cannot see that.

   Not a container query either, tempting as it is. Making .tigform-form a query
   container means `container-type: inline-size`, which also makes it the
   containing block for position:fixed descendants — and .tigform-dt-panel is
   fixed with JS-computed VIEWPORT coordinates, while .tigform-confirm-backdrop
   is `fixed; inset:0` to cover the screen. Both would silently start measuring
   from the form instead, so the date picker would open in the wrong place and
   the confirm dialog would dim only the form.

   The BASIS carries both ideas: max() of the author's percentage and a 12rem
   floor. Wide container — the percentage wins and the parts sit where the author
   put them. Narrow — the floor wins, two no longer fit on a line, and wrap puts
   each on its own where flex-grow fills the row.

   min-width:0, not a percentage minimum, and this is the part worth remembering.
   `min-width: min(100%, 12rem)` says the same thing and looks right, but a
   PERCENTAGE minimum resolves against a container whose width this very item is
   deciding — so the browser takes the 12rem half and the part refuses to shrink
   below 192px. In Elementor's 180px column that pushed the name inputs 60px
   outside the form, on an 1872px screen where no viewport breakpoint would ever
   have looked. A length basis with a zero minimum has no such circularity: the
   basis decides when to wrap, and zero lets a wrapped part shrink to the room
   there is. */
/* Autosave prompt — "We saved your progress. Restore?"
   
   This shipped with no styling whatsoever: three bare elements prepended to the
   form, so it rendered as unstyled text next to two default browser buttons, and
   on a narrow screen each button took its own line. It is the first thing a
   returning visitor sees, and it looked like a rendering fault.

   Laid out so the buttons stay together when the bar wraps: the text is the only
   flexible item, so it takes the first line on its own once there is not room for
   everything, and the two buttons pair on the second rather than stacking one per
   line. */
.tigform-autosave-prompt{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .625rem;margin:0 0 1rem;padding:.625rem .75rem;border:1px solid var(--tigform-border);border-radius:var(--tigform-input-radius);background:var(--tigform-surface-subtle);font-size:.875rem;line-height:1.4;color:var(--tigform-text)}
.tigform-autosave-text{flex:1 1 12rem;min-width:0}
.tigform-autosave-prompt button{flex:0 0 auto;padding:.3rem .75rem;border-radius:calc(var(--tigform-input-radius) - 3px);font:inherit;font-size:.8125rem;font-weight:500;line-height:1.4;cursor:pointer;transition:background-color 140ms ease,border-color 140ms ease,color 140ms ease}
.tigform-autosave-restore{border:1.5px solid var(--tigform-accent);background:var(--tigform-accent);color:var(--tigform-accent-contrast)}
.tigform-autosave-restore:hover{background:var(--tigform-accent-hover);border-color:var(--tigform-accent-hover)}
.tigform-autosave-dismiss{border:1.5px solid var(--tigform-border-strong);background:var(--tigform-surface);color:var(--tigform-muted)}
.tigform-autosave-dismiss:hover{color:var(--tigform-text);border-color:var(--tigform-text)}
.tigform-autosave-prompt button:focus-visible{outline:2px solid var(--tigform-accent);outline-offset:2px}
.tigform-composite{display:flex;flex-wrap:wrap;gap:.75rem;min-width:0}
.tigform-composite-cell{flex:1 1 max(12rem, calc(var(--tigform-cw,50%) - .75rem));min-width:0;max-width:100%;display:flex;flex-direction:column;gap:.3rem}
.tigform-composite-label{font-size:.8125rem;font-weight:500;color:var(--tigform-muted)}

.tigform-product--list,.tigform-product--cards{display:grid;gap:.75rem}
.tigform-product--list{grid-template-columns:1fr}
.tigform-product--cards{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.tigform-product-option{position:relative;display:flex;flex-direction:column;cursor:pointer;border:1px solid var(--tigform-border);border-radius:var(--tigform-input-radius);background:var(--tigform-surface);transition:border-color .15s,box-shadow .15s}
.tigform-product-option:hover{border-color:var(--tigform-border-strong)}
.tigform-product--list .tigform-product-option{flex-direction:row;align-items:center;gap:.75rem;padding:.85rem 1rem}
.tigform-product-radio{position:absolute;top:.85rem;left:.85rem;accent-color:var(--tigform-accent)}
.tigform-product--list .tigform-product-radio{position:static;flex:0 0 auto}
.tigform-product-option:has(.tigform-product-radio:checked){border-color:var(--tigform-accent);box-shadow:0 0 0 1px var(--tigform-accent)}
.tigform-product-option:has(.tigform-product-radio:focus-visible){box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-accent-soft)}
.tigform-product-media{display:block;width:100%;aspect-ratio:16/10;background:var(--tigform-surface-subtle);border-radius:calc(var(--tigform-input-radius) - 1px) calc(var(--tigform-input-radius) - 1px) 0 0;overflow:hidden}
.tigform-product-media img{width:100%;height:100%;object-fit:cover;display:block}
.tigform-product--cards .tigform-product-body{padding:.75rem .9rem 0}
.tigform-product--cards .tigform-product-price{padding:.25rem .9rem .85rem}
.tigform-product-body{display:flex;flex-direction:column;gap:.15rem;flex:1;min-width:0}
.tigform-product--list .tigform-product-body{padding:0}
.tigform-product-name{font-weight:600;color:var(--tigform-text)}
.tigform-product-desc{font-size:.8125rem;color:var(--tigform-muted);line-height:1.4}
.tigform-product-price{font-weight:600;color:var(--tigform-accent);white-space:nowrap}
.tigform-product--list .tigform-product-price{margin-left:auto}

.tigform-field--heading{margin-bottom:.5rem}
.tigform-heading{margin:0;font-weight:700;color:var(--tigform-text);line-height:1.3}
h2.tigform-heading{font-size:1.4rem}h3.tigform-heading{font-size:1.15rem}h4.tigform-heading{font-size:1rem}
.tigform-heading-sub{margin:.25rem 0 0;font-size:.875rem;color:var(--tigform-muted);line-height:1.5}
.tigform-divider{border:0;border-top:1px solid var(--tigform-border);margin:.5rem 0}
.tigform-divider--text{display:flex;align-items:center;gap:.75rem;color:var(--tigform-muted);font-size:.8125rem;border:0;margin:.25rem 0}
.tigform-divider--text::before,.tigform-divider--text::after{content:"";flex:1;height:1px;background:var(--tigform-border)}
.tigform-field--html{color:var(--tigform-text);font-size:.9375rem;line-height:1.6}
.tigform-field--section{margin-bottom:.5rem}
.tigform-section{border:1px solid var(--tigform-border);border-radius:8px;padding:.85rem 1rem;background:var(--tigform-surface,transparent)}
.tigform-section-title{margin:0;font-weight:700;font-size:1.05rem;color:var(--tigform-text);line-height:1.3}
.tigform-section-desc{margin:.25rem 0 0;font-size:.875rem;color:var(--tigform-muted);line-height:1.5}
.tigform-field--spacer{margin:0}
.tigform-spacer{width:100%}
.tigform-field--image{margin-bottom:.5rem}
.tigform-image-wrap{display:flex}
.tigform-image-wrap--left{justify-content:flex-start}
.tigform-image-wrap--center{justify-content:center}
.tigform-image-wrap--right{justify-content:flex-end}
.tigform-image{max-width:100%;height:auto;border-radius:6px}
.tigform-consent{display:flex;align-items:flex-start;gap:.55rem;cursor:pointer;font-size:.9375rem;line-height:1.5;color:var(--tigform-text)}
.tigform-consent-box{margin-top:.2rem;flex:0 0 auto;width:1rem;height:1rem;accent-color:var(--tigform-accent)}
.tigform-consent-text a{color:var(--tigform-accent);text-decoration:underline}
.tigform-toggle{display:inline-flex;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tigform-toggle-input{position:absolute;opacity:0;width:0;height:0}
.tigform-toggle-track{position:relative;display:inline-block;width:2.75rem;height:1.5rem;border-radius:999px;background:var(--tigform-border-strong);transition:background 150ms ease}
.tigform-toggle-thumb{position:absolute;top:2px;left:2px;width:1.125rem;height:1.125rem;border-radius:50%;background:var(--tigform-surface);box-shadow:var(--tigform-shadow-sm);transition:transform 150ms ease}
.tigform-toggle-input:checked~.tigform-toggle-track{background:var(--tigform-accent)}
.tigform-toggle-input:checked~.tigform-toggle-track .tigform-toggle-thumb{transform:translateX(1.25rem)}
.tigform-toggle-input:focus-visible~.tigform-toggle-track{box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-accent-soft)}
.tigform-nps{display:flex;flex-wrap:wrap;gap:.4rem}
.tigform-nps-btn{position:relative;flex:1 1 2.25rem;min-width:2.25rem}
.tigform-nps-btn input{position:absolute;opacity:0;width:0;height:0}
.tigform-nps-btn span{display:flex;align-items:center;justify-content:center;height:2.5rem;border:1.5px solid var(--tigform-border);border-radius:8px;background:var(--tigform-surface);color:var(--tigform-text);font-weight:600;font-size:.9375rem;cursor:pointer;transition:border-color 140ms ease,background 140ms ease,color 140ms ease}
.tigform-nps-btn:hover span{border-color:var(--tigform-border-strong)}
.tigform-nps-btn input:checked~span{border-color:var(--tigform-accent);background:var(--tigform-accent);color:var(--tigform-accent-contrast)}
.tigform-nps-btn input:focus-visible~span{box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-accent-soft)}
.tigform-nps-ends{display:flex;justify-content:space-between;margin-top:.4rem;font-size:.8125rem;color:var(--tigform-muted)}
.tigform-input[type=color]{max-width:4rem;min-height:2.875rem;padding:.25rem;cursor:pointer}

/* Repeater — repeatable group of child fields. Each row is a bordered card with
   a small remove × top-right; the add control is a full-width dashed ghost button. */
.tigform-repeater{display:flex;flex-direction:column;gap:.9rem}
.tigform-repeater-rows{display:flex;flex-direction:column;gap:.9rem}
.tigform-repeater-row{position:relative;padding:1.1rem 1.1rem 1rem;border:1.5px solid var(--tigform-border);border-radius:var(--tigform-input-radius);background:var(--tigform-surface-subtle);box-shadow:var(--tigform-shadow-sm)}
.tigform-repeater-row-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.tigform-repeater-row-fields>.tigform-field{margin:0}
.tigform-repeater-row-fields>.tigform-field[data-width="100"]{grid-column:1 / -1}
@media (max-width:560px){.tigform-repeater-row-fields{grid-template-columns:1fr}.tigform-repeater-row-fields>.tigform-field{grid-column:1 / -1}}
.tigform-repeater-remove{position:absolute;top:.55rem;right:.55rem;display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;border:1.5px solid var(--tigform-border-strong);border-radius:50%;background:var(--tigform-surface);color:var(--tigform-muted);font-size:1.15rem;line-height:1;cursor:pointer;transition:background-color 120ms ease,border-color 120ms ease,color 120ms ease}
.tigform-repeater-remove:hover{background:var(--tigform-error-soft);border-color:var(--tigform-error);color:var(--tigform-error)}
.tigform-repeater-remove:focus-visible{outline:2px solid var(--tigform-accent);outline-offset:2px}
.tigform-repeater-remove[disabled]{opacity:.4;cursor:not-allowed}
.tigform-repeater-add{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;width:100%;min-height:var(--tigform-control-h);padding:.6rem 1rem;border:1.5px dashed var(--tigform-border-strong);border-radius:var(--tigform-input-radius);background:transparent;color:var(--tigform-accent);font:inherit;font-weight:600;cursor:pointer;transition:background-color 140ms ease,border-color 140ms ease,color 140ms ease}
.tigform-repeater-add::before{content:"+";font-size:1.15rem;line-height:1;font-weight:700}
.tigform-repeater-add:hover{background:var(--tigform-accent-soft);border-color:var(--tigform-accent)}
.tigform-repeater-add:focus-visible{outline:2px solid var(--tigform-accent);outline-offset:2px}
.tigform-repeater-add[disabled]{opacity:.45;cursor:not-allowed;color:var(--tigform-muted)}

/* Matrix (Likert grid) — statement rows × scale columns. The wrapper allows the
   grid to scroll horizontally on narrow screens rather than crushing columns or
   breaking the page layout; the table itself stays full-width when it fits. */
/* Star rating — CSS only. Stars are emitted highest-first by
   Form_Renderer::render_rating and flipped here, so `:checked ~ star` can fill
   every star up to the chosen one (and `:hover ~ star` preview it) with no JS. */
.tigform-rating{display:inline-flex;flex-direction:row-reverse;justify-content:flex-end;align-items:center;gap:.15rem;font-size:1.5rem;line-height:1}
.tigform-rating-star{display:inline-flex;align-items:center;justify-content:center;min-width:1.5em;min-height:1.5em;color:var(--tigform-border-strong);cursor:pointer;border-radius:6px;transition:color 120ms ease,transform 120ms ease}
.tigform-rating-input:checked ~ .tigform-rating-star{color:var(--tigform-accent)}
.tigform-rating:hover .tigform-rating-star{color:var(--tigform-border-strong)}
.tigform-rating-star:hover,.tigform-rating-star:hover ~ .tigform-rating-star{color:var(--tigform-accent);transform:scale(1.06)}
.tigform-rating-input:focus-visible + .tigform-rating-star{outline:none;box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-accent-soft)}
.tigform-has-error .tigform-rating-star{color:var(--tigform-error)}

.tigform-matrix-wrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1.5px solid var(--tigform-border);border-radius:var(--tigform-input-radius);background:var(--tigform-surface)}
.tigform-matrix{width:100%;border-collapse:collapse;font-size:.9375rem;color:var(--tigform-text)}
.tigform-matrix th,.tigform-matrix td{padding:.7rem .85rem;text-align:center;border-bottom:1px solid var(--tigform-border);vertical-align:middle}
.tigform-matrix thead th{background:var(--tigform-surface-subtle);font-weight:600;line-height:1.3;white-space:normal;position:sticky;top:0}
.tigform-matrix .tigform-matrix-col{min-width:5.5rem}
.tigform-matrix .tigform-matrix-corner{background:var(--tigform-surface-subtle);border-bottom:1px solid var(--tigform-border)}
.tigform-matrix tbody tr:last-child th,.tigform-matrix tbody tr:last-child td{border-bottom:0}
.tigform-matrix tbody tr:nth-child(even) td,.tigform-matrix tbody tr:nth-child(even) .tigform-matrix-row{background:var(--tigform-surface-subtle)}
.tigform-matrix .tigform-matrix-row{text-align:left;font-weight:600;line-height:1.4;min-width:9rem;white-space:normal}
.tigform-matrix-cell{cursor:pointer}
.tigform-matrix-option{display:inline-flex;align-items:center;justify-content:center;margin:0;cursor:pointer}
.tigform-matrix-option input[type="radio"]{appearance:none;-webkit-appearance:none;flex:0 0 auto;display:grid;place-content:center;width:1.2em;height:1.2em;margin:0;border:1.5px solid var(--tigform-border-strong);border-radius:50%;background:var(--tigform-surface);cursor:pointer;transition:background-color 120ms ease,border-color 120ms ease,box-shadow 120ms ease}
.tigform-matrix-option input[type="radio"]::before{content:"";width:.6em;height:.6em;border-radius:50%;transform:scale(0);transition:transform 120ms ease;box-shadow:inset 1em 1em var(--tigform-accent)}
.tigform-matrix-option input[type="radio"]:checked{border-color:var(--tigform-accent)}
.tigform-matrix-option input[type="radio"]:checked::before{transform:scale(1)}
.tigform-matrix-option input[type="radio"]:hover:not(:checked){border-color:var(--tigform-accent)}
.tigform-matrix-option input[type="radio"]:focus-visible{outline:none;box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-accent-soft)}

/* Matrix on phones: STACK instead of side-scroll.
   A Likert grid needs row-label + one column per scale point — ~584px minimum,
   which on a 325px form left the table scrolling sideways inside its box with
   no affordance that it could. Below 640px each row becomes its own labelled
   group and each option a full-width, thumb-sized line. The column heading is
   already in the cell as an sr-only span (Form_Renderer::render_matrix), so it
   is simply unhidden here — no markup duplication, and the accessible name of
   every radio stays exactly what it was. */
@media (max-width:640px){
.tigform-rating{font-size:1.9rem;gap:.25rem}
.tigform-matrix-wrap{overflow-x:visible}
.tigform-matrix,.tigform-matrix tbody,.tigform-matrix tr,.tigform-matrix td,.tigform-matrix th{display:block;width:auto}
.tigform-matrix thead{display:none}
.tigform-matrix tbody tr{border-bottom:1.5px solid var(--tigform-border);padding:.15rem 0 .4rem}
.tigform-matrix tbody tr:last-child{border-bottom:0}
.tigform-matrix tbody tr:nth-child(even) td{background:none}
.tigform-matrix .tigform-matrix-row{min-width:0;padding:.7rem .85rem .3rem;border-bottom:0}
.tigform-matrix .tigform-matrix-cell{padding:0;border-bottom:0}
.tigform-matrix-option{display:flex;align-items:center;justify-content:flex-start;gap:.65rem;width:100%;min-height:44px;padding:.35rem .85rem;text-align:left}
.tigform-matrix-option .tigform-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal;font-size:.9375rem}
}

/* ── Date / time picker ─────────────────────────────────────────────────────
   Custom control replacing the native date/time widget: the whole field opens
   the panel (natives only respond to their tiny glyph) and it inherits the
   form's tokens, so light/dark and custom accents work with no extra config. */
.tigform-dt{position:relative}
/* The picker hides the real <input> and puts a <button> in its place. The
   button carries .tigform-input, but a bare `button{border:0;background:transparent}`
   reset — the admin bundle ships one, and so do plenty of themes — is enough
   to strip the frame back off it, leaving a date field that looked like a
   label floating between two bordered inputs. Restating them on a
   two-class selector puts the control back inside its box wherever it is
   rendered, and is a no-op where nothing had reset it. */
.tigform-dt .tigform-dt-trigger{border:1.5px solid var(--tigform-border);border-radius:var(--tigform-input-radius);background-color:var(--tigform-surface)}
.tigform-dt-trigger{display:flex;align-items:center;gap:.625rem;width:100%;text-align:left;cursor:pointer}
.tigform-dt-value{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tigform-dt-trigger.is-empty .tigform-dt-value{color:var(--tigform-muted)}
.tigform-dt-icon{flex:0 0 auto;margin-left:auto;display:inline-flex;color:var(--tigform-muted);transition:color 140ms ease}
.tigform-dt-icon svg{width:1.125rem;height:1.125rem}
.tigform-dt-trigger:hover .tigform-dt-icon,.tigform-dt-trigger[aria-expanded="true"] .tigform-dt-icon{color:var(--tigform-accent)}
.tigform-dt-trigger[aria-expanded="true"]{border-color:var(--tigform-accent);box-shadow:0 0 0 var(--tigform-focus-ring) var(--tigform-accent-soft)}

/* position:fixed + JS-computed coords: an absolutely positioned panel gets
   cropped by any ancestor overflow (theme section wrappers do this), fixed
   is measured against the viewport instead. */
.tigform-dt-panel{position:fixed;z-index:2147483000;top:0;left:0;display:flex;flex-direction:column;gap:.25rem;width:max-content;padding:.875rem;border:1px solid var(--tigform-border);border-radius:14px;background:var(--tigform-surface);box-shadow:var(--tigform-shadow-md);animation:tigform-dt-in 120ms ease-out;overflow:auto}
/* flex-start so the CALENDAR sets the row height; the time block alone opts
   into stretch to match it. With `stretch` here both grew and fed back into
   each other, leaving a tall panel with dead space under the day grid. */
.tigform-dt-body{display:flex;align-items:flex-start;gap:.875rem}
.tigform-dt-panel[hidden]{display:none}
@keyframes tigform-dt-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.tigform-dt-panel{animation:none}}

.tigform-dt-cal{width:16.5rem;flex:0 0 auto}
.tigform-dt-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}
.tigform-dt-title{font-size:.9375rem;font-weight:600;color:var(--tigform-text)}
.tigform-dt-nav{display:inline-flex;align-items:center;justify-content:center;width:1.875rem;height:1.875rem;border:0;border-radius:8px;background:transparent;color:var(--tigform-muted);cursor:pointer;transition:background-color 120ms ease,color 120ms ease}
.tigform-dt-nav svg{width:1rem;height:1rem}
.tigform-dt-nav:hover{background:var(--tigform-surface-subtle);color:var(--tigform-text)}
.tigform-dt-nav:focus-visible{outline:none;box-shadow:0 0 0 3px var(--tigform-accent-soft)}

.tigform-dt-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.tigform-dt-dow{display:flex;align-items:center;justify-content:center;height:1.75rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--tigform-muted)}
.tigform-dt-day{display:flex;align-items:center;justify-content:center;height:2.125rem;border:0;border-radius:9px;background:transparent;color:var(--tigform-text);font:inherit;font-size:.875rem;cursor:pointer;transition:background-color 120ms ease,color 120ms ease}
.tigform-dt-day:hover:not(:disabled):not(.is-selected){background:var(--tigform-surface-subtle)}
.tigform-dt-day:focus-visible{outline:none;box-shadow:0 0 0 3px var(--tigform-accent-soft)}
.tigform-dt-day.is-today{font-weight:700;color:var(--tigform-accent)}
.tigform-dt-day.is-selected{background:var(--tigform-accent);color:var(--tigform-accent-contrast);font-weight:600}
.tigform-dt-day:disabled{opacity:.3;cursor:not-allowed}

.tigform-dt-time{display:flex;gap:.375rem;flex:0 0 auto}
/* datetime: clock columns sit beside the calendar, separated by a rule */
.tigform-dt-panel--datetime .tigform-dt-time{border-left:1px solid var(--tigform-border);padding-left:.875rem}
.tigform-dt-col{display:flex;flex-direction:column;width:3.5rem}
.tigform-dt-col--ampm{width:3.25rem}
.tigform-dt-col-cap{height:1.75rem;display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--tigform-muted)}
/* Scrollbars are hidden rather than styled: the native ones render as thick
   arrow-button tracks on Windows and blow the column width out. Scrollability
   is signalled by a fade mask top/bottom instead, and snap points stop rows
   from resting half-clipped. */
.tigform-dt-list{display:flex;flex-direction:column;gap:2px;flex:0 0 auto;height:13.625rem;overflow-y:auto;overscroll-behavior:contain;scroll-snap-type:y proximity;scrollbar-width:none;-ms-overflow-style:none;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 14%,#000 86%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 14%,#000 86%,transparent 100%)}
.tigform-dt-list::-webkit-scrollbar{width:0;height:0;display:none}
/* AM/PM has two fixed options — no scroll, no fade. */
.tigform-dt-col--ampm .tigform-dt-list{height:auto;overflow:visible;-webkit-mask-image:none;mask-image:none}
.tigform-dt-slot{flex:0 0 auto;display:flex;align-items:center;justify-content:center;height:2rem;padding:0 .5rem;border:0;border-radius:8px;background:transparent;color:var(--tigform-text);font:inherit;font-size:.875rem;font-variant-numeric:tabular-nums;text-align:center;scroll-snap-align:center;cursor:pointer;transition:background-color 120ms ease,color 120ms ease}
.tigform-dt-slot:hover:not(.is-selected){background:var(--tigform-surface-subtle)}
.tigform-dt-slot:focus-visible{outline:none;box-shadow:0 0 0 3px var(--tigform-accent-soft)}
.tigform-dt-slot.is-selected{background:var(--tigform-accent);color:var(--tigform-accent-contrast);font-weight:600}

.tigform-dt-foot{display:flex;align-items:center;gap:.5rem;padding-top:.75rem;margin-top:.25rem;border-top:1px solid var(--tigform-border)}
/* NOT flex-grow: a growing spacer inflates the flex container's max-content
   contribution, which blew `width:max-content` on the panel out to the full
   viewport. margin-left:auto right-aligns Done without affecting intrinsic size. */
.tigform-dt-spacer{display:none}
.tigform-dt-done{margin-left:auto}
.tigform-dt-link{padding:.25rem .5rem;border:0;border-radius:7px;background:transparent;color:var(--tigform-muted);font:inherit;font-size:.8125rem;font-weight:500;cursor:pointer;transition:color 120ms ease,background-color 120ms ease}
.tigform-dt-link:hover{background:var(--tigform-surface-subtle);color:var(--tigform-text)}
.tigform-dt-link:focus-visible{outline:none;box-shadow:0 0 0 3px var(--tigform-accent-soft)}
.tigform-dt-done{padding:.3125rem .875rem;border:0;border-radius:8px;background:var(--tigform-accent);color:var(--tigform-accent-contrast);font:inherit;font-size:.8125rem;font-weight:600;cursor:pointer;transition:background-color 120ms ease}
.tigform-dt-done:hover{background:var(--tigform-accent-hover)}
.tigform-dt-done:focus-visible{outline:none;box-shadow:0 0 0 3px var(--tigform-accent-soft)}

/* Narrow screens: let the panel use the field width and keep it on-screen. */
/* Explicit stacked layout. The panel is portalled to <body>, so inside the
   builder's device emulator the viewport media query can't fire - the preview
   toggles this class instead, keeping emulated mobile honest. */
.tigform-dt-panel--stacked{max-width:calc(100vw - 1rem);width:auto}
.tigform-dt-panel--stacked .tigform-dt-body{flex-direction:column}
.tigform-dt-panel--stacked .tigform-dt-cal{width:100%}
.tigform-dt-panel--stacked.tigform-dt-panel--datetime .tigform-dt-time{width:100%;border-left:0;padding-left:0;border-top:1px solid var(--tigform-border);padding-top:.75rem;justify-content:center}
.tigform-dt-panel--stacked .tigform-dt-list{max-height:9rem}
@media (max-width:34rem){
	.tigform-dt-panel{max-width:calc(100vw - 1rem);width:auto}
	.tigform-dt-body{flex-direction:column}
	.tigform-dt-cal{width:100%}
	.tigform-dt-panel--datetime .tigform-dt-time{width:100%;border-left:0;padding-left:0;border-top:1px solid var(--tigform-border);padding-top:.75rem;justify-content:center}
	.tigform-dt-list{max-height:9rem}
}

/* Picker layout hardening.
   The trigger also carries .tigform-input so that it inherits field styling, but
   that means the Elementor Styler widget (and themes) can hit it with a
   higher-specificity rule and flatten display:flex back to block. When that
   happened the calendar icon stopped being pushed to the right edge and sat
   next to the label instead, drifting with the value's length. These two
   properties are the picker's own structure rather than styling, so they are
   pinned. */
.tigform-form .tigform-dt .tigform-dt-trigger{display:flex !important;align-items:center;gap:.625rem;text-align:left}
.tigform-form .tigform-dt .tigform-dt-trigger .tigform-dt-value{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tigform-form .tigform-dt .tigform-dt-trigger .tigform-dt-icon{flex:0 0 auto;margin-left:auto !important}
