/* FerreiraSW DS component styles — extracted from bundle */

.fsw-btn{
  --_bg:var(--primary); --_fg:var(--on-primary); --_bd:transparent;
  display:inline-flex;align-items:center;justify-content:center;gap:0.55em;
  font-family:var(--font-sans);font-weight:600;letter-spacing:-0.005em;
  border:1px solid var(--_bd);border-radius:var(--radius-md);
  background:var(--_bg);color:var(--_fg);cursor:pointer;
  white-space:nowrap;text-decoration:none;position:relative;isolation:isolate;
  transition:background var(--dur-fast) var(--ease-out),
             border-color var(--dur-fast) var(--ease-out),
             box-shadow var(--dur-base) var(--ease-out),
             transform var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
  -webkit-tap-highlight-color:transparent;
}
.fsw-btn:focus-visible{outline:none;box-shadow:var(--ring)}
.fsw-btn:active{transform:translateY(1px)}
.fsw-btn[disabled],.fsw-btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed;pointer-events:none}
.fsw-btn--md{height:var(--control-md);padding:0 18px;font-size:var(--text-sm)}
.fsw-btn--sm{height:var(--control-sm);padding:0 13px;font-size:var(--text-xs);border-radius:var(--radius-sm)}
.fsw-btn--lg{height:var(--control-lg);padding:0 26px;font-size:var(--text-body)}
.fsw-btn--block{display:flex;width:100%}
/* primary */
.fsw-btn--primary{--_bg:var(--primary);--_fg:var(--on-primary);box-shadow:var(--edge-top)}
.fsw-btn--primary:hover{--_bg:var(--primary-hover);box-shadow:var(--glow-primary)}
.fsw-btn--primary:active{--_bg:var(--primary-active)}
/* signal */
.fsw-btn--signal{--_bg:var(--accent);--_fg:var(--on-accent);box-shadow:var(--edge-top)}
.fsw-btn--signal:hover{--_bg:var(--accent-hover);box-shadow:var(--glow-signal)}
/* secondary (outline on surface) */
.fsw-btn--secondary{--_bg:var(--surface-raised);--_fg:var(--text-strong);--_bd:var(--border-strong);box-shadow:var(--edge-top)}
.fsw-btn--secondary:hover{--_bg:var(--surface-overlay);--_bd:var(--border-contrast)}
/* ghost */
.fsw-btn--ghost{--_bg:transparent;--_fg:var(--text-body);--_bd:transparent}
.fsw-btn--ghost:hover{--_bg:var(--hover-overlay);--_fg:var(--text-strong)}
/* danger */
.fsw-btn--danger{--_bg:var(--danger-soft);--_fg:var(--danger);--_bd:var(--danger-border)}
.fsw-btn--danger:hover{--_bg:var(--danger);--_fg:var(--white)}
.fsw-btn__spin{width:1em;height:1em;border-radius:50%;border:2px solid currentColor;border-top-color:transparent;animation:fsw-spin .6s linear infinite}
@keyframes fsw-spin{to{transform:rotate(360deg)}}

.fsw-iconbtn{
  --_bg:transparent;--_fg:var(--text-muted);--_bd:transparent;
  display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--_bd);border-radius:var(--radius-md);
  background:var(--_bg);color:var(--_fg);cursor:pointer;padding:0;
  transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),
             border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),transform var(--dur-fast) var(--ease-out);
  -webkit-tap-highlight-color:transparent;
}
.fsw-iconbtn:focus-visible{outline:none;box-shadow:var(--ring)}
.fsw-iconbtn:active{transform:translateY(1px)}
.fsw-iconbtn[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none}
.fsw-iconbtn--sm{width:var(--control-sm);height:var(--control-sm);border-radius:var(--radius-sm)}
.fsw-iconbtn--md{width:var(--control-md);height:var(--control-md)}
.fsw-iconbtn--lg{width:var(--control-lg);height:var(--control-lg)}
.fsw-iconbtn--ghost:hover{--_bg:var(--hover-overlay);--_fg:var(--text-strong)}
.fsw-iconbtn--solid{--_bg:var(--surface-raised);--_fg:var(--text-body);--_bd:var(--border-default);box-shadow:var(--edge-top)}
.fsw-iconbtn--solid:hover{--_bg:var(--surface-overlay);--_fg:var(--text-strong);--_bd:var(--border-strong)}
.fsw-iconbtn--primary{--_bg:var(--primary);--_fg:var(--on-primary)}
.fsw-iconbtn--primary:hover{--_bg:var(--primary-hover);box-shadow:var(--glow-primary)}
.fsw-iconbtn svg{width:1.25em;height:1.25em}

