:root { --ink:#0b2d3b; --sea:#08758c; --sea-deep:#07516a; --aqua:#18a8bb; --foam:#e8f6f8; --surface:#f5fafb; --line:#c5dde3; --danger:#a82626; --ok:#18714c; --card:#fff; font-family:system-ui,-apple-system,"Segoe UI",sans-serif; color:var(--ink); background:var(--surface); }
* { box-sizing:border-box; }
body { margin:0; min-height:100vh; background:radial-gradient(circle at 8% 5%,#dff4f8 0,transparent 22rem),radial-gradient(circle at 94% 22%,#ebf8fa 0,transparent 24rem),var(--surface); }
.app-shell { width:min(1080px,100%); margin:0 auto; padding:20px 16px 48px; }
.brand { display:flex; align-items:center; gap:12px; margin-bottom:24px; }
.brand-mark { width:44px; height:44px; display:grid; place-items:center; border-radius:50%; background:var(--sea); color:#fff; font-size:23px; }
.brand h1 { margin:0; font-size:1.35rem; }.brand p { margin:2px 0 0; color:#51656d; font-size:.9rem; }
.card { background:var(--card); border:1px solid var(--line); box-shadow:0 5px 22px #075a7317; border-radius:14px; padding:20px; margin-bottom:16px; }
.auth-card { max-width:460px; margin:8vh auto; }.auth-card h2,.card h2 { margin-top:0; }.muted { color:#586a72; }.notice { border-left:4px solid var(--sea); padding:10px 12px; background:var(--foam); border-radius:4px; }.error { color:var(--danger); min-height:1.3em; }.success { color:var(--ok); min-height:1.3em; }
label { display:block; font-weight:650; margin:14px 0 5px; } input,select,textarea { width:100%; min-height:44px; padding:9px 11px; border:1px solid #93b4be; border-radius:8px; font:inherit; background:#fff; } textarea { resize:vertical; } input:focus,select:focus,textarea:focus { outline:3px solid #8ed2df; outline-offset:1px; }
button { min-height:44px; border:0; border-radius:8px; padding:9px 14px; background:var(--sea); color:#fff; box-shadow:0 1px 2px #073e5126; font:inherit; font-weight:700; cursor:pointer; } button:hover { background:#073e51; } button.secondary { color:#07536a; background:#dceff3; box-shadow:none; } button.secondary:hover { background:#c8e5ea; color:#063f52; } button.danger { background:var(--danger); } button:disabled { opacity:.55; cursor:wait; }
.actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:18px; }.topbar { display:flex; justify-content:space-between; align-items:start; gap:12px; }.roles { display:flex; flex-wrap:wrap; gap:6px; }.badge { padding:3px 8px; border-radius:99px; background:#dceef2; color:#174d60; font-size:.8rem; }
.account-list { display:grid; gap:12px; }.person { border:1px solid var(--line); border-radius:10px; padding:14px; }.person-head { display:flex; justify-content:space-between; gap:10px; align-items:start; }.person h3 { margin:0; font-size:1rem; }.person p { margin:5px 0; }.person summary { color:var(--sea); cursor:pointer; font-weight:650; margin-top:10px; }.check-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:12px 0; }.check-grid label { margin:0; font-weight:500; display:flex; gap:7px; align-items:center; }.check-grid input { width:auto; min-height:auto; }.row { display:grid; gap:10px; grid-template-columns:1fr 1fr; }.hidden { display:none!important; }
.toggle { margin:12px 0; font-weight:500; display:flex; align-items:center; gap:8px; cursor:pointer; }.toggle input { width:auto; min-height:auto; margin:0; }
.member-tools { display:grid; grid-template-columns:1fr 180px; gap:10px; margin:18px 0; }.member-row { padding:0; overflow:hidden; }.person-link { width:100%; min-height:0; background:transparent; color:var(--ink); text-align:left; padding:14px; border-radius:0; display:flex; justify-content:space-between; gap:10px; font-weight:400; }.person-link:hover { background:var(--foam); color:var(--ink); }.person-link span:not(.registration-badges):not(.caci-status):not(.license-status):not(.license-qr) { color:#586a72; font-size:.9rem; }.person-link strong { font-weight:700; } hr { border:0; border-top:1px solid var(--line); margin:22px 0; }
.credential-list { display:grid; gap:8px; }.credential-choice { display:block; margin:0; padding:10px 12px; border:1px solid var(--line); border-radius:8px; font-weight:500; }.credential-list .credential-choice > label { display:inline-flex; width:auto; align-items:center; gap:9px; margin:0; cursor:pointer; }.credential-list .credential-choice > label input { flex:0 0 auto; width:20px !important; height:20px; min-height:20px; margin:0; padding:0; }.account-list .person > label.credential-choice { display:flex; align-items:flex-start; justify-content:flex-start; gap:10px; width:100%; }.account-list .person > label.credential-choice input { flex:0 0 auto; width:20px !important; height:20px; min-height:20px; margin:2px 0 0; padding:0; }.account-list .person > label.credential-choice span { flex:1; }.credential-state { display:block; margin:4px 0 0 29px; font-size:.86rem; white-space:normal; }.credential-state.validated { color:var(--ok); font-weight:650; }.credential-state.pending { color:#8a5b00; }
@media (max-width:620px) { .app-shell{padding:14px 12px 36px}.auth-card{margin:3vh auto}.row{grid-template-columns:1fr}.check-grid{grid-template-columns:1fr}.topbar{flex-direction:column}.person-head{flex-direction:column} }
@media (max-width:620px) { .member-tools{grid-template-columns:1fr}.person-link{flex-direction:column;align-items:start} }
@media (max-width:620px) { .caci-document-frame { min-height:calc(100dvh - 160px); } .caci-image-frame { max-height:calc(100dvh - 160px); } }
.document-link { color:var(--sea); font-weight:650; }.document-link:hover { color:var(--sea-deep); text-decoration:underline; }button.document-link { min-height:0; padding:0; border:0; border-radius:0; color:var(--sea); background:transparent; box-shadow:none; font:inherit; font-weight:650; text-align:left; }button.document-link:hover { color:var(--sea-deep); background:transparent; box-shadow:none; transform:none; }.caci-document-frame,.caci-image-frame { display:block; width:100%; min-height:70vh; margin-top:16px; border:1px solid var(--line); border-radius:10px; background:#fff; }.caci-image-frame { min-height:0; overflow:auto; }.caci-document-image { display:block; width:100%; max-width:100%; height:auto; }.qr-preview { display:block; width:min(320px,100%); height:auto; margin:16px auto; padding:10px; border:1px solid var(--line); border-radius:10px; background:#fff; }
.file-action { display:inline-flex; align-items:center; min-height:44px; margin:0; padding:9px 14px; border-radius:8px; color:var(--sea); background:#e3f2f5; cursor:pointer; }.file-action input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }.qr-camera { display:block; width:min(480px,100%); max-height:55vh; margin:16px auto 0; border-radius:10px; background:#000; }
.password-control { display:flex; align-items:stretch; gap:6px; }.password-control input { min-width:0; }.password-toggle { flex:0 0 auto; min-height:44px; padding:7px 10px; color:var(--sea); background:#e3f2f5; font-size:1.05rem; }
.registration-list { display:grid; gap:8px; padding:0; list-style:none; }.registration-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px; border:1px solid var(--line); border-radius:8px; }.registration-credentials { margin-top:3px; color:#586a72; font-size:.9rem; font-weight:650; }.registration-comment { margin:5px 0 0; color:#586a72; font-size:.9rem; }.registration-badges { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:5px; }.attendance-section { margin-top:22px; }.attendance-section h3 { margin:0 0 10px; }.attendance-search { display:block; max-width:420px; margin:0 0 10px; }.attendance-search input { margin-top:5px; }.attendance-controls { display:flex; align-items:center; gap:5px; flex-wrap:wrap; justify-content:flex-end; }.attendance-action { min-height:36px; padding:5px 9px; font-size:.82rem; }.attendance-action:disabled { cursor:default; opacity:1; }.attendance-state { flex:0 0 auto; padding:3px 8px; border-radius:999px; color:#35505c; background:#e5edf0; font-size:.82rem; font-weight:700; }.attendance-present { background:#1c8650; color:#fff; }.attendance-absent { background:#b33845; color:#fff; }.caci-status,.license-status,.license-qr { flex:0 0 auto; padding:3px 8px; border-radius:999px; font-size:.82rem; font-weight:700; }.caci-valid { color:#126b39; background:#dff5e7; }.caci-expired { color:#8a4b09; background:#fff0cf; }.caci-absent { color:#8b2430; background:#fde4e8; }.license-present { color:#165d86; background:#dceff9; }.license-absent { color:#775a14; background:#fff3cf; }.license-qr { color:#56408e; background:#ece7fb; }
.training-person-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:8px; }.training-person-choice { min-height:64px; padding:9px 11px; background:#fff; color:var(--ink); border:1px solid var(--line); text-align:left; }.training-person-choice:hover { background:var(--foam); color:var(--ink); }.training-person-choice.selected { border-color:var(--sea); background:#dff2f5; box-shadow:inset 0 0 0 1px var(--sea); }.training-person-choice small { display:block; margin-top:3px; color:#586a72; }.training-skill-row { margin:12px 0; padding:12px; border:1px solid var(--line); border-radius:10px; background:#fbfdfd; }.training-skill-head { display:flex; align-items:end; gap:10px; }.training-skill-head label { flex:1; margin-top:0; }.training-remove-skill { flex:0 0 auto; min-height:44px; }.training-student-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:8px; margin-top:10px; }.training-student-skill { border:1px solid var(--line); border-radius:8px; padding:10px; background:#fff; }.training-student-skill label { margin:8px 0 0; font-size:.88rem; }.training-student-skill select,.training-student-skill textarea { min-height:38px; margin-top:3px; }.training-student-skill textarea { min-height:60px; }
.training-person-section { margin-top:14px; }.training-person-section h3 { margin:0 0 8px; font-size:.98rem; }.training-person-section + .training-person-section { padding-top:14px; border-top:1px solid var(--line); }
.training-attendance-group,.training-other-members { margin-top:14px; padding:13px; border:1px solid var(--line); border-radius:10px; }.training-attendance-group { background:#f5fbfc; border-color:#cfe3e8; }.training-other-members { background:#fbfdfd; }.training-attendance-group > h3,.training-other-members > h3 { margin:0 0 5px; color:var(--sea); font-size:1rem; }.training-attendance-group > p,.training-other-members > p { margin:0; }
.history-item { border:1px solid var(--line); border-radius:8px; padding:10px 12px; background:#fff; }.history-meta { color:#586a72; font-size:.88rem; margin-bottom:6px; }.training-comment { margin-top:7px; color:#35505c; }.training-level-progress { margin-top:16px; }.training-level-progress > h3 { margin-bottom:8px; }.training-level-progress .chapter { margin:10px 0; padding:10px; border:1px solid var(--line); border-radius:8px; }.training-level-progress h4 { margin:0 0 7px; font-size:.95rem; }.training-progress-skill { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:6px 0; border-top:1px solid #e7eff1; }.training-progress-skill:first-of-type { border-top:0; }.training-status { flex:0 0 auto; padding:3px 8px; border-radius:999px; font-size:.78rem; font-weight:700; white-space:nowrap; }.training-status.not-acquired { background:#fde4e8; color:#8b2430; }.training-status.in-progress { background:#fff0cf; color:#8a4b09; }.training-status.acquired { background:#dff5e7; color:#126b39; }
.training-work-level { display:block; max-width:360px; }.work-group-list { display:grid; gap:10px; margin-top:18px; }.work-group-chapter { border:1px solid var(--line); border-radius:10px; background:#fbfdfd; overflow:hidden; }.work-group-chapter summary { padding:12px; color:var(--sea); font-weight:750; cursor:pointer; }.work-group-skills { display:grid; gap:10px; padding:0 12px 12px; }.work-group-skill { padding:11px; border:1px solid var(--line); border-radius:8px; background:#fff; }.work-group-skill h4 { margin:0 0 9px; font-size:.95rem; }.work-group-status { display:flex; align-items:flex-start; gap:8px; padding:6px 0; border-top:1px solid #e7eff1; }.work-group-status:first-of-type { border-top:0; }.work-group-status p,.work-group-unevaluated { margin:2px 0 0; color:#35505c; font-size:.9rem; }.work-group-unevaluated { padding-top:7px; border-top:1px solid #e7eff1; color:#586a72; }
.training-session-history h4 { margin:0 0 8px; font-size:1rem; }.training-session-assessment { padding:8px 0; border-top:1px solid #e7eff1; }.training-session-assessment:first-of-type { border-top:0; }.training-session-assessment p { margin:5px 0 0; }
.training-student-overview { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:14px 0 18px; }.training-student-overview article { padding:12px; border:1px solid var(--line); border-radius:10px; background:#f7fbfc; }.training-student-overview h3 { margin:0 0 7px; color:var(--sea); font-size:.95rem; }.training-student-overview p { margin:0; }.training-evaluation-list { gap:9px; }.training-evaluation-list .history-item { padding:12px; }.training-evaluation-list .history-meta { font-weight:700; color:#35505c; }.training-student-details { margin-top:12px; border:1px solid var(--line); border-radius:10px; background:#fbfdfd; overflow:hidden; }.training-student-details summary { padding:12px; color:var(--sea); font-weight:750; cursor:pointer; }.training-student-details > :not(summary) { margin-left:12px; margin-right:12px; }.training-student-details .account-list { margin-bottom:12px; }
@media (max-width:620px) { .registration-row { align-items:flex-start; flex-direction:column; gap:6px; }.registration-badges { justify-content:flex-start; }.attendance-controls { width:100%; justify-content:flex-start; }.attendance-action { flex:1 1 40%; } }
.brand { justify-content:space-between; }.brand-identity,.brand-actions { display:flex; align-items:center; gap:10px; }.brand-logo { width:58px; height:46px; object-fit:contain; }.brand-actions { margin-left:auto; }.brand-actions button { min-height:38px; padding:6px 10px; }.brand-actions .brand-logout { min-width:38px; padding:6px; font-size:1.12rem; }.training-candidate-picker { margin-top:10px; padding:12px; border:1px solid var(--line); border-radius:9px; background:#fff; }.training-candidate-picker label { margin-top:0; }.training-preparation-request { margin:0; }.training-attendance-group .actions { margin:10px 0 0; }
.activity-badge.activity-category-training { --activity-color:#2563eb; }.activity-badge.activity-category-pit { --activity-color:#0ea5e9; }.activity-badge.activity-category-sea { --activity-color:#0891b2; }.activity-badge.activity-category-quarry { --activity-color:#16a34a; }.activity-badge.activity-category-no_training { --activity-color:#b4232b; }.activity-badge.activity-category-other { --activity-color:#6b7280; }.activity-badge.activity-category-tiv { --activity-color:#f59e0b; }.activity-badge.activity-category-ag { --activity-color:#8b5cf6; }.activity-badge.activity-category-training_course { --activity-color:#ec4899; }.activity-badge.activity-internal-training { --activity-color:#7c3aed; }.activity-badge.activity-training.activity-internal-training { color:#fff; background:#6d28d9; border-left-color:#5b21b6; }.activity-badge.activity-training.activity-internal-training:hover { color:#fff; background:#5b21b6; }.toggle#activity-notification-choice.is-visible { display:flex; }
@media (max-width:620px) { .brand { align-items:flex-start; }.brand-logo { width:44px; height:38px; }.brand-authenticated .brand-identity h1 { font-size:1.02rem; }.brand-actions { gap:6px; }.brand-actions button { min-height:36px; padding:5px 8px; font-size:.84rem; }.brand-actions .brand-logout { min-width:36px; padding:5px; } }
@media (max-width:620px) { .training-skill-head { align-items:stretch; flex-direction:column; }.training-remove-skill { width:100%; }.training-person-grid,.training-student-grid { grid-template-columns:1fr; } }
@media (max-width:620px) { .training-student-overview { grid-template-columns:1fr; gap:8px; }.training-student-details summary { min-height:46px; display:flex; align-items:center; } }
@media (max-width:620px) { .training-progress-skill { align-items:flex-start; flex-direction:column; gap:4px; } }

/* Accueil personnel et confirmations non bloquantes. */
.member-home-compliance .person-link { align-items:flex-start; }.member-home-compliance .registration-badges { margin-top:.35rem; }.member-home-compliance .caci-expired,.member-home-compliance .caci-absent,.member-home-compliance .license-absent { color:#8b2430; background:#fde4e8; }.home-upcoming > summary { cursor:pointer; color:var(--sea); font-weight:750; }.home-upcoming > .account-list { margin-top:12px; }.app-toast { position:fixed; z-index:1000; left:50%; bottom:calc(20px + env(safe-area-inset-bottom)); transform:translateX(-50%); max-width:calc(100vw - 32px); padding:10px 14px; border-radius:999px; background:#176b43; color:#fff; box-shadow:0 8px 22px rgba(0,0,0,.2); font-weight:750; }
.calendar-toolbar { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px; margin:20px 0 12px; }.calendar-toolbar strong { min-width:180px; text-align:center; font-size:1.08rem; text-transform:capitalize; }.calendar-toolbar button { min-height:38px; padding:6px 12px; }.calendar-weekdays,.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }.calendar-weekdays { gap:4px; margin-bottom:4px; color:#586a72; font-size:.82rem; font-weight:700; text-align:center; }.calendar-day { min-height:116px; padding:6px; border:1px solid var(--line); background:#fff; overflow:hidden; }.calendar-empty { background:#f6fafb; }.calendar-date { color:#586a72; font-size:.84rem; font-weight:700; margin-bottom:5px; }.calendar-day.has-activity .calendar-date { color:var(--ink); }.calendar-entries { display:grid; gap:4px; }.activity-badge { --activity-color:var(--sea); width:100%; min-height:0; padding:5px 7px; border-radius:5px; border-left:4px solid var(--activity-color); background:color-mix(in srgb,var(--activity-color) 13%,#fff); color:var(--ink); font-size:.76rem; font-weight:650; line-height:1.2; text-align:left; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.activity-badge:hover { background:color-mix(in srgb,var(--activity-color) 24%,#fff); color:var(--ink); }.mobile-calendar-agenda { display:none; }
@media (max-width:620px) { .calendar-weekdays,.calendar-grid { display:none; }.mobile-calendar-agenda { display:grid; gap:10px; }.mobile-calendar-day { border:1px solid var(--line); border-radius:9px; padding:10px; }.mobile-calendar-day h3 { margin:0 0 8px; font-size:.95rem; }.mobile-calendar-day .activity-badge { margin:3px 0; padding:9px 10px; font-size:.92rem; white-space:normal; }.calendar-toolbar strong { min-width:150px; }.calendar-toolbar #current-month { width:100%; } }
.rights-group { margin:12px 0; border:1px solid var(--line); border-radius:10px; overflow:hidden; }.rights-group summary { cursor:pointer; padding:12px; font-weight:750; color:var(--sea); background:#fbfdfd; }.rights-head,.rights-row { display:grid; grid-template-columns:minmax(0,1fr) 104px 112px 70px; gap:8px; align-items:center; padding:10px 12px; }.rights-head { background:#eaf6f8; color:#35505c; font-size:.82rem; font-weight:750; }.rights-row { border-top:1px solid #e7eff1; }.rights-row strong,.rights-row small { display:block; }.rights-row small { margin-top:3px; color:#586a72; font-size:.75rem; overflow-wrap:anywhere; }.rights-check { display:flex; justify-content:center; align-items:center; margin:0; }.rights-check input { width:20px; height:20px; min-height:20px; margin:0; padding:0; }.rights-locked,.rights-admin { text-align:center; font-size:1rem; }.rights-locked { opacity:.72; }.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@media (max-width:620px) { .rights-head { display:none; }.rights-row { grid-template-columns:1fr 58px 70px 42px; gap:5px; padding:11px 9px; }.rights-row strong { font-size:.9rem; }.rights-row small { font-size:.68rem; }.rights-check::after { content:attr(data-label); } }
.dashboard-header { padding-bottom:14px; }.dashboard-header h2 { margin:0; }.main-navigation { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }.nav-link { color:var(--sea); background:#e3f2f5; }.nav-link:hover { color:#fff; }.dashboard-utilities { margin-top:10px; }.dashboard-header.is-subscreen { padding:0 0 8px; background:transparent; box-shadow:none; }.dashboard-header.is-subscreen h2,.dashboard-header.is-subscreen .main-navigation,.dashboard-header.is-subscreen .dashboard-utilities,.dashboard-header.is-subscreen .notice { display:none; }.dashboard-header.is-subscreen .topbar { justify-content:flex-end; }.dashboard-header.is-subscreen .topbar > button { min-height:36px; padding:5px 10px; font-size:.88rem; }.calendar-day-select { color:var(--ink); cursor:pointer; text-align:left; border-radius:0; box-shadow:none; }.calendar-day-select:hover,.calendar-day-select.selected { color:var(--ink); background:var(--foam); }.calendar-day-select.selected { box-shadow:inset 0 0 0 2px var(--sea); }.calendar-day-select .calendar-date { display:block; }.calendar-day-select .calendar-entries { min-width:0; }.calendar-day-select .activity-badge { min-width:0; }.activity-title-mobile { display:none; }.activity-badge span { overflow:hidden; text-overflow:ellipsis; }.activity-cancelled { color:var(--ink); border-left-color:#a82626; }.activity-cancelled > span { text-decoration:line-through; }.cancelled-label { color:#a82626; font-weight:800; text-decoration:none; }.activity-badge.activity-training,.activity-badge.activity-no-training { color:#fff; }.activity-badge.activity-training { background:#1769c2; border-left-color:#0d47a1; }.activity-badge.activity-training:hover { background:#0d57a5; color:#fff; }.activity-badge.activity-no-training { background:#b4232b; border-left-color:#7f171d; }.activity-badge.activity-no-training:hover { background:#961d24; color:#fff; }.activity-badge.activity-training.activity-cancelled,.activity-badge.activity-no-training.activity-cancelled { color:#fff; border-left-color:#fff; }.activity-badge.activity-training.activity-cancelled .cancelled-label,.activity-badge.activity-no-training.activity-cancelled .cancelled-label { color:#fff; }.calendar-selection { margin-top:20px; padding-top:16px; border-top:1px solid var(--line); }.calendar-selection h3 { margin:0 0 10px; }.calendar-selection-entry { border:1px solid var(--line); border-radius:9px; overflow:hidden; }.calendar-selection-entry.cancelled { border-color:#d9a7ae; }.calendar-selection-entry .person-link { flex-direction:column; align-items:flex-start; }.activity-status.cancelled { color:#8b2430; font-weight:800; }.activity-status { font-weight:750; }.context-activity .activity-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px 20px; }.context-activity .activity-summary p { margin:8px 0; }.public-registrations { margin-top:22px; border-top:1px solid var(--line); padding-top:16px; }.public-registrations h3 { margin:0 0 8px; }.public-registrations ul { margin:0; padding-left:22px; columns:2; }.context-actions { border-top:1px solid var(--line); padding-top:16px; }
@media (max-width:620px) { .main-navigation { display:grid; grid-template-columns:1fr 1fr; }.main-navigation .nav-link { width:100%; }.context-activity .activity-summary { grid-template-columns:1fr; }.public-registrations ul { columns:1; }.calendar-toolbar { gap:5px; }.calendar-toolbar strong { min-width:140px; font-size:.92rem; }.calendar-toolbar button { min-height:34px; padding:5px 9px; }.calendar-weekdays { display:grid; gap:1px; margin-bottom:1px; font-size:.57rem; }.calendar-grid { display:grid; gap:1px; width:100%; }.calendar-day { min-width:0; min-height:78px; padding:3px; }.calendar-date { margin-bottom:2px; font-size:.68rem; }.calendar-entries { gap:2px; }.calendar-day-select .activity-badge { display:block; min-height:0; padding:3px 4px; border-left-width:2px; font-size:.56rem; line-height:1.12; white-space:nowrap; overflow:hidden; word-break:normal; }.calendar-day-select .activity-title-full { display:none; }.calendar-day-select .activity-title-mobile { display:inline; }.calendar-day-select .activity-cancelled .cancelled-label { display:none; }.calendar-selection { margin-top:14px; } }

/* Lot 2 : profils et outils administratifs. */
.profile-section { margin-top:1.25rem; padding-top:1rem; border-top:1px solid var(--line); }.profile-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(12rem,1fr)); gap:.15rem 1rem; }.profile-grid p { margin:.45rem 0; }.mini-badges { display:flex; flex-wrap:wrap; gap:.35rem; align-items:center; }.mini-badge { display:inline-flex; align-items:center; gap:.25rem; padding:.22rem .5rem; border-radius:999px; background:#edf4f7; font-size:.9rem; }.operational-link { text-align:left; padding:0; border:0; background:transparent; color:inherit; display:grid; gap:.16rem; cursor:pointer; }.operational-link:hover strong { text-decoration:underline; }.nav-count { display:inline-grid; place-items:center; min-width:1.25rem; height:1.25rem; padding:0 .2rem; border-radius:999px; background:var(--sea); color:#fff; font-size:.75rem; }.admin-menu { display:grid; grid-template-columns:repeat(auto-fit,minmax(11rem,1fr)); gap:.65rem; }.audit-list p { padding:.75rem 0; margin:0; border-bottom:1px solid var(--line); }.qr-generated { image-rendering:auto; background:#fff; padding:.35rem; }
.public-registrations ul { columns:1; display:grid; gap:.35rem; padding-left:1.25rem; }.public-registrations li { break-inside:avoid; }
.admin-screen { display:grid; gap:14px; }.admin-screen > .topbar,.admin-screen > .admin-menu { margin:0; }.admin-menu { width:100%; margin-top:.9rem; }.admin-menu > button { min-width:0; min-height:44px; }
.bulk-event-row { display:flex; align-items:stretch; }.bulk-event-select { display:flex; align-items:center; justify-content:center; width:48px; flex:0 0 48px; margin:0; border-right:1px solid var(--line); cursor:pointer; }.bulk-event-select input { width:20px; height:20px; min-height:20px; margin:0; padding:0; }.bulk-event-row .person-link { flex:1; min-width:0; }
@media (max-width:620px) { .profile-grid { grid-template-columns:1fr; }.registration-row > div:first-child { min-width:0; } }

/* Passe V1 : confort mobile, sans changement de fonctionnement. */
html { -webkit-text-size-adjust:100%; }
body { overflow-x:hidden; }
button,input,select,textarea { max-width:100%; }
.card,.person,.person-link,.registration-row,.rights-row,.work-group-skill,.training-student-skill { min-width:0; }
button:focus-visible,a:focus-visible,summary:focus-visible { outline:3px solid #8ed2df; outline-offset:2px; }
.audit-list p { overflow-wrap:anywhere; }

@media (max-width:760px) {
  .app-shell { padding:14px 12px 38px; }
  .brand { margin-bottom:16px; gap:10px; }
  .brand-mark { width:40px; height:40px; font-size:21px; }
  .brand h1 { font-size:1.18rem; }
  .brand p { font-size:.82rem; }
  .card { padding:16px 14px; border-radius:12px; }
  .dashboard-header { padding-bottom:10px; }
  .dashboard-header h2 { font-size:1.3rem; }
  .main-navigation { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:12px; }
  .main-navigation .nav-link { width:100%; min-height:46px; padding:9px 10px; }
  .dashboard-utilities { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  .dashboard-utilities button { width:100%; }
  .topbar { gap:10px; }
  .topbar > .actions { width:100%; margin-top:0; }
  .topbar > .actions > button { flex:1 1 150px; }
  .actions { gap:8px; }
  .context-actions > button,
  form > .actions > button,
  .attendance-controls > button.danger { flex:1 1 150px; }
  .row { gap:8px; }
  label { margin-top:12px; }
  textarea { min-height:96px; }
  .toggle { align-items:flex-start; gap:10px; }
  .toggle input { margin-top:3px; width:20px; height:20px; flex:0 0 20px; }
  .member-tools { gap:8px; margin:14px 0; }
  .person { padding:12px; }
  .person-head { gap:8px; }
  .profile-section { margin-top:1rem; padding-top:.9rem; }
  .profile-grid { gap:.25rem; }
  .qr-preview { width:min(260px,100%); margin:12px auto; }
  .file-action { width:100%; justify-content:center; }
  .password-control { gap:5px; }
  .password-toggle { min-width:46px; }
  .registration-row { padding:11px; }
  .registration-row > div:first-child { width:100%; overflow-wrap:anywhere; }
  .registration-badges,.mini-badges { justify-content:flex-start; }
  .attendance-controls { gap:7px; }
  .attendance-action { min-height:42px; padding:7px 10px; }
  .attendance-state { padding:5px 9px; }
  .training-skill-row { padding:10px; }
  .training-person-choice { min-height:58px; }
  .training-student-skill { padding:10px; }
  .training-status { white-space:normal; }
  .work-group-status { flex-direction:column; gap:3px; }
  .rights-group { margin:10px 0; }
  .rights-row { grid-template-columns:minmax(0,1fr) 56px 66px 40px; padding:11px 8px; }
  .rights-row strong { overflow-wrap:anywhere; }
  .audit-list p { display:grid; gap:4px; padding:12px 0; }
  .bulk-event-row { align-items:flex-start; }
  .bulk-event-select { min-height:56px; width:44px; flex-basis:44px; }
}

@media (max-width:620px) {
  .app-shell { padding:10px 9px 32px; }
  .card { padding:14px 12px; margin-bottom:12px; }
  .brand { margin-bottom:13px; }
  .brand-mark { width:36px; height:36px; font-size:19px; }
  .brand h1 { font-size:1.06rem; }
  .brand p { display:none; }
  .topbar { flex-direction:column; }
  .topbar > button.secondary { width:100%; }
  .main-navigation { grid-template-columns:1fr 1fr; }
  .dashboard-utilities { grid-template-columns:1fr; }
  .dashboard-utilities button { text-align:left; }
  .actions > button { min-height:46px; }
  .context-actions > button,
  form > .actions > button { flex-basis:100%; width:100%; }
  .context-activity .activity-summary { gap:0; }
  .context-activity .activity-summary p { padding:8px 0; margin:0; border-bottom:1px solid #e7eff1; }
  .context-activity .activity-summary p:last-child { border-bottom:0; }
  .public-registrations { margin-top:18px; padding-top:14px; }
  .public-registrations ul { padding-left:0; }
  .public-registrations li { padding:8px 0; border-bottom:1px solid #e7eff1; }
  .public-registrations li:last-child { border-bottom:0; }
  .public-registrations li p { margin:4px 0 0; }
  .registration-list { gap:9px; }
  .attendance-controls { width:100%; }
  .attendance-controls > button { flex:1 1 calc(50% - 5px); }
  .attendance-controls > button.danger { flex-basis:100%; }
  .attendance-search { max-width:none; }
  .training-session-history .person { padding:11px; }
  .training-progress-skill { padding:9px 0; }
  .work-group-chapter summary { padding:13px 11px; }
  .work-group-skills { padding:0 10px 10px; }
  .rights-row { grid-template-columns:minmax(0,1fr) 50px 60px 36px; gap:4px; padding:10px 7px; }
  .rights-row small { font-size:.66rem; }
  .calendar-toolbar { display:grid; grid-template-columns:42px minmax(0,1fr) 42px; gap:6px; margin:14px 0 10px; }
  .calendar-toolbar strong { min-width:0; font-size:.92rem; line-height:1.15; }
  .calendar-toolbar button { width:42px; min-height:40px; padding:5px; }
  .calendar-toolbar #calendar-current-month { grid-column:1 / -1; width:100%; }
  .calendar-weekdays { gap:1px; font-size:.55rem; }
  .calendar-grid { gap:1px; width:100%; }
  .calendar-day { min-height:72px; padding:3px 2px; }
  .calendar-date { padding-left:1px; font-size:.67rem; }
  .calendar-entries { gap:2px; }
  .calendar-day-select .activity-badge { padding:3px; border-left-width:2px; font-size:.55rem; line-height:1.1; }
  .calendar-selection { margin-top:12px; padding-top:12px; }
  .calendar-selection-entry .person-link { padding:12px; }
}

@media (max-width:380px) {
  .calendar-weekdays { font-size:.5rem; }
  .calendar-day { min-height:66px; padding:2px 1px; }
  .calendar-date { font-size:.62rem; }
  .calendar-day-select .activity-badge { font-size:.5rem; padding:2px; }
  .main-navigation .nav-link { font-size:.9rem; padding:8px 6px; }
}

@media (max-width:620px) {
  .admin-screen { gap:14px; }
  .admin-menu { grid-template-columns:minmax(0,1fr); gap:10px; width:100%; }
  .admin-menu > button { width:100%; min-width:0; min-height:46px; white-space:normal; overflow-wrap:anywhere; }
}

/* PWA : installation explicite et mise à jour sans rechargement imposé. */
.pwa-install-notice { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:14px 0 0; padding:14px; border:1px solid #b8dbe1; border-left:4px solid var(--sea); border-radius:11px; background:#f7fcfd; font-size:.92rem; }.pwa-install-copy { display:grid; gap:3px; min-width:0; }.pwa-install-copy strong { color:var(--ink); font-size:1rem; }.pwa-install-copy span,.pwa-install-copy small { line-height:1.38; }.pwa-install-copy small { color:#586a72; }.pwa-install-notice .actions { margin:0; flex:0 0 auto; }.pwa-install-notice .actions button { min-height:38px; white-space:nowrap; }
.pwa-update-notice { position:fixed; z-index:1000; right:16px; bottom:16px; display:flex; align-items:center; gap:12px; max-width:min(430px,calc(100vw - 32px)); padding:12px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:0 8px 30px #13313d35; }.pwa-update-notice button { flex:0 0 auto; }:root.has-pwa-update-notice .app-shell { padding-bottom:calc(48px + var(--pwa-update-notice-height,0px) + 28px); }
.pwa-install-help { position:fixed; z-index:1001; right:16px; bottom:16px; width:min(430px,calc(100vw - 32px)); }.pwa-install-help-card { padding:18px; border:1px solid #b8dbe1; border-left:4px solid var(--sea); border-radius:14px; background:#fff; box-shadow:0 10px 34px #13313d45; }.pwa-install-help-card h2 { margin:0 0 8px; }.pwa-install-help-card p { margin:8px 0; line-height:1.45; }.pwa-install-help-card button { margin-top:6px; }
@media (max-width:620px) { .pwa-install-notice { align-items:stretch; flex-direction:column; }.pwa-install-notice .actions { width:100%; }.pwa-install-notice .actions button { flex:1 1 120px; }.pwa-install-help { right:10px; bottom:10px; left:10px; width:auto; }.pwa-install-help-card { padding:16px; }.pwa-update-notice { right:10px; bottom:10px; left:10px; max-width:none; align-items:stretch; flex-direction:column; }.pwa-update-notice button { width:100%; min-height:44px; }:root.has-pwa-update-notice .app-shell { padding-bottom:calc(36px + var(--pwa-update-notice-height,0px) + 24px); } }

/* Aide courte de l'espace Encadrant. */
.instructor-help { margin-top:18px; border-top:1px solid var(--line); padding-top:10px; }.instructor-help summary { min-height:42px; display:flex; align-items:center; color:var(--sea); font-weight:750; cursor:pointer; }.instructor-help ol { margin:6px 0 0; padding-left:1.35rem; }.instructor-help li { margin:8px 0; line-height:1.38; }.attendance-help,.training-attendance-help { margin:14px 0; font-size:.92rem; line-height:1.35; }
@media (max-width:620px) { .instructor-help { margin-top:14px; }.instructor-help summary { min-height:46px; }.instructor-help ol { padding-left:1.2rem; }.attendance-help,.training-attendance-help { margin:12px 0; padding:9px 10px; font-size:.88rem; } }

/* Icône SVG locale : indépendante des glyphes disponibles sur Android. */
.brand-logout img { display:block; width:20px; height:20px; margin:auto; }
.brand-logout { display:inline-flex; align-items:center; gap:5px; }.brand-logout::after { content:'Déconnexion'; font-size:.78rem; }
.attendance-controls > .attendance-action { flex:0 1 auto; min-width:92px; }.attendance-row-error { flex:1 0 100%; margin:3px 0 0; }.registration-badges { font-size:.82rem; }.registration-badges .caci-status,.registration-badges .license-status { padding:2px 6px; font-size:.74rem; font-weight:650; }.public-registrations .attendance-state.attendance-absent,.public-registrations .person-link .registration-badges span.attendance-state.attendance-absent { background:#b91c1c; border:1px solid #8d1616; color:#fff; font-weight:800; text-shadow:none; }
.team-person-section { margin:10px 0; border:1px solid var(--line); border-radius:9px; overflow:hidden; }.team-person-section > summary { min-height:42px; display:flex; align-items:center; padding:8px 11px; cursor:pointer; color:var(--sea); font-weight:750; background:#fbfdfd; }.team-person-options { display:grid; gap:6px; padding:8px; border-top:1px solid var(--line); }.team-person-option { width:100%; min-height:44px; padding:8px 10px; text-align:left; color:var(--ink); background:#fff; border:1px solid var(--line); box-shadow:none; }.team-person-option strong,.team-person-option small { display:block; }.team-person-option small { margin-top:2px; color:#586a72; font-size:.8rem; }.team-person-option.is-selected { border-color:var(--sea); background:var(--foam); box-shadow:inset 0 0 0 1px var(--sea); }.team-aptitude-picker { margin:12px 0; }.team-aptitude-picker > .muted { margin:0 0 7px; }.team-aptitude-options { display:flex; flex-wrap:wrap; gap:7px; }.team-aptitude-option { flex:0 1 auto; min-width:56px; min-height:42px; padding:7px 12px; }
.team-person-choice { min-width:0; }.team-inline-aptitudes { margin:7px 0 2px; }.team-inline-aptitudes .muted { margin:0; }.team-inline-aptitudes .team-aptitude-options { padding:0 3px; }
button.attendance-action.attendance-present { background:#1c8650; color:#fff; } button.attendance-action.attendance-absent { background:#b33845; color:#fff; }
.training-student-skill > strong { display:block; padding-bottom:7px; border-bottom:1px solid var(--line); color:var(--sea); font-size:1rem; }.training-student-skill { box-shadow:0 1px 2px #13313d12; }
.training-unsaved-dialog { position:fixed; z-index:1100; inset:0; display:grid; place-items:center; padding:20px; background:#13313d80; }.training-unsaved-dialog > div { width:min(430px,100%); padding:20px; border-radius:14px; background:#fff; box-shadow:0 10px 34px #13313d45; }.training-unsaved-dialog h2 { margin-top:0; }.training-unsaved-dialog .actions { margin-bottom:0; }
@media (max-width:620px) { .attendance-controls > .attendance-action { flex:1 1 calc(50% - 5px); min-width:0; }.registration-badges { gap:4px; }.training-unsaved-dialog { align-items:end; padding:12px; }.training-unsaved-dialog > div { width:100%; }.training-unsaved-dialog .actions button { flex:1 1 140px; } }
@media (max-width:620px) { .team-person-section > summary { min-height:46px; }.team-person-option { min-height:48px; }.team-person-option small { font-size:.78rem; } }
@media (max-width:620px) { .brand-logout { min-width:auto !important; padding:5px 7px !important; }.brand-logout::after { font-size:.72rem; } }
.activity-management { margin-top:22px; border-top:1px solid var(--line); padding-top:16px; }.activity-management h3 { margin:0 0 10px; }.activity-management-administrative { margin-top:12px; padding-top:12px; border-top:1px solid var(--line); }

/* Hiérarchie visuelle des écrans opérationnels. */
.section-kicker { margin:18px 0 7px; color:#436570; font-size:.78rem; font-weight:800; letter-spacing:.045em; text-transform:uppercase; }.role-badge { display:inline-flex; align-items:center; margin-left:7px; padding:3px 8px; border:1px solid #92c8d3; border-radius:999px; color:#07536a; background:#e2f2f5; font-size:.72rem; font-weight:800; line-height:1.15; vertical-align:middle; white-space:nowrap; }.instructor-kicker { margin-top:16px; }.instructor-action-group,.activity-management-instructor { padding:12px; border:1px solid #b9dbe2; border-radius:10px; background:#f2fafb; }.instructor-action-group { margin-top:0; }.action-group-heading { display:flex; align-items:center; justify-content:space-between; gap:8px; color:#07536a; font-size:.92rem; font-weight:800; }.action-group-heading .role-badge { margin-left:auto; }.activity-management > h3 { color:#173f4d; }.activity-management-operational > button:first-child { background:var(--sea); color:#fff; }.activity-management-instructor { margin-top:12px; }.activity-management-instructor .actions { margin-top:10px; }.activity-management-administrative { display:flex; }.member-activity-response { margin-top:18px; padding:14px; border:1px solid #c9e0e5; border-radius:11px; background:#f7fbfc; }.member-activity-response > h3 { margin:0 0 8px; color:#173f4d; font-size:1rem; }.member-activity-response .actions { margin-top:12px; }.attendance-section { padding-top:2px; }.attendance-section > h3 { color:#173f4d; }.attendance-section > .muted { line-height:1.4; }.registration-row { background:#fff; box-shadow:0 1px 2px #13313d0c; }.context-activity .activity-summary p strong { color:#07536a; }.context-activity .public-registrations { background:#fbfdfd; border-radius:10px; padding:14px; border:1px solid #d7e7ea; }

@media (max-width:620px) { .section-kicker { margin-top:15px; }.instructor-action-group,.activity-management-instructor,.member-activity-response { padding:11px; }.action-group-heading { align-items:flex-start; }.activity-management .actions > button,.instructor-action-group > button { flex:1 1 100%; width:100%; }.role-badge { margin-left:5px; }.context-activity .public-registrations { padding:12px; }.attendance-section { margin-top:18px; } }

/* Accueil : relief discret, fondé sur la couleur principale du club. */
.member-home-compliance { border-color:#8fc5d0; background:linear-gradient(135deg,#e1f2f5 0%,#f9fcfd 72%); box-shadow:0 7px 20px #075a731c; }.member-home-compliance .person-link { background:transparent; }.member-home-compliance .person-link:hover { background:#ffffff80; }.member-home-compliance strong { color:#07536a; font-size:1.04rem; }.member-home-compliance .registration-badges { margin-top:6px; }.member-home-compliance + #member-home { border-top:4px solid var(--sea); box-shadow:0 7px 20px #075a7314; }.member-home-compliance + #member-home .home-upcoming > summary { display:flex; align-items:center; min-height:42px; color:#07536a; font-size:1.04rem; }.member-home-compliance + #member-home .person { border-color:#c8dfe5; background:#fff; }.member-home-compliance + #member-home .person-link:hover { background:#edf7f9; }

/* Les quatre accès de l'espace encadrant gardent le même niveau visuel. */
.instructor-action-group { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }.instructor-action-group > button { width:100%; margin:0; text-align:left; }.activity-management-instructor .action-group-heading { margin-bottom:10px; }.activity-management-instructor-actions { margin-top:0 !important; }
@media (max-width:620px) { .instructor-action-group { grid-template-columns:1fr; }.instructor-action-group > button { min-height:46px; }.member-home-compliance + #member-home .home-upcoming > summary { min-height:44px; } }

/* Fiche activité : les actions encadrant restent dans un seul cadre, organisées par mission. */
.activity-management-subsection + .activity-management-subsection { margin-top:14px; padding-top:14px; border-top:1px solid #c9e2e7; }.activity-management-subsection h4 { margin:0 0 8px; color:#174955; font-size:.88rem; }.activity-management-subsection .actions { margin-top:0; }

/* Thème aquatique : passe esthétique, sans incidence fonctionnelle. */
.app-shell { padding-top:16px; }
.brand { position:relative; isolation:isolate; overflow:hidden; min-height:102px; margin-bottom:25px; padding:17px 19px 30px; color:#fff; background:radial-gradient(circle at 18% -35%,rgba(255,255,255,.4),transparent 34%),radial-gradient(circle at 76% 28%,rgba(164,246,255,.22) 0 2px,transparent 2.5px),radial-gradient(circle at 88% 68%,rgba(164,246,255,.18) 0 4px,transparent 4.5px),linear-gradient(120deg,#063c62 0%,var(--sea-deep) 44%,var(--aqua) 100%); border-radius:20px 20px 34px 34px; box-shadow:0 13px 27px rgba(5,69,94,.25); }
.brand::after { content:""; position:absolute; z-index:0; left:-12%; bottom:-25px; width:124%; height:52px; background:var(--surface); border-radius:50% 50% 0 0 / 100% 100% 0 0; }
.brand-identity,.brand-actions { position:relative; z-index:1; }
.brand h1 { color:#fff; font-weight:800; letter-spacing:.01em; text-shadow:0 1px 1px rgba(0,0,0,.12); }
.brand p { color:rgba(255,255,255,.85); }
.brand-logo { width:64px; height:64px; padding:7px; object-fit:contain; background:#fff; border:1px solid rgba(255,255,255,.8); border-radius:15px; box-shadow:0 5px 14px rgba(2,32,52,.28); }
.brand-actions { gap:8px; }
.brand-actions #app-home { color:var(--sea-deep); background:#fff; border:1px solid rgba(255,255,255,.82); box-shadow:0 3px 10px rgba(3,41,62,.2); }
.brand-actions #app-home:hover { color:#fff; background:var(--sea-deep); }
.brand-actions .brand-logout { color:#fff; background:rgba(4,52,76,.25); border:1px solid rgba(255,255,255,.66); box-shadow:none; }
.brand-actions .brand-logout:hover { background:rgba(255,255,255,.2); }

.card { border-color:rgba(124,173,185,.5); box-shadow:0 8px 24px rgba(10,66,84,.11); }
.card h2,.card h3 { color:var(--ink); }
.person,.history-item,.work-group-skill,.training-student-skill,.training-skill-row { border-color:#d4e6ea; }
.person,.history-item { box-shadow:0 2px 8px rgba(10,66,84,.05); }
.notice { border-radius:8px; background:#e5f5f7; }
button { background:linear-gradient(135deg,var(--sea) 0%,var(--aqua) 100%); box-shadow:0 3px 9px rgba(4,88,111,.24); transition:background .18s ease,box-shadow .18s ease,transform .18s ease; }
button:hover { background:linear-gradient(135deg,var(--sea-deep) 0%,var(--sea) 100%); box-shadow:0 5px 13px rgba(4,76,99,.28); transform:translateY(-1px); }
button:active { transform:translateY(0); }
button.secondary,.nav-link { color:var(--sea-deep); background:#fff; border:1px solid #91cbd5; box-shadow:0 2px 6px rgba(10,66,84,.08); }
button.secondary:hover,.nav-link:hover { color:#fff; background:var(--sea-deep); border-color:var(--sea-deep); }
button.danger { background:linear-gradient(135deg,#b3343d,#9e202a); }
.dashboard-header { border-top:4px solid var(--sea); background:linear-gradient(135deg,#fff 0%,#f3fbfc 100%); box-shadow:0 10px 26px rgba(6,81,106,.15); }
.dashboard-header h2 { font-size:1.55rem; font-weight:800; color:#08354a; }
.main-navigation { gap:10px; }
.main-navigation .nav-link { min-height:46px; }
.main-navigation #nav-calendar { color:#fff; background:linear-gradient(135deg,var(--sea) 0%,var(--aqua) 100%); border-color:transparent; box-shadow:0 4px 11px rgba(4,95,118,.25); }
.main-navigation #nav-calendar:hover { background:linear-gradient(135deg,var(--sea-deep) 0%,var(--sea) 100%); }
.member-home-compliance { border-left:5px solid var(--sea); border-color:#9bcfd8 #c5e1e5 #c5e1e5 var(--sea); background:linear-gradient(135deg,#e3f6f8 0%,#fff 74%); box-shadow:0 9px 22px rgba(6,91,111,.13); }
.member-home-compliance + #member-home { border-top-color:var(--aqua); background:#fff; box-shadow:0 9px 22px rgba(6,91,111,.12); }
.member-home-compliance + #member-home .home-upcoming > summary { color:#083f58; }
.member-home-compliance + #member-home .person { box-shadow:none; }
.activity-management-instructor,.instructor-action-group { border-color:#a8d5dd; background:linear-gradient(135deg,#e9f8fa,#faffff); }
.member-activity-response,.context-activity .public-registrations { border-color:#c7e1e6; background:#fbfeff; }

/* Accès depuis un ordinateur vers l'application mobile. */
.desktop-app-install-card { display:none; }
.copy-link-fallback { position:fixed; opacity:0; pointer-events:none; }
@media (min-width:768px) {
  .desktop-app-install-card { display:grid; grid-template-columns:120px minmax(0,1fr); align-items:center; gap:18px; max-width:640px; margin-top:18px; padding:16px; border-color:#b9dbe2; background:linear-gradient(135deg,#f2fafb,#fff); }
  .desktop-app-install-card h3 { margin:0 0 6px; color:#07536a; font-size:1rem; }
  .desktop-app-install-card p { margin:0; line-height:1.4; }
  .desktop-app-install-qr { display:block; width:120px; height:120px; padding:5px; background:#fff; border:1px solid #c5e1e5; border-radius:8px; }
  .desktop-app-install-link { display:block; margin-top:8px; color:var(--sea-deep); font-size:.85rem; overflow-wrap:anywhere; }
  .desktop-app-install-card .actions { margin:10px 0 0; }
  .desktop-app-install-card .desktop-app-install-feedback { min-height:1.3em; margin-top:6px; font-size:.84rem; }
}

@media (max-width:620px) {
  .app-shell { padding-top:10px; }
  .brand { min-height:88px; margin-bottom:18px; padding:12px 12px 25px; border-radius:16px 16px 28px 28px; }
  .brand::after { bottom:-27px; height:47px; }
  .brand-identity { min-width:0; gap:8px; }
  .brand-logo { width:48px; height:48px; padding:5px; border-radius:12px; }
  .brand-authenticated .brand-identity h1 { font-size:1rem; line-height:1.14; }
  .brand-actions { flex:0 0 auto; gap:5px; }
  .brand-actions button { min-height:36px; }
  .brand-actions .brand-logout { min-width:0; }
  .dashboard-header h2 { font-size:1.35rem; }
  .main-navigation { gap:8px; }
  .main-navigation .nav-link { min-height:48px; }
  .card { box-shadow:0 6px 18px rgba(10,66,84,.1); }
}

/* Calendrier : une activité de plusieurs jours forme une barre par semaine. */
.calendar-grid { grid-template-columns:minmax(0,1fr); }
.calendar-week { position:relative; display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.calendar-week-bars { position:absolute; z-index:2; top:27px; right:0; left:0; display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); grid-auto-rows:22px; gap:4px 0; pointer-events:none; }
.calendar-span-badge { width:auto; min-width:0; min-height:22px; height:22px; margin:0; padding:3px 7px; border-radius:0; border-left-width:0; pointer-events:auto; white-space:nowrap; }
.calendar-span-badge.calendar-span-start { margin-left:6px; border-left-width:4px; border-radius:5px 0 0 5px; }
.calendar-span-badge.calendar-span-end { margin-right:6px; border-radius:0 5px 5px 0; }
.calendar-span-badge.calendar-span-start.calendar-span-end { border-radius:5px; }
.calendar-span-badge:not(.calendar-span-start) .activity-title-full,.calendar-span-badge:not(.calendar-span-start) .activity-title-mobile { display:none; }

/* Calendrier : bandeaux de planning contrastés, par type d'activité. */
.activity-badge.activity-category-training { --activity-color:#0b4dbb; color:#fff; background:#0b4dbb; border-left-color:#083b91; }
.activity-badge.activity-category-training:hover { color:#fff; background:#083f9b; }
.activity-badge.activity-category-pit { --activity-color:#007fa8; color:#fff; background:#007fa8; border-left-color:#005d7c; }
.activity-badge.activity-category-pit:hover { color:#fff; background:#00698c; }
.activity-badge.activity-category-quarry { --activity-color:#078a35; color:#fff; background:#078a35; border-left-color:#056a29; }
.activity-badge.activity-category-quarry:hover { color:#fff; background:#06772d; }
.activity-badge.activity-category-sea { --activity-color:#966d00; color:#fff; background:#966d00; border-left-color:#6f5000; }
.activity-badge.activity-category-sea:hover { color:#fff; background:#7c5900; }
.activity-badge.activity-internal-training { --activity-color:#7a2ccb; color:#fff; background:#7a2ccb; border-left-color:#5e209f; }
.activity-badge.activity-internal-training:hover { color:#fff; background:#6723ad; }
.activity-badge.activity-category-no_training { --activity-color:#d62828; color:#fff; background:#d62828; border-left-color:#a91e1e; }
.activity-badge.activity-category-no_training:hover { color:#fff; background:#b92121; }
.activity-badge.activity-category-training.activity-cancelled,.activity-badge.activity-category-pit.activity-cancelled,.activity-badge.activity-category-quarry.activity-cancelled,.activity-badge.activity-internal-training.activity-cancelled,.activity-badge.activity-category-no_training.activity-cancelled { color:#fff; border-left-color:#fff; }
.activity-badge.activity-category-training.activity-cancelled .cancelled-label,.activity-badge.activity-category-pit.activity-cancelled .cancelled-label,.activity-badge.activity-category-quarry.activity-cancelled .cancelled-label,.activity-badge.activity-internal-training.activity-cancelled .cancelled-label,.activity-badge.activity-category-no_training.activity-cancelled .cancelled-label { color:#fff; }
.activity-badge.activity-category-sea.activity-cancelled { color:#fff; border-left-color:#fff; }
.activity-badge.activity-category-sea.activity-cancelled .cancelled-label { color:#fff; }
.calendar-span-from-1 { grid-column-start:1; }.calendar-span-from-2 { grid-column-start:2; }.calendar-span-from-3 { grid-column-start:3; }.calendar-span-from-4 { grid-column-start:4; }.calendar-span-from-5 { grid-column-start:5; }.calendar-span-from-6 { grid-column-start:6; }.calendar-span-from-7 { grid-column-start:7; }
.calendar-span-to-1 { grid-column-end:2; }.calendar-span-to-2 { grid-column-end:3; }.calendar-span-to-3 { grid-column-end:4; }.calendar-span-to-4 { grid-column-end:5; }.calendar-span-to-5 { grid-column-end:6; }.calendar-span-to-6 { grid-column-end:7; }.calendar-span-to-7 { grid-column-end:8; }
.calendar-event-track-0 { grid-row:1; }.calendar-event-track-1 { grid-row:2; }.calendar-event-track-2 { grid-row:3; }.calendar-event-track-3 { grid-row:4; }.calendar-event-track-4 { grid-row:5; }.calendar-event-track-5 { grid-row:6; }.calendar-event-track-6 { grid-row:7; }.calendar-event-track-7 { grid-row:8; }.calendar-event-track-8 { grid-row:9; }.calendar-event-track-9 { grid-row:10; }.calendar-event-track-10 { grid-row:11; }.calendar-event-track-11 { grid-row:12; }
.calendar-week.calendar-bars-1 .calendar-entries { margin-top:26px; }.calendar-week.calendar-bars-2 .calendar-entries { margin-top:52px; }.calendar-week.calendar-bars-3 .calendar-entries { margin-top:78px; }.calendar-week.calendar-bars-4 .calendar-entries { margin-top:104px; }.calendar-week.calendar-bars-5 .calendar-entries { margin-top:130px; }.calendar-week.calendar-bars-6 .calendar-entries { margin-top:156px; }.calendar-week.calendar-bars-7 .calendar-entries { margin-top:182px; }.calendar-week.calendar-bars-8 .calendar-entries { margin-top:208px; }.calendar-week.calendar-bars-9 .calendar-entries { margin-top:234px; }.calendar-week.calendar-bars-10 .calendar-entries { margin-top:260px; }.calendar-week.calendar-bars-11 .calendar-entries { margin-top:286px; }.calendar-week.calendar-bars-12 .calendar-entries { margin-top:312px; }

@media (max-width:620px) {
  .calendar-week { gap:1px; }
  .calendar-week-bars { top:18px; grid-auto-rows:17px; gap:2px 0; }
  .calendar-span-badge { min-height:17px; height:17px; padding:2px 4px; border-radius:0; font-size:.56rem; line-height:1.12; }
  .calendar-span-badge .activity-title-full { display:none; }
  .calendar-span-badge.calendar-span-start .activity-title-mobile { display:inline; }
  .calendar-span-badge.calendar-span-start { margin-left:3px; border-left-width:2px; border-radius:4px 0 0 4px; }
  .calendar-span-badge.calendar-span-end { margin-right:3px; border-radius:0 4px 4px 0; }
  .calendar-span-badge.calendar-span-start.calendar-span-end { border-radius:4px; }
  .calendar-week.calendar-bars-1 .calendar-entries { margin-top:20px; }.calendar-week.calendar-bars-2 .calendar-entries { margin-top:40px; }.calendar-week.calendar-bars-3 .calendar-entries { margin-top:60px; }.calendar-week.calendar-bars-4 .calendar-entries { margin-top:80px; }.calendar-week.calendar-bars-5 .calendar-entries { margin-top:100px; }.calendar-week.calendar-bars-6 .calendar-entries { margin-top:120px; }.calendar-week.calendar-bars-7 .calendar-entries { margin-top:140px; }.calendar-week.calendar-bars-8 .calendar-entries { margin-top:160px; }.calendar-week.calendar-bars-9 .calendar-entries { margin-top:180px; }.calendar-week.calendar-bars-10 .calendar-entries { margin-top:200px; }.calendar-week.calendar-bars-11 .calendar-entries { margin-top:220px; }.calendar-week.calendar-bars-12 .calendar-entries { margin-top:240px; }
}

/* QR d'installation disponible depuis l'administration. */
.administration-install-qr { max-width:680px; margin-right:auto; margin-left:auto; }
.administration-install-qr-content { display:grid; justify-items:center; gap:14px; padding:10px 0 2px; text-align:center; }
.administration-install-qr-image { display:block; width:min(320px,100%); height:auto; padding:9px; background:#fff; border:1px solid #b9dbe2; border-radius:12px; box-shadow:0 4px 12px rgba(10,66,84,.12); }
.administration-install-qr-link { max-width:100%; color:var(--sea-deep); font-size:.92rem; overflow-wrap:anywhere; }
.administration-install-qr-content .actions { margin:0; }
.administration-install-qr-feedback { min-height:1.3em; margin:0; font-size:.9rem; }
@media (max-width:620px) { .administration-install-qr { margin-right:0; margin-left:0; }.administration-install-qr-image { width:min(300px,100%); padding:7px; }.administration-install-qr-content { gap:12px; } }
.mft-admin { max-width:980px; }.mft-version-list,.mft-skill-list { display:grid; gap:9px; margin:10px 0 0; padding:0; list-style:none; }.mft-version { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:11px; border:1px solid var(--line); border-radius:10px; background:#fff; }.mft-version .actions { margin:0; justify-content:flex-end; }.mft-status-draft { background:#fff0c2; color:#715100; }.mft-status-active { background:#dff3e4; color:#176234; }.mft-status-archived { background:#e8edf0; color:#44525a; }.mft-skill-list > li { padding:10px; border:1px solid var(--line); border-radius:8px; background:#fff; }.mft-skill-list .actions { margin:8px 0 0; }
@media (max-width:620px) { .mft-version { display:grid; }.mft-version .actions { justify-content:stretch; }.mft-version .actions > button { flex:1 1 100%; width:100%; } }

/* Rappel discret du CACI sur l’accueil. */
.home-caci-reminder { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:12px 0; padding:11px 13px; border:1px solid #b8dce2; border-left:4px solid var(--aqua); border-radius:10px; background:#f5fbfc; color:#174955; }
.home-caci-reminder p { margin:0; }.home-caci-reminder button { flex:0 0 auto; margin:0; }
@media (max-width:620px) { .home-caci-reminder { align-items:stretch; flex-direction:column; }.home-caci-reminder button { width:100%; } }

/* Sur écran tactile, le survol persistant ne doit pas colorer en bleu le bouton Présent réinitialisé. */
@media (hover:none) { button.attendance-action.secondary:hover { color:var(--sea-deep); background:#fff; border-color:#91cbd5; } }
