* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}
:root {
    --primary: #3a8fd1;
    --primary-light: #e8f3fb;
    --text-main: #1a1a1a;
    --text-sub: #6b7280;
    --bg: #f0f5fa;
    --card: #ffffff;
    --border: #d6e4f0;
}
body.dark {
    --primary: #5aafef;
    --primary-light: #1a2d3d;
    --text-main: #e8eaed;
    --text-sub: #9aa0a6;
    --bg: #1a1a2e;
    --card: #16213e;
    --border: #2d3748;
}
/* プレミアム限定テーマ */
body.sakura {
    --primary: #e07a9c;
    --primary-light: #fce7ef;
    --text-main: #3a2129;
    --text-sub: #a06b80;
    --bg: #fdf2f6;
    --card: #ffffff;
    --border: #f5d0dd;
}
body.aqua {
    --primary: #1f8b96;
    --primary-light: #bfe2e8;
    --text-main: #143a40;
    --text-sub: #41707a;
    --bg: #9ec9d1;
    --card: #b9dbe0;
    --border: #88b8c0;
}
body.forest {
    --primary: #5cc27a;
    --primary-light: #1e3a28;
    --text-main: #e6f0e8;
    --text-sub: #9fb3a5;
    --bg: #12241a;
    --card: #1b3324;
    --border: #2d4a37;
}
body {
    font-family:
        "Inter",
        -apple-system,
        BlinkMacSystemFont,
        sans-serif;
    background: var(--bg);
    color: var(--text-main);
    line-height: 1.5;
    transition:
        background 0.2s,
        color 0.2s;
}
#root {
    min-height: 100vh;
}

/* 既存のテーマ・配置を保ち、操作状態とタッチ領域を補う。 */
button:focus-visible, input:focus-visible, a:focus-visible {
    outline: 2px solid var(--primary) !important;
    outline-offset: 3px;
}
.ncs-row-action {
    border: 0;
    background: transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
    min-height: 28px;
    padding: 4px;
}
.ncs-list-search { color: var(--text-main); background: var(--card); }
.ncs-active-filters { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: 6px; }
.ncs-filter-count { font-size: 12px; color: var(--text-sub); }
.ncs-filter-chip, .ncs-reset-filters {
    font: inherit;
    font-size: 12px;
    color: var(--primary);
    background: var(--primary-light);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 5px 10px;
    cursor: pointer;
    overflow-wrap: anywhere;
}
.ncs-reset-filters { background: transparent; }
.ncs-empty-results { padding: 28px 12px; text-align: center; color: var(--text-sub); font-size: 13px; }
.ncs-empty-results p + p { margin-top: 6px; }
@media (max-width: 599px) {
    .ncs-filter-controls button { min-height: 36px; min-width: 36px; }
    .ncs-row-action { min-width: 32px; min-height: 40px; }
    .ncs-filter-chip, .ncs-reset-filters { min-height: 40px; }
}
