/* =====================================================================
   Snooker Club — connexion, menu, 403  (s'appuie sur theme.css)
   ===================================================================== */

/* =====================================================================
   Connexion
   ===================================================================== */
body.login { display: flex; }

.login-bg {
    position: fixed;
    inset: 0;
    z-index: -2;
    background: url("../img/snooker.jpg") center/cover no-repeat;
    transform: scale(1.05);
    filter: saturate(1.05);
}
body.login::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    background:
        radial-gradient(90% 80% at 50% 30%, rgba(8,17,13,.45), rgba(8,17,13,.86) 85%),
        linear-gradient(180deg, rgba(8,17,13,.55), rgba(8,17,13,.78));
    backdrop-filter: blur(3px);
}

.login-wrap {
    position: relative;
    z-index: 1;
    margin: auto;
    width: 100%;
    max-width: 440px;
    padding: 2rem 1.2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.2rem;
}

.login-card {
    width: 100%;
    padding: clamp(1.8rem, 4vw, 2.6rem);
    text-align: left;
    animation: pop .7s var(--ease) both;
}
.login-card--center { text-align: center; }
.login-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.6rem;
}
.login-card__head .brand { font-size: 1.5rem; }
.login-card__title { font-size: clamp(1.9rem, 6vw, 2.6rem); margin: 0; }
.login-card__sub { margin: .5rem 0 1.7rem; color: var(--ink-soft); }
.login-card--center .login-card__sub { margin-bottom: 1.4rem; }

.login-form { display: flex; flex-direction: column; gap: 1rem; }
.field { display: flex; flex-direction: column; gap: .4rem; }
.field__label {
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--ink-soft);
}
.field__input {
    width: 100%;
    padding: .9rem 1.1rem;
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--ink);
    background: rgba(0,0,0,.28);
    border: 1px solid var(--line);
    border-radius: 12px;
    outline: none;
    transition: border-color .2s var(--ease), box-shadow .2s var(--ease), background .2s var(--ease);
}
.field__input::placeholder { color: var(--ink-dim); }
.field__input:focus {
    border-color: var(--felt-bright);
    box-shadow: 0 0 0 3px rgba(24,160,106,.22);
    background: rgba(0,0,0,.4);
}
.login-form__submit { margin-top: .6rem; width: 100%; }

.login-foot { opacity: .8; }
.login-foot .copyrights { color: var(--ink-soft); }

/* Anneau de statut (succès / erreur) */
.status-ring {
    width: 72px; height: 72px;
    margin: 0 auto 1.2rem;
    display: grid;
    place-items: center;
    border-radius: 50%;
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    line-height: 1;
}
.status-ring--ok  { color: #07140d; background: linear-gradient(135deg, var(--felt-bright), var(--felt)); box-shadow: 0 14px 30px -12px rgba(24,160,106,.8); }
.status-ring--err { color: #fff; background: linear-gradient(135deg, #ef5a4e, var(--ball-red)); box-shadow: 0 14px 30px -12px rgba(226,59,46,.7); font-size: 1.5rem; }

/* =====================================================================
   Menu (hub)
   ===================================================================== */
.app { display: flex; flex-direction: column; min-height: 100vh; }
.app .topbar { position: sticky; }

.hub {
    position: relative;
    z-index: 2;
    flex: 1;
    width: 100%;
    max-width: 980px;
    margin: 0 auto;
    padding: clamp(2.5rem, 7vw, 5rem) clamp(1rem, 4vw, 2.5rem) 3rem;
}
.hub__intro { text-align: center; max-width: 620px; margin: 0 auto clamp(2rem, 5vw, 3rem); }
.hub__title { font-size: clamp(1.9rem, 5vw, 3rem); margin: .6rem 0 0; }
.hub__sub { margin: 1rem auto 0; color: var(--ink-soft); max-width: 48ch; }

.hub__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: clamp(1rem, 2.5vw, 1.6rem);
}
.hub-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: .55rem;
    padding: 1.8rem;
    overflow: hidden;
    color: var(--ink);
    transition: transform .35s var(--ease), border-color .35s var(--ease), box-shadow .35s var(--ease);
    animation: rise .6s var(--ease) both;
}
.hub-card::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    background: var(--accent, var(--felt-bright));
}
.hub-card::after {
    content: "";
    position: absolute;
    top: -40%; right: -20%;
    width: 240px; height: 240px;
    border-radius: 50%;
    background: var(--accent, var(--felt-bright));
    opacity: .12;
    filter: blur(20px);
    transition: opacity .35s var(--ease);
}
.hub-card:hover { transform: translateY(-6px); border-color: var(--accent, var(--brass)); box-shadow: var(--shadow-lg); }
.hub-card:hover::after { opacity: .22; }
.hub-card__icon { font-size: 2.4rem; }
.hub-card__title { font-family: var(--font-display); font-weight: 700; font-size: 1.5rem; }
.hub-card__desc { color: var(--ink-soft); line-height: 1.5; }
.hub-card__go { margin-top: .6rem; font-weight: 700; color: var(--accent, var(--brass)); letter-spacing: .02em; }

@media (max-width: 560px) {
    .login-card__head { flex-direction: column; align-items: flex-start; gap: .4rem; }
}