.fsw-badge{
  display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);
  font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-caps);
  text-transform:uppercase;line-height:1;padding:5px 9px;border-radius:var(--radius-pill);
  border:1px solid transparent;white-space:nowrap;
}
.fsw-badge--md{font-size:var(--text-xs);padding:6px 11px}
.fsw-badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 22%,transparent)}
.fsw-badge--neutral{background:var(--surface-overlay);border-color:var(--border-default);color:var(--text-muted)}
.fsw-badge--primary{background:var(--primary-soft);border-color:var(--primary-soft-border);color:var(--primary-hover)}
.fsw-badge--signal{background:var(--accent-soft);border-color:var(--accent-soft-border);color:var(--accent)}
.fsw-badge--success{background:var(--success-soft);border-color:var(--success-border);color:var(--success)}
.fsw-badge--warning{background:var(--warning-soft);border-color:var(--warning-border);color:var(--warning)}
.fsw-badge--danger{background:var(--danger-soft);border-color:var(--danger-border);color:var(--danger)}
.fsw-badge--info{background:var(--info-soft);border-color:var(--info-border);color:var(--info)}
.fsw-badge--solid{background:var(--primary);border-color:transparent;color:var(--on-primary)}

.fsw-tag{
  display:inline-flex;align-items:center;gap:7px;font-family:var(--font-sans);
  font-size:var(--text-xs);font-weight:500;color:var(--text-body);
  background:var(--surface-raised);border:1px solid var(--border-default);
  border-radius:var(--radius-sm);padding:5px 9px;line-height:1;
  transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out);
}
.fsw-tag--interactive{cursor:pointer}
.fsw-tag--interactive:hover{border-color:var(--border-strong);background:var(--surface-overlay)}
.fsw-tag__icon{display:inline-flex;color:var(--text-muted)}
.fsw-tag__icon svg{width:14px;height:14px}
.fsw-tag__x{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:var(--radius-xs);color:var(--text-faint);cursor:pointer;margin:-2px -3px -2px 0;transition:color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}
.fsw-tag__x:hover{color:var(--danger);background:var(--danger-soft)}
.fsw-tag__x svg{width:12px;height:12px}

.fsw-tip-wrap{position:relative;display:inline-flex}
.fsw-tip{
  position:absolute;z-index:60;pointer-events:none;
  background:var(--surface-overlay);color:var(--text-strong);
  border:1px solid var(--border-strong);border-radius:var(--radius-sm);
  box-shadow:var(--elevation-overlay);
  font-family:var(--font-sans);font-size:var(--text-xs);font-weight:500;
  padding:6px 10px;white-space:nowrap;max-width:240px;
  opacity:0;transform:translateY(2px) scale(.97);
  transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);
}
.fsw-tip-wrap:hover .fsw-tip,.fsw-tip-wrap:focus-within .fsw-tip{opacity:1;transform:translateY(0) scale(1)}
.fsw-tip--top{bottom:calc(100% + 8px);left:50%;transform-origin:bottom center;translate:-50% 0}
.fsw-tip--bottom{top:calc(100% + 8px);left:50%;transform-origin:top center;translate:-50% 0}
.fsw-tip--right{left:calc(100% + 8px);top:50%;transform-origin:left center;translate:0 -50%}
.fsw-tip--left{right:calc(100% + 8px);top:50%;transform-origin:right center;translate:0 -50%}
.fsw-tip kbd{font-family:var(--font-mono);font-size:.85em;color:var(--text-muted);margin-left:6px}

.fsw-check{display:inline-flex;align-items:flex-start;gap:10px;cursor:pointer;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-body);user-select:none;line-height:1.35}
.fsw-check input{position:absolute;opacity:0;width:0;height:0}
.fsw-check__box{
  width:19px;height:19px;flex-shrink:0;margin-top:1px;
  background:var(--surface-inset);border:1.5px solid var(--border-strong);
  border-radius:var(--radius-xs);display:grid;place-items:center;
  transition:background var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out);
}
.fsw-check__box svg{width:13px;height:13px;color:var(--on-primary);opacity:0;transform:scale(.6);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-spring)}
.fsw-check input:checked + .fsw-check__box{background:var(--primary);border-color:var(--primary)}
.fsw-check input:checked + .fsw-check__box svg{opacity:1;transform:scale(1)}
.fsw-check input:focus-visible + .fsw-check__box{box-shadow:var(--ring)}
.fsw-check--disabled{opacity:.45;cursor:not-allowed}

