/* ========== 全局变量 ========== */
:root {
  --c-bg:#f7f8fa; --c-card:#fff; --c-panel:#fff; --c-border:#eef2f7;
  --c-text:#1e293b; --c-text2:#64748b; --c-text3:#94a3b8;
  --c-primary:#2563eb; --c-primary-l:#3b82f6; --c-primary-d:#1d4ed8;
  --c-up:#ef4444; --c-up-bg:#fef2f2; --c-down:#22c55e; --c-down-bg:#f0fdf4;
  --c-header:#1e293b;
  --sp-1:8px; --sp-2:12px; --sp-3:16px; --sp-4:20px; --sp-5:24px; --sp-6:32px;
  --fs-xs:11px; --fs-sm:12px; --fs-base:13px; --fs-md:14px; --fs-lg:16px; --fs-xl:18px; --fs-2xl:22px; --fs-3xl:28px;
  --radius:12px; --radius-sm:8px; --radius-lg:16px;
  --shadow:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
  --shadow-lg:0 4px 16px rgba(0,0,0,.08);
}

* { margin:0; padding:0; box-sizing:border-box; }

body {
  font-family:"PingFang SC","Microsoft YaHei",-apple-system,sans-serif;
  background:var(--c-bg); color:var(--c-text); font-size:var(--fs-md);
  -webkit-font-smoothing:antialiased;
}

.container { max-width:1200px; margin:0 auto; padding:0 var(--sp-4); }

