
/* AI StockScanner shared application primitives (v4.2.6)
   Opt-in classes only. This file intentionally does not restyle legacy page
   markup unless an explicit app-* class is present. */
:root{
  --app-bg:#0f172a;--app-surface:#111c31;--app-surface-2:#16243d;
  --app-border:#2b405f;--app-text:#f7f9fc;--app-muted:#91add2;
  --app-primary:#2f6df6;--app-primary-hover:#235bd1;--app-cyan:#43dff8;
  --app-success:#32e18d;--app-warning:#ffd45a;--app-danger:#ff6673;
  --app-radius-sm:6px;--app-radius-md:10px;--app-radius-lg:14px;
  --app-space-1:4px;--app-space-2:8px;--app-space-3:12px;
  --app-space-4:16px;--app-space-5:24px;--app-space-6:32px;
}
.app-shell{width:100%;max-width:none;margin:0 auto}
.app-main{width:100%;max-width:none;padding:24px;min-width:0}
.app-message-stack{display:grid;gap:8px;margin:0 0 16px}
.app-message{padding:11px 14px;border:1px solid var(--app-border);border-radius:var(--app-radius-sm);background:var(--app-surface);color:var(--app-text)}
.app-message--success{border-color:var(--app-success);color:var(--app-success)}
.app-message--error{border-color:var(--app-danger);color:var(--app-danger)}
.app-message--warning{border-color:var(--app-warning);color:var(--app-warning)}
.app-grid{display:grid;gap:var(--app-space-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));min-width:0}
.app-card{background:var(--app-surface);border:1px solid var(--app-border);border-radius:var(--app-radius-md);padding:var(--app-space-4);min-width:0}
.app-toolbar{display:flex;align-items:center;gap:var(--app-space-3);flex-wrap:wrap;min-width:0}
.app-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:8px 14px;border:1px solid transparent;border-radius:var(--app-radius-sm);background:var(--app-primary);color:#fff;text-decoration:none;cursor:pointer;font:inherit;line-height:1.1}
.app-btn:hover{background:var(--app-primary-hover)}
.app-btn:disabled,.app-btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed}
.app-btn--secondary{background:#475569}.app-btn--danger{background:#b91c1c}.app-btn--ghost{background:transparent;border-color:var(--app-border);color:var(--app-text)}
.app-field{display:grid;gap:6px;min-width:0}.app-field>label{margin:0;color:var(--app-muted);font-size:.82rem}
.app-input,.app-select,.app-textarea{width:100%;min-width:0;padding:9px 11px;background:#020617;border:1px solid var(--app-border);border-radius:var(--app-radius-sm);color:var(--app-text);font:inherit}
.app-table-wrap{width:100%;overflow:auto;overscroll-behavior:contain;border:1px solid var(--app-border);border-radius:var(--app-radius-md)}
.app-table{width:100%;border-collapse:collapse;margin:0}.app-table th,.app-table td{padding:10px 12px;border-bottom:1px solid var(--app-border);text-align:left;vertical-align:middle}.app-table th{color:var(--app-muted);font-weight:600}.app-table tr:last-child td{border-bottom:0}
.app-badge{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;background:#22314d;color:var(--app-text);font-size:.78rem;font-weight:700}.app-badge--success{background:#073b2b;color:var(--app-success)}.app-badge--danger{background:#45151b;color:var(--app-danger)}.app-badge--warning{background:#46380c;color:var(--app-warning)}
.app-loading{position:relative;pointer-events:none;opacity:.68}.app-loading::after{content:"";width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:app-spin .7s linear infinite}
@keyframes app-spin{to{transform:rotate(360deg)}}
@media(max-width:700px){.app-main{padding:16px 12px}.app-toolbar>*{max-width:100%}}
