        /* ===== 视图切换 ===== */
        .view-seg{display:inline-flex;gap:2px;background:rgba(0,0,0,.04);border-radius:10px;padding:3px;margin-bottom:16px}
        .dark .view-seg{background:rgba(255,255,255,.05)}
        .view-seg .vs-btn{border:0;background:transparent;font-size:12px;font-weight:600;color:#6b7280;padding:6px 16px;border-radius:8px;cursor:pointer;transition:all .18s;font-family:inherit}
        .dark .view-seg .vs-btn{color:#9ca3af}
        .view-seg .vs-btn:hover{color:#374151}
        .dark .view-seg .vs-btn:hover{color:#d1d5db}
        .view-seg .vs-btn.on{background:#3b82f6;color:#fff;box-shadow:0 1px 3px rgba(59,130,246,.35)}
        #calendar-flow{transition:opacity .17s ease,translate .2s ease}
        #calendar-flow.view-swap{opacity:0;translate:0 6px}
        .view-empty{padding:48px 0;text-align:center;font-size:12px;color:#9ca3af;font-family:ui-monospace,monospace}

        /* 時間線 */
        .tl{padding-left:6px}
        .tl-month{font-size:12px;font-weight:700;color:#374151;margin:18px 0 10px;padding-left:14px;position:relative}
        .dark .tl-month{color:#d1d5db}
        .tl-month::before{content:"";position:absolute;left:2px;top:5px;width:8px;height:8px;border-radius:50%;background:#3b82f6}
        .tl-item{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:10px;transition:background .2s}
        .tl-item:hover{background:rgba(59,130,246,.06)}
        .tl-dot{width:5px;height:5px;border-radius:50%;background:#cbd5e1;flex-shrink:0}
        .dark .tl-dot{background:#4b5563}
        .tl-day{font-family:ui-monospace,monospace;font-size:12px;font-weight:700;color:#2563eb;width:44px;text-align:right;flex-shrink:0}
        .dark .tl-day{color:#60a5fa}
        .tl-body{display:flex;align-items:center;gap:10px;min-width:0;flex:1;flex-wrap:wrap;font-size:14px}
        .dark .tl-body{color:#e5e7eb}

        /* 卡片 */
        .cv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
        .cv-card{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:12px;background:#fff;border:1px solid #e5e7eb;transition:all .2s}
        .dark .cv-card{background:#1e1e1e;border-color:#2a2a2a}
        .cv-card:hover{border-color:#93c5fd;transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.06)}
        .dark .cv-card:hover{border-color:#3b82f6}
        .cv-top{display:flex;align-items:baseline;gap:6px}
        .cv-month{font-size:11px;font-family:ui-monospace,monospace;color:#9ca3af}
        .cv-day{font-size:16px;font-weight:700;font-family:ui-monospace,monospace;color:#2563eb}
        .dark .cv-day{color:#60a5fa}
        .cv-name{font-size:13px;font-weight:600;color:#1f2937;line-height:1.5}
        .dark .cv-name{color:#e5e7eb}
        .cv-card .tag{align-self:flex-start}

        /* 列表 */
        .lv{display:flex;flex-direction:column;gap:2px}
        .lv-item{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:9px;transition:background .18s}
        .lv-item:hover{background:rgba(59,130,246,.06)}
        .lv-date{display:flex;align-items:baseline;gap:5px;flex-shrink:0;width:86px}
        .lv-m{font-size:11px;font-family:ui-monospace,monospace;color:#9ca3af}
        .lv-d{font-size:13px;font-weight:700;font-family:ui-monospace,monospace;color:#2563eb}
        .dark .lv-d{color:#60a5fa}
        .lv-name{flex:1;min-width:0;font-size:13px;color:#374151;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
        .dark .lv-name{color:#d1d5db}

/* ===== 筛选状态栏 ===== */
.fs{display:grid;grid-template-rows:0fr;opacity:0;overflow:hidden;
    background:rgba(239,246,255,.85);border-bottom:1px solid #dbeafe;
    transition:grid-template-rows .28s ease,opacity .2s ease}
.dark .fs{background:rgba(30,58,138,.12);border-bottom-color:rgba(30,64,175,.3)}
.fs.fs-on{grid-template-rows:1fr;opacity:1}
.fs-inner{overflow:hidden;min-height:0}
.fs-row{max-width:56rem;margin:0 auto;padding:.5rem 1rem .6rem;
    display:flex;align-items:center;gap:.5rem;font-size:11px;
    font-family:ui-monospace,monospace}
.fs-label{color:#6b7280;flex-shrink:0}
.dark .fs-label{color:#9ca3af}
.fs-pills{display:flex;align-items:center;gap:.375rem;flex-wrap:wrap;flex:1;min-width:0}
.fs-pill{display:inline-flex;align-items:center;gap:.375rem;
    padding:.15rem .3rem .15rem .55rem;border-radius:999px;
    background:#dbeafe;color:#1d4ed8;font-weight:600;font-size:10px;
    animation:pillIn .26s cubic-bezier(.22,1,.36,1) both}
.dark .fs-pill{background:rgba(37,99,235,.22);color:#93c5fd}
@keyframes pillIn{from{opacity:0;transform:scale(.85) translateY(-3px)}to{opacity:1;transform:scale(1) translateY(0)}}
.fs-pill .fs-k{opacity:.6;font-weight:400}
.fs-pill button{border:0;background:transparent;cursor:pointer;color:inherit;
    opacity:.55;font-size:13px;line-height:1;padding:0 .1rem;
    transition:opacity .15s,transform .15s}
.fs-pill button:hover{opacity:1;transform:scale(1.15)}
.fs-clear{margin-left:auto;border:0;background:transparent;cursor:pointer;
    color:#6b7280;font-size:10px;font-family:inherit;flex-shrink:0;
    text-decoration:underline;text-decoration-style:dashed;text-underline-offset:2px;
    transition:color .15s}
.fs-clear:hover{color:#1d4ed8}
.dark .fs-clear{color:#9ca3af}
.dark .fs-clear:hover{color:#93c5fd}