/* ========== 头部导航 ========== */
header {
  background:var(--c-header); color:#fff; padding:var(--sp-2) 0;
  position:sticky; top:0; z-index:100;
}
header .container { display:flex; align-items:center; justify-content:space-between; }
.logo { font-size:var(--fs-xl); font-weight:700; letter-spacing:.5px; }
nav a {
  color:#cbd5e1; text-decoration:none; margin-left:22px; padding:6px 2px;
  border-bottom:2px solid transparent; transition:.2s; font-size:var(--fs-md);
}
nav a:hover { color:#fff; }
nav a.active { color:#fff; border-bottom-color:var(--c-primary-l); }

/* ========== 主区域 ========== */
main { padding:var(--sp-6) 0 var(--sp-6); }
/* ========== 概览卡片 ========== */
.overview {
  display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr));
  gap:var(--sp-4); margin-bottom:var(--sp-5);
}
.card {
  background:var(--c-card); border-radius:var(--radius); padding:var(--sp-3) var(--sp-4);
  box-shadow:var(--shadow); transition:transform .2s,box-shadow .2s;
  border:1px solid #f1f5f9;
}
.card:hover { transform:translateY(-2px); box-shadow:var(--shadow-lg); }
.card .label { color:var(--c-text2); font-size:var(--fs-sm); margin-bottom:6px; }
.card .value { font-size:var(--fs-2xl); font-weight:700; color:var(--c-text); font-variant-numeric:tabular-nums; word-break:break-word; line-height:1.3; }
.card .value.green { color:var(--c-down); }
.card .value.red { color:var(--c-up); }
.card .value.muted { color:#cbd5e1; }
.card .card-sub { color:var(--c-text3); font-size:var(--fs-xs); margin-top:4px; }

/* 主卡 */
.overview .card.primary {
  background:linear-gradient(135deg,#eff6ff,#dbeafe);
  border:1px solid #bfdbfe;
}
.overview .card.primary .label { color:var(--c-primary); font-weight:600; }
.overview .card.primary .value { font-size:var(--fs-3xl); }

/* ========== 面板 ========== */
.panel {
  background:var(--c-panel); border-radius:var(--radius); padding:var(--sp-5) var(--sp-6);
  margin-bottom:var(--sp-4); box-shadow:var(--shadow); border:1px solid #f1f5f9;
}
.panel h2 {
  font-size:var(--fs-lg); color:var(--c-text); padding-left:10px;
  border-left:4px solid var(--c-primary);
}
.panel-head { display:flex; align-items:baseline; gap:var(--sp-3); margin-bottom:var(--sp-4); }
.panel-head h2 { margin-bottom:0; }
.panel-sub { color:var(--c-text3); font-size:var(--fs-sm); }

/* ========== 表格 ========== */
.table-wrap { overflow-x:auto; }
table { width:100%; border-collapse:collapse; white-space:nowrap; }
th,td { padding:10px 12px; text-align:right; border-bottom:1px solid var(--c-border); font-size:var(--fs-base); }
th { background:#f8fafc; color:var(--c-text2); font-weight:600; text-align:right; }
th:first-child,td:first-child { text-align:left; }
tbody tr { transition:background .15s; }
tbody tr:hover { background:#f8fafc; }
td.num { font-variant-numeric:tabular-nums; }
td.pos { color:var(--c-up); }
td.neg { color:var(--c-down); }
td.muted { color:#cbd5e1; }
td.empty-cell { color:var(--c-text3); text-align:center; padding:28px 0; }
td.chg-cell { font-weight:600; }

/* 排序表头 */
th.sortable { cursor:pointer; user-select:none; transition:color .2s; }
th.sortable:hover { color:var(--c-primary); }
th.sortable::after { content:'⇅'; margin-left:4px; font-size:10px; color:#cbd5e1; }

/* 占比条/迷你条 */
.cap-cell { min-width:110px; }
.cap-pct { margin-bottom:4px; }
.pct-bar { background:#e2e8f0; border-radius:3px; height:7px; width:96px; }
.pct-bar i { display:block; height:100%; background:linear-gradient(90deg,var(--c-primary-l),var(--c-primary)); border-radius:3px; }
.mini-bar { height:5px; width:88px; background:#f1f5f9; border-radius:3px; margin-top:4px; }
.mini-bar i { display:block; height:100%; border-radius:3px; }

/* 清仓时间 */
td.close-date { color:#475569; font-size:12.5px; white-space:nowrap; }
.muted-text { color:#cbd5e1; }

/* ========== 页面标题行 ========== */
.page-head {
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:var(--sp-4); flex-wrap:wrap; margin:4px 0 var(--sp-5);
  padding-bottom:var(--sp-3); border-bottom:1px solid var(--c-border);
}
.page-head-left h1 { font-size:var(--fs-2xl); font-weight:700; color:var(--c-text); letter-spacing:.5px; margin-bottom:4px; }
.page-desc { color:var(--c-text3); font-size:var(--fs-base); }

/* ========== 分段按钮组 ========== */
.granularity-tabs { display:inline-flex; background:#e2e8f0; border-radius:10px; padding:4px; }
.g-tab {
  border:none; background:transparent; color:var(--c-text2);
  padding:8px 22px; border-radius:7px; cursor:pointer; font-size:var(--fs-base); transition:.2s;
}
.g-tab:hover { color:var(--c-text); }
.g-tab.active { background:#fff; color:var(--c-primary-d); font-weight:600; box-shadow:0 1px 3px rgba(0,0,0,.15); }

/* 筛选栏 */
.filter-bar { display:flex; align-items:center; gap:var(--sp-3); flex-wrap:wrap; }
.period-select {
  padding:8px 14px; border:1px solid #cbd5e1; border-radius:var(--radius-sm);
  font-size:var(--fs-base); color:var(--c-text); background:#fff; cursor:pointer; outline:none; transition:.2s;
}
.period-select:hover { border-color:var(--c-primary-l); }
.period-select:focus { border-color:var(--c-primary); box-shadow:0 0 0 3px rgba(37,99,235,.12); }

/* ========== 资产负债表 ========== */
.bs-table { width:100%; }
.bs-table .th-asset { background:var(--c-down-bg); color:#15803d; border-bottom:2px solid #86efac; }
.bs-table .th-liab { background:var(--c-up-bg); color:#b91c1c; border-bottom:2px solid #fca5a5; }
.bs-table th:nth-child(3),.bs-table td:nth-child(3) { border-left:2px solid #e2e8f0; }
.bs-table td { padding:12px 14px; font-size:var(--fs-md); }
.bs-table tr.bs-subtotal td { border-top:2px solid #cbd5e1; font-weight:700; background:#f8fafc; color:var(--c-text); }

.net-worth {
  background:linear-gradient(135deg,#1e293b,#334155);
  border-radius:var(--radius); padding:18px 24px; text-align:center; color:#fff; margin-top:var(--sp-4);
}
.net-worth.neg { background:linear-gradient(135deg,#991b1b,#b91c1c); }
.net-worth .nw-label { font-size:var(--fs-sm); color:rgba(255,255,255,.9); margin-bottom:6px; }
.net-worth .nw-value { font-size:var(--fs-3xl); font-weight:700; }

/* ========== 收支表 ========== */
.ie-table .th-in { background:#ecfdf5; color:#15803d; border-bottom:2px solid #86efac; }
.ie-table .th-out { background:#fff1f2; color:#b91c1c; border-bottom:2px solid #fda4af; }
.ie-table th:nth-child(5),.ie-table td:nth-child(5) { border-left:2px solid #e2e8f0; }
.ie-table td { padding:11px 12px; font-size:13.5px; }
.ie-table .ie-subhead th { font-size:var(--fs-sm); font-weight:600; }
td.r1 { background:#f0fdf4; } td.r2 { background:#ecfeff; } td.r3 { background:#fefce8; }
td.r1:first-child { box-shadow:inset 4px 0 0 #10b981; }
td.r2:first-child { box-shadow:inset 4px 0 0 #06b6d4; }
td.r3:first-child { box-shadow:inset 4px 0 0 #ca8a04; }
td.o1 { background:#fef2f2; } td.o2 { background:#fff7ed; } td.o3 { background:#eff6ff; } td.o4 { background:#fdf4ff; } td.o5 { background:#f8fafc; }
td.o1:nth-child(5) { box-shadow:inset 4px 0 0 #ef4444; }
td.o2:nth-child(5) { box-shadow:inset 4px 0 0 #f97316; }
td.o3:nth-child(5) { box-shadow:inset 4px 0 0 #3b82f6; }
td.o4:nth-child(5) { box-shadow:inset 4px 0 0 #a855f7; }
td.o5:nth-child(5) { box-shadow:inset 4px 0 0 #94a3b8; }
td.in-sum { background:#fff; color:#15803d; font-weight:700; border-top:2px solid #22c55e; }
td.out-sum { background:#fff; color:#b91c1c; font-weight:700; border-top:2px solid #ef4444; }

.balance-bar {
  background:linear-gradient(135deg,#166534,#16a34a);
  border-radius:var(--radius); padding:var(--sp-4) var(--sp-5); text-align:center; color:#fff; margin-top:var(--sp-4);
}
.balance-bar.neg { background:linear-gradient(135deg,#991b1b,#b91c1c); }
.balance-bar .bb-label { font-size:var(--fs-sm); color:rgba(255,255,255,.9); margin-bottom:6px; }
.balance-bar .bb-value { font-size:var(--fs-xl); font-weight:700; }

/* 手机收支卡片 */
.cf-mobile { display:none; }

/* ========== 图表/两列 ========== */
.chart-wrap { text-align:center; }
canvas { max-width:100%; }
.two-col { display:grid; grid-template-columns:1fr 1fr; gap:var(--sp-4); margin-bottom:var(--sp-4); }

/* 饼图图例 */
.pie-legend { display:flex; flex-wrap:wrap; gap:10px 20px; justify-content:center; margin-top:var(--sp-3); }
.pie-legend .lg-item { display:flex; align-items:center; gap:6px; font-size:var(--fs-sm); color:#475569; }
.pie-legend .lg-dot { width:12px; height:12px; border-radius:3px; flex-shrink:0; }

/* 个股浮盈条 */
.unreal-row { margin-bottom:var(--sp-3); }
.unreal-row .ur-head { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:4px; }
.unreal-row .ur-name { font-weight:600; color:var(--c-text); font-size:var(--fs-base); }
.unreal-row .ur-val { font-size:var(--fs-base); font-weight:700; font-variant-numeric:tabular-nums; }
.unreal-row .ur-val.pos { color:var(--c-up); }
.unreal-row .ur-val.neg { color:var(--c-down); }
.unreal-row .ur-track { height:10px; background:#f1f5f9; border-radius:5px; overflow:hidden; position:relative; }
.unreal-row .ur-center { position:absolute; left:50%; top:0; bottom:0; width:1px; background:#cbd5e1; z-index:1; }
.unreal-row .ur-fill { position:absolute; top:0; height:100%; border-radius:5px; }

/* 核心指标网格 */
.metric-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:var(--sp-3); }
.metric-item { background:#f8fafc; border-radius:10px; padding:14px var(--sp-4); border:1px solid #f1f5f9; }
.metric-item .mi-label { color:var(--c-text2); font-size:var(--fs-sm); margin-bottom:6px; }
.metric-item .mi-value { font-size:var(--fs-xl); font-weight:700; color:var(--c-text); }
.metric-item .mi-sub { color:var(--c-text3); font-size:var(--fs-xs); margin-top:4px; }
.metric-item .mi-value.pos { color:var(--c-up); }
.metric-item .mi-value.neg { color:var(--c-down); }

/* 分红月历 */
.div-calendar { display:grid; grid-template-columns:repeat(12,1fr); gap:6px; }
.dc-month { background:#f8fafc; border-radius:var(--radius-sm); padding:10px 8px; text-align:center; border:1px solid #f1f5f9; min-height:70px; display:flex; flex-direction:column; justify-content:center; }
.dc-month .dc-lbl { font-size:var(--fs-xs); color:var(--c-text3); margin-bottom:4px; }
.dc-month .dc-val { font-size:var(--fs-base); font-weight:600; color:#22c55e; }
.dc-month .dc-stocks { font-size:10px; color:var(--c-text2); margin-top:2px; line-height:1.4; }
.dc-month.empty .dc-val { color:#cbd5e1; }
.dc-month.empty .dc-stocks { display:none; }

/* 小记 */
.note {
  border-left:3px solid var(--c-primary-l); background:#f8fafc; border-radius:var(--radius-sm);
  padding:14px 18px; margin-bottom:var(--sp-3); transition:border-color .2s;
}
.note:hover { border-left-color:var(--c-primary); }
.note .date { color:var(--c-text3); font-size:var(--fs-sm); margin-bottom:6px; }
.note .note-title { font-weight:600; color:var(--c-text); font-size:var(--fs-md); margin-bottom:6px; }
.note .content { line-height:1.7; color:#334155; }

/* 个股详情展开行 */
tr.expanded { background:#eff6ff !important; }
tr.detail-row td { padding:0 !important; border:none; }
.detail-cell { background:#f8fafc; }
.detail-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:10px 20px; padding:16px 24px; }
.dg-item { display:flex; flex-direction:column; gap:2px; }
.dg-label { color:var(--c-text3); font-size:var(--fs-xs); }
.dg-val { color:var(--c-text); font-size:var(--fs-base); font-weight:600; font-variant-numeric:tabular-nums; }
.dg-val.pos { color:var(--c-up); }
.dg-val.neg { color:var(--c-down); }

/* 小记页面板 */
.notes-panel { padding:var(--sp-5); }

/* 实时状态条 */
.live-status {
  background:#eff6ff; border:1px solid #bfdbfe; border-radius:var(--radius-sm);
  padding:8px var(--sp-4); margin-bottom:var(--sp-3); font-size:var(--fs-sm); color:var(--c-primary-d);
  display:flex; align-items:center; gap:8px;
}
.live-status::before {
  content:''; display:inline-block; width:8px; height:8px;
  background:#22c55e; border-radius:50%; animation:pulse 2s infinite;
}
@keyframes pulse { 0%{opacity:1;} 50%{opacity:.3;} 100%{opacity:1;} }

/* 页脚 */
footer,main > p { color:var(--c-text3); font-size:var(--fs-sm); margin-top:var(--sp-4); padding-top:var(--sp-3); border-top:1px solid var(--c-border); }
.data-note { color:var(--c-text3); font-size:var(--fs-sm); margin-top:4px; text-align:center; }

/* 骨架屏 */
.skeleton {
  background:linear-gradient(90deg,#f1f5f9 25%,#e2e8f0 50%,#f1f5f9 75%);
  background-size:200% 100%;
  animation:shimmer 1.5s infinite;
  border-radius:var(--radius-sm);
}
@keyframes shimmer { 0%{background-position:200% 0;} 100%{background-position:-200% 0;} }
.skeleton-line { height:14px; margin-bottom:8px; }
.skeleton-card { height:80px; border-radius:var(--radius); }

/* ========== 移动端底部Tab ========== */
.tab-bar { display:none; }
.tab-placeholder { display:none; }

/* ========== 移动端适配 ========== */
@media (max-width:640px){
  :root { --fs-2xl:20px; --fs-3xl:24px; }

  /* 移动端隐藏顶部导航栏（用底部Tab替代） */
  header { display:none; }
  main { padding-top:var(--sp-4); }
  .overview { grid-template-columns:repeat(2,1fr); gap:10px; }
  .card { padding:var(--sp-2) var(--sp-3); }
  .card .value { font-size:var(--fs-lg); word-break:break-all; line-height:1.3; }
  .card .value.primary { font-size:var(--fs-lg); }
  .overview .card.primary { grid-column:1 / -1; }
  main { padding:var(--sp-4) 0 72px; }
  .panel { padding:var(--sp-4) var(--sp-3); margin-bottom:var(--sp-3); }
  .page-head { margin:0 0 var(--sp-3); }
  .two-col { grid-template-columns:1fr; gap:var(--sp-4); margin-bottom:var(--sp-4); }
  .filter-bar { width:100%; justify-content:space-between; }
  .period-select { flex:1; min-width:0; }

  /* 底部Tab导航 */
  .tab-bar {
    display:flex; position:fixed; bottom:0; left:0; right:0; z-index:100;
    background:#fff; border-top:1px solid #e2e8f0; padding:6px 0 calc(6px + env(safe-area-inset-bottom));
    box-shadow:0 -2px 10px rgba(0,0,0,.06);
  }
  .tab-item {
    flex:1; display:flex; flex-direction:column; align-items:center; gap:2px;
    text-decoration:none; color:var(--c-text3); font-size:10px; padding:4px 0; transition:color .2s;
  }
  .tab-item.active { color:var(--c-primary); }
  .tab-icon { width:22px; height:22px; }
  .tab-label { font-size:10px; }
  .tab-placeholder { display:block; height:60px; }

  /* 表格卡片化 */
  .table-wrap table { display:block; }
  .table-wrap thead { display:none; }
  .table-wrap tbody { display:block; }
  .table-wrap tbody tr {
    display:block; background:#fff; border:1px solid var(--c-border);
    border-radius:10px; padding:6px 12px; margin-bottom:10px; box-shadow:0 1px 2px rgba(0,0,0,.04);
  }
  .table-wrap tbody tr:hover { background:#fff; }
  .table-wrap tbody td {
    display:flex; justify-content:space-between; align-items:center;
    text-align:right; border:none; padding:6px 0; font-size:var(--fs-base);
  }
  .table-wrap tbody td:first-child { text-align:right; font-weight:600; }
  .table-wrap tbody td::before { content:attr(data-label); color:var(--c-text3); font-size:var(--fs-xs); font-weight:400; flex-shrink:0; }
  .table-wrap td .mini-bar,.table-wrap td .pct-bar { width:70px; }
  .table-wrap td.cap-cell { flex-direction:column; align-items:flex-end; gap:4px; }
  .table-wrap td.cap-cell .cap-pct { margin-bottom:0; }
  .table-wrap td.pos,.table-wrap td.neg { font-weight:600; }
  .table-wrap .empty-cell { justify-content:center; text-align:center; color:var(--c-text3); }
  .table-wrap .empty-cell::before { content:none; }

  /* 收支卡片 */
  .table-wrap table.ie-table { display:none !important; }
  .cf-mobile { display:block; }
  .cfm-sec { border-radius:10px; padding:12px 14px; margin-bottom:10px; }
  .cfm-in { background:#f0fdf4; } .cfm-out { background:#fff7f7; }
  .cfm-head { font-size:var(--fs-base); font-weight:700; margin-bottom:8px; }
  .cfm-in .cfm-head { color:#15803d; } .cfm-out .cfm-head { color:#b91c1c; }
  .cfm-row { display:flex; align-items:center; gap:6px; padding:5px 0; border-bottom:1px dashed rgba(0,0,0,.06); font-size:var(--fs-sm); }
  .cfm-row:last-child { border-bottom:none; }
  .cfm-dot { width:8px; height:8px; border-radius:2px; flex-shrink:0; }
  .cfm-name { flex:1; color:#334155; font-weight:600; }
  .cfm-val { color:var(--c-text); font-variant-numeric:tabular-nums; white-space:nowrap; }
  .cfm-val i { font-style:normal; color:var(--c-text3); font-size:10px; margin-left:1px; }
  .cfm-sum { margin-top:8px; font-size:var(--fs-sm); color:#475569; line-height:1.6; }
  .cfm-sum b { font-variant-numeric:tabular-nums; }
  .cfm-in .cfm-sum { color:#15803d; } .cfm-out .cfm-sum { color:#b91c1c; }

  /* 资产负债表保持表格 */
  .table-wrap table.bs-table { display:table; }
  .table-wrap table.bs-table thead { display:table-header-group; }
  .table-wrap table.bs-table tbody { display:table-row-group; }
  .table-wrap table.bs-table tbody tr { display:table-row; background:#fff; border:none; border-radius:0; margin:0; box-shadow:none; }
  .table-wrap table.bs-table tbody td { display:table-cell; padding:10px 6px; font-size:var(--fs-sm); text-align:right; }
  .table-wrap table.bs-table tbody td:first-child { text-align:left; font-weight:400; }
  .table-wrap table.bs-table tbody td::before { content:none; }
  .table-wrap table.bs-table tbody tr.bs-subtotal td { font-size:var(--fs-sm); }

  /* 其他 */
  #pieChart { max-width:100%; height:auto; }
  .pie-legend { gap:8px 14px; }
  .metric-grid { grid-template-columns:repeat(2,1fr); gap:10px; }
  .metric-item { padding:var(--sp-3); }
  .metric-item .mi-value { font-size:var(--fs-lg); }
  .live-status { font-size:var(--fs-xs); padding:6px 12px; flex-wrap:wrap; }
  .net-worth,.balance-bar { padding:14px var(--sp-4); }
  .net-worth .nw-value { font-size:var(--fs-2xl); }
  .dc-month { min-height:56px; padding:8px 4px; }
  .div-calendar { grid-template-columns:repeat(4,1fr); }
}

@media (max-width:900px){ .two-col { grid-template-columns:1fr; } .div-calendar { grid-template-columns:repeat(6,1fr); } }

/* ========== 中屏隐藏持仓表次要列 ========== */
/* 641-1024px: 隐藏6列 */
@media (max-width:1024px) and (min-width:641px){
  #holdingsTable th:nth-child(2), #holdingsTable td:nth-child(2),   /* 代码 */
  #holdingsTable th:nth-child(9), #holdingsTable td:nth-child(9),   /* PE */
  #holdingsTable th:nth-child(10), #holdingsTable td:nth-child(10), /* 26中报EPS */
  #holdingsTable th:nth-child(11), #holdingsTable td:nth-child(11), /* 25年报EPS */
  #holdingsTable th:nth-child(16), #holdingsTable td:nth-child(16), /* 建仓日期 */
  #holdingsTable th:nth-child(17), #holdingsTable td:nth-child(17)  /* 持有天数 */
  { display:none; }
}
/* 1025-1400px: 隐藏4列 */
@media (max-width:1400px) and (min-width:1025px){
  #holdingsTable th:nth-child(9), #holdingsTable td:nth-child(9),   /* PE */
  #holdingsTable th:nth-child(10), #holdingsTable td:nth-child(10), /* 26中报EPS */
  #holdingsTable th:nth-child(11), #holdingsTable td:nth-child(11), /* 25年报EPS */
  #holdingsTable th:nth-child(17), #holdingsTable td:nth-child(17)  /* 持有天数 */
  { display:none; }
}

/* ========== 滚动条美化 ========== */
.table-wrap::-webkit-scrollbar { height:6px; }
.table-wrap::-webkit-scrollbar-track { background:#f1f5f9; border-radius:3px; }
.table-wrap::-webkit-scrollbar-thumb { background:#cbd5e1; border-radius:3px; }
.table-wrap::-webkit-scrollbar-thumb:hover { background:#94a3b8; }

/* ========== 小记表单 ========== */
.note-form { margin-bottom:var(--sp-4); }
.note-form .nf-row { display:flex; gap:var(--sp-2); margin-bottom:10px; }
.note-form input[type="text"],
.note-form input[type="date"],
.note-form textarea {
  border:1px solid #cbd5e1; border-radius:var(--radius-sm); padding:10px 14px;
  font-size:var(--fs-md); font-family:inherit; color:var(--c-text); background:#fff;
  outline:none; transition:border-color .2s; width:100%;
}
.note-form input:focus, .note-form textarea:focus {
  border-color:var(--c-primary); box-shadow:0 0 0 3px rgba(37,99,235,.1);
}
.note-form textarea { resize:vertical; min-height:80px; line-height:1.6; }
.note-form .nf-title { flex:1; }
.note-form .nf-date { width:160px; flex-shrink:0; }
.note-form .nf-btn {
  border:none; background:var(--c-primary); color:#fff; border-radius:var(--radius-sm);
  padding:10px 28px; font-size:var(--fs-md); cursor:pointer; transition:background .2s; font-weight:600;
}
.note-form .nf-btn:hover { background:var(--c-primary-d); }
.note-form .nf-btn:disabled { background:#cbd5e1; cursor:not-allowed; }
.nf-toast {
  position:fixed; bottom:80px; left:50%; transform:translateX(-50%);
  background:var(--c-text); color:#fff; padding:10px 24px; border-radius:var(--radius-sm);
  font-size:var(--fs-sm); z-index:200; opacity:0; transition:opacity .3s; pointer-events:none;
}
.nf-toast.show { opacity:1; }

/* 小记表单移动端适配 */
@media (max-width:640px){
  .note-form .nf-row { flex-direction:column; }
  .note-form .nf-date { width:100%; }
  .note-form .nf-btn { width:100%; padding:12px; }
}