:root{--bg: #eef5f3;--panel: #ffffff;--ink: #173036;--muted: #5f7076;--line: #d7e2e5;--primary: #05515f;--primary-dark: #033f49;--primary-soft: #e6f0f2;--accent: #c18a2d;--danger: #b42318;--warning: #92400e;--left-seat: #eaf4f6;--right-seat: #ecfdf5;--teacher: #f8fafc;--shadow: 0 18px 48px rgba(5, 81, 95, .1)}*{box-sizing:border-box}body{min-height:100vh;margin:0;color:var(--ink);background:var(--bg);font-family:Segoe UI,Arial,sans-serif}button,input,select{font:inherit}.center-screen{display:grid;min-height:100vh;place-items:center;padding:24px}.auth-card,.panel,.plan-surface{border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.auth-card{width:min(440px,100%);padding:28px}.auth-logo{display:block;width:136px;height:auto;margin:0 0 18px}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}.sidebar{display:flex;flex-direction:column;gap:24px;padding:22px;border-right:1px solid var(--line);background:var(--primary-dark);color:#fff}.brand,.nav-link,.sidebar-action,.button{display:inline-flex;align-items:center;gap:10px}.brand-logo,.brand svg,.nav-link svg,.button svg{width:18px;height:18px}.brand-logo{width:36px;height:36px;border-radius:8px;background:#fff;object-fit:cover}.brand strong{display:block}.brand span,.user-email,.eyebrow{color:var(--muted)}.sidebar .brand span{color:#cbd5e1}.sidebar-nav{display:grid;gap:8px}.nav-link{min-height:42px;padding:0 12px;border:0;border-radius:6px;background:transparent;color:#cbd5e1;font:inherit;font-weight:750;cursor:pointer;text-align:left}.nav-link.active{background:#ffffff1f;color:#fff}.sidebar-action{margin-top:auto}.main-area{min-width:0;padding:24px}.topbar,.section-header,.action-row,.pair-form{display:flex;align-items:center;justify-content:space-between;gap:14px}.topbar{margin-bottom:18px}.topbar h1,.section-header h2,.print-heading h2{margin:0}.eyebrow{display:block;margin-bottom:4px;color:var(--primary);font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.role-pill{padding:7px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary-dark);font-weight:800}.planner-page{display:grid;gap:18px}.panel{padding:20px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;margin-top:16px}.form-grid:before,.form-grid:after{display:block;grid-column:1 / -1;margin-top:4px;padding-top:2px;color:var(--primary);font-size:.78rem;font-weight:900;letter-spacing:0;text-transform:uppercase}.form-grid:before{content:"Plan";order:0}.form-grid:after{content:"Disposition de la salle";order:2;margin-top:10px;border-top:1px solid var(--primary-soft);padding-top:14px}.form-grid>label:nth-child(-n+4){order:1}.form-grid>label:nth-child(n+5){order:3}.form-grid>label:nth-child(n+5){padding:12px;border:1px solid var(--primary-soft);border-radius:8px;background:#f8fbfa}.form-grid>label:nth-child(n+5){grid-template-columns:minmax(0,1fr) minmax(88px,140px);align-items:center;gap:8px 10px}.form-grid>label:nth-child(n+5) input,.form-grid>label:nth-child(n+5) select{min-height:36px}.form-grid>label:nth-child(n+6):nth-child(-n+10) input{text-align:center}label{display:grid;gap:6px;color:#344054;font-size:.92rem;font-weight:800}input,select{width:100%;min-height:40px;padding:0 10px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:var(--ink)}.button{min-height:40px;padding:0 14px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:var(--ink);font-weight:850;cursor:pointer}.button.primary{border-color:var(--primary);background:var(--primary);color:#fff}.button.primary:hover{border-color:var(--primary-dark);background:var(--primary-dark)}.button.secondary:hover{border-color:#94a3b8}.button.ghost{border-color:#ffffff2e;background:transparent;color:#fff}.action-row{justify-content:flex-start;flex-wrap:wrap;margin-top:16px}.plan-print-action{display:flex;justify-content:flex-end;margin:4px 0 10px}.status{margin:14px 0 0;color:var(--primary);font-weight:800}.error-text{color:var(--danger);font-weight:800}.student-table{display:grid;gap:8px;margin-top:14px}.student-row{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(130px,.75fr) minmax(130px,.75fr) 140px 150px minmax(180px,1fr);gap:10px;align-items:center;padding:8px;border:1px solid #e5e7eb;border-radius:6px}.student-header{border-color:transparent;background:#f8fafc;color:#475467;font-size:.78rem;font-weight:900;text-transform:uppercase}.student-row small{display:block;margin-top:2px;color:var(--muted);font-size:.78rem;font-weight:650}.pair-form{justify-content:flex-start;flex-wrap:wrap;margin-top:14px}.pair-form select{max-width:260px}.tag-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.constraint-tag{display:inline-flex;align-items:center;gap:8px;padding:7px 9px;border-radius:999px;background:#fef3c7;color:#78350f;font-weight:800}.constraint-tag button{display:inline-grid;width:24px;height:24px;padding:0;place-items:center;border:0;border-radius:999px;background:transparent;color:inherit;cursor:pointer}.constraint-tag svg{width:15px;height:15px}.warning-panel{color:var(--warning)}.diagnostic-output{max-height:360px;overflow:auto;margin:14px 0 0;padding:12px;border:1px solid #cbd5e1;border-radius:6px;background:#0f172a;color:#e2e8f0;font-size:.82rem;line-height:1.45;white-space:pre-wrap}.helper-text{margin:8px 0 14px;color:var(--muted)}.admin-import-textarea{width:100%;min-height:220px;padding:12px;border:1px solid #cbd5e1;border-radius:6px;font:.92rem Consolas,monospace;resize:vertical}.admin-summary{display:inline-grid;grid-template-columns:repeat(3,auto auto);gap:8px 12px;align-items:baseline;margin:14px 0;padding:12px;border:1px solid var(--primary-soft);border-radius:6px;background:var(--primary-soft)}.admin-summary strong{color:var(--primary);font-size:1.35rem}.warning-list{margin:0 0 14px;color:var(--warning);font-weight:750}.info-list{margin:0 0 14px;padding:12px;border:1px solid #bfdbfe;border-radius:6px;background:var(--primary-soft);color:var(--primary-dark)}.info-list p{margin:6px 0 8px;color:#475569}.info-list ul{margin:0;padding-left:20px;font-weight:750}.admin-class-list{display:grid;gap:8px}.admin-class-row{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:center;padding:10px;border:1px solid #e5e7eb;border-radius:6px}.access-form{display:grid;grid-template-columns:minmax(180px,1fr) minmax(150px,.7fr) 150px minmax(180px,1fr) auto;gap:10px;align-items:center;margin-top:14px}.teacher-access-list{display:grid;gap:8px;margin-top:16px}.teacher-access-row{display:grid;grid-template-columns:minmax(190px,1fr) minmax(130px,.7fr) 140px minmax(160px,.8fr) auto;gap:10px;align-items:center;padding:9px 12px;border:1px solid #e5e7eb;border-radius:6px}.teacher-access-header{border-color:transparent;background:#f8fafc;color:#475467;font-size:.78rem;font-weight:900;text-transform:uppercase}.source-pill{display:inline-flex;width:fit-content;padding:4px 8px;border-radius:999px;font-size:.78rem;font-weight:900}.source-pill.eai{background:var(--primary-soft);color:var(--primary)}.source-pill.manual{background:#ecfdf3;color:#047857}.row-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.warning-panel ul{margin-bottom:0}.print-heading{text-align:center}.print-heading p{margin:6px 0 0;color:var(--muted)}.plan-surface{min-height:560px;overflow:auto;padding:24px}.empty-plan{display:grid;min-height:500px;place-items:center;border:2px dashed #cbd5e1;border-radius:8px;color:var(--muted);font-weight:900}.classroom-plan{display:grid;grid-template-columns:repeat(var(--plan-columns),minmax(64px,1fr));gap:16px 18px}.classroom-row{display:grid;grid-column:1 / -1;grid-template-columns:repeat(var(--row-columns),minmax(64px,1fr));gap:16px 18px}.desk{display:grid;grid-template-columns:1fr 1fr;min-height:78px;border:2px solid #111827}.seat{display:grid;place-content:center;min-height:78px;padding:8px;border:0;color:var(--ink);font-weight:850;line-height:1.18;word-break:break-word;cursor:grab}.seat em{display:block;margin-top:4px;font-size:.78em;font-style:italic;font-weight:650;opacity:.82}.seat:empty{cursor:default}.seat:hover{filter:brightness(.97)}.left-seat{border-right:1px solid #111827;background:var(--left-seat);color:var(--left-text, var(--ink))}.right-seat{border-left:1px solid #111827;background:var(--right-seat);color:var(--right-text, var(--ink))}.seat.selected{background:#dc2626;color:#fff}.teacher-desk{display:grid;min-height:78px;align-content:center;padding:8px;border:2px solid #111827;background:var(--teacher);color:var(--teacher-text, var(--ink));text-align:center}.teacher-desk span{margin-top:3px;font-size:.9rem}.appearance-panel{margin-top:-4px}.appearance-grid{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:12px;margin-top:14px}.appearance-grid label{min-height:72px;padding:10px;border:1px solid var(--primary-soft);border-radius:8px;background:#f8fbfa}.appearance-grid input[type=color]{min-height:32px;padding:2px;cursor:pointer}.help-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:14px;margin-top:18px}.help-card{min-height:150px;padding:16px;border:1px solid var(--primary-soft);border-radius:8px;background:#f8fbfa}.help-card svg{width:22px;height:22px;color:var(--primary)}.help-card h3{margin:12px 0 8px}.help-card p{margin:0;color:#475569;line-height:1.5}@media(max-width:1100px){.app-shell{grid-template-columns:1fr}.sidebar{position:static}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.appearance-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.help-grid{grid-template-columns:1fr}}@media(max-width:720px){.main-area{padding:14px}.topbar,.section-header{align-items:flex-start;flex-direction:column}.form-grid,.student-row,.access-form,.teacher-access-row{grid-template-columns:1fr}.form-grid>label:nth-child(n+5){grid-template-columns:1fr}.appearance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media print{@page{margin:1cm;size:landscape}*{print-color-adjust:exact;-webkit-print-color-adjust:exact}body{background:#fff}#root,.app-shell,.main-area{min-height:calc(100vh - 2cm)}.noprint,.sidebar,.topbar,.panel.warning-panel{display:none}.app-shell,.main-area{display:block;min-height:0;padding:0;border:0;box-shadow:none}.planner-page{display:grid;min-height:calc(100vh - 2cm);grid-template-rows:auto 1fr;gap:0}.print-heading{padding-bottom:7mm}.print-heading h2{font-size:18pt}.plan-surface{display:grid;min-height:0;align-items:center;justify-items:center;overflow:visible;padding:0;border:0;box-shadow:none}.classroom-plan{gap:4mm;width:min(100%,260mm)}.seat,.teacher-desk{min-height:18mm;font-size:10pt}}
