/* growinpublic.ai — design tokens + components (zero build chain) */
:root {
  /* 主色（青绿系） */
  --brand: #0d9488;
  --brand-strong: #0f766e;
  --brand-hover: #14b8a6;
  --brand-tint: #ccfbf1;

  /* 中性 */
  --bg: #f9fafb;
  --card: #ffffff;
  --border: #e5e7eb;
  --border-strong: #d1d5db;
  --ink: #111827;
  --muted: #6b7280;
  --faint: #9ca3af;

  /* 语义色（日历色块） */
  --ok-full: #16a34a;
  --ok-part: #86efac;
  --ok-none: #d1d5db;

  /* 字阶 */
  --text-xs: 12px; --text-sm: 14px; --text-base: 16px; --text-lg: 20px; --text-xl: 28px;

  /* 圆角 / 阴影 / 动效 */
  --radius-sm: 6px; --radius-md: 8px; --radius-lg: 12px;
  --shadow-sm: 0 1px 2px rgba(17,24,39,.05);
  --shadow-md: 0 4px 12px rgba(17,24,39,.08);
  --shadow-lg: 0 8px 24px rgba(17,24,39,.12);
  --ease: 150ms ease;
}

* { box-sizing: border-box; }
body { margin:0; font-family:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; color:var(--ink); background:var(--bg); font-size:var(--text-base); line-height:1.6; -webkit-font-smoothing:antialiased; }

/* ---- 顶栏（sticky 毛玻璃） ---- */
.topbar { position:sticky; top:0; z-index:50; display:flex; justify-content:space-between; align-items:center; padding:12px 20px; background:rgba(255,255,255,.82); backdrop-filter:saturate(180%) blur(12px); -webkit-backdrop-filter:saturate(180%) blur(12px); border-bottom:1px solid var(--border); }
.brand { font-weight:700; text-decoration:none; color:var(--ink); font-size:18px; display:inline-flex; align-items:center; gap:8px; }
.brand-logo { width:22px; height:22px; border-radius:5px; flex-shrink:0; }
.brand span { color:var(--brand); }
nav#nav { font-size:var(--text-sm); display:flex; align-items:center; gap:2px; flex-wrap:wrap; }
nav#nav a, nav#nav button { color:var(--ink); text-decoration:none; padding:6px 10px; border-radius:var(--radius-sm); transition:background-color var(--ease); background:none; border:none; cursor:pointer; font:inherit; }
nav#nav a:hover, nav#nav button:hover { background:var(--border); text-decoration:none; }
nav#nav .btn.primary { margin-left:8px; }

/* ---- 布局 / hero ---- */
.container { max-width:720px; margin:0 auto; padding:24px 20px 48px; }
.container.wide { max-width:1020px; } /* 日历页：格子更宽 */
.hero { padding:24px 0 8px; }
.hero h1 { font-size:var(--text-xl); font-weight:600; letter-spacing:-.5px; margin:0 0 8px; }
.hero p { color:var(--muted); margin:0 0 16px; }

