/* ============================================================
   Finnhub Stock Widget v2.0 — Stylesheet
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;600;700&display=swap');

/* ── Dark Theme ── */
.fsw-theme-dark {
    --fsw-bg:        #0a0f1e;
    --fsw-bg2:       #111827;
    --fsw-bg3:       #1f2937;
    --fsw-border:    rgba(55,65,81,0.8);
    --fsw-text:      #f1f5f9;
    --fsw-muted:     #6b7280;
    --fsw-dim:       #374151;
    --fsw-accent:    #38bdf8;
    --fsw-pos:       #22c55e;
    --fsw-neg:       #ef4444;
    --fsw-neutral:   #f59e0b;
    --fsw-shadow:    0 8px 40px rgba(0,0,0,0.7);
    --fsw-radius:    14px;
    --fsw-radius-sm: 8px;
    --fsw-mono:      'JetBrains Mono', monospace;
    --fsw-sans:      'Space Grotesk', sans-serif;
}

/* ── Light Theme ── */
.fsw-theme-light {
    --fsw-bg:        #f8fafc;
    --fsw-bg2:       #ffffff;
    --fsw-bg3:       #f1f5f9;
    --fsw-border:    #e2e8f0;
    --fsw-text:      #0f172a;
    --fsw-muted:     #64748b;
    --fsw-dim:       #94a3b8;
    --fsw-accent:    #0284c7;
    --fsw-pos:       #16a34a;
    --fsw-neg:       #dc2626;
    --fsw-neutral:   #d97706;
    --fsw-shadow:    0 4px 24px rgba(0,0,0,0.08);
    --fsw-radius:    14px;
    --fsw-radius-sm: 8px;
    --fsw-mono:      'JetBrains Mono', monospace;
    --fsw-sans:      'Space Grotesk', sans-serif;
}

/* ── Basis ── */
.fsw-widget {
    font-family:   var(--fsw-sans);
    background:    var(--fsw-bg);
    border:        1px solid var(--fsw-border);
    border-radius: var(--fsw-radius);
    box-shadow:    var(--fsw-shadow);
    color:         var(--fsw-text);
    overflow:      hidden;
    margin:        1.5rem 0;
    line-height:   1.5;
}
.fsw-widget * { box-sizing: border-box; }
.fsw-widget a { color: var(--fsw-accent); text-decoration: none; }
.fsw-widget a:hover { text-decoration: underline; }

.fsw-pos     { color: var(--fsw-pos)     !important; }
.fsw-neg     { color: var(--fsw-neg)     !important; }
.fsw-neutral { color: var(--fsw-neutral) !important; }
.fsw-muted   { color: var(--fsw-muted)   !important; }
.fsw-mono    { font-family: var(--fsw-mono) !important; }
.fsw-right   { text-align: right; }

/* ── Typografie ── */
.fsw-symbol {
    font-family:    var(--fsw-mono);
    font-weight:    700;
    font-size:      0.95rem;
    color:          var(--fsw-accent);
    letter-spacing: 0.06em;
}
.fsw-symbol-sm { font-size: 0.78rem; }
.fsw-name      { font-size: 0.82rem; color: var(--fsw-muted); }

.fsw-price {
    font-family:    var(--fsw-mono);
    font-size:      1.9rem;
    font-weight:    700;
    letter-spacing: -0.02em;
}
.fsw-price-lg {
    font-family:    var(--fsw-mono);
    font-size:      2.3rem;
    font-weight:    700;
    letter-spacing: -0.03em;
}
.fsw-change {
    font-family: var(--fsw-mono);
    font-size:   0.9rem;
    font-weight: 600;
    margin-top:  0.2rem;
}

/* ── Badges ── */
.fsw-badge {
    font-size:     0.68rem;
    background:    var(--fsw-bg3);
    border:        1px solid var(--fsw-border);
    border-radius: 20px;
    padding:       2px 9px;
    color:         var(--fsw-muted);
}
.fsw-badge-link { color: var(--fsw-accent) !important; }
.fsw-badge-link:hover { background: rgba(56,189,248,0.1); text-decoration: none; }
.fsw-exch-badge {
    font-family:    var(--fsw-mono);
    font-size:      0.65rem;
    font-weight:    700;
    background:     rgba(56,189,248,0.1);
    border:         1px solid rgba(56,189,248,0.3);
    color:          var(--fsw-accent);
    border-radius:  5px;
    padding:        2px 7px;
}
.fsw-period-badge {
    font-size:     0.7rem;
    background:    var(--fsw-bg3);
    border:        1px solid var(--fsw-border);
    border-radius: 20px;
    padding:       2px 9px;
    color:         var(--fsw-muted);
}

