@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuLyfMZg.ttf) format('truetype');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 500;
  src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuI6fMZg.ttf) format('truetype');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 600;
  src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuGKYMZg.ttf) format('truetype');
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 700;
  src: url(https://fonts.gstatic.com/s/inter/v20/UcCO3FwrK3iLTeHuS_nVMrMxCp50SjIw2boKoduKmMEVuFuYMZg.ttf) format('truetype');
}

/*! Technonix Design System v1.0 | built from technonix-design-system.css | tokens --tn-* | components .tn-* */
:root{--tn-primary:#0B1424;--tn-primary-dark:#060B16;--tn-primary-soft:#1C2740;--tn-accent:#2457F5;--tn-accent-hover:#1A44D6;--tn-accent-soft:#EEF3FF;--tn-accent-strong:#1A44D6;--tn-secondary:#6B45E0;--tn-secondary-soft:#F3EFFD;--tn-secondary-strong:#5A34C9;--tn-background:#FFFFFF;--tn-background-subtle:#F6F8FB;--tn-surface:#FFFFFF;--tn-surface-raised:#FFFFFF;--tn-surface-sunken:#F1F3F7;--tn-text:#1A2233;--tn-text-heading:#0B1424;--tn-text-muted:#556070;--tn-text-inverse:#FFFFFF;--tn-border:#E3E8EF;--tn-border-strong:#CBD3DF;--tn-border-input:#8B95A7;--tn-success:#13803B;--tn-success-soft:#ECF8F0;--tn-success-strong:#116B33;--tn-warning:#B25407;--tn-warning-soft:#FEF6E7;--tn-warning-strong:#92400E;--tn-error:#D42A2A;--tn-error-soft:#FEF0EF;--tn-error-strong:#B42318;--tn-star:#F2A60C;--tn-badge-text:#3D4757;--tn-focus-ring:0 0 0 3px rgba(36, 87, 245, .35);--tn-focus-outline:2px solid var(--tn-accent);--tn-font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--tn-font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--tn-fw-regular:400;--tn-fw-medium:500;--tn-fw-semibold:600;--tn-fw-bold:700;--tn-fs-h1:clamp(2rem, 1.45rem + 2.2vw, 3rem);--tn-fs-h2:clamp(1.625rem, 1.3rem + 1.3vw, 2.25rem);--tn-fs-h3:clamp(1.25rem, 1.15rem + .45vw, 1.5rem);--tn-fs-h4:clamp(1.0625rem, 1.03rem + .2vw, 1.1875rem);--tn-fs-lead:clamp(1.0625rem, 1rem + .3vw, 1.25rem);--tn-fs-body:1rem;--tn-fs-small:.875rem;--tn-fs-label:.875rem;--tn-fs-nav:.9375rem;--tn-fs-button:.9375rem;--tn-fs-caption:.8125rem;--tn-fs-meta:.8125rem;--tn-fs-eyebrow:.75rem;--tn-lh-tight:1.15;--tn-lh-heading:1.25;--tn-lh-snug:1.4;--tn-lh-body:1.65;--tn-ls-h1:-.022em;--tn-ls-h2:-.018em;--tn-ls-h3:-.01em;--tn-ls-eyebrow:.08em;--tn-space-0:0;--tn-space-1:.25rem;--tn-space-2:.5rem;--tn-space-3:.75rem;--tn-space-4:1rem;--tn-space-5:1.25rem;--tn-space-6:1.5rem;--tn-space-8:2rem;--tn-space-10:2.5rem;--tn-space-12:3rem;--tn-space-16:4rem;--tn-space-20:5rem;--tn-space-24:6rem;--tn-section-y:clamp(3rem, 2rem + 4vw, 6rem);--tn-section-y-sm:clamp(2rem, 1.5rem + 2vw, 3.5rem);--tn-gutter:clamp(1rem, .5rem + 2.5vw, 2rem);--tn-grid-gap:clamp(1rem, .75rem + 1vw, 1.5rem);--tn-card-pad:clamp(1rem, .85rem + .6vw, 1.5rem);--tn-stack:var(--tn-space-4);--tn-container:1240px;--tn-container-wide:1440px;--tn-container-narrow:760px;--tn-sidebar:280px;--tn-header-h:64px;--tn-radius-xs:4px;--tn-radius-sm:6px;--tn-radius-md:8px;--tn-radius-lg:12px;--tn-radius-xl:16px;--tn-radius-full:999px;--tn-shadow-xs:0 1px 2px rgba(16, 24, 40, .05);--tn-shadow-sm:0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04);--tn-shadow-md:0 6px 16px -4px rgba(16, 24, 40, .10), 0 2px 4px -2px rgba(16, 24, 40, .05);--tn-shadow-lg:0 16px 40px -12px rgba(16, 24, 40, .18);--tn-dur-fast:150ms;--tn-dur:200ms;--tn-dur-slow:250ms;--tn-ease:cubic-bezier(.2, 0, 0, 1);--tn-z-base:1;--tn-z-dropdown:100;--tn-z-sticky:200;--tn-z-header:300;--tn-z-overlay:400;--tn-z-modal:500;--tn-z-toast:600;--tn-bp-sm:480px;--tn-bp-md:768px;--tn-bp-lg:1025px;--tn-bp-xl:1440px}
[data-tn-theme="dark"]{--tn-primary:#E8ECF3;--tn-primary-dark:#FFFFFF;--tn-primary-soft:#1C2740;--tn-accent:#6E95FF;--tn-accent-hover:#8FADFF;--tn-accent-soft:rgba(110, 149, 255, .14);--tn-accent-strong:#A9C0FF;--tn-secondary:#A78BFA;--tn-secondary-soft:rgba(167, 139, 250, .14);--tn-secondary-strong:#C4B2FC;--tn-background:#0A0F1A;--tn-background-subtle:#0E1522;--tn-surface:#121A2A;--tn-surface-raised:#172134;--tn-surface-sunken:#0E1522;--tn-text:#D7DDE8;--tn-text-heading:#F3F6FA;--tn-text-muted:#9AA5B8;--tn-text-inverse:#0A0F1A;--tn-border:#222D42;--tn-border-strong:#2F3B54;--tn-border-input:#66728C;--tn-success:#4ADE80;--tn-success-soft:rgba(74, 222, 128, .12);--tn-success-strong:#86EFAC;--tn-warning:#FBBF24;--tn-warning-soft:rgba(251, 191, 36, .12);--tn-warning-strong:#FCD34D;--tn-error:#F87171;--tn-error-soft:rgba(248, 113, 113, .12);--tn-error-strong:#FCA5A5;--tn-badge-text:#D7DDE8;--tn-focus-ring:0 0 0 3px rgba(110, 149, 255, .45);--tn-shadow-xs:0 1px 2px rgba(0, 0, 0, .4);--tn-shadow-sm:0 1px 3px rgba(0, 0, 0, .5);--tn-shadow-md:0 6px 16px -4px rgba(0, 0, 0, .55);--tn-shadow-lg:0 16px 40px -12px rgba(0, 0, 0, .65);color-scheme:dark}
:root .tn-scope,body.tn-site{font-family:var(--tn-font-sans);font-size:var(--tn-fs-body);line-height:var(--tn-lh-body);color:var(--tn-text);background:var(--tn-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"cv11", "ss01"}
:root .tn-scope *,:root .tn-scope *::before,:root .tn-scope *::after{box-sizing:border-box}
:root .tn-scope img,:root .tn-scope svg{max-width:100%}
:root .tn-h1,:root .tn-scope h1:not([class]){font-size:var(--tn-fs-h1);font-weight:var(--tn-fw-bold);line-height:var(--tn-lh-tight);letter-spacing:var(--tn-ls-h1);color:var(--tn-text-heading);margin:0 0 var(--tn-space-4);font-family:var(--tn-font-sans)}
:root .tn-h2,:root .tn-scope h2:not([class]){font-size:var(--tn-fs-h2);font-weight:var(--tn-fw-bold);line-height:1.2;letter-spacing:var(--tn-ls-h2);color:var(--tn-text-heading);margin:0 0 var(--tn-space-4);font-family:var(--tn-font-sans)}
:root .tn-h3,:root .tn-scope h3:not([class]){font-size:var(--tn-fs-h3);font-weight:var(--tn-fw-semibold);line-height:1.3;letter-spacing:var(--tn-ls-h3);color:var(--tn-text-heading);margin:0 0 var(--tn-space-3);font-family:var(--tn-font-sans)}
:root .tn-h4,:root .tn-scope h4:not([class]){font-size:var(--tn-fs-h4);font-weight:var(--tn-fw-semibold);line-height:var(--tn-lh-snug);color:var(--tn-text-heading);margin:0 0 var(--tn-space-2);font-family:var(--tn-font-sans)}
:root :where(.tn-scope) p:not([class]){margin:0 0 var(--tn-space-4)}
:root .tn-lead{font-size:var(--tn-fs-lead);line-height:1.6;color:var(--tn-text-muted)}
:root .tn-small{font-size:var(--tn-fs-small);line-height:1.5}
:root .tn-label{font-size:var(--tn-fs-label);font-weight:var(--tn-fw-semibold);line-height:1.4;color:var(--tn-text-heading)}
:root .tn-caption{font-size:var(--tn-fs-caption);line-height:1.45;color:var(--tn-text-muted)}
:root .tn-meta{font-size:var(--tn-fs-meta);font-weight:var(--tn-fw-medium);line-height:1.4;color:var(--tn-text-muted);font-variant-numeric:tabular-nums}
:root .tn-eyebrow{font-size:var(--tn-fs-eyebrow);font-weight:var(--tn-fw-semibold);line-height:1.4;letter-spacing:var(--tn-ls-eyebrow);text-transform:uppercase;color:var(--tn-accent-strong)}
:root .tn-muted{color:var(--tn-text-muted)}
:root :where(.tn-scope) a:not([class]){color:var(--tn-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}
:root :where(.tn-scope) a:not([class]):hover{color:var(--tn-accent-hover)}
:root .tn-prose{max-width:68ch;font-size:1.0625rem;line-height:1.75}
:root .tn-prose > * + *{margin-top:var(--tn-space-5)}
:root .tn-prose h2{margin-top:var(--tn-space-12)}
:root .tn-prose h3{margin-top:var(--tn-space-8)}
:root .tn-prose ul,:root .tn-prose ol{padding-left:1.4em}
:root .tn-prose li + li{margin-top:var(--tn-space-2)}
:root .tn-prose blockquote{margin-left:0;padding-left:var(--tn-space-5);border-left:3px solid var(--tn-border-strong);color:var(--tn-text-muted)}
:root .tn-prose code{font-family:var(--tn-font-mono);font-size:.9em;background:var(--tn-surface-sunken);padding:.1em .35em;border-radius:var(--tn-radius-xs)}
:root .tn-visually-hidden{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:root .tn-skip-link{position:absolute;left:var(--tn-space-4);top:-100px;z-index:var(--tn-z-toast);background:var(--tn-primary);color:var(--tn-text-inverse);padding:var(--tn-space-3) var(--tn-space-4);border-radius:var(--tn-radius-md);font-weight:var(--tn-fw-semibold)}
:root .tn-skip-link:focus{top:var(--tn-space-4)}
:root .tn-scope :focus-visible{outline:var(--tn-focus-outline);outline-offset:2px}
:root button[class*="tn-"]{text-transform:none;letter-spacing:normal;font-family:var(--tn-font-sans)}
:root .tn-container{width:100%;max-width:calc(var(--tn-container) + 2 * var(--tn-gutter));margin-inline:auto;padding-inline:var(--tn-gutter)}
:root .tn-container--wide{max-width:calc(var(--tn-container-wide) + 2 * var(--tn-gutter))}
:root .tn-container--narrow{max-width:calc(var(--tn-container-narrow) + 2 * var(--tn-gutter))}
:root .tn-section{padding-block:var(--tn-section-y)}
:root .tn-section--sm{padding-block:var(--tn-section-y-sm)}
:root .tn-section--subtle{background:var(--tn-background-subtle)}
:root .tn-section--dark{background:var(--tn-primary);color:#C9D1DE}
:root .tn-section--dark :is(h1, h2, h3, h4, .tn-h1, .tn-h2, .tn-h3, .tn-h4){color:#FFFFFF}
:root .tn-section__head{max-width:640px;margin-bottom:var(--tn-space-10)}
:root .tn-section__head--center{margin-inline:auto;text-align:center}
:root .tn-stack{display:flex;flex-direction:column;gap:var(--tn-stack)}
:root .tn-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tn-space-3)}
:root .tn-split{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--tn-space-4)}
:root .tn-grid{display:grid;gap:var(--tn-grid-gap);grid-template-columns:repeat(auto-fill, minmax(min(100%, var(--tn-grid-min, 280px)), 1fr))}
:root .tn-grid--2{--tn-grid-min:420px}
:root .tn-grid--3{--tn-grid-min:300px}
:root .tn-grid--4{--tn-grid-min:240px}
:root .tn-layout-sidebar{display:grid;gap:var(--tn-space-8);grid-template-columns:var(--tn-sidebar) minmax(0, 1fr);align-items:start}
:root .tn-layout-sidebar__aside{position:sticky;top:calc(var(--tn-header-h) + var(--tn-space-6));max-height:calc(100vh - var(--tn-header-h) - var(--tn-space-12));overflow-y:auto}
:root .tn-layout-content{display:grid;gap:var(--tn-space-12);grid-template-columns:minmax(0, 1fr) 300px;align-items:start}
@media (max-width: 1024px){:root .tn-layout-sidebar,:root .tn-layout-content{grid-template-columns:minmax(0, 1fr)}
:root .tn-layout-sidebar__aside{position:static;max-height:none;overflow:visible}
}
:root .tn-btn{--tn-btn-h:44px;display:inline-flex;align-items:center;justify-content:center;gap:var(--tn-space-2);min-height:var(--tn-btn-h);padding:0 var(--tn-space-5);font-family:var(--tn-font-sans);font-size:var(--tn-fs-button);font-weight:var(--tn-fw-semibold);line-height:1;letter-spacing:0;text-transform:none;box-shadow:none;text-decoration:none;white-space:nowrap;cursor:pointer;user-select:none;border:1px solid transparent;border-radius:var(--tn-radius-md);background:transparent;color:var(--tn-text-heading);transition:background-color var(--tn-dur-fast) var(--tn-ease), border-color var(--tn-dur-fast) var(--tn-ease), color var(--tn-dur-fast) var(--tn-ease), box-shadow var(--tn-dur-fast) var(--tn-ease)}
:root .tn-btn:focus-visible{outline:none;box-shadow:var(--tn-focus-ring)}
:root .tn-btn svg{width:18px;height:18px;flex:none}
:root .tn-btn--primary{background:var(--tn-accent);color:#FFFFFF}
:root .tn-btn--primary:hover{background:var(--tn-accent-hover);color:#FFFFFF}
:is(:root[data-tn-theme="dark"],:root [data-tn-theme="dark"]) .tn-btn--primary{color:var(--tn-text-inverse)}
:root .tn-btn--secondary{background:var(--tn-primary);color:var(--tn-text-inverse)}
:root .tn-btn--secondary:hover{background:var(--tn-primary-soft);color:var(--tn-text-inverse)}
:is(:root[data-tn-theme="dark"],:root [data-tn-theme="dark"]) .tn-btn--secondary:hover{background:#FFFFFF}
:root .tn-btn--outline{background:var(--tn-surface);border-color:var(--tn-border-strong);color:var(--tn-text-heading)}
:root .tn-btn--outline:hover{border-color:var(--tn-text-muted);background:var(--tn-background-subtle)}
:root .tn-btn--ghost{color:var(--tn-text);padding-inline:var(--tn-space-3)}
:root .tn-btn--ghost:hover{background:var(--tn-surface-sunken);color:var(--tn-text-heading)}
:root .tn-btn--link{padding:0;min-height:auto;color:var(--tn-accent)}
:root .tn-btn--link:hover{color:var(--tn-accent-hover);text-decoration:underline;text-underline-offset:.2em}
:root .tn-btn--sm{--tn-btn-h:36px;padding-inline:var(--tn-space-4);font-size:var(--tn-fs-small)}
:root .tn-btn--lg{--tn-btn-h:52px;padding-inline:var(--tn-space-6);font-size:1rem}
:root .tn-btn--block{width:100%}
:root .tn-btn--icon{width:var(--tn-btn-h);padding:0}
:root .tn-btn--icon.tn-btn--sm{width:36px}
:root .tn-btn:disabled,:root .tn-btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed;pointer-events:none}
@media (max-width: 767px){:root .tn-btn--block-mobile,:root .tn-field > .tn-btn--block-mobile{width:100%;align-self:stretch}
:root .tn-btn{--tn-btn-h:48px}
:root .tn-btn--sm{--tn-btn-h:40px}
}
:root .tn-badge{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;font-size:.75rem;font-weight:var(--tn-fw-semibold);line-height:1;white-space:nowrap;border-radius:var(--tn-radius-sm);border:1px solid transparent;background:var(--tn-surface-sunken);color:var(--tn-badge-text)}
:root .tn-badge svg{width:12px;height:12px}
:root .tn-badge--featured{background:var(--tn-primary);color:var(--tn-text-inverse)}
:root .tn-badge--trending{background:var(--tn-warning-soft);color:var(--tn-warning-strong)}
:root .tn-badge--new{background:var(--tn-accent-soft);color:var(--tn-accent-strong)}
:root .tn-badge--pick{background:var(--tn-secondary-soft);color:var(--tn-secondary-strong)}
:root .tn-badge--verified{background:transparent;color:var(--tn-accent);padding-inline:2px}
:root .tn-price{display:inline-flex;align-items:center;height:22px;padding:0 8px;font-size:.75rem;font-weight:var(--tn-fw-medium);line-height:1;border-radius:var(--tn-radius-sm);border:1px solid var(--tn-border-strong);color:var(--tn-text-muted);background:var(--tn-surface);white-space:nowrap}
:root .tn-price--free{border-color:color-mix(in srgb, var(--tn-success) 40%, transparent);color:var(--tn-success-strong)}
:root .tn-price--freemium{border-color:color-mix(in srgb, var(--tn-accent) 35%, transparent);color:var(--tn-accent-strong)}
:root .tn-price--paid{color:var(--tn-text-muted)}
:root .tn-rating{display:inline-flex;align-items:center;gap:6px;font-size:var(--tn-fs-meta);color:var(--tn-text-muted);font-variant-numeric:tabular-nums}
:root .tn-rating__stars{--tn-rating:4.5;position:relative;display:inline-block;font-size:14px;line-height:1;letter-spacing:1px;color:var(--tn-border-strong)}
:root .tn-rating__stars::before{content:"★★★★★"}
:root .tn-rating__stars::after{content:"★★★★★";position:absolute;inset:0;width:calc(var(--tn-rating) / 5 * 100%);overflow:hidden;color:var(--tn-star)}
:root .tn-rating__value{font-weight:var(--tn-fw-semibold);color:var(--tn-text-heading)}
:root .tn-card{position:relative;display:flex;flex-direction:column;background:var(--tn-surface);border:1px solid var(--tn-border);border-radius:var(--tn-radius-lg);padding:var(--tn-card-pad);box-shadow:var(--tn-shadow-xs);transition:border-color var(--tn-dur) var(--tn-ease), box-shadow var(--tn-dur) var(--tn-ease), transform var(--tn-dur) var(--tn-ease)}
:root .tn-card--interactive:hover{border-color:var(--tn-border-strong);box-shadow:var(--tn-shadow-md)}
:root .tn-card--interactive:focus-within{border-color:var(--tn-accent)}
:root .tn-card--flat{box-shadow:none}
:root .tn-card--subtle{background:var(--tn-background-subtle);box-shadow:none}
:root .tn-card--featured{border-color:color-mix(in srgb, var(--tn-accent) 35%, var(--tn-border));box-shadow:var(--tn-shadow-sm)}
:root .tn-card__link{color:inherit;text-decoration:none}
:root .tn-card__link::after{content:"";position:absolute;inset:0;border-radius:inherit}
:root .tn-card__link:focus-visible{outline:none}
:root .tn-card__link:focus-visible::after{box-shadow:var(--tn-focus-ring)}
:root .tn-card :is(.tn-btn, a:not(.tn-card__link)){position:relative;z-index:1}
:root .tn-card__title{font-size:1.0625rem;font-weight:var(--tn-fw-semibold);line-height:1.35;color:var(--tn-text-heading);margin:0}
:root .tn-card__desc{font-size:var(--tn-fs-small);line-height:1.55;color:var(--tn-text-muted);margin:0}
:root .tn-card__footer{margin-top:auto;padding-top:var(--tn-space-4)}
:root .tn-line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
:root .tn-logo-tile{--tn-logo:48px;width:var(--tn-logo);height:var(--tn-logo);flex:none;display:grid;place-items:center;overflow:hidden;background:#FFFFFF;border:1px solid var(--tn-border);border-radius:var(--tn-radius-md)}
:root .tn-logo-tile img{width:72%;height:72%;object-fit:contain}
:root .tn-logo-tile--sm{--tn-logo:32px;border-radius:var(--tn-radius-sm)}
:root .tn-logo-tile--lg{--tn-logo:72px;border-radius:var(--tn-radius-lg)}
:root .tn-logo-tile__fallback{font-weight:var(--tn-fw-bold);font-size:calc(var(--tn-logo) * .4);color:#1A44D6;background:#EEF3FF;width:100%;height:100%;display:grid;place-items:center}
:root .tn-tool-card{gap:var(--tn-space-3)}
:root .tn-tool-card__head{display:flex;gap:var(--tn-space-3);align-items:flex-start}
:root .tn-tool-card__name{min-width:0;flex:1}
:root .tn-tool-card__category{font-size:var(--tn-fs-meta);color:var(--tn-text-muted)}
:root .tn-tool-card__badges{display:flex;flex-wrap:wrap;gap:6px}
:root .tn-tool-card__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--tn-space-3);margin-top:auto;padding-top:var(--tn-space-3);border-top:1px solid var(--tn-border)}
:root .tn-tool-list{display:flex;flex-direction:column;gap:var(--tn-space-3)}
:root .tn-tool-row{display:grid;grid-template-columns:auto minmax(0, 1fr) auto;align-items:center;gap:var(--tn-space-4);padding:var(--tn-space-4) var(--tn-space-5)}
@media (max-width: 767px){:root .tn-tool-row{grid-template-columns:auto minmax(0, 1fr)}
:root .tn-tool-row__actions{grid-column:1 / -1}
}
:root .tn-category-card{flex-direction:row;align-items:center;gap:var(--tn-space-4);padding:var(--tn-space-4) var(--tn-space-5)}
:root .tn-icon-tile{width:40px;height:40px;flex:none;display:grid;place-items:center;border-radius:var(--tn-radius-md);background:var(--tn-accent-soft);color:var(--tn-accent-strong)}
:root .tn-icon-tile svg{width:20px;height:20px}
:root .tn-icon-tile--violet{background:var(--tn-secondary-soft);color:var(--tn-secondary-strong)}
:root .tn-icon-tile--neutral{background:var(--tn-surface-sunken);color:var(--tn-text-heading)}
:root .tn-category-card__count{margin-left:auto;font-size:var(--tn-fs-meta);color:var(--tn-text-muted);font-variant-numeric:tabular-nums}
:root .tn-article-card{padding:0;overflow:hidden}
:root .tn-article-card__media{aspect-ratio:16 / 9;background:var(--tn-surface-sunken);overflow:hidden}
:root .tn-article-card__media img{width:100%;height:100%;object-fit:cover;display:block}
:root .tn-article-card__body{padding:var(--tn-card-pad);display:flex;flex-direction:column;gap:var(--tn-space-2);flex:1}
:root .tn-compare-card__pair{display:flex;align-items:center;gap:var(--tn-space-3)}
:root .tn-compare-card__vs{font-size:var(--tn-fs-caption);font-weight:var(--tn-fw-semibold);color:var(--tn-text-muted);text-transform:uppercase;letter-spacing:.06em}
:root .tn-field{display:flex;flex-direction:column;gap:var(--tn-space-2)}
:root .tn-field + .tn-field{margin-top:var(--tn-space-5)}
:root .tn-field__label{font-size:var(--tn-fs-label);font-weight:var(--tn-fw-semibold);color:var(--tn-text-heading)}
:root .tn-field__label .tn-req{color:var(--tn-error);margin-left:2px}
:root .tn-field > .tn-btn{align-self:flex-start}
:root .tn-field__hint{font-size:var(--tn-fs-caption);color:var(--tn-text-muted)}
:root .tn-field__error{font-size:var(--tn-fs-caption);color:var(--tn-error-strong);font-weight:var(--tn-fw-medium)}
:is(:root[data-tn-theme="dark"],:root [data-tn-theme="dark"]) .tn-field__error{color:var(--tn-error)}
:root:root:root .tn-input,:root:root:root .tn-select,:root:root:root .tn-textarea{width:100%;min-height:44px;padding:0 var(--tn-space-3);font-family:var(--tn-font-sans);font-size:1rem;line-height:1.5;color:var(--tn-text-heading);background:var(--tn-surface);border:1px solid var(--tn-border-input);border-radius:var(--tn-radius-md);transition:border-color var(--tn-dur-fast) var(--tn-ease), box-shadow var(--tn-dur-fast) var(--tn-ease);appearance:none}
:root:root:root .tn-input::placeholder,:root:root:root .tn-textarea::placeholder{color:var(--tn-text-muted);opacity:1}
:root:root:root .tn-input:hover,:root:root:root .tn-select:hover,:root:root:root .tn-textarea:hover{border-color:var(--tn-text-muted)}
:root:root:root .tn-input:focus,:root:root:root .tn-select:focus,:root:root:root .tn-textarea:focus{outline:none;border-color:var(--tn-accent);box-shadow:var(--tn-focus-ring)}
:root:root:root .tn-input[aria-invalid="true"],:root:root:root .tn-select[aria-invalid="true"],:root:root:root .tn-textarea[aria-invalid="true"]{border-color:var(--tn-error)}
:root:root:root .tn-input:disabled,:root:root:root .tn-select:disabled,:root:root:root .tn-textarea:disabled{background:var(--tn-surface-sunken);color:var(--tn-text-muted);cursor:not-allowed}
:root:root:root .tn-textarea{padding-block:var(--tn-space-3);min-height:120px;resize:vertical}
:root:root:root .tn-select{padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23556070' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
:root .tn-check{display:flex;align-items:flex-start;gap:var(--tn-space-3);min-height:28px;font-size:var(--tn-fs-small);color:var(--tn-text);cursor:pointer}
:root:root:root .tn-check input{appearance:none;flex:none;width:18px;height:18px;margin:2px 0 0;border:1.5px solid var(--tn-border-input);border-radius:var(--tn-radius-xs);background:var(--tn-surface);display:grid;place-items:center;cursor:pointer;transition:background-color var(--tn-dur-fast) var(--tn-ease), border-color var(--tn-dur-fast) var(--tn-ease)}
:root:root:root .tn-check input[type="radio"]{border-radius:50%}
:root:root:root .tn-check input:checked{background:var(--tn-accent);border-color:var(--tn-accent)}
:root:root:root .tn-check input[type="checkbox"]:checked::after{content:"";width:10px;height:6px;border:2px solid #FFFFFF;border-top:0;border-right:0;transform:translateY(-1px) rotate(-45deg)}
:root:root:root .tn-check input[type="radio"]:checked::after{content:"";width:8px;height:8px;border-radius:50%;background:#FFFFFF}
:root:root:root .tn-check input:focus-visible{outline:none;box-shadow:var(--tn-focus-ring)}
:root .tn-check__count{margin-left:auto;color:var(--tn-text-muted);font-size:var(--tn-fs-caption);font-variant-numeric:tabular-nums}
:root .tn-inline-form{display:flex;gap:var(--tn-space-2);max-width:480px}
:root:root:root .tn-inline-form .tn-input{flex:1}
@media (max-width: 480px){:root .tn-inline-form{flex-direction:column}
}
:root .tn-search{position:relative;width:100%}
:root .tn-search__icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--tn-text-muted);pointer-events:none}
:root:root:root .tn-search__input{padding-left:44px;padding-right:96px}
:root .tn-search__kbd{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-family:var(--tn-font-sans);font-size:.75rem;color:var(--tn-text-muted);border:1px solid var(--tn-border);border-radius:var(--tn-radius-xs);padding:2px 6px;background:var(--tn-background-subtle)}
:root:root:root .tn-search--lg .tn-search__input{min-height:56px;font-size:1.0625rem;border-radius:var(--tn-radius-lg);padding-right:130px;box-shadow:var(--tn-shadow-sm)}
:root .tn-search--lg .tn-search__submit{position:absolute;right:6px;top:6px;bottom:6px;min-height:0}
:root .tn-search__panel{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:var(--tn-z-dropdown);background:var(--tn-surface-raised);border:1px solid var(--tn-border);border-radius:var(--tn-radius-lg);box-shadow:var(--tn-shadow-lg);padding:var(--tn-space-2);max-height:min(480px, 70vh);overflow-y:auto}
:root .tn-search__panel[hidden]{display:none}
:root .tn-search__group-label{padding:var(--tn-space-2) var(--tn-space-3) var(--tn-space-1);font-size:var(--tn-fs-eyebrow);font-weight:var(--tn-fw-semibold);letter-spacing:var(--tn-ls-eyebrow);text-transform:uppercase;color:var(--tn-text-muted)}
:root .tn-search__option{display:flex;align-items:center;gap:var(--tn-space-3);width:100%;padding:var(--tn-space-2) var(--tn-space-3);border-radius:var(--tn-radius-md);color:var(--tn-text);text-decoration:none;font-size:var(--tn-fs-small);cursor:pointer}
:root .tn-search__option:hover,:root .tn-search__option[aria-selected="true"]{background:var(--tn-accent-soft);color:var(--tn-text-heading)}
:root .tn-search__option mark{background:none;color:var(--tn-text-heading);font-weight:var(--tn-fw-semibold)}
:root .tn-search__hint{display:flex;gap:var(--tn-space-2);align-items:flex-start;padding:var(--tn-space-3);margin-top:var(--tn-space-1);border-top:1px solid var(--tn-border);font-size:var(--tn-fs-caption);color:var(--tn-text-muted)}
:root .tn-chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 var(--tn-space-3);font-size:var(--tn-fs-small);font-weight:var(--tn-fw-medium);color:var(--tn-text);background:var(--tn-surface);border:1px solid var(--tn-border-strong);border-radius:var(--tn-radius-full);cursor:pointer;text-decoration:none;transition:background-color var(--tn-dur-fast) var(--tn-ease), border-color var(--tn-dur-fast) var(--tn-ease)}
:root .tn-chip:hover{border-color:var(--tn-text-muted)}
:root .tn-chip[aria-pressed="true"],:root .tn-chip--active{background:var(--tn-primary);border-color:var(--tn-primary);color:var(--tn-text-inverse)}
:root .tn-chip:focus-visible{outline:none;box-shadow:var(--tn-focus-ring)}
:root .tn-chip svg{width:14px;height:14px}
:root .tn-filter{border-bottom:1px solid var(--tn-border);padding-block:var(--tn-space-4)}
:root .tn-filter:first-child{padding-top:0}
:root .tn-filter__title{display:flex;justify-content:space-between;align-items:center;width:100%;margin:0 0 var(--tn-space-3);padding:0;background:none;border:0;font:inherit;font-size:var(--tn-fs-small);font-weight:var(--tn-fw-semibold);color:var(--tn-text-heading);cursor:pointer}
:root .tn-filter__list{display:flex;flex-direction:column;gap:var(--tn-space-1)}
:root .tn-filter__more{margin-top:var(--tn-space-2);font-size:var(--tn-fs-small)}
:root .tn-filter-toggle{display:none}
@media (max-width: 1024px){:root .tn-filter-toggle{display:inline-flex}
:root .tn-filters-drawer{position:fixed;inset:auto 0 0 0;z-index:var(--tn-z-modal);max-height:85vh;overflow-y:auto;background:var(--tn-surface);border-radius:var(--tn-radius-xl) var(--tn-radius-xl) 0 0;padding:var(--tn-space-6) var(--tn-gutter) calc(var(--tn-space-6) + env(safe-area-inset-bottom));box-shadow:var(--tn-shadow-lg);transform:translateY(100%);visibility:hidden;transition:transform var(--tn-dur-slow) var(--tn-ease), visibility 0s linear var(--tn-dur-slow)}
:root .tn-filters-drawer.is-open{transform:none;visibility:visible;transition:transform var(--tn-dur-slow) var(--tn-ease)}
}
:root .tn-filters-drawer__footer{display:none}
:root .tn-backdrop{position:fixed;inset:0;z-index:var(--tn-z-overlay);background:rgba(6, 11, 22, .5)}
:root .tn-backdrop[hidden]{display:none}
@media (max-width: 1024px){:root .tn-filters-drawer{padding-bottom:0}
:root .tn-filters-drawer__footer{display:block;position:sticky;bottom:0;margin:var(--tn-space-4) calc(-1 * var(--tn-gutter)) 0;padding:var(--tn-space-4) var(--tn-gutter) calc(var(--tn-space-4) + env(safe-area-inset-bottom));background:var(--tn-surface);border-top:1px solid var(--tn-border)}
}
:root .tn-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--tn-space-3);padding-bottom:var(--tn-space-4);margin-bottom:var(--tn-space-6);border-bottom:1px solid var(--tn-border)}
:root .tn-toolbar__count{font-size:var(--tn-fs-small);color:var(--tn-text-muted)}
:root .tn-toolbar__count strong{color:var(--tn-text-heading);font-variant-numeric:tabular-nums}
:root:root:root .tn-toolbar .tn-select{width:auto;min-height:40px;font-size:var(--tn-fs-small)}
:root .tn-segmented{display:inline-flex;padding:3px;background:var(--tn-surface-sunken);border-radius:var(--tn-radius-md)}
:root .tn-segmented button{min-height:34px;min-width:36px;padding:0 var(--tn-space-2);border:0;background:transparent;border-radius:var(--tn-radius-sm);color:var(--tn-text-muted);cursor:pointer;display:grid;place-items:center}
:root .tn-segmented button[aria-pressed="true"]{background:var(--tn-surface);color:var(--tn-text-heading);box-shadow:var(--tn-shadow-xs)}
:root .tn-segmented svg{width:16px;height:16px}
:root .tn-pagination{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--tn-space-1);margin-top:var(--tn-space-10)}
:root .tn-pagination a,:root .tn-pagination span{display:inline-grid;place-items:center;min-width:40px;height:40px;padding:0 var(--tn-space-3);border-radius:var(--tn-radius-md);font-size:var(--tn-fs-small);font-weight:var(--tn-fw-medium);color:var(--tn-text);text-decoration:none;font-variant-numeric:tabular-nums}
:root .tn-pagination a:hover{background:var(--tn-surface-sunken)}
:root .tn-pagination [aria-current="page"]{background:var(--tn-primary);color:var(--tn-text-inverse)}
:root .tn-pagination__gap{color:var(--tn-text-muted)}
@media (max-width: 480px){:root .tn-pagination__num:not([aria-current]),:root .tn-pagination__gap{display:none}
}
:root .tn-empty{text-align:center;padding:var(--tn-space-16) var(--tn-space-6);border:1px dashed var(--tn-border-strong);border-radius:var(--tn-radius-lg);background:var(--tn-background-subtle)}
:root .tn-empty__icon{width:48px;height:48px;margin:0 auto var(--tn-space-4);display:grid;place-items:center;border-radius:var(--tn-radius-lg);background:var(--tn-surface);border:1px solid var(--tn-border);color:var(--tn-text-muted)}
:root .tn-empty__icon svg{width:24px;height:24px}
:root .tn-empty__title{font-size:1.0625rem;font-weight:var(--tn-fw-semibold);color:var(--tn-text-heading);margin:0 0 var(--tn-space-2)}
:root .tn-empty__text{max-width:420px;margin:0 auto var(--tn-space-5);color:var(--tn-text-muted);font-size:var(--tn-fs-small)}
:root .tn-breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tn-space-2);margin:0;padding:0;list-style:none;font-size:var(--tn-fs-small);color:var(--tn-text-muted)}
:root .tn-breadcrumb li + li::before{content:"/";margin-right:var(--tn-space-2);color:var(--tn-border-strong)}
:root .tn-breadcrumb a{color:var(--tn-text-muted);text-decoration:none}
:root .tn-breadcrumb a:hover{color:var(--tn-text-heading);text-decoration:underline}
:root .tn-breadcrumb [aria-current="page"]{color:var(--tn-text-heading);font-weight:var(--tn-fw-medium)}
:root .tn-tabs__list{display:flex;gap:var(--tn-space-6);border-bottom:1px solid var(--tn-border);overflow-x:auto;scrollbar-width:none}
:root .tn-tabs__list::-webkit-scrollbar{display:none}
:root .tn-tab{position:relative;flex:none;padding:var(--tn-space-3) 0;border:0;background:none;font:inherit;font-size:var(--tn-fs-small);font-weight:var(--tn-fw-semibold);color:var(--tn-text-muted);cursor:pointer}
:root .tn-tab:hover{color:var(--tn-text-heading)}
:root .tn-tab[aria-selected="true"]{color:var(--tn-text-heading)}
:root .tn-tab[aria-selected="true"]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--tn-accent);border-radius:2px}
:root .tn-tab:focus-visible{outline:none;box-shadow:var(--tn-focus-ring);border-radius:var(--tn-radius-xs)}
:root .tn-tabs__panel{padding-top:var(--tn-space-6)}
:root .tn-dropdown{position:relative;display:inline-block}
:root .tn-dropdown__menu{position:absolute;top:calc(100% + 6px);left:0;z-index:var(--tn-z-dropdown);min-width:220px;padding:var(--tn-space-2);background:var(--tn-surface-raised);border:1px solid var(--tn-border);border-radius:var(--tn-radius-lg);box-shadow:var(--tn-shadow-lg)}
:root .tn-dropdown__menu[hidden]{display:none}
:root .tn-dropdown__item{display:flex;align-items:center;gap:var(--tn-space-3);padding:var(--tn-space-2) var(--tn-space-3);border-radius:var(--tn-radius-md);color:var(--tn-text);text-decoration:none;font-size:var(--tn-fs-small)}
:root .tn-dropdown__item:hover,:root .tn-dropdown__item:focus-visible{background:var(--tn-surface-sunken);color:var(--tn-text-heading);outline:none}
:root .tn-alert{display:flex;gap:var(--tn-space-3);padding:var(--tn-space-4);border-radius:var(--tn-radius-md);border:1px solid;font-size:var(--tn-fs-small);line-height:1.55}
:root .tn-alert svg{width:20px;height:20px;flex:none;margin-top:1px}
:root .tn-alert__title{font-weight:var(--tn-fw-semibold);display:block;margin-bottom:2px}
:root .tn-alert--info{background:var(--tn-accent-soft);border-color:color-mix(in srgb, var(--tn-accent) 25%, transparent);color:var(--tn-accent-strong)}
:root .tn-alert--success{background:var(--tn-success-soft);border-color:color-mix(in srgb, var(--tn-success) 25%, transparent);color:var(--tn-success-strong)}
:root .tn-alert--warning{background:var(--tn-warning-soft);border-color:color-mix(in srgb, var(--tn-warning) 25%, transparent);color:var(--tn-warning-strong)}
:root .tn-alert--error{background:var(--tn-error-soft);border-color:color-mix(in srgb, var(--tn-error) 25%, transparent);color:var(--tn-error-strong)}
:root .tn-accordion{border-top:1px solid var(--tn-border)}
:root .tn-accordion details{border-bottom:1px solid var(--tn-border)}
:root .tn-accordion summary{display:flex;justify-content:space-between;align-items:center;gap:var(--tn-space-4);padding:var(--tn-space-5) 0;cursor:pointer;list-style:none;font-weight:var(--tn-fw-semibold);color:var(--tn-text-heading)}
:root .tn-accordion summary::-webkit-details-marker{display:none}
:root .tn-accordion summary::after{content:"";flex:none;width:10px;height:10px;border-right:2px solid var(--tn-text-muted);border-bottom:2px solid var(--tn-text-muted);transform:translateY(-3px) rotate(45deg);transition:transform var(--tn-dur) var(--tn-ease)}
:root .tn-accordion details[open] summary::after{transform:translateY(2px) rotate(-135deg)}
:root .tn-accordion summary:focus-visible{outline:var(--tn-focus-outline);outline-offset:4px;border-radius:var(--tn-radius-xs)}
:root .tn-accordion__body{padding-bottom:var(--tn-space-5);color:var(--tn-text-muted)}
:root .tn-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--tn-border);border-radius:var(--tn-radius-lg);background:var(--tn-surface)}
:root .tn-table{width:100%;border-collapse:collapse;font-size:var(--tn-fs-small)}
:root .tn-table th,:root .tn-table td{padding:var(--tn-space-3) var(--tn-space-4);text-align:left;border-bottom:1px solid var(--tn-border);vertical-align:top}
:root .tn-table thead th{background:var(--tn-background-subtle);font-size:var(--tn-fs-caption);font-weight:var(--tn-fw-semibold);color:var(--tn-text-muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
:root .tn-table tbody tr:last-child > *{border-bottom:0}
:root .tn-table tbody th{font-weight:var(--tn-fw-semibold);color:var(--tn-text-heading)}
:root .tn-table--compare th:first-child,:root .tn-table--compare td:first-child{position:sticky;left:0;background:var(--tn-surface);z-index:1;min-width:160px;box-shadow:1px 0 0 var(--tn-border)}
:root .tn-table--compare thead th:first-child{background:var(--tn-background-subtle)}
:root .tn-yes{color:var(--tn-success);font-weight:var(--tn-fw-semibold)}
:root .tn-no{color:var(--tn-text-muted)}
:root .tn-modal{width:min(560px, calc(100vw - 2 * var(--tn-gutter)));max-height:calc(100vh - 2 * var(--tn-space-8));padding:0;border:1px solid var(--tn-border);border-radius:var(--tn-radius-xl);background:var(--tn-surface-raised);color:var(--tn-text);box-shadow:var(--tn-shadow-lg)}
:root .tn-modal::backdrop{background:rgba(6, 11, 22, .55)}
:root .tn-modal__head{display:flex;align-items:center;justify-content:space-between;padding:var(--tn-space-5) var(--tn-space-6);border-bottom:1px solid var(--tn-border)}
:root .tn-modal__body{padding:var(--tn-space-6)}
:root .tn-modal__foot{display:flex;justify-content:flex-end;gap:var(--tn-space-3);padding:var(--tn-space-4) var(--tn-space-6);border-top:1px solid var(--tn-border);background:var(--tn-background-subtle);border-radius:0 0 var(--tn-radius-xl) var(--tn-radius-xl)}
@media (max-width: 767px){:root .tn-modal{width:100vw;max-width:100vw;margin:auto 0 0;border-radius:var(--tn-radius-xl) var(--tn-radius-xl) 0 0}
}
:root .tn-header{position:sticky;top:0;z-index:var(--tn-z-header);background:color-mix(in srgb, var(--tn-background) 92%, transparent);backdrop-filter:saturate(180%) blur(8px);-webkit-backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--tn-border)}
:root .tn-header__inner{display:flex;align-items:center;gap:var(--tn-space-6);height:var(--tn-header-h)}
:root .tn-logo{display:inline-flex;align-items:center;gap:var(--tn-space-2);font-weight:var(--tn-fw-bold);font-size:1.125rem;letter-spacing:.06em;color:var(--tn-text-heading);text-decoration:none}
:root .tn-logo__mark{width:28px;height:28px;border-radius:var(--tn-radius-sm);background:var(--tn-primary);color:var(--tn-text-inverse);display:grid;place-items:center}
:root .tn-logo__mark svg{width:16px;height:16px}
:root .tn-nav{display:flex;align-items:center;gap:var(--tn-space-1)}
:root .tn-nav a{display:inline-flex;align-items:center;height:40px;padding:0 var(--tn-space-3);border-radius:var(--tn-radius-md);font-size:var(--tn-fs-nav);font-weight:var(--tn-fw-medium);color:var(--tn-text);text-decoration:none;transition:background-color var(--tn-dur-fast) var(--tn-ease), color var(--tn-dur-fast) var(--tn-ease)}
:root .tn-nav a:hover{background:var(--tn-surface-sunken);color:var(--tn-text-heading)}
:root .tn-nav a[aria-current="page"]{color:var(--tn-text-heading);font-weight:var(--tn-fw-semibold)}
:root .tn-header__search{margin-left:auto;width:240px}
:root:root:root .tn-header__search .tn-input{min-height:40px;font-size:var(--tn-fs-small);background:var(--tn-background-subtle);border-color:var(--tn-border)}
:root:root:root .tn-header__search .tn-search__input{padding-right:40px}
:root .tn-header__actions{display:flex;align-items:center;gap:var(--tn-space-2)}
:root .tn-header__mobile{display:none}
@media (max-width: 1024px){:root{--tn-header-h:60px}
:root .tn-nav,:root .tn-header__search,:root .tn-header__actions .tn-btn--submit{display:none}
:root .tn-header__mobile{display:flex;margin-left:auto;gap:var(--tn-space-1)}
}
@media (max-width: 767px){:root{--tn-header-h:56px}
}
:root .tn-mobile-menu{position:fixed;inset:var(--tn-header-h) 0 0 0;z-index:var(--tn-z-overlay);background:var(--tn-background);padding:var(--tn-space-6) var(--tn-gutter) var(--tn-space-8);overflow-y:auto;display:flex;flex-direction:column;gap:var(--tn-space-6)}
:root .tn-mobile-menu[hidden]{display:none}
:root .tn-mobile-menu__nav a{display:flex;align-items:center;justify-content:space-between;min-height:52px;border-bottom:1px solid var(--tn-border);font-size:1.0625rem;font-weight:var(--tn-fw-semibold);color:var(--tn-text-heading);text-decoration:none}
:root .tn-footer{background:var(--tn-primary);color:#AEB8C8;padding-block:var(--tn-space-16) var(--tn-space-8);font-size:var(--tn-fs-small)}
:is(:root[data-tn-theme="dark"],:root [data-tn-theme="dark"]) .tn-footer{background:var(--tn-background-subtle);border-top:1px solid var(--tn-border)}
:root .tn-footer__grid{display:grid;gap:var(--tn-space-10);grid-template-columns:1.6fr repeat(4, 1fr)}
:root .tn-footer__title{font-size:var(--tn-fs-caption);font-weight:var(--tn-fw-semibold);letter-spacing:var(--tn-ls-eyebrow);text-transform:uppercase;color:#FFFFFF;margin:0 0 var(--tn-space-4)}
:root .tn-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--tn-space-3)}
:root .tn-footer a{color:#AEB8C8;text-decoration:none}
:root .tn-footer a:hover{color:#FFFFFF;text-decoration:underline;text-underline-offset:.2em}
:root .tn-footer__bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--tn-space-4);margin-top:var(--tn-space-12);padding-top:var(--tn-space-6);border-top:1px solid rgba(255, 255, 255, .12);font-size:var(--tn-fs-caption)}
:root .tn-footer .tn-logo{color:#FFFFFF}
:root .tn-footer .tn-logo__mark{background:var(--tn-accent);color:#FFFFFF}
@media (max-width: 1024px){:root .tn-footer__grid{grid-template-columns:repeat(2, 1fr)}
:root .tn-footer__brand{grid-column:1 / -1}
}
@media (max-width: 480px){:root .tn-footer__grid{grid-template-columns:1fr}
}
:root .tn-screenshot{border:1px solid var(--tn-border);border-radius:var(--tn-radius-lg);overflow:hidden;background:var(--tn-surface-sunken);box-shadow:var(--tn-shadow-sm)}
:root .tn-screenshot img{display:block;width:100%;height:auto;aspect-ratio:16 / 10;object-fit:cover;object-position:top}
:root .tn-figure figcaption{margin-top:var(--tn-space-2);font-size:var(--tn-fs-caption);color:var(--tn-text-muted)}
@media (prefers-reduced-motion: reduce){:root .tn-scope *,:root .tn-scope *::before,:root .tn-scope *::after,:root [class^="tn-"],:root [class*=" tn-"]{transition-duration:.01ms !important;animation-duration:.01ms !important;animation-iteration-count:1 !important;scroll-behavior:auto !important}
}
/*# sourceURL=tn-design-system-inline-css */

html body.tn-site{margin:0}
html body.tn-site [data-elementor-type="popup"]{display:none!important}
.tn-shell-top{position:sticky;top:0;z-index:var(--tn-z-header)}
html body.admin-bar .tn-shell-top{top:32px}
@media (max-width:782px){html body.admin-bar .tn-shell-top{top:46px}}
@media (max-width:600px){html body.admin-bar .tn-shell-top{top:0}}
html .tn-scope .tn-header{margin:0}
html .tn-scope .tn-header .tn-logo,html .tn-scope .tn-footer .tn-logo{text-decoration:none;flex:none}
html .tn-scope .tn-header .tn-nav a:not(:hover){background:transparent}
html .tn-scope .tn-header .tn-nav a[aria-current]{color:var(--tn-text-heading);font-weight:var(--tn-fw-semibold)}
html .tn-scope .tn-header .tn-nav a:focus-visible,html .tn-scope .tn-mobile-menu a:focus-visible,html .tn-scope .tn-footer a:focus-visible{outline:var(--tn-focus-outline);outline-offset:2px}
html .tn-scope .tn-header__search{flex:0 1 260px;min-width:160px}
html .tn-scope .tn-header__search .tn-search__icon{width:18px;height:18px;left:12px}
html:root:root:root .tn-scope .tn-header__search .tn-search__input{padding-left:38px;padding-right:var(--tn-space-3);margin:0;box-shadow:none}
html:root:root:root .tn-scope .tn-header__search .tn-search__input:focus{box-shadow:var(--tn-focus-ring)}
html .tn-scope .tn-header__actions{flex:none}
html .tn-scope .tn-header__actions .tn-btn{white-space:nowrap}
html .tn-scope .tn-header .tn-btn--ghost,html .tn-scope .tn-header .tn-btn--ghost:focus,html .tn-scope .tn-header .tn-btn--ghost:active{background:transparent;color:var(--tn-text);border-color:transparent;box-shadow:none}
html .tn-scope .tn-header .tn-btn--ghost:hover{background:var(--tn-surface-sunken);color:var(--tn-text-heading)}
html .tn-scope .tn-header .tn-btn--ghost:focus-visible{box-shadow:var(--tn-focus-ring)}
html .tn-scope .tn-header__mobile .tn-btn svg{width:22px;height:22px}
html .tn-scope .tn-btn--primary,html .tn-scope .tn-btn--primary:focus,html .tn-scope .tn-btn--primary:active{background:var(--tn-accent);color:#FFFFFF;border-color:transparent}
html .tn-scope .tn-btn--primary:hover{background:var(--tn-accent-hover);color:#FFFFFF}
/* backdrop-filter makes the header the containing block of the fixed menu panel; drop it while the menu is open */
html.tn-menu-open .tn-scope .tn-header{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--tn-background)}
html .tn-scope .tn-mobile-menu__nav{display:flex;flex-direction:column}
html .tn-scope .tn-mobile-menu__nav a[aria-current]{color:var(--tn-accent-strong)}
html .tn-scope .tn-mobile-menu .tn-search__icon{top:22px}
html .tn-scope .tn-mobile-menu .tn-search__submit{width:100%;margin-top:var(--tn-space-2)}
html:root:root:root .tn-scope .tn-mobile-menu .tn-search__input{padding-right:var(--tn-space-3);margin:0}
html .tn-scope .tn-site-footer .tn-footer__grid{grid-template-columns:1.6fr 1fr 1fr}
html .tn-scope .tn-site-footer p:not(.tn-footer__title){margin:0}
html .tn-scope .tn-footer__social{display:flex;gap:var(--tn-space-2);flex-direction:row;flex-wrap:wrap}
html .tn-scope .tn-footer__social a{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:var(--tn-radius-md);border:1px solid rgba(255,255,255,.16);color:#AEB8C8;text-decoration:none}
html .tn-scope .tn-footer__social a:hover{color:#FFFFFF;border-color:rgba(255,255,255,.4);text-decoration:none}
html .tn-scope .tn-footer__social svg{width:18px;height:18px}
html .tn-scope .tn-footer__bottom a{color:#AEB8C8}
html .tn-scope .tn-footer__bottom ul{flex-direction:row;flex-wrap:wrap;gap:var(--tn-space-4)}
@media (max-width:1024px){
 html .tn-scope .tn-header__actions{display:none}
 html .tn-scope .tn-site-footer .tn-footer__grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:767px){html .tn-scope .tn-site-footer .tn-footer__grid{grid-template-columns:1fr}}
@media (min-width:1025px){html .tn-scope .tn-mobile-menu{display:none}}
/*# sourceURL=tn-site-shell-inline-css */


	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
/**
 * EMCP Themer — dynamic block front-end + editor styles.
 *
 * Intentionally light: layout + sensible defaults only, so the active theme and
 * each block's own supports (color/typography/spacing/border) drive the look.
 * No gradients.
 */

/* Breadcrumbs */
.emcp-dyn-breadcrumbs {
	font-size: 0.875em;
}
.emcp-dyn-breadcrumbs a {
	text-decoration: none;
}
.emcp-dyn-breadcrumbs a:hover {
	text-decoration: underline;
}
.emcp-dyn-breadcrumbs .emcp-dyn-sep {
	opacity: 0.5;
	margin: 0 0.25em;
}

/* Post meta */
.emcp-dyn-post-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25em 1em;
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 0.875em;
}
.emcp-dyn-post-meta > li {
	margin: 0;
	padding: 0;
}
.emcp-dyn-post-meta a {
	text-decoration: none;
}

/* Site title / logo */
.emcp-dyn-site-title a,
.emcp-dyn-site-logo {
	text-decoration: none;
}
.emcp-dyn-site-title {
	font-weight: 700;
}
.emcp-dyn-site-tagline {
	display: block;
	font-size: 0.8125em;
	opacity: 0.7;
}
.emcp-dyn-site-logo-img,
.emcp-dyn-site-logo img {
	display: block;
	height: auto;
}

/* Nav menu */
.emcp-dyn-nav-menu .emcp-dyn-menu {
	display: flex;
	flex-wrap: wrap;
	gap: 1.25em;
	margin: 0;
	padding: 0;
	list-style: none;
	align-items: center;
}
.emcp-dyn-nav-menu .emcp-dyn-menu a {
	text-decoration: none;
	display: inline-block;
}
.emcp-dyn-nav-menu .sub-menu {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Description */
.emcp-dyn-description {
	line-height: 1.6;
}

/* Archive loop.
   Card look is driven by CSS variables so the Elementor/Gutenberg controls can
   override them (background, border, radius, padding, gap). Defaults are clean:
   grid = carded, list = borderless magazine rows. */
.emcp-dyn-archive-loop {
	--emcp-card-gap: 28px;
	--emcp-card-bg: transparent;
	--emcp-card-border-color: rgba(0, 0, 0, 0.1);
	--emcp-card-border-width: 0px;
	--emcp-card-radius: 12px;
	--emcp-card-pad: 0px;
	--emcp-card-media: clamp(180px, 32%, 320px);
}
.emcp-dyn-archive-loop--grid {
	display: grid;
	grid-template-columns: repeat(var(--emcp-cols, 3), minmax(0, 1fr));
	gap: var(--emcp-card-gap);
}
.emcp-dyn-archive-loop--list {
	display: flex;
	flex-direction: column;
	gap: var(--emcp-card-gap);
}

/* Card */
.emcp-dyn-card {
	display: flex;
	flex-direction: column;
	min-width: 0;
	background: var(--emcp-card-bg);
	border: var(--emcp-card-border-width) solid var(--emcp-card-border-color);
	border-radius: var(--emcp-card-radius);
	overflow: hidden;
	transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}
/* Grid cards read as cards by default (subtle border + hover lift). */
.emcp-dyn-archive-loop--grid {
	--emcp-card-border-width: 1px;
	--emcp-card-pad: 18px;
}
.emcp-dyn-archive-loop--grid .emcp-dyn-card:hover {
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
	transform: translateY(-2px);
	border-color: rgba(0, 0, 0, 0.16);
}

/* List rows: image left, content right; collapses to full-width text with no
   image (flexbox, so the empty column that used to cramp the text is gone). */
.emcp-dyn-archive-loop--list .emcp-dyn-card {
	flex-direction: row;
	gap: 24px;
	align-items: stretch;
}
.emcp-dyn-archive-loop--list .emcp-dyn-card-media {
	flex: 0 0 var(--emcp-card-media);
	max-width: 340px;
}
.emcp-dyn-archive-loop--list .emcp-dyn-card-body {
	flex: 1 1 auto;
	justify-content: center;
}

/* Media */
.emcp-dyn-card-media {
	display: block;
	overflow: hidden;
	background: rgba(0, 0, 0, 0.04);
}
.emcp-dyn-card-media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.emcp-dyn-archive-loop--grid .emcp-dyn-card-media img {
	aspect-ratio: 16 / 10;
}
.emcp-dyn-archive-loop--list .emcp-dyn-card-media img {
	min-height: 100%;
	border-radius: 8px;
}
.emcp-dyn-card:hover .emcp-dyn-card-media img {
	transform: scale(1.03);
}
.emcp-dyn-card-media img {
	transition: transform 0.3s ease;
}

/* Body */
.emcp-dyn-card-body {
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-width: 0;
	padding: var(--emcp-card-pad);
	flex: 1 1 auto;
}
.emcp-dyn-card-meta {
	font-size: 0.8125em;
	opacity: 0.7;
}
.emcp-dyn-card-title {
	margin: 0;
	font-size: 1.15em;
	line-height: 1.3;
}
.emcp-dyn-card-title a {
	text-decoration: none;
	color: inherit;
}
.emcp-dyn-card-title a:hover {
	text-decoration: underline;
}
.emcp-dyn-card-excerpt {
	line-height: 1.6;
	opacity: 0.9;
}
.emcp-dyn-card-more {
	align-self: flex-start;
	margin-top: 4px;
	text-decoration: none;
	font-weight: 600;
}

/* Pagination */
.emcp-dyn-pagination {
	margin-top: 32px;
}
.emcp-dyn-pagination .page-numbers {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.emcp-dyn-pagination .page-numbers li {
	margin: 0;
}
.emcp-dyn-pagination .page-numbers a,
.emcp-dyn-pagination .page-numbers span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 38px;
	height: 38px;
	padding: 0 10px;
	border: 1px solid rgba(0, 0, 0, 0.12);
	border-radius: 6px;
	text-decoration: none;
	line-height: 1;
}
.emcp-dyn-pagination .page-numbers .current {
	background: currentColor;
	color: #fff;
	border-color: transparent;
}

/* Editor: placeholder for elements with no data in the current context */
.emcp-dyn-placeholder {
	display: inline-block;
	padding: 6px 12px;
	border: 1px dashed rgba(0, 0, 0, 0.25);
	border-radius: 6px;
	font-size: 0.875em;
	opacity: 0.7;
}

/* Small screens */
@media (max-width: 782px) {
	.emcp-dyn-archive-loop--grid {
		grid-template-columns: 1fr;
	}
	/* Stack list rows on small screens: image on top, text below. */
	.emcp-dyn-archive-loop--list .emcp-dyn-card {
		flex-direction: column;
	}
	.emcp-dyn-archive-loop--list .emcp-dyn-card-media {
		flex-basis: auto;
		max-width: none;
	}
	.emcp-dyn-archive-loop--list .emcp-dyn-card-media img {
		aspect-ratio: 16 / 9;
	}
}

/* --------------------------------------------------------------------------
 * Themer widget library (3.13.0)
 *
 * Layout and spacing only. Colour and typography stay with the theme and with
 * Elementor's own controls, so a widget never fights the site design.
 * -------------------------------------------------------------------------- */

.emcp-dyn-author-box__inner { display: flex; gap: 1rem; align-items: flex-start; }
.emcp-dyn-author-box__inner.is-stacked { flex-direction: column; align-items: center; text-align: center; }
.emcp-dyn-author-box__avatar img { display: block; border-radius: 50%; max-width: 100%; height: auto; }
.emcp-dyn-author-box__body { flex: 1 1 auto; min-width: 0; }
.emcp-dyn-author-box__name { margin: 0 0 .25rem; }
.emcp-dyn-author-box__links { display: flex; gap: .75rem; flex-wrap: wrap; margin-top: .5rem; }

.emcp-dyn-post-navigation { display: flex; gap: 1rem; justify-content: space-between; flex-wrap: wrap; }
.emcp-dyn-post-navigation__prev,
.emcp-dyn-post-navigation__next { display: flex; align-items: baseline; gap: .4rem; min-width: 0; }
.emcp-dyn-post-navigation__next { margin-inline-start: auto; text-align: end; }
.emcp-dyn-post-navigation__label { opacity: .7; font-size: .875em; }

.emcp-dyn-search-form__form { display: flex; gap: .5rem; align-items: stretch; }
.emcp-dyn-search-form__form.is-full { width: 100%; }
.emcp-dyn-search-form__input { flex: 1 1 auto; min-width: 0; }
.emcp-dyn-search-form__submit { flex: 0 0 auto; cursor: pointer; }

.emcp-dyn-sitemap__list { list-style: none; margin: 0 0 1rem; padding: 0; }
.emcp-dyn-sitemap__list li { margin: 0 0 .25rem; }

.emcp-dyn-post-info__list { display: flex; gap: .5rem; flex-wrap: wrap; align-items: baseline; }
.emcp-dyn-post-info__list.is-stacked { flex-direction: column; gap: .25rem; }
.emcp-dyn-post-info__sep { opacity: .5; }

.emcp-dyn-archive-posts__wrap.is-grid { display: grid; gap: 1.5rem; grid-template-columns: repeat(1, minmax(0, 1fr)); }
.emcp-dyn-archive-posts__wrap.is-list { display: flex; flex-direction: column; gap: 1.5rem; }
.emcp-dyn-archive-posts__card { min-width: 0; }
.emcp-dyn-archive-posts__image img { display: block; width: 100%; height: auto; }
.emcp-dyn-archive-posts__title { margin: .5rem 0 .25rem; }
.emcp-dyn-archive-posts__pagination { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: 1.5rem; }

@media (min-width: 768px) {
	.emcp-dyn-archive-posts__wrap.is-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.emcp-dyn-archive-posts__wrap.is-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.emcp-dyn-archive-posts__wrap.is-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.emcp-dyn-archive-posts__wrap.is-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.emcp-dyn-archive-posts__wrap.is-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

.emcp-dyn-featured-image img { display: block; max-width: 100%; height: auto; }

/* Loop Item editor canvas: the card previews at its configured width. */
.emcp-themer-loop-canvas .emcp-themer-loop-preview {
	margin: 40px auto;
	width: 100%;
}
/**
 * EMCP Themer Loop Grid and Loop Carousel.
 *
 * Layout only, driven by custom properties the element prints. The Loop Item
 * itself carries its own design. Flat colours, no gradients.
 *
 * Every structural rule uses child combinators from the element root, so a
 * Loop Grid or Carousel nested inside a card is never styled by its parent.
 */

/*
 * A loop nested inside a card must not inherit its parent loop's settings:
 * every custom property an Elementor control or an element's inline style
 * can set is reset on a nested loop, so an unset value falls back to the
 * stylesheet default. Specificity (0,2,0): a nested Elementor widget's own
 * values (".elementor-N .elementor-element.elementor-element-ID > .emcp-loop",
 * at least (0,4,0)) and a nested element's inline style still win.
 */
.emcp-loop .emcp-loop {
	--emcp-cols: initial;
	--emcp-cols-t: initial;
	--emcp-cols-m: initial;
	--emcp-gap-x: initial;
	--emcp-gap-y: initial;
	--emcp-first-span: initial;
	--emcp-lift: initial;
	--emcp-zoom: initial;
	--emcp-hover-duration: initial;
	--emcp-anim-duration: initial;
	--emcp-anim-step: initial;
	--emcp-pagination-align: initial;
	--emcp-pagination-gap: initial;
	--emcp-pagination-margin: initial;
	--emcp-pagination-active-bg: initial;
	--emcp-pagination-active-color: initial;
	--emcp-more-align: initial;
	--emcp-more-margin: initial;
	--emcp-empty-align: initial;
	--emcp-slides: initial;
	--emcp-slides-t: initial;
	--emcp-slides-m: initial;
	--emcp-gap: initial;
	--emcp-gap-t: initial;
	--emcp-gap-m: initial;
	--emcp-offset: initial;
	--emcp-arrow-size: initial;
	--emcp-arrow-color: initial;
	--emcp-arrow-bg: initial;
	--emcp-arrow-border: initial;
	--emcp-arrow-radius: initial;
	--emcp-arrow-offset: initial;
	--emcp-dot-size: initial;
	--emcp-dot-gap: initial;
	--emcp-dot-color: initial;
	--emcp-dot-active-color: initial;
	--emcp-dot-active-width: initial;
	--emcp-dots-offset: initial;
	--emcp-progress-height: initial;
	--emcp-progress-track: initial;
	--emcp-progress-fill: initial;
}
/* ---- Grid ------------------------------------------------------------ */
.emcp-loop--grid > .emcp-loop__items {
	display: grid;
	grid-template-columns: repeat(var(--emcp-cols, 3), minmax(0, 1fr));
	column-gap: var(--emcp-gap-x, 24px);
	row-gap: var(--emcp-gap-y, 24px);
	align-items: start;
}
@media (max-width: 1024px) {
	.emcp-loop--grid > .emcp-loop__items {
		grid-template-columns: repeat(var(--emcp-cols-t, 2), minmax(0, 1fr));
	}
}
@media (max-width: 767px) {
	.emcp-loop--grid > .emcp-loop__items {
		grid-template-columns: repeat(var(--emcp-cols-m, 1), minmax(0, 1fr));
	}
}
.emcp-loop__item {
	min-width: 0;
	position: relative;
}

/*
 * Equal height. Items become flex columns and the card content grows: the
 * .elementor root for an Elementor card (its per-item <style> sits after it),
 * the last element child for a block-built card. Masonry and equal height
 * contradict each other; masonry wins.
 */
.emcp-loop--grid.is-equal-height:not(.is-masonry) > .emcp-loop__items {
	align-items: stretch;
}
.emcp-loop--carousel.is-equal-height > .swiper > .swiper-wrapper > .swiper-slide {
	height: auto;
}
.emcp-loop--grid.is-equal-height:not(.is-masonry) > .emcp-loop__items > .emcp-loop__item,
.emcp-loop--carousel.is-equal-height:not(.is-masonry) > .swiper > .swiper-wrapper > .emcp-loop__item {
	display: flex;
	flex-direction: column;
}
.emcp-loop--grid.is-equal-height:not(.is-masonry) > .emcp-loop__items > .emcp-loop__item > .elementor,
.emcp-loop--grid.is-equal-height:not(.is-masonry) > .emcp-loop__items > .emcp-loop__item > :last-child:not(style),
.emcp-loop--carousel.is-equal-height:not(.is-masonry) > .swiper > .swiper-wrapper > .emcp-loop__item > .elementor,
.emcp-loop--carousel.is-equal-height:not(.is-masonry) > .swiper > .swiper-wrapper > .emcp-loop__item > :last-child:not(style) {
	flex-grow: 1;
}
/* A block card that ends in a <style>: grow the last element before it. Kept
 * in its own rule so a browser without :has() drops only this rule. */
.emcp-loop--grid.is-equal-height:not(.is-masonry) > .emcp-loop__items > .emcp-loop__item > :not(style):not(:has(~ :not(style))),
.emcp-loop--carousel.is-equal-height:not(.is-masonry) > .swiper > .swiper-wrapper > .emcp-loop__item > :not(style):not(:has(~ :not(style))) {
	flex-grow: 1;
}
/* Inside an Elementor card, the last top-level container fills the card. */
.emcp-loop--grid.is-equal-height:not(.is-masonry) > .emcp-loop__items > .emcp-loop__item > .elementor,
.emcp-loop--carousel.is-equal-height:not(.is-masonry) > .swiper > .swiper-wrapper > .emcp-loop__item > .elementor {
	display: flex;
	flex-direction: column;
}
.emcp-loop--grid.is-equal-height:not(.is-masonry) > .emcp-loop__items > .emcp-loop__item > .elementor > :last-child,
.emcp-loop--carousel.is-equal-height:not(.is-masonry) > .swiper > .swiper-wrapper > .emcp-loop__item > .elementor > :last-child {
	flex-grow: 1;
}

/* First item span (desktop only; the span is clamped to the column count). */
.emcp-loop--grid.has-first-span > .emcp-loop__items > .emcp-loop__item.is-first {
	grid-column: span var(--emcp-first-span, 1);
}
@media (max-width: 1024px) {
	.emcp-loop--grid.has-first-span > .emcp-loop__items > .emcp-loop__item.is-first {
		grid-column: auto;
	}
}
/* Pro alternate templates print .span-N on an item. The span is capped at
   each device's column count, or the grid would add implicit columns; the
   var() fallbacks match grid-template-columns, since a nested loop resets
   these properties to initial. */
.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-2 { grid-column: span min(2, var(--emcp-cols, 3)); }
.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-3 { grid-column: span min(3, var(--emcp-cols, 3)); }
.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-4 { grid-column: span min(4, var(--emcp-cols, 3)); }
.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-5 { grid-column: span min(5, var(--emcp-cols, 3)); }
.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-6 { grid-column: span min(6, var(--emcp-cols, 3)); }
@media (max-width: 1024px) {
	.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-2 { grid-column: span min(2, var(--emcp-cols-t, 2)); }
	.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-3 { grid-column: span min(3, var(--emcp-cols-t, 2)); }
	.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-4 { grid-column: span min(4, var(--emcp-cols-t, 2)); }
	.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-5 { grid-column: span min(5, var(--emcp-cols-t, 2)); }
	.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item.span-6 { grid-column: span min(6, var(--emcp-cols-t, 2)); }
}
@media (max-width: 767px) {
	.emcp-loop--grid > .emcp-loop__items > .emcp-loop__item[class*="span-"] { grid-column: auto; }
}

/* Masonry: the script sets grid-row-end per item. */
.emcp-loop--grid.is-masonry > .emcp-loop__items {
	grid-auto-rows: 1px;
	row-gap: 0;
}
.emcp-loop--grid.is-masonry > .emcp-loop__items > .emcp-loop__item {
	margin-bottom: var(--emcp-gap-y, 24px);
}

/* Hover effects */
.emcp-loop[class*="has-hover-"] > .emcp-loop__items > .emcp-loop__item {
	transition: transform var(--emcp-hover-duration, 250ms) ease, box-shadow var(--emcp-hover-duration, 250ms) ease;
}

/*
 * Entrance animations. Items are hidden only once the script has run
 * (it adds .is-anim-ready), so a page without the script shows every card.
 * The script then adds .is-visible with a per-item --emcp-anim-delay, and
 * .is-anim-done (clearing the delay) after the first transitionend. The
 * hidden state carries the only transform, so a visible item has none and
 * a hover transform below always applies.
 */
.emcp-loop.is-anim-ready[class*="has-anim-"] > .emcp-loop__items > .emcp-loop__item:not(.is-visible) {
	opacity: 0;
}
.emcp-loop.is-anim-ready.has-anim-fade-up > .emcp-loop__items > .emcp-loop__item:not(.is-visible) { transform: translateY(24px); }
.emcp-loop.is-anim-ready.has-anim-zoom-in > .emcp-loop__items > .emcp-loop__item:not(.is-visible) { transform: scale(0.92); }
/* While the entrance runs, box-shadow keeps its hover timing and no delay.
 * Revealed items only: hiding (adding .is-anim-ready) must be instant, or
 * cards already painted would animate out before animating back in. */
.emcp-loop.is-anim-ready[class*="has-anim-"] > .emcp-loop__items > .emcp-loop__item.is-visible:not(.is-anim-done) {
	transition:
		opacity var(--emcp-anim-duration, 500ms) ease var(--emcp-anim-delay, 0ms),
		transform var(--emcp-anim-duration, 500ms) ease var(--emcp-anim-delay, 0ms),
		box-shadow var(--emcp-hover-duration, 250ms) ease;
}
@media (prefers-reduced-motion: reduce) {
	.emcp-loop.is-anim-ready[class*="has-anim-"] > .emcp-loop__items > .emcp-loop__item:not(.is-visible) {
		opacity: 1;
		transform: none;
	}
	.emcp-loop.is-anim-ready[class*="has-anim-"] > .emcp-loop__items > .emcp-loop__item.is-visible:not(.is-anim-done) {
		transition: none;
	}
}

.emcp-loop.has-hover-lift > .emcp-loop__items > .emcp-loop__item.emcp-loop__item:hover {
	transform: translateY(calc(-1 * var(--emcp-lift, 6px)));
}
.emcp-loop.has-hover-zoom > .emcp-loop__items > .emcp-loop__item.emcp-loop__item:hover {
	transform: scale(var(--emcp-zoom, 1.03));
}
.emcp-loop.has-hover-shadow > .emcp-loop__items > .emcp-loop__item.emcp-loop__item:hover {
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.14);
}

/* Pagination */
.emcp-loop > .emcp-loop__pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: var(--emcp-pagination-align, center);
	gap: var(--emcp-pagination-gap, 8px);
	margin-top: var(--emcp-pagination-margin, 32px);
}
.emcp-loop > .emcp-loop__pagination[hidden] {
	display: none;
}
.emcp-loop > .emcp-loop__pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.25em;
	padding: 0.4em 0.75em;
	border: 1px solid currentColor;
	border-radius: 4px;
	text-decoration: none;
	line-height: 1;
}
.emcp-loop > .emcp-loop__pagination .page-numbers.current {
	border-color: var(--emcp-pagination-active-bg, #1d2327);
	background: var(--emcp-pagination-active-bg, #1d2327);
	color: var(--emcp-pagination-active-color, #ffffff);
}
.emcp-loop > .emcp-loop__pagination .page-numbers.dots {
	border: 0;
}
.emcp-loop.is-loading > .emcp-loop__items {
	opacity: 0.5;
	pointer-events: none;
}
/* The script focuses the element (or a new card) programmatically after a
 * load; no ring for a mouse user, the usual one for a keyboard user. */
.emcp-loop[tabindex="-1"]:focus:not(:focus-visible),
.emcp-loop__item[tabindex="-1"]:focus:not(:focus-visible) {
	outline: none;
}

/* Load more */
.emcp-loop > .emcp-loop__more {
	display: flex;
	justify-content: var(--emcp-more-align, center);
	margin-top: var(--emcp-more-margin, 32px);
}
/* Shown when infinite scroll could not load the next page. */
.emcp-loop > .emcp-loop__retry {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: var(--emcp-more-align, center);
	gap: 12px 16px;
	margin-top: var(--emcp-more-margin, 32px);
}
.emcp-loop > .emcp-loop__retry > .emcp-loop__retry-msg {
	flex-basis: 100%;
	margin: 0;
	text-align: center;
}
.emcp-loop > .emcp-loop__retry > .emcp-loop__retry-link {
	text-decoration: underline;
}
.emcp-loop__more-btn {
	cursor: pointer;
	padding: 0.75em 1.75em;
	border: 1px solid currentColor;
	border-radius: 4px;
	background: transparent;
	color: inherit;
	font: inherit;
}
.emcp-loop__more-btn[disabled] {
	opacity: 0.6;
	cursor: default;
}
.emcp-loop__more-btn.is-loading::after {
	content: "";
	display: inline-block;
	width: 0.85em;
	height: 0.85em;
	margin-inline-start: 0.6em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: emcp-loop-spin 0.7s linear infinite;
	vertical-align: middle;
}
@keyframes emcp-loop-spin {
	to { transform: rotate(360deg); }
}

/* Empty */
.emcp-loop__empty {
	margin: 0;
	padding: 1em 0;
	text-align: var(--emcp-empty-align, start);
}

/* ---- Carousel ---------------------------------------------------------- */
.emcp-loop--carousel {
	position: relative;
	/* Reset, so a carousel whose slides value is auto (and therefore printed
	 * nothing) never inherits a count from an ancestor. */
	--emcp-slides: initial;
	--emcp-slides-t: initial;
	--emcp-slides-m: initial;
}
.emcp-loop--carousel > .swiper {
	overflow: hidden;
}
/* Offsets name a physical side, so they stay physical. */
.emcp-loop--carousel.offset-both > .swiper { padding-left: var(--emcp-offset, 40px); padding-right: var(--emcp-offset, 40px); }
.emcp-loop--carousel.offset-left > .swiper { padding-left: var(--emcp-offset, 40px); }
.emcp-loop--carousel.offset-right > .swiper { padding-right: var(--emcp-offset, 40px); }

/*
 * Before Swiper runs, show a static row with the real slide counts and gaps
 * so nothing jumps. Breakpoints match Swiper's exactly: below 768px,
 * 768px to 1024px, 1025px and up. A slides value of auto prints no
 * property, so --emcp-basis is invalid and the slide sizes to its content.
 */
.emcp-loop--carousel:not(.is-ready) > .swiper > .swiper-wrapper {
	display: flex;
	gap: var(--emcp-gap-m, 16px);
}
.emcp-loop--carousel:not(.is-ready) > .swiper > .swiper-wrapper > .swiper-slide {
	--emcp-basis: calc((100% - (var(--emcp-slides-m) - 1) * var(--emcp-gap-m, 16px)) / var(--emcp-slides-m));
	flex: 0 0 var(--emcp-basis, auto);
}
@media (min-width: 768px) {
	.emcp-loop--carousel:not(.is-ready) > .swiper > .swiper-wrapper {
		gap: var(--emcp-gap-t, 20px);
	}
	.emcp-loop--carousel:not(.is-ready) > .swiper > .swiper-wrapper > .swiper-slide {
		--emcp-basis: calc((100% - (var(--emcp-slides-t) - 1) * var(--emcp-gap-t, 20px)) / var(--emcp-slides-t));
	}
}
@media (min-width: 1025px) {
	.emcp-loop--carousel:not(.is-ready) > .swiper > .swiper-wrapper {
		gap: var(--emcp-gap, 24px);
	}
	.emcp-loop--carousel:not(.is-ready) > .swiper > .swiper-wrapper > .swiper-slide {
		--emcp-basis: calc((100% - (var(--emcp-slides) - 1) * var(--emcp-gap, 24px)) / var(--emcp-slides));
	}
}

/* Arrows: logical properties, so prev sits on the start side in RTL too. */
.emcp-loop--carousel > .emcp-loop__arrow {
	position: absolute;
	top: 50%;
	/* Above the dots bar, which Swiper's own stylesheet puts at z-index 10. */
	z-index: 11;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--emcp-arrow-size, 44px);
	height: var(--emcp-arrow-size, 44px);
	padding: 0;
	border: 1px solid var(--emcp-arrow-border, transparent);
	border-radius: var(--emcp-arrow-radius, 50%);
	background: var(--emcp-arrow-bg, #ffffff);
	color: var(--emcp-arrow-color, #1d2327);
	cursor: pointer;
	transform: translateY(-50%);
}
.emcp-loop--carousel > .emcp-loop__arrow svg {
	width: 55%;
	height: 55%;
}
.emcp-loop--carousel > .emcp-loop__arrow:dir(rtl) svg {
	transform: scaleX(-1);
}
.emcp-loop--carousel > .emcp-loop__arrow--prev { inset-inline-start: var(--emcp-arrow-offset, 8px); }
.emcp-loop--carousel > .emcp-loop__arrow--next { inset-inline-end: var(--emcp-arrow-offset, 8px); }
.emcp-loop--carousel.arrows-outside {
	padding-inline: calc(var(--emcp-arrow-size, 44px) + 16px);
}
.emcp-loop--carousel.arrows-outside > .emcp-loop__arrow--prev { inset-inline-start: 0; }
.emcp-loop--carousel.arrows-outside > .emcp-loop__arrow--next { inset-inline-end: 0; }
.emcp-loop--carousel.arrows-bottom {
	padding-bottom: calc(var(--emcp-arrow-size, 44px) + 16px);
}
.emcp-loop--carousel.arrows-bottom > .emcp-loop__arrow { top: auto; bottom: 0; transform: none; }
.emcp-loop--carousel.arrows-bottom > .emcp-loop__arrow--prev { inset-inline-start: calc(50% - var(--emcp-arrow-size, 44px) - 8px); }
.emcp-loop--carousel.arrows-bottom > .emcp-loop__arrow--next { inset-inline-end: calc(50% - var(--emcp-arrow-size, 44px) - 8px); }
.emcp-loop--carousel > .emcp-loop__arrow.swiper-button-disabled { opacity: 0.35; cursor: default; }
/* Hide arrows on mobile: the class sits on the element itself (never on a
 * widget wrapper), so only this carousel's own arrows are reached. The
 * room reserved for outside or bottom arrows goes with them. */
@media (max-width: 767px) {
	.emcp-loop--carousel.hide-arrows-mobile > .emcp-loop__arrow { display: none; }
	.emcp-loop--carousel.hide-arrows-mobile.arrows-outside { padding-inline: 0; }
	.emcp-loop--carousel.hide-arrows-mobile.arrows-bottom { padding-bottom: 0; }
}

/* Dots */
.emcp-loop--carousel > .emcp-loop__dots.swiper-pagination {
	position: relative;
	bottom: auto;
	left: auto;
	margin-top: var(--emcp-dots-offset, 16px);
	text-align: center;
}
.emcp-loop--carousel.dots-inside > .emcp-loop__dots.swiper-pagination {
	position: absolute;
	bottom: var(--emcp-dots-offset, 16px);
	left: 0;
	right: 0;
	margin: 0;
}
/* The dots bar spans the full width; only the bullets take clicks, so on short
 * cards it never swallows a click meant for an arrow. */
.emcp-loop--carousel > .emcp-loop__dots.swiper-pagination {
	pointer-events: none;
}
.emcp-loop--carousel > .emcp-loop__dots .swiper-pagination-bullet {
	pointer-events: auto;
}
.emcp-loop--carousel > .emcp-loop__dots .swiper-pagination-bullet {
	width: var(--emcp-dot-size, 8px);
	height: var(--emcp-dot-size, 8px);
	margin: 0 calc(var(--emcp-dot-gap, 8px) / 2);
	background: var(--emcp-dot-color, #1d2327);
	opacity: 0.35;
	transition: width 200ms ease, opacity 200ms ease;
}
.emcp-loop--carousel > .emcp-loop__dots .swiper-pagination-bullet-active {
	width: var(--emcp-dot-active-width, var(--emcp-dot-size, 8px));
	border-radius: var(--emcp-dot-size, 8px);
	background: var(--emcp-dot-active-color, var(--emcp-dot-color, #1d2327));
	opacity: 1;
}
.emcp-loop--carousel > .emcp-loop__dots.swiper-pagination-fraction {
	color: var(--emcp-dot-color, #1d2327);
}
.emcp-loop--carousel > .emcp-loop__dots.swiper-pagination-progressbar {
	height: var(--emcp-progress-height, 4px);
	background: var(--emcp-progress-track, rgba(0, 0, 0, 0.12));
}
.emcp-loop--carousel > .emcp-loop__dots.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
	background: var(--emcp-progress-fill, #1d2327);
}

/* ---- Editor placeholder (Plan 2b) --------------------------------------- */
.emcp-loop__placeholder {
	padding: 24px;
	border: 1px dashed #c3c4c7;
	border-radius: 4px;
	text-align: center;
	color: #50575e;
}
/**
 * Advanced Search & Filter - Public Stylesheet
 * Version: 2.0.0 - EXACT HTML STRUCTURE MATCH
 */

:root {
    --asf-primary: #0073aa;
    --asf-primary-hover: #005177;
    --asf-text: #333333;
    --asf-border: #dddddd;
    --asf-bg: #ffffff;
    --asf-radius: 4px;
    --asf-gap: 12px;
    --asf-transition: 0.2s ease;
}

/* ================================================================
   CRITICAL: Theme Override - Prevent width conflicts
   ================================================================ */

.asf-filter-form,
.asf-filter-form * {
    box-sizing: border-box !important;
}

/* Force inputs and selects to NOT be 100% width */
.asf-filter-form input[type="search"],
.asf-filter-form input[type="text"],
.asf-filter-form input[type="number"],
.asf-filter-form select {
    width: 100% !important; /* Within their container */
    max-width: none !important;
}

/* Buttons should be auto-width */
.asf-filter-form button {
    width: auto !important;
}

/* Force form to be flex */
.asf-filter-form {
    display: flex !important;
}

.asf-filter-form input[type="search"],
.asf-filter-form input[type="text"],
.asf-filter-form input[type="number"] {
    width: 100% !important;
}

/* Container */
.asf-filter-container {
    width: 100%;
    max-width: 100%;
    margin: 20px auto;
    padding: 20px;
    background: var(--asf-bg);
    border: 1px solid var(--asf-border);
    border-radius: var(--asf-radius);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    box-sizing: border-box;
}

/* CRITICAL: Override theme styles that break layout */
.asf-filter-form input,
.asf-filter-form select,
.asf-filter-form button {
    width: auto !important;
    max-width: none !important;
    flex: none !important;
    box-sizing: border-box !important;
    margin: 0 !important;
}

.asf-filter-form * {
    box-sizing: border-box;
}

/* Form Layout */
.asf-filter-form {
    display: flex;
    flex-wrap: wrap;
    gap: var(--asf-gap);
    align-items: center;
    width: 100%;
}

/* Search Field */
.asf-search {
    position: relative;
    flex: 1 1 300px;
    min-width: 200px;
}

.asf-search input[type="search"] {
    width: 100% !important;
    max-width: none !important;
    padding: 10px 40px 10px 12px;
    border: 1px solid var(--asf-border);
    border-radius: var(--asf-radius);
    font-size: 15px;
    box-sizing: border-box !important;
    transition: border-color var(--asf-transition);
    flex: none !important;
}

.asf-search input[type="search"]:focus {
    outline: none;
    border-color: var(--asf-primary);
    box-shadow: 0 0 0 1px var(--asf-primary);
}

/* Clear Button */
.asf-clear {
    position: absolute;
    right: 4px;
    top: 50%;
    transform: translateY(-50%);
    width: 32px;
    height: 32px;
    display: none;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    border-radius: var(--asf-radius);
    cursor: pointer;
    color: #666666;
    transition: all var(--asf-transition);
    padding: 0;
}

.asf-clear:hover {
    background: #f5f5f5;
    color: var(--asf-primary);
}

.asf-clear.visible {
    display: flex;
}

.asf-clear i {
    font-size: 16px;
}

/* Taxonomy Field */
.asf-taxonomy {
    position: relative;
    display: flex;
    align-items: center;
    flex: 0 0 auto;
    min-width: 180px;
}

.asf-taxonomy i {
    position: absolute;
    left: 12px;
    color: #666666;
    font-size: 14px;
    pointer-events: none;
    z-index: 1;
}

.asf-taxonomy select {
    width: 100% !important;
    max-width: none !important;
    padding: 10px 32px 10px 36px;
    border: 1px solid var(--asf-border);
    border-radius: var(--asf-radius);
    font-size: 15px;
    background: var(--asf-bg);
    cursor: pointer;
    transition: border-color var(--asf-transition);
    box-sizing: border-box !important;
    appearance: none;
    flex: none !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 12px;
}

.asf-taxonomy select:focus {
    outline: none;
    border-color: var(--asf-primary);
    box-shadow: 0 0 0 1px var(--asf-primary);
}

/* Meta Fields */
.asf-meta {
    display: flex;
    gap: 8px;
    flex: 0 0 auto;
}

.asf-meta input,
.asf-meta select {
    padding: 10px 12px;
    border: 1px solid var(--asf-border);
    border-radius: var(--asf-radius);
    font-size: 15px;
    background: var(--asf-bg);
    transition: border-color var(--asf-transition);
    box-sizing: border-box;
}

.asf-meta input:focus,
.asf-meta select:focus {
    outline: none;
    border-color: var(--asf-primary);
    box-shadow: 0 0 0 1px var(--asf-primary);
}

/* Order By */
.asf-orderby {
    display: flex;
    gap: 8px;
    flex: 0 0 auto;
}

.asf-orderby select {
    padding: 10px 12px;
    border: 1px solid var(--asf-border);
    border-radius: var(--asf-radius);
    font-size: 15px;
    background: var(--asf-bg);
    cursor: pointer;
    transition: border-color var(--asf-transition);
    box-sizing: border-box;
}

.asf-orderby select:focus {
    outline: none;
    border-color: var(--asf-primary);
    box-shadow: 0 0 0 1px var(--asf-primary);
}

/* Submit Button */
.asf-submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px 20px;
    background: var(--asf-primary);
    color: #ffffff;
    border: none;
    border-radius: var(--asf-radius);
    font-size: 15px;
    font-weight: 500;
    cursor: pointer;
    transition: all var(--asf-transition);
    white-space: nowrap;
    box-sizing: border-box;
}

.asf-submit:hover {
    background: var(--asf-primary-hover);
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.asf-submit i {
    font-size: 14px;
}

/* Reset Button */
.asf-reset {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 10px 20px;
    background: #f7f7f7;
    color: var(--asf-text);
    border: 1px solid var(--asf-border);
    border-radius: var(--asf-radius);
    font-size: 15px;
    font-weight: 500;
    cursor: pointer;
    transition: all var(--asf-transition);
    white-space: nowrap;
    box-sizing: border-box;
}

.asf-reset:hover {
    background: #eeeeee;
    border-color: #cccccc;
}

.asf-reset i {
    font-size: 14px;
}

/* Results Section */
.asf-results-container {
    margin-top: 30px;
    display: none;
}

.asf-results-info {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 0;
    border-bottom: 1px solid var(--asf-border);
    margin-bottom: 20px;
}

.asf-results-count {
    font-size: 15px;
    color: #666666;
}

.asf-results-count strong {
    color: var(--asf-text);
    font-weight: 600;
}

/* Loading */
.asf-loading {
    display: none;
    text-align: center;
    padding: 40px;
    color: #666666;
}

.asf-loading::after {
    content: '';
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 2px solid var(--asf-border);
    border-top-color: var(--asf-primary);
    border-radius: 50%;
    animation: asf-spin 0.6s linear infinite;
}

@keyframes asf-spin {
    to { transform: rotate(360deg); }
}

/* Pagination */
.asf-pagination {
    display: flex;
    gap: 6px;
    justify-content: center;
    margin-top: 30px;
    flex-wrap: wrap;
}

.asf-page-link,
.asf-page-current,
.asf-page-dots {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 12px;
    border-radius: var(--asf-radius);
    font-size: 14px;
    text-decoration: none;
    transition: all var(--asf-transition);
}

.asf-page-link {
    background: var(--asf-bg);
    color: var(--asf-text);
    border: 1px solid var(--asf-border);
}

.asf-page-link:hover {
    background: var(--asf-primary);
    color: #ffffff;
    border-color: var(--asf-primary);
}

.asf-page-current {
    background: var(--asf-primary);
    color: #ffffff;
    font-weight: 600;
    border: 1px solid var(--asf-primary);
}

.asf-page-dots {
    background: transparent;
    color: #999999;
    border: none;
    cursor: default;
}

/* Mobile Responsive */
@media (max-width: 639px) {
    .asf-filter-form {
        flex-direction: column;
    }
    
    .asf-search,
    .asf-taxonomy,
    .asf-meta,
    .asf-orderby {
        width: 100%;
        flex: 1 1 auto;
    }
    
    .asf-submit,
    .asf-reset {
        width: 100%;
        justify-content: center;
    }
}

/* Tablet */
@media (min-width: 640px) and (max-width: 1024px) {
    .asf-search {
        flex: 1 1 250px;
    }
    
    .asf-taxonomy {
        flex: 0 1 180px;
    }
}

/* Desktop */
@media (min-width: 1025px) {
    .asf-search {
        flex: 1 1 320px;
    }
    
    .asf-taxonomy {
        flex: 0 1 200px;
    }
}

/* Accessibility */
@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* Print */
@media print {
    .asf-clear,
    .asf-submit,
    .asf-reset,
    .asf-loading,
    .asf-pagination {
        display: none !important;
    }
}
.wpcf7 .screen-reader-response {
	position: absolute;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	width: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	word-wrap: normal !important;
	word-break: normal !important;
}

.wpcf7 .hidden-fields-container {
	display: none;
}

.wpcf7 form .wpcf7-response-output {
	margin: 2em 0.5em 1em;
	padding: 0.2em 1em;
	border: 2px solid #00a0d2; /* Blue */
}

.wpcf7 form.init .wpcf7-response-output,
.wpcf7 form.resetting .wpcf7-response-output,
.wpcf7 form.submitting .wpcf7-response-output {
	display: none;
}

.wpcf7 form.sent .wpcf7-response-output {
	border-color: #46b450; /* Green */
}

.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output {
	border-color: #dc3232; /* Red */
}

.wpcf7 form.spam .wpcf7-response-output {
	border-color: #f56e28; /* Orange */
}

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output {
	border-color: #ffb900; /* Yellow */
}

.wpcf7-form-control-wrap {
	position: relative;
}

.wpcf7-not-valid-tip {
	color: #dc3232; /* Red */
	font-size: 1em;
	font-weight: normal;
	display: block;
}

.use-floating-validation-tip .wpcf7-not-valid-tip {
	position: relative;
	top: -2ex;
	left: 1em;
	z-index: 100;
	border: 1px solid #dc3232;
	background: #fff;
	padding: .2em .8em;
	width: 24em;
}

.wpcf7-list-item {
	display: inline-block;
	margin: 0 0 0 1em;
}

.wpcf7-list-item-label::before,
.wpcf7-list-item-label::after {
	content: " ";
}

.wpcf7-spinner {
	visibility: hidden;
	display: inline-block;
	background-color: #23282d; /* Dark Gray 800 */
	opacity: 0.75;
	width: 24px;
	height: 24px;
	border: none;
	border-radius: 100%;
	padding: 0;
	margin: 0 24px;
	position: relative;
}

form.submitting .wpcf7-spinner {
	visibility: visible;
}

.wpcf7-spinner::before {
	content: '';
	position: absolute;
	background-color: #fbfbfc; /* Light Gray 100 */
	top: 4px;
	left: 4px;
	width: 6px;
	height: 6px;
	border: none;
	border-radius: 100%;
	transform-origin: 8px 8px;
	animation-name: spin;
	animation-duration: 1000ms;
	animation-timing-function: linear;
	animation-iteration-count: infinite;
}

@media (prefers-reduced-motion: reduce) {
	.wpcf7-spinner::before {
		animation-name: blink;
		animation-duration: 2000ms;
	}
}

@keyframes spin {
	from {
		transform: rotate(0deg);
	}

	to {
		transform: rotate(360deg);
	}
}

@keyframes blink {
	from {
		opacity: 0;
	}

	50% {
		opacity: 1;
	}

	to {
		opacity: 0;
	}
}

.wpcf7 [inert] {
	opacity: 0.5;
}

.wpcf7 input[type="file"] {
	cursor: pointer;
}

.wpcf7 input[type="file"]:disabled {
	cursor: default;
}

.wpcf7 .wpcf7-submit:disabled {
	cursor: not-allowed;
}

.wpcf7 input[type="url"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"] {
	direction: ltr;
}

.wpcf7-reflection > output {
	display: list-item;
	list-style: none;
}

.wpcf7-reflection > output[hidden] {
	display: none;
}

.tn-tool-card .tn-card__title,.tn-tool-card .tn-card__desc{overflow-wrap:anywhere}
:root .tn-tool-card .tn-tool-card__footer{flex-wrap:wrap}
.tn-tool-card__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tn-space-2) var(--tn-space-3);min-width:0}
:root .tn-tool-card .tn-tool-card__platforms{margin:0}
:root .tn-tool-card .tn-tool-card__cta{margin-left:auto;font-size:var(--tn-fs-small)}
:root .tn-tool-card .tn-tool-card__cta svg{width:16px;height:16px}
.tn-tool-card .tn-dir-verified{width:16px;height:16px;color:var(--tn-accent);vertical-align:-2px;margin-left:4px}html body.tn-listing-page .tn-dir-hero{padding-block:var(--tn-space-8);background:var(--tn-background-subtle);border-bottom:1px solid var(--tn-border)}
html body.tn-listing-page .tn-dir-hero .tn-breadcrumb{margin-bottom:var(--tn-space-5)}
html body.tn-listing-page .tn-dir-hero .tn-h1{margin:0 0 var(--tn-space-3)}
html body.tn-listing-page .tn-dir-hero .tn-lead{max-width:680px;margin:0 0 var(--tn-space-6)}
html body.tn-listing-page .tn-dir-hero .tn-search{max-width:720px}
html body.tn-listing-page .tn-dir-hero__meta{margin:var(--tn-space-3) 0 0}
html body.tn-listing-page .tn-dir-main{padding-block:var(--tn-space-8) var(--tn-section-y)}
html body.tn-listing-page .tn-dir-results{list-style:none;margin:0;padding:0;--tn-grid-min:260px}
html body.tn-listing-page .tn-dir-results>li{display:flex;min-width:0}
html body.tn-listing-page .tn-dir-results>li>.tn-card{flex:1;min-width:0}
html body.tn-listing-page .tn-dir-fieldset{border:0;margin:0;min-width:0;padding-inline:0}
html body.tn-listing-page .tn-dir-fieldset>legend.tn-filter__title{display:block;float:left;width:100%}
html body.tn-listing-page .tn-dir-fieldset>legend+*{clear:both}
html body.tn-listing-page .tn-check--child{padding-left:var(--tn-space-6)}
html body.tn-listing-page .tn-check>span:first-of-type{min-width:0;overflow-wrap:anywhere}
html body.tn-listing-page .tn-filter__group{margin:var(--tn-space-2) 0 var(--tn-space-1);font-size:var(--tn-fs-caption);font-weight:var(--tn-fw-semibold);color:var(--tn-text-muted);text-transform:uppercase;letter-spacing:var(--tn-ls-eyebrow)}
html body.tn-listing-page .tn-filter__group:first-child{margin-top:0}
html body.tn-listing-page .tn-filter__more>summary{display:inline-flex;align-items:center;gap:4px;cursor:pointer;color:var(--tn-accent);font-weight:var(--tn-fw-medium);list-style:none;border-radius:var(--tn-radius-xs)}
html body.tn-listing-page .tn-filter__more>summary::-webkit-details-marker{display:none}
html body.tn-listing-page .tn-filter__more>summary svg{width:16px;height:16px;transition:transform var(--tn-dur-fast) var(--tn-ease)}
html body.tn-listing-page .tn-filter__more[open]>summary svg{transform:rotate(180deg)}
html body.tn-listing-page .tn-filter__more[open]>summary{margin-bottom:var(--tn-space-2)}
html body.tn-listing-page .tn-filter__more .tn-dir-more-open,html body.tn-listing-page .tn-filter__more[open] .tn-dir-more-closed{display:none}
html body.tn-listing-page .tn-filter__more[open] .tn-dir-more-open{display:inline}
html body.tn-listing-page .tn-dir-apply{display:none;margin-top:var(--tn-space-4)}
html body.tn-listing-page .tn-dir-drawer-head{display:none}
html body.tn-listing-page .tn-dir-drawer-head .tn-h4{margin:0}
html body.tn-listing-page .tn-dir-sidebar-title{margin:0 0 var(--tn-space-4);font-size:var(--tn-fs-small);font-weight:var(--tn-fw-semibold);color:var(--tn-text-heading)}
html body.tn-listing-page .tn-filters-drawer__footer .tn-btn+.tn-btn{margin-top:var(--tn-space-2)}
html body.tn-listing-page .tn-dir-views,html body.tn-listing-page .tn-dir-active{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tn-space-2);margin:0 0 var(--tn-space-5);padding:0;list-style:none}
html body.tn-listing-page .tn-dir-active .tn-chip{background:var(--tn-surface-sunken);border-color:transparent}
html body.tn-listing-page .tn-dir-active .tn-chip:hover{border-color:var(--tn-border-strong)}
html body.tn-listing-page .tn-toolbar__sort{display:flex;align-items:center;gap:var(--tn-space-2)}
html body.tn-listing-page .tn-toolbar__sort label{font-size:var(--tn-fs-small);color:var(--tn-text-muted);white-space:nowrap}
html body.tn-listing-page .tn-toolbar__start{display:flex;align-items:center;gap:var(--tn-space-3);flex-wrap:wrap}
html body.tn-listing-page .tn-toolbar__count{margin:0}
html body.tn-listing-page .tn-filter-toggle .tn-dir-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--tn-radius-full);background:var(--tn-primary);color:var(--tn-text-inverse);font-size:.75rem}
html body.tn-listing-page .tn-dir-empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--tn-space-2)}
html body.tn-listing-page .tn-pagination .tn-pagination__step{display:inline-flex;align-items:center;gap:4px}
html body.tn-listing-page .tn-pagination svg{width:16px;height:16px}
@media (min-width:1025px){html:not(.tn-js) body.tn-listing-page .tn-dir-apply{display:flex}}
@media (max-width:1024px){
 html body.tn-listing-page .tn-dir-drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--tn-space-4)}
 html body.tn-listing-page .tn-dir-sidebar-title{display:none}
 html:not(.tn-js) body.tn-listing-page .tn-filters-drawer{position:static;transform:none;visibility:visible;box-shadow:none;max-height:none;border-radius:0;padding:0 0 var(--tn-space-6);background:transparent}
 html:not(.tn-js) body.tn-listing-page .tn-filter-toggle,html:not(.tn-js) body.tn-listing-page .tn-dir-drawer-head{display:none}
 html:not(.tn-js) body.tn-listing-page .tn-filters-drawer__footer{position:static;margin:var(--tn-space-4) 0 0;padding:0;border:0}
}
@media (max-width:767px){
 html body.tn-listing-page .tn-dir-hero{padding-block:var(--tn-space-6)}
 html body.tn-listing-page .tn-dir-hero .tn-search--lg .tn-search__input.tn-input{padding-right:var(--tn-space-4)}
 html body.tn-listing-page .tn-dir-hero .tn-search--lg .tn-search__icon{top:28px}
 html body.tn-listing-page .tn-dir-hero .tn-search--lg .tn-search__submit{position:static;width:100%;margin-top:var(--tn-space-2);min-height:44px}
 html body.tn-listing-page .tn-toolbar__sort{width:100%}
 html body.tn-listing-page .tn-toolbar__sort .tn-select.tn-select{flex:1;width:auto}
}
/*# sourceURL=tn-directory-inline-css */
.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}
				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
					background-image: none !important;
				}
				@media screen and (max-height: 1024px) {
					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
						background-image: none !important;
					}
				}
				@media screen and (max-height: 640px) {
					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
						background-image: none !important;
					}
				}
			