:root {
    --app-bg-0: #f3f7fb;
    --app-bg-1: #edf4fa;
    --app-ink: #1c2430;
    --app-muted: #6b7b8f;
    --app-primary: #0e7a83;
    --app-primary-dark: #0c5e65;
    --app-panel: #ffffff;
    --app-border: #d8e3ec;
    --app-shadow: 0 14px 38px rgba(21, 39, 57, 0.08);
}

body {
    font-family: 'Noto Sans JP', system-ui, -apple-system, sans-serif;
    color: var(--app-ink);
    background:
        radial-gradient(circle at 20% 0%, #dff0ff 0%, rgba(223, 240, 255, 0) 45%),
        radial-gradient(circle at 90% 10%, #e0f7f4 0%, rgba(224, 247, 244, 0) 40%),
        linear-gradient(180deg, var(--app-bg-0), var(--app-bg-1));
    min-height: 100vh;
}

.app-shell { max-width: 1260px; }

.app-navbar {
    background: linear-gradient(120deg, var(--app-primary-dark), #113a55);
    box-shadow: 0 10px 26px rgba(6, 24, 34, 0.25);
}

.app-navbar .navbar-brand,
.app-navbar .nav-link { color: #e8f2f6; }

.app-navbar .nav-link {
    border-radius: 999px;
    padding-inline: 0.85rem;
}

.app-navbar .nav-link:hover,
.app-navbar .nav-link:focus {
    background: rgba(255, 255, 255, 0.12);
    color: #ffffff;
}

.brand-mark {
    width: 1.9rem;
    height: 1.9rem;
    display: inline-grid;
    place-items: center;
    border-radius: 0.65rem;
    background: rgba(255, 255, 255, 0.16);
}

h1, .h1, h2, .h2, h3, .h3, .h4 {
    letter-spacing: 0.01em;
    font-weight: 700;
    color: #162538;
}

.card,
form.card,
.table,
.alert,
.pagination { border-radius: 14px; }

.card,
form.card {
    border: 1px solid var(--app-border);
    box-shadow: var(--app-shadow);
}

form.card .form-label {
    font-size: 0.84rem;
    color: var(--app-muted);
    margin-bottom: 0.35rem;
}

.form-control,
.form-select {
    border-radius: 10px;
    border-color: #ccdae7;
}

.form-control:focus,
.form-select:focus {
    border-color: #84bec3;
    box-shadow: 0 0 0 0.2rem rgba(14, 122, 131, 0.16);
}

.btn-primary {
    background: linear-gradient(120deg, var(--app-primary), #0b6575);
    border-color: #0c6e7a;
}

.btn-primary:hover,
.btn-primary:focus {
    background: linear-gradient(120deg, #0b6a72, #0a5561);
    border-color: #0a5561;
}

.table {
    background: var(--app-panel);
    border: 1px solid var(--app-border);
    box-shadow: var(--app-shadow);
    overflow: hidden;
}

.table thead th {
    background: #edf4fa;
    color: #33485f;
    font-size: 0.82rem;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    vertical-align: middle;
}

.table td { vertical-align: middle; }

.table small {
    font-size: 0.78rem;
    line-height: 1.45;
}

.alert {
    border: 1px solid transparent;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06);
}

.badge.text-bg-danger {
    border-radius: 999px;
    font-size: 0.7rem;
    padding: 0.32rem 0.55rem;
}

.pagination .page-link {
    border: 1px solid #cddae5;
    color: #284157;
}

.pagination .active .page-link {
    background-color: var(--app-primary);
    border-color: var(--app-primary);
}