.fsw-field{display:flex;flex-direction:column;gap:7px;font-family:var(--font-sans)}
.fsw-field__label{font-size:var(--text-sm);font-weight:600;color:var(--text-body)}
.fsw-field__req{color:var(--danger);margin-left:3px}
.fsw-field__hint{font-size:var(--text-xs);color:var(--text-muted)}
.fsw-field__err{font-size:var(--text-xs);color:var(--danger);display:flex;align-items:center;gap:5px}
.fsw-input{
  display:flex;align-items:center;gap:9px;
  background:var(--surface-inset);border:1px solid var(--border-default);
  border-radius:var(--radius-md);height:var(--control-md);padding:0 13px;
  box-shadow:var(--edge-ring);
  transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),background var(--dur-fast) var(--ease-out);
}
.fsw-input:hover{border-color:var(--border-strong)}
.fsw-input:focus-within{border-color:var(--primary);box-shadow:var(--ring)}
.fsw-input--err{border-color:var(--danger)}
.fsw-input--err:focus-within{box-shadow:0 0 0 3px var(--danger-soft)}
.fsw-input--lg{height:var(--control-lg)}
.fsw-input--sm{height:var(--control-sm);border-radius:var(--radius-sm)}
.fsw-input__el{flex:1;min-width:0;border:0;outline:0;background:transparent;
  font-family:inherit;font-size:var(--text-sm);color:var(--text-strong);letter-spacing:-0.005em}
.fsw-input__el::placeholder{color:var(--text-faint)}
.fsw-input__icon{display:inline-flex;color:var(--text-muted);flex-shrink:0}
.fsw-input__icon svg{width:18px;height:18px}
.fsw-input--disabled{opacity:.5;pointer-events:none}
.fsw-input__affix{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);flex-shrink:0}

.fsw-switch{display:inline-flex;align-items:center;gap:11px;cursor:pointer;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--text-body);user-select:none}
.fsw-switch input{position:absolute;opacity:0;width:0;height:0}
.fsw-switch__track{
  --_w:42px;--_h:24px;width:var(--_w);height:var(--_h);flex-shrink:0;
  background:var(--surface-overlay);border:1px solid var(--border-strong);
  border-radius:var(--radius-pill);position:relative;
  transition:background var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out);
}
.fsw-switch__thumb{
  position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;
  background:var(--ink-200);box-shadow:var(--shadow-sm);
  transition:transform var(--dur-base) var(--ease-spring),background var(--dur-base) var(--ease-out);
}
.fsw-switch input:checked + .fsw-switch__track{background:var(--accent);border-color:transparent}
.fsw-switch input:checked + .fsw-switch__track .fsw-switch__thumb{transform:translateX(18px);background:var(--on-accent)}
.fsw-switch input:focus-visible + .fsw-switch__track{box-shadow:var(--ring)}
.fsw-switch--disabled{opacity:.45;cursor:not-allowed}

.fsw-ta{
  width:100%;box-sizing:border-box;background:var(--surface-inset);
  border:1px solid var(--border-default);border-radius:var(--radius-md);
  padding:11px 13px;font-family:var(--font-sans);font-size:var(--text-sm);
  color:var(--text-strong);line-height:var(--leading-normal);resize:vertical;min-height:96px;
  box-shadow:var(--edge-ring);
  transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-base) var(--ease-out);
}
.fsw-ta::placeholder{color:var(--text-faint)}
.fsw-ta:hover{border-color:var(--border-strong)}
.fsw-ta:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring)}
.fsw-ta--err{border-color:var(--danger)}

.fsw-avatar{
  --_sz:40px;width:var(--_sz);height:var(--_sz);flex-shrink:0;position:relative;
  border-radius:var(--radius-pill);display:inline-grid;place-items:center;
  font-family:var(--font-display);font-weight:600;color:var(--white);
  background:linear-gradient(150deg,var(--blue-500),var(--blue-700));
  box-shadow:var(--edge-ring);overflow:hidden;user-select:none;
}
.fsw-avatar--square{border-radius:var(--radius-md)}
.fsw-avatar img{width:100%;height:100%;object-fit:cover}
.fsw-avatar__txt{font-size:calc(var(--_sz) * .38);letter-spacing:-0.02em}
.fsw-avatar__status{
  position:absolute;right:-1px;bottom:-1px;width:30%;height:30%;
  border-radius:50%;border:2px solid var(--surface-card);
}
.fsw-avatar__status--online{background:var(--accent)}
.fsw-avatar__status--away{background:var(--warning)}
.fsw-avatar__status--busy{background:var(--danger)}
.fsw-avatar__status--offline{background:var(--ink-400)}