/* ── Logo ── */
.fsw-logo {
    width:         40px; height: 40px;
    border-radius: 8px;
    object-fit:    contain;
    background:    #fff;
    padding:       2px;
    border:        1px solid var(--fsw-border);
    flex-shrink:   0;
}
.fsw-logo-lg { width: 52px; height: 52px; border-radius: 10px; }

/* ── Stat-Kacheln ── */
.fsw-stat {
    display:        flex;
    flex-direction: column;
    background:     var(--fsw-bg2);
    border:         1px solid var(--fsw-border);
    border-radius:  var(--fsw-radius-sm);
    padding:        0.55rem 0.75rem;
    gap:            0.1rem;
}
.fsw-stat-l {
    font-size:      0.67rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color:          var(--fsw-dim);
}
.fsw-stat-v {
    font-family: var(--fsw-mono);
    font-size:   0.88rem;
    font-weight: 600;
    color:       var(--fsw-text);
}

/* ── Section Header ── */
.fsw-section-header {
    display:       flex;
    align-items:   center;
    gap:           0.6rem;
    padding:       1rem 1.3rem 0.8rem;
    border-bottom: 1px solid var(--fsw-border);
    background:    var(--fsw-bg2);
}
.fsw-section-title { font-weight: 600; font-size: .95rem; }
.fsw-section-title-div {
    font-size:      0.72rem;
    font-weight:    700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color:          var(--fsw-dim);
    padding:        0.6rem 1.3rem 0.3rem;
    border-top:     1px solid var(--fsw-border);
}

/* ── Footer & Error ── */
.fsw-footer {
    font-size:  0.68rem;
    color:      var(--fsw-dim);
    padding:    0.55rem 1.2rem;
    border-top: 1px solid var(--fsw-border);
    background: var(--fsw-bg2);
    text-align: right;
}
.fsw-error {
    background:    rgba(239,68,68,0.07);
    border:        1px solid rgba(239,68,68,0.3);
    border-radius: var(--fsw-radius-sm);
    color:         #ef4444;
    padding:       0.7rem 1rem;
    font-size:     0.85rem;
    margin:        1rem 0;
}

/* ============================================================
   QUOTE / HEADER
   ============================================================ */
.fsw-header {
    padding:       1.1rem 1.3rem 0.8rem;
    border-bottom: 1px solid var(--fsw-border);
    background:    linear-gradient(135deg, var(--fsw-bg2), var(--fsw-bg));
}
.fsw-identity { display:flex; align-items:center; gap:.8rem; flex-wrap:wrap; }
.fsw-identity-row { display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; margin-bottom:.15rem; }
.fsw-price-row { display:flex; align-items:baseline; gap:1rem; padding:.9rem 1.3rem .5rem; flex-wrap:wrap; }
.fsw-stats { display:grid; grid-template-columns:repeat(2,1fr); gap:.5rem; padding:.4rem 1.3rem 1.1rem; }
@media(min-width:480px){ .fsw-stats{grid-template-columns:repeat(5,1fr);} }

/* ============================================================
   CHART
   ============================================================ */
.fsw-chart-wrap { padding:0; }
.fsw-chart-header {
    display:         flex;
    justify-content: space-between;
    align-items:     center;
    padding:         .9rem 1.3rem .5rem;
    font-weight:     600;
    font-size:       .9rem;
    border-bottom:   1px solid var(--fsw-border);
}

/* ============================================================
   TICKER
   ============================================================ */
