@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700;900&display=swap');

:root {
    --frf-forest: #14532d;
    --frf-forest-dark: #0b3a1e;
    --frf-leaf: #22c55e;
    --frf-mist: #eef6ee;
    --frf-cream: #faf8f2;
    --frf-ink: #1c2b22;
    --frf-gold: #d8a531;
    --radius-lg: 16px;
    --radius-md: 10px;
    --shadow-soft: 0 6px 20px rgba(20, 83, 45, 0.10);
}

* {
    font-family: 'Noto Sans JP', -apple-system, BlinkMacSystemFont, "Hiragino Sans", sans-serif;
}

body {
    background-color: var(--frf-cream);
    color: var(--frf-ink);
}

/* ---------- Top-level landing page (index) ---------- */
.frf-hero {
    background: radial-gradient(120% 140% at 50% 0%, var(--frf-leaf) 0%, var(--frf-forest) 55%, var(--frf-forest-dark) 100%);
}

.frf-hero .frf-brandmark {
    letter-spacing: .04em;
    font-weight: 700;
    opacity: .9;
}

.frf-hero h1 {
    font-weight: 900;
    letter-spacing: .01em;
    text-shadow: 0 2px 12px rgba(0,0,0,.25);
}

.frf-hero .btn-light {
    border-radius: 999px;
    padding: .75rem 1.75rem;
    font-weight: 700;
    box-shadow: var(--shadow-soft);
    transition: transform .15s ease, box-shadow .15s ease;
}

.frf-hero .btn-light:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(0,0,0,.20);
}

.frf-hero .btn-outline-light {
    border-radius: 999px;
    padding: .65rem 1.5rem;
    font-weight: 700;
    border-width: 2px;
}

/* ---------- Shared inner-page header ---------- */
.frf-topbar {
    background-color: var(--frf-forest);
    color: #fff;
    box-shadow: var(--shadow-soft);
}

.frf-topbar a.frf-logo {
    color: #fff;
    text-decoration: none;
    font-weight: 900;
    letter-spacing: .01em;
    white-space: nowrap;
}

.frf-topbar a.frf-logo:hover {
    color: var(--frf-gold);
}

.frf-topbar .badge {
    font-weight: 600;
}

.frf-topbar .nav-link {
    color: rgba(255,255,255,.85);
    font-weight: 500;
    border-radius: 999px;
    padding: .35rem .9rem;
    transition: background-color .15s ease, color .15s ease;
}

.frf-topbar .nav-link:hover,
.frf-topbar .nav-link.active {
    background-color: rgba(255,255,255,.15);
    color: #fff;
}

.frf-page-title {
    font-weight: 700;
    color: var(--frf-forest-dark);
}

/* ---------- Cards / panels ---------- */
.frf-panel {
    background: #fff;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-soft);
    padding: 1.25rem;
}

.frf-stage-toolbar .btn-outline-secondary {
    border-radius: 999px;
}

/* ---------- Tables ---------- */
th {
    background-color: var(--frf-forest) !important;
    color: #fff !important;
}

.table-responsive {
    border-radius: var(--radius-md);
    overflow: hidden;
}

#userTable {
    font-size: .92rem;
}

/* Make the whole app scroll comfortably on phones without forcing desktop width */
@media (max-width: 576px) {
    .frf-hero h1 {
        font-size: 1.6rem;
    }
    .frf-page-title {
        font-size: 1.15rem;
    }
    #userTable {
        font-size: .82rem;
    }
}

/* ---------- Ranking chart ---------- */
.frf-chart-wrap {
    background: #fff;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-soft);
    padding: 1rem 1.25rem;
}

footer.frf-footer {
    color: #6b7b70;
    font-size: .85rem;
}
