:root{--bg:#eef1f6;--panel:rgba(255,255,255,.78);--line:rgba(0,0,0,.08);--text:#1d1d1f;--muted:#6e6e73;--blue:#007aff;--red:#ff3b30;--shadow:0 20px 55px rgba(0,0,0,.12);}
*{box-sizing:border-box} body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",sans-serif;background:linear-gradient(135deg,#f7f8fb,#dce4f2);color:var(--text);min-height:100vh}.app-shell{display:flex;min-height:100vh}.sidebar{width:220px;padding:16px;background:rgba(246,247,251,.72);backdrop-filter:blur(22px);border-right:1px solid var(--line)}.brand{display:flex;gap:12px;align-items:center;margin-bottom:28px}.brand-icon{width:48px;height:48px;display:grid;place-items:center;background:white;border-radius:16px;box-shadow:0 10px 30px rgba(0,0,0,.08);font-size:24px}.brand h1{font-size:18px;margin:0}.brand p{margin:3px 0 0;color:var(--muted);font-size:13px}.nav{width:100%;border:0;background:transparent;text-align:left;padding:13px 14px;border-radius:14px;font-size:15px;margin:4px 0;cursor:pointer;color:#252525}.nav:hover,.nav.active{background:white;box-shadow:0 10px 25px rgba(0,0,0,.08)}.nav.disabled{opacity:.45;cursor:not-allowed}.main{flex:1;padding:20px}.toolbar{height:76px;display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.toolbar h2{font-size:30px;margin:0}.toolbar p{margin:4px 0 0;color:var(--muted)}.traffic{display:flex;gap:8px}.traffic span{width:13px;height:13px;border-radius:50%;background:#ff5f57}.traffic span:nth-child(2){background:#febc2e}.traffic span:nth-child(3){background:#28c840}.page{display:none}.page.active{display:block}.cards{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:18px;margin-bottom:20px}.card,.panel{background:var(--panel);border:1px solid rgba(255,255,255,.65);border-radius:24px;box-shadow:var(--shadow);backdrop-filter:blur(18px)}.card{padding:24px}.card span{color:var(--muted)}.card strong{display:block;font-size:38px;margin-top:10px}.panel{padding:24px}.welcome h3,.panel h3{margin-top:0}.split{display:grid;grid-template-columns:360px 1fr;gap:20px}label{display:block;margin:14px 0 7px;color:var(--muted);font-size:14px}input{width:100%;border:1px solid var(--line);border-radius:14px;padding:13px 14px;font-size:16px;background:rgba(255,255,255,.9);outline:none}input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,122,255,.12)}.actions{display:flex;gap:10px;margin-top:18px}button{border:0;border-radius:14px;padding:12px 15px;font-weight:600;cursor:pointer;background:#fff}.primary{background:var(--blue);color:white}.danger{background:var(--red);color:white}.message{min-height:22px;color:var(--muted)}.list-header{display:flex;gap:18px;justify-content:space-between;align-items:center;margin-bottom:16px}.list-header input{max-width:320px}.adherent-list{display:grid;gap:10px}.row{display:flex;justify-content:space-between;align-items:center;background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:16px;padding:13px 14px}.row strong{display:block}.row span{color:var(--muted);font-size:13px}.row-actions{display:flex;gap:8px}.row-actions button{padding:9px 11px}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:18px}.settings-grid div{background:rgba(255,255,255,.65);border-radius:18px;padding:18px}@media(max-width:900px){.app-shell{flex-direction:column}.sidebar{width:100%;border-right:0;border-bottom:1px solid var(--line)}.cards,.split,.settings-grid{grid-template-columns:1fr}.main{padding:18px}}
.hint{color:var(--muted);line-height:1.45}.dropzone{display:flex;align-items:center;gap:16px;border:2px dashed rgba(0,122,255,.25);border-radius:22px;padding:22px;background:rgba(255,255,255,.55);margin:18px 0}.dropzone input{max-width:280px;background:#fff}.dropzone strong{display:block}.dropzone span{display:block;color:var(--muted);font-size:14px;margin-top:4px}.import-result{margin-top:18px;background:rgba(255,255,255,.62);border-radius:18px;padding:16px;min-height:56px}.import-result h4{margin:0 0 10px}.import-result ul{margin:0;padding-left:20px}.error{color:var(--red);font-weight:700}.resultats-list{display:grid;gap:10px}.result-row{display:flex;justify-content:space-between;align-items:center;gap:18px;background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:16px;padding:14px}.result-row strong,.result-row span,.result-row small{display:block}.result-row span{color:var(--muted);font-size:13px;margin-top:3px}.result-row small{color:#777;font-size:12px;margin-top:5px}.result-row b{font-size:30px;color:var(--blue);min-width:72px;text-align:right}

.stats-grid, .chart-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.mini-table { display: grid; gap: 8px; }
.mini-row { display: grid; grid-template-columns: 1.4fr .7fr .7fr .7fr; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 14px; background: rgba(255,255,255,.58); border: 1px solid rgba(0,0,0,.06); }
.mini-row.header { font-weight: 700; color: #5b6472; background: rgba(246,247,251,.9); }
.mini-row strong { color: #111827; }
.chart-panel { min-height: 360px; }
.chart-panel canvas { width: 100% !important; height: 290px !important; }
@media (max-width: 980px) { .stats-grid, .chart-grid { grid-template-columns: 1fr; } }
.selected-adherent-panel { margin-bottom: 18px; }
.selected-adherent-panel h3 { margin-bottom: 4px; }
.selected-adherent-panel p { color: var(--muted); margin: 0; }
.import-history-panel { margin-top: 18px; }
.imports-list { display: grid; gap: 10px; }
.import-row { display:flex; justify-content:space-between; align-items:center; gap:18px; background:rgba(255,255,255,.72); border:1px solid var(--line); border-radius:16px; padding:14px; }
.import-row strong,.import-row span,.import-row small { display:block; }
.import-row span { color:var(--muted); font-size:13px; margin-top:3px; }
.import-row small { color:#777; font-size:12px; margin-top:5px; }
.status-ok { color:#28c840; font-size:14px; }
code { background:rgba(0,0,0,.06); border-radius:8px; padding:2px 6px; font-size:12px; word-break:break-all; }

/* Connexion sécurisée */
.login-body {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: radial-gradient(circle at top, #f7fbff 0%, #e9eef5 45%, #dce3ec 100%);
}
.login-card {
    width: min(420px, calc(100vw - 32px));
    padding: 34px;
    border-radius: 28px;
    background: rgba(255,255,255,.82);
    box-shadow: 0 24px 60px rgba(31,41,55,.18);
    border: 1px solid rgba(255,255,255,.7);
    backdrop-filter: blur(22px);
}
.login-logo { font-size: 48px; margin-bottom: 8px; }
.login-card h1 { margin: 0; font-size: 30px; letter-spacing: -.04em; text-align: center; }
.login-card p { margin: 6px 0 24px; color: #667085; text-align: center; }
.login-card form { display: grid; gap: 10px; }
.login-card label { font-weight: 700; color: #344054; margin-top: 6px; }
.login-card input {
    width: 100%;
    padding: 13px 14px;
    border-radius: 14px;
    border: 1px solid #d0d5dd;
    font-size: 16px;
    background: rgba(255,255,255,.9);
}
.login-button { margin-top: 12px; width: 100%; justify-content: center; }
.login-error {
    padding: 12px 14px;
    margin-bottom: 16px;
    border-radius: 14px;
    background: #fff1f0;
    color: #b42318;
    border: 1px solid #ffccc7;
    font-weight: 700;
}
.login-card small { display: block; margin-top: 18px; color: #667085; line-height: 1.4; }
.user-box { display:flex; align-items:center; gap:12px; font-weight:700; }
.user-box a { text-decoration:none; color:#b42318; background:#fff1f0; padding:8px 12px; border-radius:12px; }
select{width:100%;border:1px solid var(--line);border-radius:14px;padding:13px 14px;font-size:16px;background:rgba(255,255,255,.9);outline:none}
select:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,122,255,.12)}
.checkbox-line{display:flex;align-items:center;gap:10px;color:var(--text)}
.checkbox-line input{width:auto}
.row small{display:block;color:#777;font-size:12px;margin-top:4px}

/* Sprint 6 - Gestion Présence */
.presence-day-info{margin:10px 0 6px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.65);font-size:14px}
.presence-day-info .ok{color:#157347;font-weight:700}
.presence-day-info .warning{color:#946200;font-weight:700}
.presence-day-info .error{color:#b42318;font-weight:700}
.presence-list{display:flex;flex-direction:column;gap:8px;max-height:520px;overflow:auto;padding-right:6px}
.presence-row{display:grid;grid-template-columns:52px 1fr 92px 92px;align-items:center;gap:12px;padding:10px 14px;border-radius:14px;background:rgba(255,255,255,.72);border:1px solid rgba(0,0,0,.06);transition:.15s ease}
.presence-row:hover{background:rgba(255,255,255,.95);transform:translateY(-1px)}
.presence-row input{width:20px;height:20px;accent-color:#0a84ff}
.presence-row span{font-size:15px}
.presence-row strong{letter-spacing:.02em}
.presence-name{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.presence-slot{display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;padding:6px 8px;border-radius:8px}
.presence-slot span{font-size:12px;color:#555;white-space:nowrap}
.presence-slot:hover{background:rgba(10,132,255,.08)}
.presence-columns-legend{display:grid;grid-template-columns:52px 1fr 92px 92px;align-items:center;gap:12px;padding:0 14px;margin:2px 0 6px;color:#6e6e73;font-size:12px;font-weight:700}
.presence-columns-legend span:nth-child(3),.presence-columns-legend span:nth-child(4){text-align:center}
.badge-creneau{display:inline-block;padding:2px 8px;margin:0 6px;border-radius:999px;background:rgba(10,132,255,.12);color:#0a5cb8;font-size:12px;font-weight:700}
#presences .form-panel .actions{flex-wrap:wrap}
#presences .form-panel .actions button{flex:1 1 calc(50% - 5px);text-align:center;line-height:1.35}
#presences .form-panel .actions #savePresences,
#presences .form-panel .actions #clearPresences{flex-basis:100%}
#presences .form-panel .actions #selectAll1718,
#presences .form-panel .actions #selectAll1819{padding-top:10px;padding-bottom:10px}
#presences .form-panel .actions .nowrap{white-space:nowrap}

/* Occupation des créneaux */
.presence-occupation-panel{margin-top:18px}
.presence-occupation-panel .list-header{align-items:flex-start}
.occupation-cards{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:14px;margin-top:14px}
.card.occupation-card{background:rgba(255,255,255,.92);color:#1d1d1f;min-height:auto;padding:16px 18px;border-left:6px solid #c7c7cc;box-shadow:0 10px 24px rgba(0,0,0,.08);transition:.15s ease}
.card.occupation-card::after{content:none}
.card.occupation-card span{display:block;font-weight:700;color:#5c5c58;font-size:13px}
.card.occupation-card strong{display:block;font-size:26px;color:#141414;margin-top:6px}
.card.occupation-card small{display:block;margin-top:4px;color:#8a8f98;font-size:12px}
.card.occupation-card.occupation-high{border-left-color:#ff5b51}
.card.occupation-card.occupation-mid{border-left-color:#f0d120}
.card.occupation-card.occupation-low{border-left-color:#3f8f3a}
.occupation-highlights{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:14px;margin-top:16px}
.occupation-highlight{padding:16px 18px;border-radius:18px;background:rgba(255,255,255,.72);border:1px solid rgba(0,0,0,.08)}
.occupation-highlight span{display:block;font-size:13px;font-weight:700;color:var(--muted);margin-bottom:4px}
.occupation-highlight strong{display:block;font-size:16px;color:#141414}
.occupation-highlight small{display:block;margin-top:4px;color:var(--muted)}
.occupation-highlight-max{border-color:rgba(255,91,81,.35)}
.occupation-highlight-min{border-color:rgba(63,143,58,.35)}
@media(max-width:900px){.occupation-cards{grid-template-columns:repeat(2,minmax(140px,1fr))}.occupation-highlights{grid-template-columns:1fr}}
.import-row small{display:block;margin-top:6px;color:#667085;line-height:1.35}

/* Présence - fidélité saison */
.presence-stats-panel { margin-top: 18px; }
.fidelity-cards { margin: 12px 0 16px; }
.presence-stats-table { overflow-x: auto; }
.data-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.data-table th, .data-table td { padding: 10px 12px; border-bottom: 1px solid rgba(0,0,0,.08); text-align: left; }
.data-table th { color: #6e6e73; font-weight: 700; background: rgba(255,255,255,.55); }
.badge.fidelity { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: 999px; font-weight: 700; font-size: 13px; background: #f5f5f7; }
.badge.gold { background: #fff4c2; }
.badge.silver { background: #eef0f4; }
.badge.bronze { background: #f8dfc6; }
.badge.participant { background: #e8f1ff; }
.badge.none { background: #f2f2f2; color: #6e6e73; }

/* Résultats - feuille de marque manuelle professionnelle */
.resultats-layout {
    display: grid;
    grid-template-columns: minmax(720px, 1fr) minmax(260px, .36fr);
    gap: 14px;
    align-items: start;
}
.manual-result-panel {
    width: 100%;
    overflow: hidden;
}
.manual-result-top {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 18px;
    margin-bottom: 18px;
}
.manual-result-top h3 { margin-bottom: 4px; }
.score-card {
    min-width: 170px;
    padding: 16px 18px;
    border-radius: 20px;
    background: linear-gradient(135deg, rgba(0,122,255,.14), rgba(52,199,89,.12));
    border: 1px solid rgba(0,122,255,.18);
    text-align: center;
}
.score-card span {
    display: block;
    color: var(--muted);
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.score-card strong {
    display: block;
    margin-top: 2px;
    font-size: 42px;
    line-height: 1;
    color: var(--blue);
    letter-spacing: -.05em;
}
.manual-result-fields {
    display: grid;
    grid-template-columns: repeat(3, minmax(180px, 1fr));
    gap: 14px 16px;
    margin-bottom: 18px;
}
.manual-score-sheet-wrap {
    width: 100%;
    overflow-x: auto;
    padding-bottom: 4px;
}
.manual-score-sheet {
    width: 100%;
    min-width: 720px;
    border-collapse: separate;
    border-spacing: 0;
    overflow: hidden;
    border-radius: 18px;
    border: 1px solid rgba(0,0,0,.08);
    background: rgba(255,255,255,.72);
}
.manual-score-sheet th {
    background: linear-gradient(180deg, #0a84ff, #007aff);
    color: white;
    padding: 12px 10px;
    text-align: center;
    font-size: 13px;
    letter-spacing: .02em;
}
.manual-score-sheet td {
    padding: 8px 10px;
    text-align: center;
    border-bottom: 1px solid rgba(0,0,0,.07);
}
.manual-score-sheet tbody tr:nth-child(even) td { background: rgba(0,122,255,.035); }
.manual-score-sheet tbody tr:last-child td { border-bottom: 0; }
.volley-number {
    font-weight: 800;
    color: var(--blue);
    width: 70px;
}
.manual-score-sheet input {
    width: 100%;
    min-width: 88px;
    text-align: center;
    font-size: 18px;
    font-weight: 700;
    border-radius: 12px;
    padding: 10px 8px;
}
.manual-score-sheet .arrow-score {
    background: #fff;
}

.manual-score-sheet .arrow-score.score-ten {
    color: #d00000;
    font-weight: 900;
    border-color: rgba(208,0,0,.45);
    background: #fff5f5;
}
.manual-score-sheet .volley-total,
.manual-score-sheet .general-total {
    background: #f5f7fb;
    color: #1d1d1f;
    border-color: rgba(0,0,0,.08);
}
.manual-score-sheet .general-total {
    color: var(--blue);
}
.manual-result-footer {
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: 14px;
    margin-top: 18px;
    flex-wrap: wrap;
}
.manual-total-box {
    min-width: 150px;
    padding: 14px 16px;
    border-radius: 18px;
    background: rgba(255,255,255,.75);
    border: 1px solid rgba(0,0,0,.07);
}
.manual-total-box span {
    display: block;
    color: var(--muted);
    font-size: 13px;
    font-weight: 700;
}
.manual-total-box strong {
    display: block;
    margin-top: 2px;
    font-size: 30px;
    color: var(--blue);
}

.manual-count-ten strong {
    color: #d00000;
}
.manual-count-nine strong {
    color: #d66b00;
}
.manual-count-eight strong {
    color: #0a84d8;
}
.manual-actions {
    margin-left: auto;
    align-items: center;
}
.result-history-panel {
    min-width: 0;
}
.result-history-panel.panel {
    padding: 16px;
}
.result-history-panel .result-row {
    gap: 10px;
    padding: 10px;
}
.result-history-panel .result-row b {
    font-size: 24px;
    min-width: 50px;
}

@media (max-width: 1180px) {
    .resultats-layout { grid-template-columns: 1fr; }
    .manual-result-fields { grid-template-columns: repeat(2, minmax(180px, 1fr)); }
}
@media (max-width: 720px) {
    .manual-result-top { flex-direction: column; }
    .score-card { width: 100%; }
    .manual-result-fields { grid-template-columns: 1fr; }
    .manual-score-sheet { min-width: 720px; }
}

.best-score-detail {
    display: block;
    margin-top: 6px;
    font-size: 0.85rem;
    font-weight: 600;
    opacity: 0.75;
}

/* Thème USC Marseille - noir et jaune - uniquement visuel */
:root{
    --bg:#f2f1ec;
    --panel:rgba(255,255,255,.92);
    --line:rgba(0,0,0,.12);
    --text:#141414;
    --muted:#5c5c58;
    --blue:#141414;
    --green:#3f8f3a;
    --orange:#c9a227;
    --purple:#4a4a46;
    --shadow:0 18px 40px rgba(0,0,0,.18);
}
body{
    background:
        radial-gradient(circle at 76% 0%, rgba(240,209,32,.12) 0 10%, transparent 30%),
        radial-gradient(circle at 10% 100%, rgba(240,209,32,.08) 0 12%, transparent 34%),
        radial-gradient(circle at top, #2a2a2a 0%, #141414 55%, #000000 100%);
    background-attachment: fixed;
    color:var(--text);
    position:relative;
    overflow-x:hidden;
}
body::before{
    content:"";
    position:fixed;
    inset:0;
    pointer-events:none;
    z-index:-1;
    background:
        radial-gradient(ellipse at 84% 0%, rgba(240,209,32,.10), transparent 32%),
        radial-gradient(ellipse at 8% 100%, rgba(240,209,32,.07), transparent 28%);
}
body::after{
    content:"";
    position:fixed;
    top:-40px;
    right:-60px;
    width:420px;
    height:220px;
    pointer-events:none;
    opacity:.35;
    z-index:-1;
    background:
        radial-gradient(ellipse at 18% 70%, rgba(240,209,32,.5) 0 18%, transparent 19%),
        radial-gradient(ellipse at 34% 52%, rgba(240,209,32,.42) 0 18%, transparent 19%),
        radial-gradient(ellipse at 50% 34%, rgba(240,209,32,.36) 0 18%, transparent 19%),
        radial-gradient(ellipse at 66% 18%, rgba(240,209,32,.3) 0 18%, transparent 19%);
    transform:rotate(-13deg);
    filter:blur(6px);
}
.app-shell{background:transparent}.sidebar{
    width:200px;
    background:linear-gradient(180deg, #1c1c1c, #000000);
    border-right:1px solid rgba(240,209,32,.22);
    color:#fff;
    box-shadow:14px 0 36px rgba(0,0,0,.25);
}
.brand-icon{border-radius:50%;background:#000;box-shadow:0 12px 26px rgba(0,0,0,.4);padding:3px;overflow:hidden}
.brand h1{color:#fff}.brand p{color:rgba(240,209,32,.85)}
.nav{color:rgba(255,255,255,.88);font-weight:700;transition:.16s ease}.nav:hover,.nav.active{background:#f0d120;color:#141414;box-shadow:0 12px 24px rgba(240,209,32,.28);transform:translateY(-1px)}
.nav.disabled{color:rgba(255,255,255,.4)}
.main{padding:22px 24px}.toolbar{height:auto;margin-bottom:24px}.toolbar h2{font-size:34px;letter-spacing:-.04em;color:#fff}.toolbar p{color:rgba(255,255,255,.65)}.user-box{color:#fff}.user-box a{background:rgba(255,255,255,.08);color:#f0d120;border:1px solid rgba(240,209,32,.35)}
.card,.panel{
    background:rgba(255,255,255,.92);
    border:1px solid rgba(0,0,0,.08);
    border-radius:18px;
    box-shadow:var(--shadow);
    backdrop-filter:blur(18px);
}
.card{padding:22px 24px;color:#fff;min-height:132px;position:relative;overflow:hidden}.card::after{content:"";position:absolute;right:-28px;bottom:-28px;width:120px;height:120px;border-radius:50%;background:rgba(240,209,32,.16)}
.card span{color:rgba(255,255,255,.85);font-weight:700}.card strong{font-size:36px;color:#fff}.cards .card:nth-child(1){background:linear-gradient(135deg,#1c1c1c,#000000)}.cards .card:nth-child(2){background:linear-gradient(135deg,#3a3a3a,#161616)}.cards .card:nth-child(3){background:linear-gradient(135deg,#f0d120,#dcb914)}.cards .card:nth-child(3) span{color:rgba(20,20,20,.72)}.cards .card:nth-child(3) strong{color:#141414}.cards .card:nth-child(3)::after{background:rgba(20,20,20,.08)}.cards .card:nth-child(4){background:linear-gradient(135deg,#2a2a2a,#000000)}
.best-score-detail{color:rgba(255,255,255,.95);opacity:1;font-size:.9rem;line-height:1.35}.panel h3{font-size:22px;color:#141414}.hint{color:#5c5c58}.split{grid-template-columns:330px 1fr}.list-header h3{margin:0}.list-header input{background:#fff;border-color:rgba(0,0,0,.14)}
input,select{border-color:rgba(0,0,0,.16);background:rgba(255,255,255,.96)}input:focus,select:focus{border-color:#141414;box-shadow:0 0 0 4px rgba(240,209,32,.28)}
.primary{background:#f0d120;color:#141414}.primary:hover{background:#dcb914}.danger{background:linear-gradient(135deg,#ff5b51,#d92d20);color:#fff}button:not(.nav):not(.primary):not(.danger):not(.tile){background:#fff;color:#25252a;border:1px solid rgba(0,0,0,.12)}
.row,.result-row,.import-row,.mini-row,.presence-row{background:rgba(255,255,255,.8);border-color:rgba(0,0,0,.1)}.result-row b{color:#141414}.mini-row.header,.data-table th{background:rgba(240,209,32,.18);color:#141414}
.resultats-layout{grid-template-columns:minmax(760px,1fr) minmax(240px,.31fr);gap:14px}.result-history-panel.panel{padding:14px}.manual-score-sheet{background:rgba(255,255,255,.88);border-color:rgba(0,0,0,.12)}.manual-score-sheet th{background:linear-gradient(180deg,#1c1c1c,#000000);color:#f0d120}.volley-number,.manual-score-sheet .general-total,.manual-total-box strong,.score-card strong{color:#141414}.score-card{background:linear-gradient(135deg,rgba(240,209,32,.18),rgba(0,0,0,.05));border-color:rgba(240,209,32,.3)}
.manual-score-sheet tbody tr:nth-child(even) td{background:rgba(240,209,32,.06)}.manual-score-sheet .arrow-score.score-ten{color:#8a6d1a;background:#fdf6df;border-color:rgba(201,162,39,.5)}
html{min-height:100%;background:#000}
body.login-body{margin:0;min-height:100vh;min-height:100dvh;width:100%;background-color:#000;background-image:radial-gradient(circle at top,#2a2a2a 0%,#141414 55%,#000000 100%);background-repeat:no-repeat;background-attachment:fixed;position:relative;overflow-x:hidden}
body.login-body::after{content:none}
.login-body::before{content:"";position:absolute;top:auto;left:auto;bottom:-40px;right:-30px;width:300px;height:880px;background-image:url('../img/bonne-mere.png');background-size:contain;background-repeat:no-repeat;background-position:bottom right;opacity:.28;pointer-events:none;z-index:0;filter:drop-shadow(0 0 30px rgba(240,209,32,.12));-webkit-transform:translateZ(0);transform:translateZ(0)}
.login-body .login-card{position:relative;z-index:1;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px)}
@media(max-width:600px){.login-body::before{width:170px;height:500px;opacity:.2}}
@media(max-width:900px){.sidebar{width:100%;background:linear-gradient(135deg,#1c1c1c,#000000)}.main{padding:18px}.toolbar h2{font-size:30px}}
/* Fenêtre liste des présences */
.presence-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.38);display:none;align-items:center;justify-content:center;z-index:9999;padding:20px}.presence-modal-backdrop.open{display:flex}.presence-modal{width:min(520px,100%);max-height:82vh;overflow:auto;background:rgba(255,255,255,.96);border:1px solid rgba(255,255,255,.75);border-radius:24px;box-shadow:0 24px 80px rgba(0,0,0,.22);padding:22px}.presence-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:14px}.presence-modal-header h3{margin:0}.presence-modal-header .hint{margin:4px 0 0}.presence-details-list ol{margin:0;padding-left:24px}.presence-details-list li{padding:9px 0;border-bottom:1px solid var(--line)}.presence-details-list li:last-child{border-bottom:0}

/* Masquer uniquement le panneau Historique des résultats dans la vue Ajout manuel */
#resultats .result-history-panel{display:none}
#resultats .resultats-layout{grid-template-columns:1fr}


.sidebar{display:flex;flex-direction:column}
.sidebar nav{flex:1}
.external-link{text-decoration:none;text-align:left;display:block}
.sidebar-footer{margin-top:auto;padding:16px 12px;font-size:12px;color:#bbb;text-align:center;border-top:1px solid rgba(255,255,255,.1)}

/* Grille de tuiles remplaçant le menu latéral (page Tableau de bord) —
   même style « plaque en relief, effet métal éclairé par un spot jaune/noir »
   que sur tir.mcss.fr. */
.app-shell-nomenu .main{flex:1 1 auto;max-width:1400px;width:100%;margin:0 auto}
.tile-group{margin-bottom:26px}
.tile-group-title{margin:0 0 12px;font-size:.82rem;font-weight:800;letter-spacing:.04em;color:#f0d120;text-transform:uppercase}
.tile-menu{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(170px,220px);justify-content:center;overflow-x:auto;gap:18px;margin-bottom:0;padding-bottom:4px}
.tile-menu .tile{
    position:relative;overflow:hidden;border-radius:16px;padding:22px 16px 18px;
    background:
        radial-gradient(circle at 28% 18%, rgba(232,182,44,.4) 0%, rgba(232,182,44,.1) 28%, rgba(0,0,0,.6) 68%, rgba(0,0,0,.85) 100%),
        repeating-linear-gradient(100deg, rgba(255,255,255,.035) 0px, rgba(255,255,255,.035) 1px, transparent 1px, transparent 4px),
        linear-gradient(160deg, #3a3f4a 0%, #20242c 45%, #0c0d0f 100%);
    box-shadow:
        0 6px 0 0 #050506,
        0 10px 18px rgba(0,0,0,.5),
        inset 0 1px 0 rgba(255,255,255,.12),
        inset 0 -1px 0 rgba(0,0,0,.5);
    display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;
    cursor:pointer;border:0;font:inherit;
    transition:transform .16s ease,box-shadow .16s ease;
}
.tile-menu .tile:hover,.tile-menu .tile:focus-visible{
    transform:translateY(2px);
    box-shadow:0 3px 0 0 #050506, 0 6px 12px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.12), inset 0 -1px 0 rgba(0,0,0,.5);
    outline:none;
}
.tile-menu .tile .tic{
    width:72px;height:72px;border-radius:50%;margin:0 auto;flex-shrink:0;
    background:radial-gradient(circle at 30% 24%, #e8c878, #6b5a30 40%, #12151a 78%);
    box-shadow:inset 0 3px 4px rgba(255,236,180,.25), inset 0 -6px 9px rgba(0,0,0,.6), 0 4px 8px rgba(0,0,0,.5);
    display:flex;align-items:center;justify-content:center;font-size:28px;
}
.tile-menu .tile h4{margin:0;font-size:.92rem;color:#ecebf0;font-weight:700}
@media(max-width:900px){.tile-menu{grid-auto-columns:minmax(130px,150px);gap:12px}}

/* Glisser-déposer des tuiles et des catégories du tableau de bord. */
.tile-category{margin-bottom:26px;border:1px solid #b0b0b0;border-radius:18px;padding:18px}
.tile-group-title-row{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.tile-group-title-row .tile-group-title{margin:0}
.tile-category-drag{cursor:grab;opacity:.5;font-size:1rem;line-height:1;user-select:none;color:#f0d120}
.tile-category-drag:hover{opacity:1}
.tile-category.tile-category-dragging{opacity:.4;cursor:grabbing;user-select:none}
.tile-menu .tile{cursor:grab}
.tile-menu .tile.tile-dragging{opacity:.4;cursor:grabbing;user-select:none}

/* Pavés statistiques du tableau de bord : même liseré vert pomme centré que
   sur tir.mcss.fr/admin-accueil.php. Scopé à #dashboard pour ne pas toucher
   les autres cartes (ex. page Statistiques). */
#dashboard .cards .card{text-align:center;border-color:#8DB600}

/* Paramètres modifiables */
.editable-settings .settings-card {
    min-height: 180px;
}
.settings-list {
    display: grid;
    gap: 10px;
}
.settings-edit-row {
    display: grid;
    grid-template-columns: 60px 1fr auto;
    gap: 8px;
    align-items: center;
    padding: 10px;
    border-radius: 14px;
    background: rgba(255,255,255,.72);
    border: 1px solid rgba(0,0,0,.06);
}
.settings-edit-row:has(.param-order) {
    grid-template-columns: 60px 74px 1fr auto;
}
.param-id {
    color: var(--muted);
    font-size: 12px;
    font-weight: 700;
}
.settings-edit-row input {
    padding: 10px 11px;
    font-size: 14px;
}
.param-order {
    text-align: center;
}
.settings-edit-row button {
    padding: 10px 12px;
}

.settings-add-row {
    background: rgba(36, 100, 185, .08);
    border-style: dashed;
}
.settings-add-row .param-id {
    color: #2464b9;
}
.settings-add-row .param-label::placeholder,
.settings-add-row .param-order::placeholder {
    color: #8a8f98;
}

@media(max-width:700px){
    .settings-edit-row,
    .settings-edit-row:has(.param-order) {
        grid-template-columns: 1fr;
    }
}

.registered-results-panel {
    margin-top: 0;
}
.registered-resultats-list {
    margin-top: 14px;
}
.registered-result-row strong {
    font-size: 15px;
}
.resultats-toolbar {
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}
.resultats-toolbar input {
    min-width: 240px;
}

/* Photo d'identité adhérent */
.adherent-row-main{display:flex;align-items:center;gap:12px;min-width:0}
.adherent-photo-thumb{width:46px;height:59px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:#f2f2f2;flex:0 0 auto}
.adherent-photo-thumb[src=""]{display:inline-block}
.adherent-photo-thumb[src=""]::after{content:""}
.photo-dropzone{display:flex;align-items:center;gap:14px;border:2px dashed rgba(0,122,255,.28);border-radius:18px;background:rgba(255,255,255,.62);padding:14px;margin-top:6px;transition:.15s ease}
.photo-dropzone.dragover{border-color:var(--blue);background:rgba(0,122,255,.08)}
.photo-dropzone strong{display:block;font-size:14px}
.photo-dropzone span{display:block;color:var(--muted);font-size:12px;margin:4px 0 10px;line-height:1.35}
.photo-preview{width:78px;height:100px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:linear-gradient(135deg,#f5f5f7,#e6e9ef);flex:0 0 auto}
.photo-preview:not(.has-photo){opacity:.55}
#choosePhoto{padding:9px 11px}


/* Photo d'identité dans la gestion présence */
.presence-row-with-photo{align-items:center;gap:12px}
.presence-photo-thumb{width:52px;height:52px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#f2f2f2}
.presence-photo-thumb[src=""]{opacity:.35}


/* Pré-inscription */
.badge.essai{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;margin-right:6px;border-radius:999px;background:#e8f7ec;color:#20763d;font-size:12px;font-weight:800;vertical-align:middle}
.badge.essai-termine{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;margin-right:6px;border-radius:999px;background:#fee2e2;color:#b42318;font-size:12px;font-weight:800;vertical-align:middle;box-shadow:0 0 0 1px rgba(180,35,24,.2) inset}
.lateralite-choice{display:flex;gap:18px;margin:4px 0 2px}
.radio-inline{display:inline-flex;align-items:center;gap:7px;font-weight:600;cursor:pointer}
.radio-inline input{width:auto;margin:0}
#preinscription .adherent-row-main{align-items:flex-start}
#preinscription .row small{margin-top:2px}

/* Tuile "Archers en essai" sur le tableau de bord */
.dashboard-preinscription-panel{margin-top:18px}
.preinscription-chip-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
.preinscription-chip{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px;padding:9px 14px;border:1px solid rgba(32,118,61,.25);border-radius:14px;background:#e8f7ec;color:#20763d;font-size:13px;cursor:pointer;transition:.16s ease;text-align:left}
.preinscription-chip::before{content:"🌱";font-size:13px}
.preinscription-chip:hover{background:#d9f2e0;transform:translateY(-1px)}
.preinscription-chip-name{font-weight:800}
.pastille{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}
.pastille-dates{background:rgba(255,255,255,.75);color:#0a5cb8}
.pastille-alert{background:#fdecc8;color:#9a6700;box-shadow:0 0 0 1px rgba(154,103,0,.25) inset}
