:root{font-family:system-ui,-apple-system,Segoe UI,sans-serif;color:#203646;background:#f2f6f9;font-synthesis:none;--brand:#156c82;--line:#dbe5eb;--accent:#e4f2f3}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a.btn{border:1px solid var(--line);border-radius:12px;background:white;color:#264555;min-height:48px;padding:10px 17px;font-weight:650;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}button:hover,a.btn:hover{background:#eaf3f6}button:disabled{opacity:.45;cursor:not-allowed}button.primary,.primary{background:var(--brand);color:white;border-color:var(--brand)}button.active{background:#d3ecef;border-color:var(--brand);color:#085166}button.danger{color:#9d3c32}input,select,textarea{background:white;border:1px solid #b9cbd5;border-radius:9px;padding:11px;min-height:48px;max-width:100%;color:inherit}input[type=checkbox]{width:22px;height:22px;min-height:22px}label{display:flex;flex-direction:column;gap:7px;font-size:.88rem;font-weight:600}label.check{flex-direction:row;align-items:center;gap:12px}input[type=number]{width:150px}textarea{width:100%;min-height:70px}h1{font-size:1.55rem;margin:0}h2{font-size:1.24rem;margin:0 0 16px}h3{font-size:1rem;margin:4px 0 12px}p{line-height:1.5}small,.muted{color:#5f7584}header{background:white;border-bottom:1px solid var(--line);padding:16px max(20px,calc((100vw - 1280px)/2));display:flex;align-items:center;gap:14px;justify-content:space-between}header img{width:43px}header .brand{display:flex;gap:12px;align-items:center}.tools,.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.tools{justify-content:flex-end}.shell{max-width:1280px;margin:auto;padding:20px}.context{display:flex;align-items:end;gap:14px;flex-wrap:wrap;margin-bottom:18px}.context label{flex:1;min-width:150px}nav{display:flex;gap:7px;overflow:auto;padding-bottom:12px;margin-bottom:14px}nav button{white-space:nowrap;background:transparent;border-color:transparent}nav button.active{background:white}.card{background:white;border:1px solid var(--line);border-radius:18px;padding:22px;margin-bottom:18px;box-shadow:0 3px 12px #27495905}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grid>.card{margin:0}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.metric{background:#edf5f7;border-radius:14px;padding:18px;flex:1;min-width:120px}.metric strong{display:block;font-size:1.8rem;color:#135970}.metric small{display:block}.pill{display:inline-block;border-radius:20px;padding:5px 10px;background:#e7f3eb;color:#276045;font-size:.8rem}.warn{background:#fff2d9;color:#79500b;padding:13px;border-radius:10px}.error{background:#feece8;color:#983c2b;padding:13px;border-radius:10px}.good{color:#246b46}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.stepper{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stepper output{font-size:2rem;font-weight:750;min-width:90px;text-align:center}.stepper button{min-width:65px;font-size:1.2rem}.stack{display:grid;gap:15px}.picker{display:flex;gap:6px;flex-wrap:wrap}.picker label{position:relative;display:flex;flex-direction:row;padding:10px 13px;min-height:48px;align-items:center;border:1px solid var(--line);border-radius:10px;cursor:pointer}.picker label:has(input:checked){border-color:var(--brand);background:#e1f0f2}.picker input{width:17px;min-height:17px;height:17px;margin:0}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);white-space:nowrap}th{color:#58707e;font-weight:600}details{margin-top:16px}summary{cursor:pointer;padding:12px 0;font-weight:650}#notice{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);max-width:min(90vw,700px);padding:14px 20px;border-radius:12px;background:#203b4b;color:white;box-shadow:0 5px 20px #0002;z-index:30;display:none}#notice.show{display:block}.status{font-size:.78rem}.boot,.welcome{max-width:750px;margin:60px auto;padding:25px}.welcome h1{font-size:2.2rem}.eyebrow{color:var(--brand);font-size:.8rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase;margin:0 0 10px}.empty{padding:26px;text-align:center;color:#657985}.terrain .secondary,.terrain nav,.terrain .class-context{display:none}.terrain main{max-width:960px;margin:auto}.terrain button{min-height:58px}.terrain .stepper button{min-height:68px;min-width:75px}.terrain .metric strong{font-size:2.2rem}.terrain .card{padding:22px}.diagram{width:100%;height:auto;min-height:260px;background:#f8fbfc;border-radius:12px}.legend{display:flex;gap:18px;flex-wrap:wrap;font-size:.85rem}.legend span:before{content:'';display:inline-block;width:13px;height:13px;border-radius:3px;margin-right:6px;background:var(--color)}.install:fullscreen{overflow:auto;background:white;padding:25px}.install ol{line-height:2}.install .current-step{background:#e6f3f5;border-radius:10px;padding:12px}.score{font-size:2.3rem;color:var(--brand);font-weight:750}.hr{border:0;border-top:1px solid var(--line);margin:20px 0}.footer{font-size:.8rem;color:#627886;text-align:center;padding:20px}.offline{background:#fff1d6;color:#725014}.settings-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.settings-grid input{width:100%}:focus-visible{outline:3px solid #e9a735;outline-offset:3px}@media(max-width:760px){header{padding:12px}.shell{padding:12px}.grid{grid-template-columns:1fr}.tools .label{display:none}header h1{font-size:1.05rem}header small{font-size:.7rem}.card{padding:17px}.context{gap:8px}.context label{min-width:130px}.metric{padding:13px}.metric strong{font-size:1.45rem}nav{gap:0}nav button{padding:10px}.stepper{gap:6px}.stepper button{min-width:52px;padding:10px}.terrain .stepper button{min-width:53px}.terrain .stepper output{min-width:72px;font-size:1.7rem}.section-title{align-items:flex-start}.settings-grid{grid-template-columns:repeat(2,1fr)}}@media print{@page{size:A4 landscape;margin:10mm}header,nav,.context,.no-print,.footer,#notice{display:none!important}.shell{padding:0}.card{box-shadow:none;break-inside:avoid}.diagram{min-height:0}.secondary{display:none}body{background:white}main{width:100%}.install{border:0;padding:0}.table-wrap{overflow:visible}}
@media(max-width:760px){header{flex-wrap:wrap}.tools{width:100%;justify-content:space-between}.tools button{padding:9px 12px}.brand{min-width:0}.status{font-size:.72rem}.context select{width:100%}.settings-grid label{min-width:0}}
@media print{.install .diagram{height:108mm;min-height:0;max-height:108mm}.install p{font-size:10pt;margin:5px 0}.install .metric{padding:8px}.install .current-step{display:none}.install .section-title{margin-bottom:5px}.install .cards{margin-top:8px}.install .legend{font-size:9pt}.install h2{font-size:15pt}.install h3{margin-bottom:4px}}
.welcome form{margin-top:22px}.welcome input{width:100%}.welcome .stack{max-width:520px}.context button{white-space:nowrap}#localClassPanel textarea{min-height:150px}

/* S1 diagnostic */
.diagnostic-summary{margin-bottom:16px}.diagnostic-tabs{display:flex;gap:8px;overflow:auto;margin:0 0 18px}.diagnostic-tabs button{white-space:nowrap}.student-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.diag-status{display:inline-flex;align-items:center;width:max-content;border-radius:999px;padding:5px 10px;font-size:.8rem;font-weight:750}.diag-complete{background:#e7f3eb;color:#246b46}.diag-partial{background:#fff2d9;color:#79500b}.diag-missing{background:#eef2f4;color:#60737f}.student-link{min-height:38px;padding:6px 10px;text-align:left;justify-content:flex-start}.diagnostic-balance{scroll-margin-top:16px}.pair-list{gap:10px}.pair-line{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px;border:1px solid var(--line);border-radius:12px}.pair-line .row{justify-content:flex-end}
@media(max-width:760px){.student-head,.pair-line{align-items:stretch;flex-direction:column}.pair-line .row{justify-content:flex-start}.diagnostic-summary .metric{min-width:45%}}

/* Diagnostic speed scale · 6 levels */
.speed-level{display:inline-flex;align-items:center;justify-content:center;gap:5px;border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:800;border:1px solid transparent;white-space:nowrap}.speed-level small{display:block;color:inherit;font-size:.68rem;font-weight:650}.level-none{background:#eef2f4;color:#60737f}.level-1{background:#e9eef2;color:#465d6b;border-color:#d7e0e5}.level-2{background:#dbeeff;color:#1d5f8f;border-color:#b8dcf8}.level-3{background:#daf3ed;color:#176b5a;border-color:#b4e3d8}.level-4{background:#fff3c9;color:#7c5a00;border-color:#f0dfa1}.level-5{background:#ffe5c5;color:#925211;border-color:#f5c990}.level-6{background:#fbd9d3;color:#9a3529;border-color:#efb6ac}.diagnostic-live{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#f7fafb;border:1px dashed #bfd0d9;border-radius:12px;padding:12px}.diagnostic-live .speed-level{font-size:1rem;padding:9px 15px}.live-label{font-weight:700;color:#58707e}.diagnostic-scale-card summary{font-size:1rem}.scale-settings{padding:10px 0}.diag-thresholds{grid-template-columns:repeat(5,minmax(110px,1fr))}.scale-preview{display:grid;grid-template-columns:repeat(6,minmax(80px,1fr));gap:7px;margin-top:10px}.scale-preview .speed-level{border-radius:10px;flex-direction:column;padding:9px 6px;white-space:normal;text-align:center}.metric .speed-level{margin-top:8px}@media(max-width:760px){.diag-thresholds{grid-template-columns:repeat(2,1fr)}.scale-preview{grid-template-columns:repeat(3,1fr)}}

/* Terrain touch lock */
html{overscroll-behavior-x:none}.terrain{overscroll-behavior-x:none;touch-action:pan-y pinch-zoom}.terrain main{overscroll-behavior-x:none}
/* V1.0.12 · binômes plus discrets */
.pair-list{gap:8px}.pair-line{padding:9px 10px;min-height:58px;cursor:pointer;background:#fff;transition:border-color .15s,background .15s}.pair-line:hover{background:#f7fbfc;border-color:#b9d4dc}.pair-line.selected{border-color:var(--brand);background:#f1f8f9}.pair-main{min-width:0;display:grid;gap:4px}.pair-main strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pair-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:.8rem;color:#607884}.pair-meta span+span:before{content:'·';margin-right:10px;color:#9aabb4}.pair-actions{display:flex;align-items:center;gap:6px}.pair-actions button{min-height:36px;padding:6px 9px;font-size:.8rem}.pair-chevron{font-size:1.6rem;color:#78909c;padding:0 2px}.pair-detail{scroll-margin-top:12px}.pair-order-card{padding:16px}.pair-order-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin:10px 0 14px}.pair-order-values span{display:grid;gap:2px}.pair-order-values small{font-size:.75rem;color:#6b7f8b}.pair-order-values b{font-size:1rem}.pair-detail-actions{margin-top:14px}
@media(max-width:760px){.pair-line{flex-direction:row;align-items:center}.pair-actions button{display:none}.pair-chevron{display:block}.pair-main{flex:1}.pair-meta{gap:6px}.pair-meta span+span:before{margin-right:6px}.pair-order-values{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V1.0.14 · pilotage de séance */
.pairing-rule,.project-card{background:#eef7f7;border-left:4px solid var(--brand);border-radius:10px;padding:13px 15px;margin:0 0 18px}.session-guidance{display:grid;gap:3px;background:#fff7df;border-radius:10px;padding:12px 14px;margin-bottom:16px}.session-guidance span{color:#6d5a24;font-size:.9rem}.session-sheet{border-color:#b9d4dc}.terrain .session-sheet{display:none}.session-sheet .table-wrap{max-height:460px}.sheet-rule{font-size:.86rem;color:#526d7b}.observable-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.observable-grid .primary{grid-column:1/-1}.observables-settings{margin-top:18px}
@media(max-width:760px){.observable-grid{grid-template-columns:1fr}.session-sheet .table-wrap{max-height:320px}}
@media print{body.print-session-sheet main>*:not(.session-sheet){display:none!important}body.print-session-sheet .session-sheet{display:block!important;border:0;margin:0;padding:0}body.print-session-sheet .session-sheet .table-wrap{max-height:none;overflow:visible}body.print-session-sheet .session-sheet table{font-size:8.5pt}body.print-session-sheet .session-sheet th,body.print-session-sheet .session-sheet td{padding:7px 5px;white-space:normal;min-height:26px}body.print-session-sheet .session-sheet h2{margin-bottom:4px}}

/* V1.0.15 · matrice des départs */
.pair-matrix-sheet{margin-top:18px}.matrix-title{margin-top:24px}.matrix-wrap{overflow:auto;max-height:72vh;border:1px solid var(--line);border-radius:10px}.pair-matrix{width:max-content;min-width:100%;font-size:.72rem}.pair-matrix th,.pair-matrix td{padding:5px;text-align:center;border:1px solid var(--line);white-space:nowrap}.pair-matrix td{min-width:72px}.pair-matrix td b,.pair-matrix td small{display:block}.pair-matrix td small{font-size:.62rem}.pair-matrix .matrix-row{position:sticky;left:0;z-index:2;background:#fff;text-align:left;min-width:125px}.pair-matrix thead th{position:sticky;top:0;z-index:3;background:#f4f8fa}.pair-matrix .matrix-corner{left:0;z-index:4;min-width:125px}.matrix-corner span{display:block;text-align:left}.pair-matrix .matrix-column{height:115px;min-width:42px;vertical-align:bottom}.pair-matrix .matrix-column span{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);max-height:105px}.pair-matrix .matrix-diagonal{background:#dfe5e8;color:#7c8c94}.pair-matrix .matrix-empty{background:#f7f9fa;color:#9aa8af}
@media print{body.print-pair-matrix main>*:not(.pair-matrix-sheet){display:none!important}body.print-pair-matrix .pair-matrix-sheet{display:block!important;border:0;margin:0;padding:0}body.print-pair-matrix .pair-matrix-sheet .table-wrap,body.print-pair-matrix .matrix-wrap{overflow:visible;max-height:none;border:0}body.print-pair-matrix .pair-matrix-sheet>.table-wrap table{font-size:8pt}body.print-pair-matrix .pair-matrix-sheet>.table-wrap th,body.print-pair-matrix .pair-matrix-sheet>.table-wrap td{padding:5px 4px}body.print-pair-matrix .matrix-title{break-before:page;margin-top:0}body.print-pair-matrix .pair-matrix{font-size:5.6pt;width:100%;table-layout:fixed}body.print-pair-matrix .pair-matrix th,body.print-pair-matrix .pair-matrix td{position:static;padding:2px 1px;white-space:normal;min-width:0}body.print-pair-matrix .pair-matrix .matrix-row,body.print-pair-matrix .pair-matrix .matrix-corner{width:36mm;min-width:36mm}body.print-pair-matrix .pair-matrix .matrix-column{height:29mm;min-width:0}body.print-pair-matrix .pair-matrix td b{font-size:5.8pt}body.print-pair-matrix .pair-matrix td small{font-size:4.8pt}body.print-pair-matrix .sheet-rule{font-size:8pt;margin:4px 0}}

/* V1.0.16 · absences, associations testées et observables */
.pair-status{display:inline-flex;width:max-content;border-radius:999px;padding:3px 8px;font-size:.72rem;font-weight:800}.status-trial{background:#fff2d9;color:#79500b}.status-retained{background:#dff3e7;color:#17623d}.presence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.presence-grid label{padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:#fff}.presence-grid label:has(input:checked){background:#feece8;border-color:#e8b3a9;color:#8b382d}.presence-actions{grid-column:1/-1;margin-top:8px}.observable-matrix th:not(:first-child),.observable-matrix td{text-align:center}.observable-matrix input[type=checkbox]{width:21px;height:21px;min-height:21px}.observable-matrix th:first-child{min-width:230px}.aflp-tag{display:inline-flex;border-radius:999px;padding:4px 8px;background:#e4f2f3;color:#0c5b6e;font-size:.75rem;font-weight:800;white-space:nowrap}.mini{min-height:28px;padding:2px 8px;margin-left:7px;border-radius:8px}.observables-settings .section-title{margin-bottom:0}.observables-settings h3,.observables-settings p{margin:0}.pair-order-card .row{align-items:stretch}.pair-order-card .row button{flex:1}
@media(max-width:760px){.presence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.observable-matrix{max-height:70vh}.observable-matrix thead th{position:sticky;top:0;background:#fff;z-index:2}.observable-matrix th:first-child{position:sticky;left:0;background:#fff;z-index:1;min-width:180px}.observable-matrix thead th:first-child{z-index:3}}

/* V1.0.18 · association rapide en mode Terrain */
.terrain-only{display:none}.terrain .terrain-only{display:block}.terrain-pair-builder{border:2px solid #9fc8d2;background:#f7fcfd}.terrain-pair-builder summary{font-size:1.05rem;color:#0b5b70;padding:4px 0 12px}.terrain-pair-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:10px;align-items:end}.terrain-pair-form select{width:100%}.terrain-pair-form button{white-space:nowrap}.terrain-pair-builder p{margin-bottom:0}
@media(max-width:850px){.terrain-pair-form{grid-template-columns:repeat(2,minmax(0,1fr))}.terrain-pair-form button{width:100%}}
@media(max-width:520px){.terrain-pair-form{grid-template-columns:1fr}.terrain-pair-builder{padding:15px!important}}
