.spinner{display:inline-block;border:2px solid var(--border);border-top-color:var(--app-accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-12) var(--sp-6);gap:var(--sp-2)}.empty-state-icon{font-size:32px;opacity:.4}.empty-state-msg{font-size:var(--fs-md);color:var(--text-secondary);font-weight:var(--fw-medium)}.empty-state-hint{font-size:var(--fs-sm);color:var(--text-tertiary)}.empty-state-action{margin-top:var(--sp-4)}.page-error{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--red-bg);color:#dc2626;border-radius:var(--radius-md);font-size:var(--fs-base);margin-bottom:var(--sp-4)}.page-error-retry{background:none;border:1px solid;color:inherit;padding:2px 10px;border-radius:var(--radius-sm);font-size:var(--fs-sm);cursor:pointer}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-3)}.section-header-left{display:flex;align-items:center;gap:var(--sp-2)}.section-dot{width:8px;height:8px;border-radius:50%}.section-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary)}.section-header-right{display:flex;align-items:center;gap:var(--sp-2)}.freshness-banner{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);font-size:var(--fs-xs);color:var(--text-tertiary);background:var(--surface-1);border-radius:var(--radius-full)}.freshness-stale{background:var(--yellow-bg);color:#92400e}.freshness-warn{font-weight:var(--fw-medium)}.confirm-dialog{background:var(--surface-0);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);padding:var(--sp-6);max-width:400px;width:90vw}.confirm-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--text-primary);margin-bottom:var(--sp-2)}.confirm-message{font-size:var(--fs-base);color:var(--text-secondary);line-height:1.5;margin-bottom:var(--sp-5)}.confirm-actions{display:flex;justify-content:flex-end;gap:var(--sp-2)}.confirm-cancel{height:34px;padding:0 var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--text-secondary);background:var(--surface-0);cursor:pointer}.confirm-cancel:hover{background:var(--surface-1)}.confirm-btn{height:34px;padding:0 var(--sp-4);border:none;border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:#fff;background:var(--app-accent,var(--c-command));cursor:pointer}.confirm-btn:hover{opacity:.9}.confirm-btn:disabled{opacity:.5;cursor:default}.confirm-btn--danger{background:#dc2626}.confirm-btn--danger:hover{background:#b91c1c}