/* ---- 按钮 ---- */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:8px 16px; border:1px solid var(--brand); border-radius:var(--radius-md); background:var(--card); color:var(--brand-strong); cursor:pointer; text-decoration:none; font-size:var(--text-sm); font-weight:500; transition:background-color var(--ease),color var(--ease),box-shadow var(--ease),transform var(--ease),border-color var(--ease); }
.btn:hover { background:var(--brand-tint); }
.btn.primary { background:var(--brand); color:#fff; border-color:var(--brand); box-shadow:var(--shadow-sm); }
.btn.primary:hover { background:var(--brand-hover); border-color:var(--brand-hover); box-shadow:var(--shadow-md); color:#fff; }
.btn:active { transform:translateY(1px); }
.btn:disabled { background:var(--border); border-color:var(--border); color:var(--faint); cursor:not-allowed; transform:none; box-shadow:none; }

/* ---- 卡片 / 头像 / chip ---- */
.card { background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg); padding:14px 16px; margin:12px 0; box-shadow:var(--shadow-sm); }
.card-head { display:flex; align-items:center; gap:10px; }
.card-head a { font-weight:600; color:var(--ink); text-decoration:none; }
.card-head a:hover { color:var(--brand-strong); }
.avatar { width:32px; height:32px; border-radius:50%; color:#fff; font-size:var(--text-sm); font-weight:600; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; text-transform:uppercase; }
.chip { display:inline-block; padding:2px 10px; border-radius:999px; background:var(--brand-tint); color:var(--brand-strong); font-size:var(--text-xs); font-weight:500; white-space:nowrap; }

/* ---- 任务行（[x]/[ ] 图标化） ---- */
.task-line { display:flex; align-items:flex-start; gap:8px; font-family:ui-monospace,Menlo,Consolas,monospace; font-size:13px; padding:3px 0; white-space:pre-wrap; }
.task-ico { flex-shrink:0; width:18px; height:18px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:11px; line-height:1; margin-top:2px; }
.task-ico.done { background:var(--ok-full); color:#fff; }
.task-ico.todo { border:1.5px solid var(--border-strong); color:var(--faint); }
.review { color:var(--muted); margin:8px 0 0; white-space:pre-wrap; font-size:var(--text-sm); }
.muted { color:var(--muted); }

/* ---- item 行编辑（checkbox + 文本） ---- */
.item-row { display:flex; align-items:center; gap:8px; margin:6px 0; }
.item-row input[type=checkbox] { flex-shrink:0; width:18px; height:18px; }
.item-text { flex:1; min-width:0; padding:8px 10px; border:1px solid var(--border-strong); border-radius:var(--radius-md); font-size:var(--text-sm); font-family:inherit; background:var(--card); color:var(--ink); transition:border-color var(--ease), box-shadow var(--ease); }
.item-text:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
.item-del { flex-shrink:0; width:28px; height:28px; border:none; background:none; color:var(--faint); font-size:16px; line-height:1; cursor:pointer; border-radius:var(--radius-sm); transition:background-color var(--ease), color var(--ease); }
.item-del:hover { background:var(--border); color:#dc2626; }
.uname-input { padding:8px 10px; border:1px solid var(--border-strong); border-radius:var(--radius-md); font-size:var(--text-sm); font-family:inherit; background:var(--card); color:var(--ink); margin-top:6px; transition:border-color var(--ease), box-shadow var(--ease); }
.uname-input:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }

/* ---- /admin 服务管理 ---- */
.svc-card .svc-name { font-weight:600; }
.svc-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; display:inline-block; }
.svc-dot.up { background:#16a34a; box-shadow:0 0 0 3px rgba(22,163,74,.15); }
.svc-dot.down { background:#dc2626; box-shadow:0 0 0 3px rgba(220,38,38,.15); }
.chip.bad { background:#fee2e2; color:#b91c1c; }
.svc-desc { color:var(--muted); margin:8px 0 4px; font-size:var(--text-sm); }
.svc-meta { display:grid; grid-template-columns:auto 1fr; gap:2px 14px; margin:8px 0 0; font-size:var(--text-sm); }
.svc-meta dt { color:var(--faint); }
.svc-meta dd { margin:0; font-family:ui-monospace,Menlo,Consolas,monospace; font-size:12.5px; word-break:break-all; }

/* ---- /monitor 系统监控 ---- */
.mon-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; }
.mon-card { margin:0; padding:12px 14px; }
.mon-label { margin:0; color:var(--muted); font-size:var(--text-xs); }
.mon-value { margin:4px 0 2px; font-size:22px; font-weight:600; }
.mon-sub { margin:0; color:var(--faint); font-size:var(--text-xs); }
.mon-svc { margin:0; display:flex; align-items:center; gap:8px; }
.win-btns { display:inline-flex; gap:4px; }
.win-btns .btn { padding:4px 10px; font-size:var(--text-xs); }
.tbl-wrap { overflow-x:auto; }
.tbl { width:100%; border-collapse:collapse; font-size:13px; background:var(--card); border:1px solid var(--border); border-radius:var(--radius-md); }
.tbl th, .tbl td { text-align:left; padding:6px 10px; border-bottom:1px solid var(--border); white-space:nowrap; }
.tbl th { color:var(--muted); font-weight:500; font-size:var(--text-xs); position:sticky; top:0; background:var(--card); }
.tbl tbody tr:last-child td { border-bottom:none; }
.tbl td { font-family:ui-monospace,Menlo,Consolas,monospace; font-size:12.5px; max-width:420px; overflow:hidden; text-overflow:ellipsis; }
.tbl td:first-child, .tbl td:nth-child(2) { font-family:inherit; }

/* ---- 表单 ---- */
label { display:block; margin:14px 0; font-size:var(--text-sm); color:var(--muted); }
textarea, input[type=date] { width:100%; padding:8px 10px; border:1px solid var(--border-strong); border-radius:var(--radius-md); font-size:var(--text-sm); margin-top:6px; font-family:inherit; background:var(--card); color:var(--ink); transition:border-color var(--ease), box-shadow var(--ease); }
textarea:focus, input[type=date]:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
input[type=checkbox] { accent-color:var(--brand); width:16px; height:16px; }
.row { display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.switch { display:flex; gap:6px; align-items:center; cursor:pointer; }
fieldset { border:1px solid var(--border); border-radius:var(--radius-lg); padding:12px 16px 4px; margin:14px 0; background:var(--card); box-shadow:var(--shadow-sm); }
legend { font-size:var(--text-sm); font-weight:600; color:var(--ink); padding:0 6px; }

/* ---- 统计卡片 ---- */
.stats { display:flex; gap:12px; margin:12px 0 16px; flex-wrap:wrap; }
.stat { background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg); padding:12px 18px; font-size:var(--text-sm); color:var(--muted); box-shadow:var(--shadow-sm); }
.stat b { display:block; font-size:var(--text-lg); font-weight:600; color:var(--ink); line-height:1.4; }

/* ---- 日历 ---- */
.calendar { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; margin:10px 0; }
.cal-head { text-align:center; color:var(--faint); font-size:var(--text-xs); padding:4px 0; font-weight:500; }
.cal-cell { background:var(--card); border:1px solid var(--border); border-radius:var(--radius-sm); min-height:96px; padding:6px; display:flex; flex-direction:column; align-items:stretch; gap:2px; }
.cal-cell.clickable { cursor:pointer; transition:box-shadow var(--ease), transform var(--ease); }
.cal-cell.clickable:hover { box-shadow:var(--shadow-md); transform:translateY(-1px); }
.cal-cell.today { border:2px solid var(--brand); }
.cal-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:2px; }
.cal-num { font-size:11px; color:var(--faint); }
.blk { width:12px; height:12px; border-radius:3px; }
.cal-item { display:flex; gap:4px; align-items:flex-start; min-width:0; font-size:10px; line-height:1.5; color:var(--muted); }
.cal-item span:last-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cal-item .ico { flex-shrink:0; font-size:9px; line-height:1.7; }
.cal-item .ico.done { color:var(--ok-full); }
.cal-item .ico.todo { color:var(--faint); }
.blk.full { background:var(--ok-full); }
.blk.part { background:var(--ok-part); }
.blk.has { background:var(--ok-none); }
.blk.priv { background:repeating-linear-gradient(45deg,var(--border),var(--border) 4px,#f3f4f6 4px,#f3f4f6 8px); }
.legend { color:var(--muted); font-size:var(--text-xs); display:flex; gap:14px; flex-wrap:wrap; align-items:center; }
.legend .sw { display:inline-block; width:12px; height:12px; border-radius:3px; vertical-align:-1px; margin-right:4px; }

/* ---- tooltip / toast / 骨架屏 / 空态 ---- */
#cal-tip { position:fixed; z-index:100; background:#111827; color:#fff; font-size:var(--text-xs); padding:6px 10px; border-radius:var(--radius-sm); pointer-events:none; display:none; box-shadow:var(--shadow-lg); max-width:264px; }
#cal-tip .tip-title { font-weight:600; margin-bottom:2px; white-space:nowrap; }
#cal-tip .tip-line { max-width:256px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; line-height:1.6; }
@media (hover:none) { #cal-tip { display:none !important; } }
.toast { position:fixed; left:50%; bottom:32px; transform:translateX(-50%) translateY(16px); background:var(--card); border:1px solid var(--border); border-left:4px solid var(--ok-full); border-radius:var(--radius-md); padding:10px 18px; font-size:var(--text-sm); box-shadow:var(--shadow-lg); opacity:0; transition:opacity var(--ease), transform var(--ease); z-index:200; }
.toast.err { border-left-color:#dc2626; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
.skel { border-radius:var(--radius-lg); background:linear-gradient(90deg,var(--border) 25%,#f3f4f6 50%,var(--border) 75%); background-size:200% 100%; animation:shimmer 1.2s infinite linear; }
.skel-card { height:86px; margin:12px 0; }
@keyframes shimmer { to { background-position:-200% 0; } }
.empty { text-align:center; padding:40px 0; color:var(--muted); font-size:var(--text-sm); }

/* ---- 下载卡片 ---- */
.dl-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px; margin-top:8px; }
.dl-card { background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg); padding:20px; display:flex; flex-direction:column; gap:12px; box-shadow:var(--shadow-sm); transition:box-shadow var(--ease),transform var(--ease); }
.dl-card:hover { box-shadow:var(--shadow-md); transform:translateY(-2px); }
.dl-head { display:flex; align-items:center; gap:12px; }
.dl-icon { width:48px; height:48px; border-radius:var(--radius-md); background:var(--bg); border:1px solid var(--border); display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
.dl-icon img { width:28px; height:28px; }
.dl-icon svg { width:26px; height:26px; color:#6366f1; }
.dl-title { font-weight:600; margin:0; font-size:var(--text-base); }
.dl-version { color:var(--faint); font-size:var(--text-xs); font-family:ui-monospace,Menlo,Consolas,monospace; margin:2px 0 0; }
.dl-desc { color:var(--muted); font-size:var(--text-sm); margin:0; flex:1; }
.dl-tags { display:flex; flex-wrap:wrap; gap:6px; }
.tag { font-size:11px; padding:2px 8px; background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-sm); color:var(--muted); }
.dl-card .btn { justify-content:center; }
details { margin-top:16px; background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg); padding:12px 18px; box-shadow:var(--shadow-sm); }
summary { cursor:pointer; font-size:var(--text-sm); font-weight:500; color:var(--ink); outline:none; }
details ol { margin:10px 0 0; padding-left:20px; color:var(--muted); font-size:13px; }
details li { margin-bottom:6px; }
details code { background:var(--bg); border:1px solid var(--border); padding:1px 6px; border-radius:4px; font-size:12px; color:var(--brand-strong); }

/* ---- day 详情页 ---- */
.day-sec h2 { display:flex; align-items:center; gap:6px; font-size:var(--text-base); margin:20px 0 8px; }
.locked { text-align:center; padding:48px 0; color:var(--muted); }
.locked .ico { font-size:32px; display:block; margin-bottom:8px; }

h2 { font-size:var(--text-lg); font-weight:600; margin:28px 0 10px; }
a { color:var(--brand-strong); }

/* ---- /reports 财报页（tab + 搜索 + 分页，全部主站 token，无暗色变量） ---- */
.reports-tabs { display:flex; gap:4px; margin:16px 0; background:var(--card); border:1px solid var(--border); border-radius:var(--radius-md); padding:4px; width:fit-content; max-width:100%; overflow-x:auto; }
.tab-btn { padding:7px 18px; border:none; border-radius:var(--radius-sm); cursor:pointer; font:inherit; font-size:var(--text-sm); font-weight:500; color:var(--muted); background:transparent; transition:background-color var(--ease),color var(--ease); white-space:nowrap; }
.tab-btn:hover { color:var(--ink); background:var(--border); }
.tab-btn.active { color:#fff; background:var(--brand); }
.tab-panel { display:none; }
.tab-panel.active { display:block; }
.search-input { padding:8px 12px; border:1px solid var(--border-strong); border-radius:var(--radius-md); font-size:var(--text-sm); font-family:inherit; background:var(--card); color:var(--ink); width:260px; max-width:100%; transition:border-color var(--ease), box-shadow var(--ease); }
.search-input:focus { outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-tint); }
.pager { display:flex; gap:6px; align-items:center; justify-content:center; flex-wrap:wrap; margin-top:14px; }
.page-btn { padding:5px 12px; border:1px solid var(--border-strong); border-radius:var(--radius-sm); background:var(--card); color:var(--ink); cursor:pointer; font-size:13px; transition:border-color var(--ease),color var(--ease); }
.page-btn:hover:not(:disabled) { border-color:var(--brand); color:var(--brand-strong); }
.page-btn.active { background:var(--brand); border-color:var(--brand); color:#fff; }
.page-btn.active:hover { border-color: var(--brand); color: #fff; }
.page-btn:disabled { opacity:.35; cursor:not-allowed; }
.page-info { font-size:13px; color:var(--muted); padding:0 6px; }
.num { font-variant-numeric: tabular-nums; }

/* ---- 移动端 ---- */
@media (max-width:640px) {
  .container { padding:16px 16px 40px; }
  .hero h1 { font-size:var(--text-lg); }
  .stats { gap:8px; }
  .stat { flex:1; min-width:120px; }
  .cal-cell { min-height:84px; }
  .blk { width:10px; height:10px; }
  .topbar { padding:10px 14px; }
  nav#nav { font-size:var(--text-xs); }
}

/* ---- /moments 图文动态 ---- */
.mom-head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.mom-head a { font-weight:600; color:var(--ink); text-decoration:none; }
.mom-head a:hover { color:var(--brand-strong); }
.mom-title { margin:8px 0 2px; font-size:1.05rem; }
.mom-body { white-space:pre-wrap; word-break:break-word; margin:6px 0; }
.mom-imgs { display:grid; gap:8px; margin-top:10px; }
.mom-imgs.n1 { grid-template-columns:1fr; }
.mom-imgs.n2, .mom-imgs.n3 { grid-template-columns:1fr 1fr; }
.mom-img { display:block; border-radius:var(--radius-md); overflow:hidden; background:var(--border); }
.mom-img img { width:100%; height:100%; display:block; object-fit:cover; max-height:420px; }

/* ---- /settings API Token 行 ---- */
.token-row { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:6px 0; border-bottom:1px solid var(--border); }
.token-row:last-child { border-bottom:none; }
.token-new-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }

/* ---- /console + /api-docs ---- */
.console-input {
  padding: 6px 10px;
  border: 1px solid rgba(0, 0, 0, .15);
  border-radius: 8px;
  font: inherit;
  color: inherit;
  background: transparent;
  min-width: 160px;
}
.console-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 8px 0; }
.console-json {
  overflow: auto;
  max-height: 420px;
  margin: 8px 0 0;
  padding: 10px 12px;
  border-radius: 8px;
  background: rgba(0, 0, 0, .05);
  font-size: 12px;
  line-height: 1.5;
  white-space: pre-wrap;
  word-break: break-all;
}
.btn.sm { padding: 2px 10px; font-size: var(--text-xs, 12px); }

.doc-section { margin: 12px 0; }
.doc-section summary { cursor: pointer; font-weight: 600; }

.doc-card { margin-top: 8px; }
.doc-bar { display: flex; justify-content: flex-end; }
.doc-meta { margin: 4px 0 8px; padding: 10px 12px; border: 1px solid rgba(13, 148, 136, .25); border-radius: 10px; background: rgba(13, 148, 136, .06); }
.doc-meta-row { margin: 2px 0; }
.doc-h { margin: 14px 0 6px; font-size: 15px; }
.doc-code { padding: 10px 12px; background: #0f172a; color: #e2e8f0; border-radius: 8px; font-size: 12.5px; white-space: pre-wrap; word-break: break-all; }
.doc-method { font-weight: 700; }

/* ---- /stocks 股票分析（拖拽聚合） ---- */
.stocks-presets { display: flex; gap: 8px; margin: 12px 0; }
.stocks-layout { display: grid; grid-template-columns: 210px 1fr; gap: 16px; margin: 12px 0; }
.stocks-palette h3 { margin: 10px 0 6px; font-size: 13px; }
.palette-group { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; background: #f1f5f9; font-size: 13px; cursor: grab; border: 1px solid #e2e8f0; user-select: none; }
.chip.dragging { opacity: .5; }
.chip .x { cursor: pointer; font-weight: 700; color: #64748b; }
.chip select, .chip input { font-size: 12px; border: 1px solid #e2e8f9; border-radius: 6px; padding: 0 4px; }
.dropzone { min-height: 46px; border: 2px dashed #cbd5e1; border-radius: 10px; padding: 8px; margin: 8px 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.dropzone.over { border-color: #0d9488; background: rgba(13,148,136,.06); }
.dz-label { font-size: 12px; color: #64748b; margin-right: 4px; }
.stocks-droprow { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.stocks-actions { display: flex; gap: 12px; align-items: center; margin-top: 8px; flex-wrap: wrap; }
.stocks-actions label { font-size: 13px; color: #475569; }
.stocks-outputs { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 8px; }
.stocks-table-wrap { overflow-x: auto; }
.stocks-table table { border-collapse: collapse; font-size: 13px; }
.stocks-table th, .stocks-table td { border: 1px solid #e2e8f0; padding: 4px 10px; text-align: right; white-space: nowrap; }
.stocks-table th { background: #f8fafc; }
.stocks-table td:first-child, .stocks-table th:first-child { text-align: left; }
.stocks-chart-wrap .chart-box { position: relative; height: 400px; }
/* 侧栏表列表 + 数据预览卡片 */
.table-list { display: flex; flex-direction: column; gap: 2px; }
.table-item { display: flex; align-items: center; gap: 6px; padding: 5px 8px; border-radius: 8px; cursor: pointer; border-left: 3px solid transparent; }
.table-item:hover { background: #f1f5f9; }
.table-item.active { border-left-color: #0d9488; background: rgba(13,148,136,.08); }
.ti-label { font-size: 13px; font-weight: 500; }
.ti-name { margin-left: auto; font-size: 12px; color: #94a3b8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ti-eye { border: none; background: none; cursor: pointer; font-size: 13px; padding: 2px; opacity: .45; border-radius: 6px; }
.ti-eye:hover { opacity: 1; background: rgba(13,148,136,.12); }
#stocks-preview:empty { display: none; }
.preview-card { margin-top: 4px; padding: 10px 12px; }
.preview-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; font-size: 14px; }
.preview-body { overflow-x: auto; }
.preview-body table { border-collapse: collapse; font-size: 13px; }
.preview-body th, .preview-body td { border: 1px solid #e2e8f0; padding: 4px 10px; text-align: right; white-space: nowrap; }
.preview-body th { background: #f8fafc; }
.preview-body td:first-child, .preview-body th:first-child { text-align: left; }
@media (max-width: 900px) {
  .stocks-layout { grid-template-columns: 1fr; }
  .stocks-outputs { grid-template-columns: 1fr; }
}