.fsw-card{
  background:var(--surface-card);border:1px solid var(--border-default);
  border-radius:var(--radius-lg);box-shadow:var(--elevation-card);
  color:var(--text-body);position:relative;overflow:hidden;
  transition:border-color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out);
}
.fsw-card--raised{box-shadow:var(--elevation-raised)}
.fsw-card--flat{box-shadow:var(--edge-ring)}
.fsw-card--interactive{cursor:pointer}
.fsw-card--interactive:hover{border-color:var(--border-strong);box-shadow:var(--elevation-raised);transform:translateY(-2px)}
.fsw-card--accent::before{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:linear-gradient(90deg,var(--primary),var(--accent));opacity:.9}
.fsw-card__pad{padding:var(--space-5)}
.fsw-card__pad--sm{padding:var(--space-4)}
.fsw-card__pad--lg{padding:var(--space-6)}
.fsw-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:var(--space-5) var(--space-5) 0}
.fsw-card__title{font-family:var(--font-display);font-weight:600;font-size:var(--text-h4);color:var(--text-strong);letter-spacing:var(--tracking-tight);margin:0}
.fsw-card__sub{font-size:var(--text-sm);color:var(--text-muted);margin:4px 0 0}
.fsw-card__footer{padding:0 var(--space-5) var(--space-5);display:flex;align-items:center;gap:10px}
.fsw-card__divider{height:1px;background:var(--border-subtle);margin:var(--space-5) 0}

.fsw-stat{
  background:var(--surface-card);border:1px solid var(--border-default);
  border-radius:var(--radius-lg);box-shadow:var(--elevation-card);
  padding:var(--space-5);display:flex;flex-direction:column;gap:12px;position:relative;overflow:hidden;
}
.fsw-stat__top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.fsw-stat__label{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-muted)}
.fsw-stat__icon{display:inline-flex;color:var(--text-faint)}
.fsw-stat__icon svg{width:18px;height:18px}
.fsw-stat__value{font-family:var(--font-display);font-weight:700;font-size:var(--text-h2);line-height:1;color:var(--text-strong);letter-spacing:var(--tracking-tight)}
.fsw-stat__value small{font-size:.5em;font-weight:600;color:var(--text-muted);margin-left:4px}
.fsw-stat__foot{display:flex;align-items:center;gap:8px}
.fsw-stat__delta{display:inline-flex;align-items:center;gap:3px;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600}
.fsw-stat__delta svg{width:13px;height:13px}
.fsw-stat__delta--up{color:var(--success)}
.fsw-stat__delta--down{color:var(--danger)}
.fsw-stat__delta--flat{color:var(--text-muted)}
.fsw-stat__note{font-size:var(--text-xs);color:var(--text-faint)}

.fsw-tabs{display:inline-flex;align-items:center;gap:2px;position:relative}
.fsw-tabs--line{gap:0;border-bottom:1px solid var(--border-default);width:100%}
.fsw-tabs--pill{background:var(--surface-inset);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:4px}
.fsw-tab{
  appearance:none;border:0;background:transparent;cursor:pointer;
  font-family:var(--font-sans);font-size:var(--text-sm);font-weight:600;
  color:var(--text-muted);padding:9px 14px;position:relative;white-space:nowrap;
  display:inline-flex;align-items:center;gap:7px;border-radius:var(--radius-sm);
  transition:color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out);
}
.fsw-tab svg{width:16px;height:16px}
.fsw-tab:hover{color:var(--text-body)}
.fsw-tab:focus-visible{outline:none;box-shadow:var(--ring)}
.fsw-tabs--pill .fsw-tab[aria-selected="true"]{color:var(--text-strong);background:var(--surface-raised);box-shadow:var(--edge-top)}
.fsw-tabs--line .fsw-tab{padding:11px 4px;margin:0 14px -1px 0}
.fsw-tabs--line .fsw-tab[aria-selected="true"]{color:var(--text-strong)}
.fsw-tabs--line .fsw-tab[aria-selected="true"]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--primary);border-radius:2px}
.fsw-tab__count{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-faint);background:var(--surface-overlay);border-radius:var(--radius-pill);padding:1px 6px}