*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;background:#f5f6f8;color:#1a1a1a;font-size:14px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
.page{max-width:1300px;margin:0 auto;padding:20px 16px;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
.page-title{font-size:18px;font-weight:600;color:#1a1a1a;margin-bottom:4px}
.page-subtitle{font-size:12px;color:#888;margin-bottom:16px}
/* Tabs */
.tabs{display:flex;border-bottom:2px solid #e8e8e8;margin-bottom:16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.tab-btn{display:inline-block;text-decoration:none;padding:10px 20px;font-size:14px;font-weight:500;color:#888;background:none;border:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:color .15s,border-color .15s}
.tab-btn:hover{color:#1677ff}
.tab-btn.active{color:#1677ff;border-bottom-color:#1677ff}
.tab-panel{display:none}
.tab-panel.active{display:block}
/* Toolbar */
.toolbar{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:14px 16px;display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.filter-group{display:flex;align-items:center;gap:6px;flex-shrink:0}
.filter-group label{font-size:12px;color:#888;white-space:nowrap}
.custom-select{position:relative}
.custom-select select{appearance:none;-webkit-appearance:none;background:#f5f6f8;border:1px solid #e8e8e8;border-radius:6px;padding:6px 28px 6px 10px;font-size:13px;color:#1a1a1a;cursor:pointer;outline:none;min-width:110px}
.custom-select select:focus{border-color:#1677ff}
.custom-select::after{content:"";pointer-events:none;position:absolute;right:9px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #aaa}
.btn-primary{background:#1677ff;color:#fff;border:none;border-radius:6px;padding:7px 16px;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;flex-shrink:0}
.btn-primary:active{background:#0958d9}
.btn-outline{background:#fff;color:#1677ff;border:1px solid #1677ff;border-radius:6px;padding:7px 14px;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}
.btn-outline:hover{background:#e6f1ff}
.toolbar-spacer{flex:1;min-width:0}
.search-wrap{position:relative;width:100%}
.search-wrap input{width:100%;border:1px solid #e8e8e8;border-radius:6px;padding:6px 10px 6px 30px;font-size:13px;background:#f5f6f8;color:#1a1a1a;outline:none}
.search-wrap input:focus{border-color:#1677ff;background:#fff}
.search-wrap svg{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:#bbb;pointer-events:none}
.result-count{font-size:12px;color:#8c8c8c;margin-bottom:8px;padding:0 2px}
/* Table */
.table-wrap{background:#fff;border:1px solid #e8e8e8;border-radius:10px;overflow:hidden;overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse}
thead th{background:#fafafa;font-size:11px;font-weight:500;color:#999;padding:10px 14px;text-align:left;border-bottom:1px solid #f0f0f0;white-space:nowrap;cursor:pointer;user-select:none;text-transform:uppercase;letter-spacing:.03em}
thead th:hover{color:#1677ff}
thead th.sort-asc::after{content:" ↑";color:#1677ff}
thead th.sort-desc::after{content:" ↓";color:#1677ff}
tbody td{padding:12px 14px;border-bottom:1px solid #f5f5f5;vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:#fafbfc}
.date-cell{font-size:12px;color:#888;white-space:nowrap;width:90px}
.title-cell{font-size:13px;color:#1a1a1a;line-height:1.5}
.source-col{width:80px;font-size:12px;color:#666}
.rec-col{width:100px}
.price-col{width:105px;text-align:right;font-size:13px;font-weight:500;font-variant-numeric:tabular-nums}
.dl-col{width:50px;text-align:center}
.ticker-col{width:110px}
.ticker-cell{display:flex;align-items:center;gap:7px}
.ticker-label{font-size:13px;font-weight:600;color:#1a1a1a}
.tag-macro{font-size:11px;color:#92400e;background:#fef3c7;padding:2px 7px;border-radius:4px;font-weight:500}
.tag-strategy{font-size:11px;color:#5b21b6;background:#ede9fe;padding:2px 7px;border-radius:4px;font-weight:500}
.rec{font-size:12px;font-weight:600;letter-spacing:.02em}
.rec-buy{color:#16a34a}
.rec-positive{color:#0369a1}
.rec-neutral{color:#9ca3af}
.rec-other{color:#92400e}
.price-empty{color:#d1d5db!important}
.btn-dl{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;border:1px solid #e5e7eb;background:#fff;color:#9ca3af;text-decoration:none;transition:border-color .15s,color .15s,background .15s}
.btn-dl:hover{border-color:#1677ff;color:#1677ff;background:#e6f1ff}
.state-row td{text-align:center;padding:48px 0;color:#bbb;font-size:14px}
.badge-new{display:inline-block;font-size:10px;font-weight:600;background:#fee2e2;color:#dc2626;padding:1px 5px;border-radius:3px;margin-left:6px;vertical-align:middle}
/* Ticker search */
.ticker-search-box{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:16px;display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.ticker-input-wrap{position:relative;flex:1;min-width:160px;max-width:280px}
.ticker-input-wrap input{width:100%;border:1px solid #e8e8e8;border-radius:6px;padding:8px 10px 8px 36px;font-size:15px;font-weight:700;text-transform:uppercase;background:#f5f6f8;color:#1677ff;outline:none;letter-spacing:.05em}
.ticker-input-wrap input:focus{border-color:#1677ff;background:#fff}
.ticker-input-wrap input::placeholder{font-weight:400;color:#bbb;text-transform:none;letter-spacing:0}
.ticker-input-wrap svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:#bbb;pointer-events:none}
.ticker-hint{font-size:12px;color:#aaa}
.history-wrap{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.history-label{font-size:11px;color:#bbb;white-space:nowrap}
.history-chip{font-size:12px;font-weight:600;color:#1677ff;background:#e6f1ff;border:1px solid #c7deff;border-radius:4px;padding:2px 8px;cursor:pointer}
.history-chip:hover{background:#bfdbfe}
.history-chip .chip-x{margin-left:4px;color:#93c5fd;font-size:10px;cursor:pointer}
.history-chip .chip-x:hover{color:#dc2626}
.stats-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:14px}
.stat-card{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:12px 14px}
.stat-label{font-size:11px;color:#999;margin-bottom:4px;text-transform:uppercase;letter-spacing:.03em}
.stat-value{font-size:22px;font-weight:700;color:#1a1a1a;font-variant-numeric:tabular-nums}
.stat-sub{font-size:11px;color:#aaa;margin-top:2px}
.consensus-bar{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:14px 18px;margin-bottom:14px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.consensus-pills{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.cpill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:20px}
.cpill-buy{background:#dcfce7;color:#15803d}
.cpill-pos{background:#dbeafe;color:#1d4ed8}
.cpill-neu{background:#f3f4f6;color:#6b7280}
.cpill-oth{background:#fef3c7;color:#92400e}
.ticker-filter-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.ticker-filter-row select{appearance:none;-webkit-appearance:none;background:#f5f6f8;border:1px solid #e8e8e8;border-radius:6px;padding:5px 24px 5px 10px;font-size:12px;color:#555;cursor:pointer;outline:none}
/* Signal tab */
.sig-btn{background:#f5f6f8;border:1px solid #e8e8e8;border-radius:20px;padding:6px 16px;font-size:13px;font-weight:500;color:#666;cursor:pointer;transition:all .15s;white-space:nowrap}
.sig-btn:hover{border-color:#1677ff;color:#1677ff}
.sig-btn.active{background:#1677ff;border-color:#1677ff;color:#fff}
.pb-toolbar{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:14px 16px;display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.pb-label{font-size:12px;color:#888;white-space:nowrap}
.pb-input{border:1px solid #e8e8e8;border-radius:6px;padding:6px 10px;font-size:13px;background:#f5f6f8;color:#1a1a1a;outline:none;width:90px}
.pb-date{border:1px solid #e8e8e8;border-radius:6px;padding:6px 10px;font-size:13px;background:#f5f6f8;color:#1a1a1a;outline:none}
.pb-count{font-size:12px;color:#aaa;margin-left:auto}
.rating-badge{display:inline-block;font-size:12px;font-weight:700;padding:2px 8px;border-radius:4px;min-width:32px;text-align:center}
.r-aplus{background:#dcfce7;color:#15803d}
.r-a{background:#d1fae5;color:#065f46}
.r-aminus{background:#ecfdf5;color:#047857}
.r-bplus{background:#dbeafe;color:#1e40af}
.r-b{background:#e0f2fe;color:#0369a1}
.r-bminus{background:#f0f9ff;color:#0284c7}
.r-cplus{background:#fef9c3;color:#854d0e}
.r-c{background:#fef3c7;color:#92400e}
.r-cminus{background:#fff7ed;color:#9a3412}
.price-up{color:#16a34a;font-weight:600}
.price-down{color:#dc2626;font-weight:600}
.price-flat{color:#888}
.signal-buy{font-size:11px;font-weight:600;background:#dcfce7;color:#15803d;padding:2px 7px;border-radius:4px}
.signal-wait{font-size:11px;font-weight:600;background:#fef9c3;color:#854d0e;padding:2px 7px;border-radius:4px}
.signal-none{font-size:11px;color:#ccc}
.signal-small-buy{font-size:11px;font-weight:600;background:#dcfce7;color:#15803d;padding:2px 7px;border-radius:4px}
.signal-big-buy{font-size:11px;font-weight:600;background:#bbf7d0;color:#065f46;padding:2px 7px;border-radius:4px}
.signal-small-sell{font-size:11px;font-weight:600;background:#fee2e2;color:#dc2626;padding:2px 7px;border-radius:4px}
.signal-big-sell{font-size:11px;font-weight:600;background:#fecaca;color:#991b1b;padding:2px 7px;border-radius:4px}
.signal-dip-day{font-size:11px;font-weight:600;background:#fee2e2;color:#dc2626;padding:2px 7px;border-radius:4px}
.signal-dip-mid{font-size:11px;font-weight:600;background:#fef3c7;color:#92400e;padding:2px 7px;border-radius:4px}
.signal-dip-sm{font-size:11px;font-weight:600;background:#dbeafe;color:#1d4ed8;padding:2px 7px;border-radius:4px}
.signal-dip-big{font-size:11px;font-weight:600;background:#f3e8ff;color:#7c3aed;padding:2px 7px;border-radius:4px}
/* Events */
.ev-toolbar{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:14px 16px;display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.badge-iss{font-size:11px;font-weight:600;background:#ede9fe;color:#5b21b6;padding:3px 9px;border-radius:20px;white-space:nowrap}
.badge-div-cash{font-size:11px;font-weight:600;background:#dcfce7;color:#15803d;padding:3px 9px;border-radius:20px;white-space:nowrap}
.ev-date{font-size:12px;color:#888;white-space:nowrap}
.ev-ticker{font-size:13px;font-weight:700;color:#1677ff}
.ev-value{font-size:13px;font-weight:600;color:#16a34a;font-variant-numeric:tabular-nums}
.ev-ratio{font-size:12px;color:#555}
/* Calendar */
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.cal-nav-title{font-size:16px;font-weight:600;color:#1a1a1a}
.cal-nav-btn{background:#fff;border:1px solid #e8e8e8;border-radius:6px;padding:6px 12px;font-size:13px;cursor:pointer;color:#555}
.cal-nav-btn:hover{border-color:#1677ff;color:#1677ff}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-header{text-align:center;font-size:11px;font-weight:600;color:#aaa;padding:4px 0;text-transform:uppercase}
.cal-day{min-height:80px;background:#fff;border:1px solid #f0f0f0;border-radius:8px;padding:6px;position:relative}
.cal-day:hover{border-color:#c7deff;background:#fafcff}
.cal-day.today{border-color:#1677ff;background:#f0f7ff}
.cal-day.other-month{background:#fafafa}
.cal-day.other-month .cal-day-num{color:#ccc}
.cal-day-num{font-size:12px;font-weight:500;color:#555;margin-bottom:4px}
.cal-day.today .cal-day-num{color:#1677ff;font-weight:700}
.cal-event{font-size:10px;font-weight:600;padding:2px 5px;border-radius:3px;margin-bottom:2px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-event-iss{background:#dbeafe;color:#1d4ed8}
.cal-event-div{background:#dcfce7;color:#15803d}
.cal-more{font-size:10px;color:#aaa;cursor:pointer;padding:1px 4px}
.cal-more:hover{color:#1677ff}
.cal-popup-overlay{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:1000;display:flex;align-items:center;justify-content:center}
.cal-popup{background:#fff;border-radius:12px;padding:20px;min-width:320px;max-width:480px;max-height:70vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.18)}
.cal-popup-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.cal-popup-title{font-size:15px;font-weight:600;color:#1a1a1a}
.cal-popup-close{background:none;border:none;font-size:20px;cursor:pointer;color:#aaa;line-height:1}
.cal-popup-item{padding:10px 0;border-bottom:1px solid #f5f5f5}
.cal-popup-item:last-child{border-bottom:none}
/* Mobile cards */
.card-list{display:none}
.report-card{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:14px 14px 12px;margin-bottom:10px}
.card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:8px}
.card-ticker{font-size:14px;font-weight:700;color:#1a1a1a}
.card-source-sm{font-size:11px;color:#999}
.card-title{font-size:13px;color:#333;line-height:1.5;margin-bottom:10px}
.card-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}
.card-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.card-date{font-size:11px;color:#aaa}
.card-price{font-size:12px;font-weight:600;color:#1a1a1a;font-variant-numeric:tabular-nums}
.card-dl{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;color:#1677ff;text-decoration:none;padding:5px 10px;border:1px solid #c7deff;border-radius:6px;background:#f0f7ff;white-space:nowrap}
.pb-card{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:14px;margin-bottom:10px}
.pb-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.pb-card-ticker{font-size:18px;font-weight:800;color:#1a1a1a}
.pb-card-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pb-meta-item{font-size:12px}
.pb-meta-label{color:#aaa;font-size:11px}
.pb-meta-value{font-weight:600;margin-top:1px}
/* ══ Nhật ký đầu tư ══ */
.journal-toolbar{background:#fff;border:1px solid #e8e8e8;border-radius:10px;padding:14px 16px;display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
/* Card */
.journal-card{background:#fff;border:1px solid #e8e8e8;border-radius:12px;margin-bottom:10px;overflow:hidden;transition:box-shadow .15s,border-color .15s}
.journal-card:hover{box-shadow:0 2px 14px rgba(22,119,255,.09);border-color:#c7deff}
/* Top row: date + author + badges */
.jnl-top{display:flex;align-items:center;gap:8px;padding:12px 16px 0;flex-wrap:wrap}
.jnl-date{font-size:11px;color:#bbb;white-space:nowrap}
.jnl-author{font-size:12px;font-weight:600;color:#888}
.jnl-spacer{flex:1}
/* Sentiment & market view pill */
.jnl-pill{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;white-space:nowrap}
.jnl-pill-bullish{background:#dcfce7;color:#15803d}
.jnl-pill-bearish{background:#fee2e2;color:#dc2626}
.jnl-pill-neutral{background:#f3f4f6;color:#6b7280}
.jnl-pill-positive{background:#dbeafe;color:#1d4ed8}
/* Tickers row */
.jnl-tickers{display:flex;gap:5px;flex-wrap:wrap;padding:10px 16px 0}
.jnl-ticker{font-size:13px;font-weight:800;color:#1677ff;background:#e6f1ff;border:1px solid #c7deff;border-radius:5px;padding:3px 10px;cursor:pointer;letter-spacing:.03em}
.jnl-ticker:hover{background:#1677ff;color:#fff}
/* Summary */
.jnl-summary{font-size:13px;color:#1a1a1a;line-height:1.7;padding:10px 16px}
/* Info grid: sector | action | importance — 1 clean row */
.jnl-info{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:0 16px 10px}
.jnl-sector{font-size:11px;color:#92400e;background:#fef3c7;border-radius:4px;padding:2px 8px;font-weight:500}
.jnl-action{font-size:11px;font-weight:700;border-radius:4px;padding:2px 10px}
.jnl-action-hold{color:#0369a1;background:#dbeafe}
.jnl-action-buy{color:#15803d;background:#dcfce7}
.jnl-action-sell{color:#dc2626;background:#fee2e2}
.jnl-action-observe{color:#7c3aed;background:#f3e8ff}
.jnl-stars{font-size:12px;color:#f59e0b;letter-spacing:1px}
.jnl-sep{width:1px;height:14px;background:#e8e8e8;flex-shrink:0}
/* Tags row */
.jnl-tags{display:flex;gap:5px;flex-wrap:wrap;padding:0 16px 12px}
.jnl-tag{font-size:11px;color:#6b7280;background:#f5f6f8;border:1px solid #e8e8e8;border-radius:20px;padding:2px 9px}
/* Expand detail */
.jnl-expand-btn{width:100%;text-align:left;padding:8px 16px;font-size:12px;color:#1677ff;background:#f8faff;border:none;border-top:1px solid #f0f0f0;cursor:pointer;display:flex;align-items:center;gap:4px}
.jnl-expand-btn:hover{background:#eef4ff}
.jnl-detail{display:none;border-top:1px solid #f0f0f0}
.jnl-detail.open{display:block}
.jnl-detail-inner{padding:12px 16px;display:flex;flex-direction:column;gap:10px}
.jnl-block{border-radius:6px;padding:10px 12px;font-size:12px;line-height:1.65}
.jnl-block-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.jnl-block-cat{background:#f0fdf4;border-left:3px solid #4ade80;color:#15803d}
.jnl-block-cat .jnl-block-title{color:#15803d}
.jnl-block-risk{background:#fef2f2;border-left:3px solid #fca5a5;color:#dc2626}
.jnl-block-risk .jnl-block-title{color:#dc2626}
.jnl-block-note{background:#fafafa;border-left:3px solid #e8e8e8;color:#444}
.jnl-block-note .jnl-block-title{color:#888}
/* Empty & misc */
.jnl-empty{text-align:center;padding:60px 0;color:#bbb;font-size:14px}
.jnl-filter-chip{font-size:12px;font-weight:600;background:#f5f6f8;border:1px solid #e8e8e8;border-radius:20px;padding:4px 14px;cursor:pointer;color:#555;white-space:nowrap}
.jnl-filter-chip:hover,.jnl-filter-chip.active{background:#1677ff;color:#fff;border-color:#1677ff}
.jnl-stats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.jnl-stat{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:10px 14px;min-width:90px;flex:1}
.jnl-stat-label{font-size:11px;color:#aaa;text-transform:uppercase;letter-spacing:.03em;margin-bottom:2px}
.jnl-stat-value{font-size:18px;font-weight:700;color:#1a1a1a}

/* ══ TABLET 641–1024px ══ */
@media(min-width:641px) and (max-width:1024px){
  .page{padding:16px}
  .source-col,thead th:nth-child(4),tbody td:nth-child(4){display:none}
  .pb-toolbar{flex-wrap:wrap;gap:8px}
  .ev-toolbar{flex-wrap:wrap;gap:8px}
  .stat-row{grid-template-columns:repeat(3,1fr)}
  .stats-bar{grid-template-columns:repeat(3,1fr)}
  .ticker-input-wrap{max-width:220px}
  .cal-day{min-height:70px}
}
/* ══ MOBILE ≤640px ══ */
@media(max-width:640px){
  .page{padding:10px}
  .page-title{font-size:15px}
  .page-subtitle{font-size:11px}
  .tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;border-bottom-width:1.5px}
  .tabs::-webkit-scrollbar{display:none}
  .tab-btn{padding:8px 14px;font-size:13px;flex-shrink:0}
  .toolbar{padding:10px;gap:8px}
  .toolbar .filter-group{width:calc(50% - 4px)}
  .toolbar .filter-group label{display:none}
  .custom-select select{width:100%;min-width:0;font-size:13px}
  .btn-primary,.btn-outline{width:100%;text-align:center;justify-content:center}
  .toolbar-spacer{display:none}
  .search-wrap-outer{width:100%}
  .pb-toolbar{padding:10px;gap:8px;flex-wrap:wrap}
  .pb-label{font-size:11px}
  .pb-input{width:70px;font-size:12px;padding:5px 7px}
  .pb-date{font-size:12px;padding:5px 7px;flex:1;min-width:0}
  .pb-count{width:100%;text-align:right}
  #sig-roe{width:60px}
  #panel-signal > div:first-child{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:4px}
  #panel-signal > div:first-child::-webkit-scrollbar{display:none}
  .sig-btn{flex-shrink:0;font-size:12px;padding:5px 12px}
  .ev-toolbar{padding:10px;gap:8px;flex-wrap:wrap}
  .ev-toolbar .pb-date{flex:1;min-width:120px;font-size:12px}
  .ev-toolbar .search-wrap{width:100%;max-width:100%!important}
  .ev-toolbar .btn-primary,.ev-toolbar .btn-outline{width:auto;flex:1}
  .table-wrap{display:none!important}
  .card-list{display:block!important}
  .ticker-search-box{flex-wrap:wrap;gap:8px;padding:12px}
  .ticker-input-wrap{max-width:100%;width:100%}
  .history-wrap{flex-wrap:wrap}
  .stat-row{grid-template-columns:repeat(2,1fr);gap:8px}
  .stat-num{font-size:18px}
  .stats-bar{grid-template-columns:repeat(2,1fr);gap:8px}
  .consensus-bar{flex-wrap:wrap;padding:12px}
  .consensus-pills{margin-left:0;width:100%}
  .report-card{padding:12px}
  .pb-card{padding:12px}
  .pb-card-ticker{font-size:16px}
  .pb-card-meta{gap:6px}
  .cal-grid{gap:2px}
  .cal-day{min-height:48px;padding:3px}
  .cal-day-num{font-size:10px;margin-bottom:2px}
  .cal-event{font-size:9px;padding:1px 3px}
  .cal-nav-title{font-size:14px}
  .cal-popup{min-width:90vw;max-width:95vw;margin:0 auto}
  .ticker-filter-row{flex-wrap:wrap}
  .ticker-filter-row select{flex:1;min-width:120px}
}
/* ══ SMALL PHONE ≤380px ══ */
@media(max-width:380px){
  .page{padding:8px}
  .tab-btn{padding:7px 10px;font-size:12px}
  .stat-row{grid-template-columns:repeat(2,1fr)}
  .stat-num{font-size:16px}
  .cal-day{min-height:40px}
  .sig-btn{font-size:11px;padding:4px 9px}
}
</style>
</head>
<body>
