:root{--bg:#f6f7f9;--surface:#fff;--surface2:#f1f3f6;--text:#15202b;--muted:#6b7280;--line:#e6e8ec;--brand:#2563eb;--danger:#d92d20;--warning:#b54708;--success:#067647;--radius:18px;--radius-sm:12px;--shadow:0 8px 28px rgba(15,23,42,.06);--safe-bottom:env(safe-area-inset-bottom,0px)}
[hidden]{display:none!important}
*{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;line-height:1.4}button,input,textarea,select{font:inherit;color:inherit}button{touch-action:manipulation}a{color:inherit}.icon{width:20px;height:20px;display:block;flex:0 0 auto}.icon-sm{width:16px;height:16px}.icon-lg{width:24px;height:24px}
.app-shell{max-width:760px;margin:0 auto;min-height:100dvh;padding-bottom:calc(82px + var(--safe-bottom))}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:rgba(246,247,249,.92);backdrop-filter:blur(18px);border-bottom:1px solid rgba(230,232,236,.8)}.brand{min-width:0;display:flex;align-items:center;gap:10px}.brand-mark{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);box-shadow:0 3px 10px rgba(15,23,42,.04);font-weight:800;color:var(--brand)}.brand-copy{min-width:0}.brand-title{font-size:15px;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-subtitle{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.top-actions{display:flex;gap:6px}.icon-btn{width:42px;height:42px;border:0;border-radius:13px;background:transparent;display:grid;place-items:center;cursor:pointer}.icon-btn:active{background:var(--surface2)}
.main{padding:18px 16px}.view{display:none}.view.active{display:block}.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:4px 0 12px}.section-head h2{font-size:18px;margin:0}.section-head p{font-size:12px;color:var(--muted);margin:2px 0 0}.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:800;color:var(--muted)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.hero-card{padding:18px;position:relative;overflow:hidden}.hero-card:before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--activity,var(--brand))}.hero-date{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em}.hero-title{font-size:22px;line-height:1.15;margin:6px 0 12px}.hero-meta{display:grid;gap:8px}.meta-row{display:flex;align-items:flex-start;gap:8px;font-size:14px}.meta-row .icon{color:var(--muted);margin-top:1px}.hero-actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:var(--surface);border-radius:12px;min-height:42px;padding:9px 13px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;text-decoration:none;cursor:pointer}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.soft{background:var(--surface2);border-color:transparent}.btn.danger{color:var(--danger);background:#fff6f5;border-color:#fee4e2}.btn.small{min-height:36px;padding:7px 10px;font-size:13px}.btn.block{width:100%}
.notice{padding:14px 15px;margin-bottom:10px;display:flex;gap:11px;align-items:flex-start}.notice.important{border-left:4px solid var(--warning)}.notice-title{font-weight:750;font-size:14px}.notice-text{font-size:13px;color:#4b5563;margin-top:2px;white-space:pre-line}.notice .icon{color:var(--warning)}
.event-list{display:grid;gap:8px}.event-row{position:relative;display:grid;grid-template-columns:55px 1fr 24px;gap:12px;align-items:center;padding:12px 12px 12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:15px;cursor:pointer}.event-row:before{content:"";position:absolute;left:0;top:13px;bottom:13px;width:4px;border-radius:0 4px 4px 0;background:var(--activity,var(--brand))}.datebox{text-align:center}.datebox strong{display:block;font-size:22px;line-height:1}.datebox span{font-size:10px;font-weight:800;color:var(--muted);letter-spacing:.05em}.event-main{min-width:0}.event-title{font-size:15px;font-weight:780;line-height:1.25}.event-sub{margin-top:4px;color:var(--muted);font-size:12.5px;display:flex;gap:7px;flex-wrap:wrap;align-items:center}.event-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.tag{font-size:10px;line-height:1;padding:5px 7px;border-radius:999px;background:var(--surface2);color:#4b5563;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.tag.warn{background:#fff7ed;color:#b54708}.tag.danger{background:#fff1f0;color:#b42318}.tag.success{background:#ecfdf3;color:#067647}.event-row.cancelled{opacity:.62}.event-row.cancelled .event-title{text-decoration:line-through}
.home-first-head{margin-top:0}.home-notices{margin-top:16px}.home-events-head{margin-top:22px}.home-event-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.home-event-card{position:relative;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px;cursor:pointer;box-shadow:0 5px 18px rgba(15,23,42,.035);overflow:hidden}.home-event-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--activity,var(--brand))}.home-event-card:active{transform:scale(.99)}.home-event-top{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:20px}.home-event-date{font-size:10.5px;font-weight:850;text-transform:uppercase;letter-spacing:.035em;color:var(--muted)}.home-event-icon{width:30px;height:30px;border-radius:10px;background:color-mix(in srgb,var(--activity,var(--brand)) 10%,white);color:var(--activity,var(--brand));display:grid;place-items:center;margin:9px 0 8px}.home-event-title{font-size:14px;font-weight:820;line-height:1.18}.home-event-subtitle{font-size:11.5px;color:var(--muted);line-height:1.25;margin-top:2px}.home-event-meta{display:flex;align-items:flex-start;gap:5px;font-size:11.5px;color:var(--muted);line-height:1.3;margin-top:7px;min-width:0}.home-event-meta span{min-width:0;overflow-wrap:anywhere}.home-event-meta .icon{margin-top:1px}.home-event-card .event-tags{margin-top:8px}.home-event-card.cancelled{opacity:.62}.home-event-card.cancelled .home-event-title{text-decoration:line-through}.home-empty{grid-column:1/-1}.home-agenda-btn{margin-top:10px}
.quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.quick-link{display:flex;align-items:center;gap:10px;padding:13px;background:var(--surface);border:1px solid var(--line);border-radius:14px;text-decoration:none;font-weight:700;font-size:13px}.quick-link .icon{color:var(--brand)}
.chips{display:flex;gap:7px;overflow:auto;padding:1px 0 10px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{white-space:nowrap;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 11px;font-size:12px;font-weight:700}.chip.active{background:#17202a;color:#fff;border-color:#17202a}.month-title{margin:20px 2px 9px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:850}
.empty{padding:28px 18px;text-align:center;color:var(--muted)}.empty .icon{width:32px;height:32px;margin:0 auto 10px}.doc-list,.info-list,.admin-list{display:grid;gap:8px}.doc-row,.admin-row{display:flex;align-items:center;gap:11px;padding:13px 14px;background:var(--surface);border:1px solid var(--line);border-radius:14px;text-decoration:none}.doc-row>div,.admin-row>div{min-width:0;flex:1}.row-title{font-weight:740;font-size:14px}.row-sub{font-size:12px;color:var(--muted);margin-top:2px}.doc-row>.icon,.admin-row>.icon{color:var(--brand)}
.bottom-nav{position:fixed;z-index:30;left:0;right:0;bottom:0;padding:7px max(10px,env(safe-area-inset-left)) calc(7px + var(--safe-bottom)) max(10px,env(safe-area-inset-right));background:rgba(255,255,255,.95);border-top:1px solid var(--line);backdrop-filter:blur(20px)}.bottom-nav-inner{max-width:760px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr)}.nav-btn{border:0;background:transparent;min-height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#7a828d;font-size:10px;font-weight:700}.nav-btn .icon{width:21px;height:21px}.nav-btn.active{color:var(--brand)}
.sheet-overlay,.modal-overlay{position:fixed;z-index:60;inset:0;background:rgba(15,23,42,.38);display:none;align-items:flex-end;justify-content:center}.sheet-overlay.open,.modal-overlay.open{display:flex}.sheet{width:100%;max-width:760px;max-height:92dvh;overflow:auto;background:var(--surface);border-radius:24px 24px 0 0;padding:10px 18px calc(22px + var(--safe-bottom));box-shadow:0 -20px 60px rgba(15,23,42,.18)}.sheet-handle{width:38px;height:4px;border-radius:999px;background:#d5d8de;margin:0 auto 12px}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.sheet-title{font-size:22px;margin:2px 0 4px}.sheet-sub{font-size:12px;color:var(--muted)}.sheet-block{border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.sheet-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.teacher-pills{display:flex;flex-wrap:wrap;gap:6px}.teacher-pill{display:inline-flex;align-items:center;gap:6px;background:var(--surface2);padding:6px 9px;border-radius:999px;font-size:12px;font-weight:700}
.modal-overlay{align-items:center;padding:16px}.modal{width:100%;max-width:620px;max-height:94dvh;overflow:auto;background:var(--surface);border-radius:22px;padding:18px}.modal h2{margin:0 0 14px;font-size:20px}.form-grid{display:grid;grid-template-columns:1fr;gap:12px}.field label{display:block;font-size:12px;font-weight:800;color:#4b5563;margin:0 0 5px}.field input,.field textarea,.field select{width:100%;border:1px solid #dce0e5;background:#fff;border-radius:12px;padding:10px 11px;outline:none;min-height:44px}.field textarea{min-height:90px;resize:vertical}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 12%,transparent)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.check-list{display:grid;gap:7px}.check-item{display:flex;align-items:center;gap:9px;padding:10px;border:1px solid var(--line);border-radius:12px}.check-item input{width:18px;height:18px}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}
.login-shell{min-height:100dvh;display:grid;place-items:center;padding:22px}.login-card{width:min(100%,440px);padding:22px}.login-logo{width:54px;height:54px;border-radius:16px;background:#17202a;color:#fff;display:grid;place-items:center;margin-bottom:18px}.login-card h1{font-size:24px;margin:0}.login-card p{color:var(--muted);font-size:13px;margin:6px 0 20px}.separator{height:1px;background:var(--line);margin:18px 0}.error{color:var(--danger);font-size:12px;margin-top:8px}.hint{font-size:11px;color:var(--muted);margin-top:6px}.onboarding{max-width:620px;margin:0 auto;padding:24px 16px}.onboarding h1{font-size:26px}.choice-card{padding:16px;margin:10px 0}.choice-card h3{margin:0 0 4px}.choice-card p{margin:0 0 12px;color:var(--muted);font-size:13px}
.fab{position:fixed;z-index:35;right:max(18px,calc((100vw - 760px)/2 + 18px));bottom:calc(78px + var(--safe-bottom));width:54px;height:54px;border-radius:18px;border:0;background:#17202a;color:#fff;display:grid;place-items:center;box-shadow:0 14px 30px rgba(15,23,42,.24)}.fab .icon{width:25px;height:25px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.toolbar-actions{display:flex;gap:6px}.select-clean{border:0;background:transparent;font-weight:800;max-width:220px}.kpi-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.kpi{padding:15px}.kpi-value{font-size:25px;font-weight:850}.kpi-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:750;margin-top:2px}.bar-row{margin:10px 0}.bar-head{display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px}.bar{height:7px;background:var(--surface2);border-radius:999px;overflow:hidden}.bar>span{display:block;height:100%;background:var(--brand);border-radius:inherit}.code-box{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;background:var(--surface2);border-radius:12px}.code-box code{font-weight:850;letter-spacing:.08em}.muted{color:var(--muted)}.danger-text{color:var(--danger)}.desktop-only{display:none}
.toast{position:fixed;z-index:100;left:50%;bottom:calc(90px + var(--safe-bottom));transform:translate(-50%,20px);background:#17202a;color:#fff;padding:10px 14px;border-radius:12px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;max-width:calc(100vw - 32px);text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:700px){.main{padding:22px}.quick-grid{grid-template-columns:repeat(3,1fr)}.field-row.desktop-3{grid-template-columns:repeat(3,1fr)}.kpi-grid{grid-template-columns:repeat(4,1fr)}.desktop-only{display:inline-flex}.fab{right:calc((100vw - 760px)/2 + 22px)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

@media(max-width:340px){.home-event-grid{grid-template-columns:1fr}}

/* V1.0.3 */
.tag.type-tag{background:#eef1f4;color:#475467}
.tag.custom-pill{text-transform:none;letter-spacing:.01em;border:0}
.nav-btn{position:relative}
.nav-btn.has-notice::after{content:"";position:absolute;top:7px;left:calc(50% + 8px);width:7px;height:7px;border-radius:50%;background:#d92d20;box-shadow:0 0 0 2px #fff}
.quick-link-button{width:100%;text-align:left;cursor:pointer;color:inherit}
.install-help{display:flex;gap:12px;align-items:flex-start;color:#475467}.install-help .icon{color:var(--brand);margin-top:2px}.install-help p{margin:0;font-size:14px;line-height:1.55}

/* V1.0.4 — sélection UNSS + bilan personnel */
.activity-picker-trigger{width:100%;min-height:44px;border:1px solid #dce0e5;background:#fff;border-radius:12px;padding:8px 10px;display:flex;align-items:center;gap:9px;text-align:left;cursor:pointer}.activity-picker-trigger:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 12%,transparent);outline:none}.activity-picker-icon,.activity-choice-icon{width:30px;height:30px;border-radius:9px;background:var(--surface2);display:grid;place-items:center;color:var(--brand);flex:0 0 auto}.activity-picker-label{flex:1;min-width:0;font-weight:720;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-picker-panel{margin-top:7px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 12px 30px rgba(15,23,42,.10);overflow:hidden}.activity-search{display:flex;align-items:center;gap:8px;padding:9px;border-bottom:1px solid var(--line);color:var(--muted)}.activity-search input{border:0!important;box-shadow:none!important;min-height:38px!important;padding:4px!important}.activity-choices{max-height:260px;overflow:auto;padding:5px}.activity-choice{width:100%;border:0;background:#fff;border-radius:10px;padding:8px;display:flex;align-items:center;gap:9px;text-align:left;cursor:pointer;font-weight:650}.activity-choice:hover,.activity-choice:focus{background:var(--surface2);outline:none}.activity-choice.custom{color:var(--brand)}
.activity-summary-list{display:grid;gap:9px}.activity-summary{padding:14px}.activity-summary-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.activity-summary-icon{width:38px;height:38px;border-radius:12px;background:var(--surface2);display:grid;place-items:center;flex:0 0 auto}.activity-summary-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex:1;min-width:0}.activity-summary-title strong{font-size:15px}.activity-summary-title span{font-size:13px;font-weight:800;white-space:nowrap}.activity-summary-metrics{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:10px;color:var(--muted);font-size:12px}.activity-summary-metrics span{display:inline-flex;align-items:center;gap:5px}.activity-summary-metrics b{color:var(--text)}

/* V1.0.5 — lieux de pratique */
.place-link{width:100%;border:0;background:transparent;padding:0;display:flex;align-items:flex-start;gap:9px;text-align:left;color:inherit;cursor:pointer}.place-link>span{flex:1}.place-link .icon:last-child{width:16px;height:16px;color:var(--muted);margin-top:2px}.place-map{margin-top:12px;border:1px solid var(--line);border-radius:15px;overflow:hidden;background:var(--surface2)}.place-map iframe{display:block;width:100%;height:250px;border:0}.place-map-attrib{padding:7px 10px;font-size:10px;color:var(--muted);background:#fff;border-top:1px solid var(--line)}.place-map-attrib a{color:inherit}.place-address{font-size:13px;line-height:1.45}.place-note{font-size:13px;line-height:1.5;color:var(--muted);white-space:pre-wrap}.place-form-map{min-height:92px;display:grid;place-items:center;text-align:center}.code-access-grid{display:grid;gap:9px}.code-access-card{padding:13px}.code-access-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.code-access-title{font-size:13px;font-weight:800}.code-access-help{font-size:11px;color:var(--muted);margin-top:3px}.code-access-actions{display:flex;gap:6px;align-items:center}.code-box code.code-missing{letter-spacing:0;color:var(--muted);font-weight:700}.event-place-hint{display:flex;align-items:flex-start;gap:6px;font-size:11px;color:var(--muted);margin-top:6px}.place-row-actions{display:flex;gap:4px;margin-left:auto}
.place-map{width:100%}


/* V1.0.6 — rattachement AS + repère de lieu ajustable */
.partner-join-note{margin-top:9px;font-size:11px;color:var(--muted)}
.place-edit-map{position:relative;width:100%;margin-top:0}.place-edit-map .place-map-stage{position:relative;width:100%;height:280px;overflow:hidden;background:var(--surface2)}.place-edit-map iframe{width:100%;height:100%;border:0;display:block;pointer-events:none}.place-drag-pin{position:absolute;z-index:3;left:50%;top:50%;width:28px;height:28px;transform:translate(-50%,-50%);border:4px solid #fff;border-radius:50%;background:var(--brand);box-shadow:0 3px 12px rgba(15,23,42,.32);cursor:grab;touch-action:none}.place-drag-pin:active{cursor:grabbing;transform:translate(-50%,-50%) scale(1.08)}.place-drag-help{display:flex;align-items:flex-start;gap:7px;padding:8px 10px;font-size:11px;color:var(--muted);background:#fff;border-top:1px solid var(--line);text-align:left}.place-drag-help .icon{width:15px;height:15px;flex:0 0 auto;color:var(--brand)}.place-coords{display:block;margin-top:2px;font-variant-numeric:tabular-nums}

/* V1.0.10 — éditeur de carte OSM sans dépendance Leaflet */
.place-form-map.has-map{display:block;min-height:0;text-align:left}
.place-form-map.has-map .place-edit-map{display:block!important;width:100%;min-height:0;margin:0}
.place-edit-map .simple-osm-map{position:relative!important;display:block!important;width:100%!important;height:330px!important;min-height:330px!important;overflow:hidden!important;background:#e8ecef;touch-action:none;user-select:none;-webkit-user-select:none}
.simple-map-tiles{position:absolute;inset:0;overflow:hidden;background:#e8ecef}
.simple-map-tile{position:absolute;left:0;top:0;width:256px!important;height:256px!important;max-width:none!important;max-height:none!important;display:block!important;pointer-events:none;user-select:none;-webkit-user-drag:none}
.simple-map-controls{position:absolute;z-index:20;left:10px;top:10px;display:grid;border:1px solid rgba(15,23,42,.12);border-radius:11px;overflow:hidden;box-shadow:0 5px 16px rgba(15,23,42,.12);background:#fff}
.simple-map-btn{width:40px;height:40px;border:0;background:#fff;color:#17202a;font-size:24px;font-weight:700;line-height:1;display:grid;place-items:center;cursor:pointer}
.simple-map-btn+.simple-map-btn{border-top:1px solid var(--line)}
.simple-map-btn:active{background:var(--surface2)}
.place-edit-map .place-map-recenter{position:absolute;z-index:20;right:10px;top:10px;width:40px;height:40px;border:1px solid rgba(15,23,42,.12);border-radius:11px;background:#fff;color:#17202a;display:grid;place-items:center;box-shadow:0 5px 16px rgba(15,23,42,.12);cursor:pointer}.place-edit-map .place-map-recenter:active{transform:scale(.96)}
.place-edit-map .place-precision-pin{position:absolute;z-index:25;width:32px;height:42px;padding:0;border:0;background:transparent;transform:translate(-50%,-100%);cursor:grab;touch-action:none;filter:none}
.place-edit-map .place-precision-pin:active{cursor:grabbing}
.place-edit-map .place-precision-pin svg{display:block;width:28px;height:40px;margin:auto;filter:drop-shadow(0 3px 4px rgba(15,23,42,.28));overflow:visible}
.place-edit-map .place-precision-pin path{fill:var(--brand);stroke:#fff;stroke-width:1.5}
.place-edit-map .place-precision-pin circle{fill:#fff;stroke:var(--brand);stroke-width:1.2}
.simple-map-attrib{position:absolute;z-index:15;right:5px;bottom:4px;padding:2px 5px;border-radius:5px;background:rgba(255,255,255,.86);font-size:9px;color:#58606b;pointer-events:none}
@media(max-width:480px){.place-edit-map .simple-osm-map{height:300px!important;min-height:300px!important}}

/* V1.0.12 — accès élèves + page paramètres AS compacte */
.student-access-card{max-width:430px}.student-gate-as{margin:-2px 0 14px}.student-gate-brand{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface2);border-radius:14px;text-align:left}.student-gate-brand .brand-mark{background:#fff}.student-access-card .error{min-height:18px}
.settings-title{margin-top:18px}.as-overview-card{display:flex;align-items:flex-start;gap:12px;padding:14px}.as-overview-mark{width:44px;height:44px;border-radius:14px;background:var(--surface2);display:grid;place-items:center;font-weight:850;flex:0 0 auto}.as-overview-copy{min-width:0;flex:1}.as-overview-name{font-size:16px;font-weight:850;line-height:1.2}.as-overview-meta{font-size:11.5px;color:var(--muted);margin-top:3px}.as-overview-desc{font-size:12px;color:#475467;margin-top:7px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.settings-hub{display:grid;gap:8px}.settings-row{width:100%;display:flex;align-items:center;gap:11px;padding:12px 13px;border:1px solid var(--line);background:var(--surface);border-radius:15px;text-align:left;cursor:pointer;box-shadow:0 4px 14px rgba(15,23,42,.025)}.settings-row:active{background:var(--surface2)}.settings-icon{width:36px;height:36px;border-radius:11px;background:var(--surface2);color:var(--brand);display:grid;place-items:center;flex:0 0 auto}.settings-copy{display:grid;gap:2px;min-width:0;flex:1}.settings-copy strong{font-size:13.5px}.settings-copy small{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.settings-badge{font-size:10px;font-weight:800;color:var(--muted)}.modal-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}.modal-title-row h2{margin:2px 0 0}.modal-list-space{margin-top:10px}
.student-access-admin{display:grid;gap:10px}.access-code-display{display:grid;grid-template-columns:1fr auto 42px;align-items:center;gap:10px;padding:13px 14px;background:var(--surface2);border-radius:14px}.access-code-display>span{font-size:11px;color:var(--muted);font-weight:750}.access-code-display strong{font-size:18px;letter-spacing:.06em}.access-link-box{display:flex;align-items:center;gap:10px;padding:12px 13px;border:1px solid var(--line);border-radius:14px}.access-link-box>div{min-width:0;flex:1;display:grid;gap:3px}.access-link-box span{font-size:11px;font-weight:800}.access-link-box small{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-access-actions{display:flex;gap:8px;flex-wrap:wrap}.student-qr-wrap{padding:14px;background:#fff;border:1px solid var(--line);border-radius:14px;text-align:center}.student-qr-wrap img{display:block;width:220px;height:220px;max-width:100%;margin:0 auto}.student-qr-wrap p{margin:9px 0 0;font-size:11px;color:var(--muted)}.access-reset-hint{margin-top:10px}.access-reset-warning{margin-top:12px}.access-reset-warning .notice-text{font-size:12px}
@media(min-width:700px){.settings-hub{grid-template-columns:repeat(2,minmax(0,1fr))}.as-overview-card{padding:16px}.student-access-admin{grid-template-columns:1fr}.student-access-actions{justify-content:flex-start}}

/* V1.0.16 — accès prof discret, équipe & bilans événement */
.student-prof-link{margin-top:14px;text-align:center}.student-prof-link a{font-size:11.5px;color:var(--muted);text-decoration:none}.student-prof-link a:hover{text-decoration:underline;color:#344054}
.team-member-row .row-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.team-member-row .member-display-name{flex:0 0 auto}
.tag.bilan-tag{display:inline-flex;align-items:center;gap:4px;background:#eef4ff;color:#3538cd}.tag.bilan-tag .icon{width:11px;height:11px}
.event-report-card{padding:13px 14px;margin-top:10px}.event-report-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.event-report-title{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:800}.event-report-title .icon{color:var(--brand)}.event-report-meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.event-report-text{margin-top:10px;font-size:13px;line-height:1.5;white-space:pre-wrap}.event-report-link{display:inline-flex;align-items:center;gap:6px;margin-top:9px;font-size:12px;color:var(--brand);text-decoration:none}.event-report-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.report-private-note{display:flex;align-items:flex-start;gap:7px;padding:9px 10px;border-radius:12px;background:var(--surface2);font-size:11px;color:var(--muted);line-height:1.4}.report-private-note .icon{width:15px;height:15px;flex:0 0 auto}.report-existing-file{display:flex;align-items:center;gap:9px;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:#fff;margin-top:8px}.report-existing-file>span{min-width:0;flex:1}.report-existing-file strong{display:block;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-existing-file small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.report-participants .field input{text-align:center;font-variant-numeric:tabular-nums}


/* V1.0.21 — page d'entrée élève plus accueillante */
#chooser.student-entry-shell{
  position:relative;overflow:hidden;align-items:center;
  background:
    radial-gradient(circle at 12% 15%,rgba(37,99,235,.10),transparent 28%),
    radial-gradient(circle at 88% 82%,rgba(16,185,129,.08),transparent 27%),
    linear-gradient(180deg,#f8fbff 0%,#f5f7fa 58%,#f6f7f9 100%);
}
#chooser.student-entry-shell:before,#chooser.student-entry-shell:after{content:"";position:absolute;border-radius:999px;pointer-events:none}
#chooser.student-entry-shell:before{width:170px;height:170px;left:-92px;top:9%;background:rgba(37,99,235,.055)}
#chooser.student-entry-shell:after{width:220px;height:220px;right:-130px;bottom:4%;background:rgba(16,185,129,.05)}
.student-entry-wrap{position:relative;z-index:1;width:min(100%,500px);display:grid;gap:14px}
.student-welcome{padding:4px 8px 2px;text-align:center}
.student-welcome-brand{display:inline-flex;align-items:center;gap:8px;padding:6px 10px 6px 7px;border:1px solid rgba(37,99,235,.11);border-radius:999px;background:rgba(255,255,255,.82);box-shadow:0 5px 18px rgba(15,23,42,.035);font-size:12px;font-weight:850;color:#344054}
.student-welcome-logo{width:30px;height:30px;border-radius:9px;display:block}
.student-welcome h1{margin:14px 0 5px;font-size:28px;line-height:1.08;letter-spacing:-.02em}
.student-welcome>p{max-width:410px;margin:0 auto;color:#667085;font-size:13px;line-height:1.5}
.student-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:15px;text-align:left}
.student-step{display:flex;align-items:flex-start;gap:9px;padding:10px 11px;border:1px solid rgba(230,232,236,.95);border-radius:14px;background:rgba(255,255,255,.78);backdrop-filter:blur(10px)}
.student-step-num{width:24px;height:24px;flex:0 0 auto;border-radius:8px;background:#eaf1ff;color:#2563eb;display:grid;place-items:center;font-size:11px;font-weight:900}
.student-step strong{display:block;font-size:12px;line-height:1.25}
.student-step small{display:block;margin-top:2px;color:#7b8491;font-size:10.5px;line-height:1.35}
.student-access-card{width:100%;max-width:none;padding:18px 20px 17px;border-radius:22px;box-shadow:0 14px 42px rgba(15,23,42,.08)}
.student-code-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.student-code-head .login-logo{margin:0}
.student-code-icon{width:44px;height:44px;border-radius:14px;background:#17202a}
.student-code-head h2{margin:0;font-size:18px;line-height:1.2}
.student-code-head p{margin:3px 0 0;font-size:11.5px;color:var(--muted)}
.student-access-card .student-gate-as{margin:0 0 11px}
.student-code-form{gap:0}
.student-code-form .field label{font-size:11.5px}
.student-code-form input{min-height:48px;border-radius:13px;font-size:15px;letter-spacing:.02em}
.student-enter-btn{min-height:48px;margin-top:4px;border-radius:13px;font-size:14px;box-shadow:0 7px 16px rgba(37,99,235,.18)}
.student-privacy-note{margin:8px 0 0!important;text-align:center;font-size:10.5px!important;color:#7a828d!important}
.student-prof-btn{min-height:58px;display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid #dbe3ee;border-radius:17px;background:#fff;color:#1d2939;text-decoration:none;box-shadow:0 7px 22px rgba(15,23,42,.05);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.student-prof-btn:hover{border-color:#b8c7dc;box-shadow:0 9px 26px rgba(15,23,42,.075)}
.student-prof-btn:active{transform:scale(.992)}
.student-prof-icon{width:38px;height:38px;flex:0 0 auto;border-radius:12px;background:#eef4ff;color:#2563eb;display:grid;place-items:center}
.student-prof-icon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.student-prof-copy{display:grid;gap:1px;min-width:0;flex:1}
.student-prof-copy strong{font-size:13px}
.student-prof-copy small{font-size:10.5px;color:#7a828d}
.student-prof-arrow{font-size:25px;line-height:1;color:#98a2b3;margin-right:2px}
@media(max-width:520px){
  #chooser.student-entry-shell{padding:18px 14px 22px;place-items:center}
  .student-entry-wrap{gap:11px}
  .student-welcome{padding-top:0}
  .student-welcome h1{font-size:25px;margin-top:11px}
  .student-welcome>p{font-size:12.5px}
  .student-steps{grid-template-columns:1fr;gap:6px;margin-top:12px}
  .student-step{padding:8px 10px}
  .student-access-card{padding:16px;border-radius:20px}
  .student-prof-btn{min-height:56px}
}
@media(max-height:720px) and (min-width:521px){
  #chooser.student-entry-shell{padding-top:14px;padding-bottom:14px}
  .student-welcome h1{font-size:24px;margin-top:9px}
  .student-steps{margin-top:10px}
  .student-access-card{padding-top:15px;padding-bottom:14px}
}

/* =========================================================
   Agenda V1.0.22 — regroupement par jour, mois accordéon
   ========================================================= */
.type-tag{border:0}
.type-tag.type-entrainement{background:#eaf2ff;color:#2458b8}
.type-tag.type-competition{background:#fff0f1;color:#b42318}
.type-tag.type-animation{background:#eaf8ef;color:#18794e}
.type-tag.type-reunion{background:#f3efff;color:#6941c6}
.type-tag.type-autre{background:#eef1f4;color:#475467}

.agenda-month{margin:14px 0 0}
.month-toggle{width:100%;border:0;background:transparent;padding:10px 2px 9px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;color:var(--text);cursor:pointer}
.month-toggle>span{display:grid;gap:2px;min-width:0}
.month-toggle strong{font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:850}
.month-toggle small{font-size:11px;color:var(--muted);font-weight:650;text-transform:none;letter-spacing:0}
.month-chevron{transition:transform .18s ease;color:var(--muted)}
.agenda-month.open .month-chevron{transform:rotate(90deg)}
.month-panel{display:grid;gap:10px}
.month-panel[hidden]{display:none!important}

.agenda-day{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 4px 14px rgba(15,23,42,.025)}
.agenda-day.is-today{border-color:color-mix(in srgb,var(--brand) 40%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 8%,transparent)}
.agenda-day-head{display:flex;align-items:center;gap:8px;padding:9px 12px 8px;background:color-mix(in srgb,var(--surface2) 72%,white);border-bottom:1px solid var(--line)}
.agenda-day-label{display:flex;align-items:baseline;gap:5px;min-width:0;text-transform:capitalize}
.agenda-day-label strong{font-size:13px;font-weight:850;color:var(--text)}
.agenda-day-label span{font-size:11px;color:var(--muted);font-weight:750;text-transform:lowercase}
.day-count{margin-left:auto;font-size:10.5px;color:var(--muted);font-weight:700;white-space:nowrap}
.today-pill{font-size:9.5px;font-weight:850;border-radius:999px;padding:4px 7px;background:color-mix(in srgb,var(--brand) 12%,white);color:var(--brand);white-space:nowrap}
.agenda-day-events{display:grid}
.day-event{position:relative;display:grid;grid-template-columns:4px 1fr 22px;gap:10px;align-items:center;padding:10px 11px 10px 0;cursor:pointer;background:var(--surface)}
.day-event+.day-event{border-top:1px solid var(--line)}
.day-event:active{background:var(--surface2)}
.day-event-accent{align-self:stretch;background:var(--activity,var(--brand));border-radius:0 4px 4px 0;min-height:44px}
.day-event .event-title{font-size:14px;line-height:1.22}
.day-event .event-sub{margin-top:3px;font-size:11.8px}
.day-event .event-tags{margin-top:5px}
.day-event>.icon{color:var(--muted)}

.vacation-band{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:#fff8e8;border:1px solid #f4dfaa;color:#8a5a00}
.vacation-band>.icon{flex:0 0 auto}
.vacation-band>div{display:grid;gap:1px;min-width:0}
.vacation-band strong{font-size:12.5px;font-weight:850}
.vacation-band span{font-size:10.8px;color:#9a6b17;font-weight:650}
.vacation-mini{color:#b7791f;background:#fff8e8}

@media(max-width:520px){
  .month-toggle{padding-top:8px}
  .agenda-day-head{padding:8px 10px 7px}
  .agenda-day-label strong{font-size:12.7px}
  .day-event{grid-template-columns:4px 1fr 18px;gap:8px;padding-right:8px}
  .day-event .event-title{font-size:13.6px}
  .day-count{font-size:9.8px}
}


/* V1.0.24 — option alerte dans l'export social */
.export-alert-option{margin-top:14px;align-items:flex-start}
.export-alert-option span{display:flex;flex-direction:column;gap:3px}
.export-alert-option small{font-size:12px;color:var(--muted,#667085);font-weight:500}

/* V1.0.26 — journées d’agenda repliables */
.agenda-day-head.day-toggle{width:100%;border:0;text-align:left;font:inherit;color:inherit;cursor:pointer}
.agenda-day-head.day-toggle:hover{background:color-mix(in srgb,var(--surface2) 88%,white)}
.day-chevron{margin-left:2px;color:var(--muted);transition:transform .18s ease;flex:0 0 auto}
.agenda-day.open .day-chevron{transform:rotate(90deg)}
.agenda-day.is-past:not(.open){opacity:.84}
.agenda-day.is-past:not(.open) .agenda-day-head{border-bottom:0}
.agenda-day-events[hidden]{display:none!important}