.fsw-ticker {
    display:      flex;
    align-items:  center;
    overflow:     hidden;
    height:       44px;
    padding:      0 !important;
    border-radius: var(--fsw-radius-sm) !important;
}
.fsw-ticker-badge {
    flex-shrink:    0;
    background:     var(--fsw-accent);
    color:          #0a0f1e;
    font-family:    var(--fsw-mono);
    font-size:      0.68rem;
    font-weight:    700;
    letter-spacing: 0.15em;
    padding:        0 1rem;
    height:         100%;
    display:        flex;
    align-items:    center;
    position:       relative;
}
.fsw-ticker-badge::after {
    content: ''; position:absolute; right:-10px; top:0; bottom:0;
    width:10px; background:linear-gradient(90deg,var(--fsw-accent),transparent);
}
.fsw-ticker-track {
    display:white-space:nowrap;
    display:flex;
    white-space:  nowrap;
    animation:    fsw-scroll linear infinite;
    will-change:  transform;
    padding-left: 1.5rem;
}
@keyframes fsw-scroll { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }
.fsw-ticker-item { display:inline-flex; align-items:center; gap:.4rem; padding:0 1.2rem; border-right:1px solid var(--fsw-border); font-size:.82rem; }
.fsw-ticker-sym   { font-family:var(--fsw-mono); font-weight:700; color:var(--fsw-accent); font-size:.78rem; }
.fsw-ticker-price { font-family:var(--fsw-mono); font-weight:600; color:var(--fsw-text); }
.fsw-ticker-chg   { font-family:var(--fsw-mono); font-size:.72rem; font-weight:600; }

/* ============================================================
   NEWS
   ============================================================ */
.fsw-news-list { list-style:none; margin:0; padding:.8rem 1.2rem; display:flex; flex-direction:column; gap:.5rem; }
.fsw-news-item { display:flex; gap:.8rem; align-items:flex-start; background:var(--fsw-bg2); border:1px solid var(--fsw-border); border-radius:var(--fsw-radius-sm); padding:.65rem; transition:background .15s; }
.fsw-news-item:hover { background:var(--fsw-bg3); }
.fsw-news-img-link { flex-shrink:0; }
.fsw-news-img { width:72px; height:52px; object-fit:cover; border-radius:6px; display:block; }
.fsw-news-body { flex:1; min-width:0; }
.fsw-news-headline { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; font-size:.875rem; font-weight:500; color:var(--fsw-text) !important; line-height:1.4; margin-bottom:.2rem; transition:color .15s; }
.fsw-news-headline:hover { color:var(--fsw-accent) !important; text-decoration:none; }
.fsw-news-summary { font-size:.78rem; color:var(--fsw-muted); margin:0 0 .25rem; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.fsw-news-meta { display:flex; gap:.5rem; font-size:.7rem; color:var(--fsw-dim); flex-wrap:wrap; align-items:center; }
.fsw-news-source { font-weight:600; color:var(--fsw-accent); }
.fsw-sent { border-radius:4px; padding:1px 5px; font-size:.65rem; font-weight:600; }
.fsw-news-compact .fsw-news-img { width:56px; height:40px; }
.fsw-news-compact .fsw-news-summary { display:none; }
.fsw-news-compact .fsw-news-headline { -webkit-line-clamp:1; }

/* ============================================================
   ANALYST
   ============================================================ */
.fsw-analyst-summary {
    display:         flex;
    justify-content: center;
    gap:             1.5rem;
    padding:         1rem 1.3rem .5rem;
}
.fsw-analyst-pill {
    display:        flex;
    flex-direction: column;
    align-items:    center;
    gap:            .2rem;
    background:     var(--fsw-bg2);
    border:         1px solid var(--fsw-border);
    border-radius:  var(--fsw-radius-sm);
    padding:        .7rem 1.2rem;
    min-width:      80px;
}
.fsw-analyst-count { font-family:var(--fsw-mono); font-size:1.6rem; font-weight:700; }
.fsw-analyst-label { font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color:var(--fsw-muted); }
.fsw-analyst-chart-wrap { padding:.4rem 1rem .2rem; }
.fsw-analyst-pills-row { display:flex; gap:1rem; padding:.8rem 1.3rem; }

/* ============================================================
   EARNINGS & TABLES
   ============================================================ */
.fsw-table-wrap { overflow-x:auto; }
.fsw-table { width:100%; border-collapse:collapse; font-size:.84rem; }
.fsw-table thead th { font-size:.67rem; text-transform:uppercase; letter-spacing:.08em; color:var(--fsw-dim); padding:.5rem .9rem; background:var(--fsw-bg2); border-bottom:2px solid var(--fsw-border); white-space:nowrap; }
.fsw-table tbody tr { border-bottom:1px solid var(--fsw-border); }
.fsw-table tbody tr:last-child { border-bottom:none; }
.fsw-table tbody tr:hover { background:var(--fsw-bg3); }
.fsw-table td { padding:.55rem .9rem; color:var(--fsw-text); white-space:nowrap; }
.fsw-row-main { background:rgba(56,189,248,0.04) !important; }

/* ============================================================
   FINANCIALS
   ============================================================ */
.fsw-fund-section-title {
    font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.1em;
    color:var(--fsw-dim); padding:.6rem 1.3rem .3rem; border-top:1px solid var(--fsw-border);
}
.fsw-fund-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:.5rem; padding:.4rem 1.3rem .8rem; }
@media(min-width:560px){ .fsw-fund-grid{grid-template-columns:repeat(3,1fr);} }
@media(min-width:800px){ .fsw-fund-grid{grid-template-columns:repeat(5,1fr);} }

/* ============================================================
   FOREX
   ============================================================ */
.fsw-forex-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:.5rem; padding:.8rem 1.2rem 1rem; }
@media(min-width:480px){ .fsw-forex-grid{grid-template-columns:repeat(3,1fr);} }
@media(min-width:700px){ .fsw-forex-grid{grid-template-columns:repeat(5,1fr);} }
.fsw-forex-card { background:var(--fsw-bg2); border:1px solid var(--fsw-border); border-radius:var(--fsw-radius-sm); padding:.7rem .9rem; text-align:center; }
.fsw-forex-pair { font-family:var(--fsw-mono); font-size:.72rem; font-weight:700; color:var(--fsw-accent); letter-spacing:.06em; margin-bottom:.2rem; }
.fsw-forex-rate { font-family:var(--fsw-mono); font-size:1.15rem; font-weight:700; color:var(--fsw-text); }
.fsw-forex-label { font-size:.65rem; color:var(--fsw-muted); margin-top:.15rem; }

/* ============================================================
   SENTIMENT
   ============================================================ */
.fsw-sentiment-body { padding:.2rem 0; }
.fsw-sentiment-gauge { text-align:center; padding:1rem 1.3rem .4rem; }
.fsw-sentiment-score { font-family:var(--fsw-mono); font-size:2.8rem; font-weight:700; line-height:1; }
.fsw-sentiment-label { font-size:.85rem; font-weight:600; margin:.2rem 0 .8rem; }
.fsw-sentiment-bar-wrap { height:8px; background:var(--fsw-bg3); border-radius:99px; overflow:hidden; max-width:300px; margin:0 auto; }
.fsw-sentiment-bar { height:100%; border-radius:99px; transition:width .5s ease; }

/* ============================================================
   DASHBOARD
   ============================================================ */
.fsw-dashboard { padding:0; }
.fsw-dash-header {
    display:flex; justify-content:space-between; align-items:center;
    flex-wrap:wrap; gap:1rem; padding:1.4rem 1.5rem 1rem;
    border-bottom:1px solid var(--fsw-border);
    background:linear-gradient(135deg,var(--fsw-bg2) 0%,var(--fsw-bg) 100%);
    position:relative;
}
.fsw-dash-header::before {
    content:''; position:absolute; left:0; top:0; bottom:0;
    width:3px; background:linear-gradient(180deg,var(--fsw-accent),transparent);
}
.fsw-dash-identity { display:flex; align-items:center; gap:1rem; }
.fsw-dash-company  { font-size:1.15rem; font-weight:600; margin:0 0 .4rem; }
.fsw-dash-meta     { display:flex; flex-wrap:wrap; gap:.35rem; align-items:center; }
.fsw-dash-price-block { text-align:right; flex-shrink:0; }
.fsw-section-title {
    font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.1em;
    color:var(--fsw-dim); padding:.6rem 1.3rem .4rem; border-top:1px solid var(--fsw-border);
}
.fsw-dash-stats { display:grid; grid-template-columns:repeat(2,1fr); gap:.5rem; padding:.9rem 1.3rem; border-bottom:1px solid var(--fsw-border); }
@media(min-width:520px){ .fsw-dash-stats{grid-template-columns:repeat(3,1fr);} }
@media(min-width:800px){ .fsw-dash-stats{grid-template-columns:repeat(5,1fr);} }
.fsw-dash-chart { border-bottom:1px solid var(--fsw-border); }

/* ============================================================
   Responsive
   ============================================================ */
@media(max-width:480px){
    .fsw-price,.fsw-price-lg { font-size:1.5rem; }
    .fsw-dash-header         { flex-direction:column; align-items:flex-start; }
    .fsw-dash-price-block    { text-align:left; }
    .fsw-ticker-item         { padding:0 .8rem; }
    .fsw-analyst-summary     { gap:.8rem; }
    .fsw-analyst-pill        { min-width:60px; padding:.5rem .8rem; }
}
