body{min-height:100vh}.page{max-width:1180px;margin:0 auto}.header-actions{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.header-actions [data-theme-toggle]{justify-content:center;width:38px;padding:9px 0}section{gap:var(--space-5);flex-direction:column;display:flex}section[hidden]{display:none}.session-layout{gap:var(--space-4);flex-wrap:wrap;align-items:flex-start;display:flex}.session-list{flex-direction:column;flex:0 0 260px;gap:6px;display:flex}.session-detail{gap:var(--space-4);flex-direction:column;flex:480px;min-width:0;display:flex}.session-row{border:1px solid var(--ui-border);border-radius:var(--radius-md);background:var(--ui-bg);width:100%;color:var(--ui-fg);text-align:left;cursor:pointer;flex-direction:column;gap:3px;padding:10px 12px;font-family:inherit;display:flex}.session-row:hover{background:var(--ui-hover)}.session-row.selected{border-color:var(--ui-accent);background:var(--ui-accent-soft)}.session-name{font-size:var(--text-body);font-weight:600}.session-meta{font-size:var(--text-label);color:var(--ui-fg-muted);align-items:center;gap:6px;display:flex}.chapter-cell{flex-direction:column;gap:2px;display:flex}.chapter-title{font-weight:600}.chapter-meta{font-size:var(--text-label);color:var(--ui-fg-muted)}.type-badges{flex-wrap:wrap;gap:4px;display:flex}.join-form{gap:var(--space-2);flex-wrap:wrap;align-items:flex-end;display:flex}.join-form .field{flex:0 0 200px}#join-code{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase}.chapter-grid{gap:var(--space-3);flex-wrap:wrap;display:flex}.chapter-card{gap:var(--space-2);min-width:0;padding:var(--space-4);border:1px solid var(--ui-border);border-radius:var(--radius-md);background:var(--ui-bg);flex-direction:column;flex:240px;display:flex}.chapter-card.is-locked{opacity:.55}@media (width<=720px){.page{padding:var(--space-5) var(--space-4)}.session-list{flex:100%}}.split{gap:var(--space-4);flex-wrap:wrap;align-items:flex-start;display:flex}.split>.card{flex:340px;min-width:0}.session-map{border-radius:var(--radius-md);background:var(--ui-bg-sunken);border:1px solid var(--ui-border);width:100%;height:auto;display:block}.map-wrap{position:relative}.map-tip{border-radius:var(--radius-sm);background:var(--ui-fg);color:var(--ui-bg);font-size:var(--text-label);white-space:nowrap;pointer-events:none;z-index:2;padding:4px 8px;position:absolute;transform:translate(-50%,-140%)}.map-tip[hidden]{display:none}.map-legend{gap:var(--space-3);font-size:var(--text-label);color:var(--ui-fg-muted);flex-wrap:wrap;display:flex}.map-legend .legend-item{align-items:center;gap:5px;display:flex}.map-legend-tiers{opacity:.85;margin-top:2px}.swatch-num{color:#fff;border-radius:3px;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.swatch-ring{border:2px solid;border-radius:3px;width:12px;height:12px;display:inline-block}.legend-count{background:var(--ui-bg-subtle);border:1px solid var(--ui-border);font-variant-numeric:tabular-nums;border-radius:999px;padding:0 5px}.swatch-dot{border-radius:2px;flex:none;width:9px;height:9px}.order-buttons{gap:4px;display:flex}.order-buttons .btn{padding:4px 8px;line-height:1}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--ui-hover)}tr.is-open td{background:var(--ui-accent-soft)}.rank{color:var(--ui-fg-muted);width:40px;font-weight:700}.is-stale{color:var(--status-warning)}.ref-list{flex-direction:column;gap:4px;display:flex}.ref-row{align-items:flex-start;gap:var(--space-2);border:1px solid var(--ui-border);border-radius:var(--radius-sm);background:var(--ui-bg-subtle);width:100%;color:var(--ui-fg);font-family:inherit;font-size:var(--text-meta);text-align:left;padding:7px 10px;display:flex}.ref-label{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;flex:1;min-width:0;line-height:1.35;display:-webkit-box;overflow:hidden}.ref-list{flex-shrink:0;max-height:230px;overflow-y:auto}.picker-list{max-height:260px}.picker-filters{gap:var(--space-2);flex-wrap:wrap;display:flex}.picker-filters select{border:1px solid var(--ui-border-strong);border-radius:var(--radius-sm);font-size:var(--text-label);background:var(--ui-bg-subtle);color:var(--ui-fg);flex:140px;padding:6px 8px}.picker-row{cursor:pointer}.picker-row:hover{background:var(--ui-hover);border-color:var(--ui-accent)}.picker-row.is-chosen{border-color:var(--status-success);background:var(--status-success-bg)}.modal-footer{flex-wrap:wrap}.modal-footer .btn-danger{margin-right:auto}#chapter-editor .modal{width:min(640px,94vw)}#slide-focus .modal{width:min(1040px,96vw)}.split>.trainee-side{gap:var(--space-4);flex-direction:column;flex:340px;min-width:0;display:flex}.split>.card:first-child:has(.chapter-grid){flex:2 420px}.type-chips{flex-wrap:wrap;gap:5px;display:flex}.type-chips .chip.is-muted{opacity:.5;text-decoration:line-through}.type-chips .chip.is-count{font-variant-numeric:tabular-nums;margin-left:auto}.type-actions{flex-wrap:wrap;gap:6px;display:flex}.chapter-card.is-open{border-color:var(--ui-accent)}.bar-count{text-align:right;min-width:42px;color:var(--ui-fg-muted);font-variant-numeric:tabular-nums;flex:none}.session-map.is-placing{cursor:crosshair}.session-list-head{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.pass-card{padding:var(--space-5);margin-bottom:var(--space-5);gap:var(--space-4);flex-direction:column;display:flex}.pass-card-expired{border-color:var(--status-danger)}.pass-card-head{align-items:center;gap:var(--space-3);display:flex}.pass-card-title{font-size:var(--text-title);margin:0;font-weight:700}.pass-card-intro{font-size:var(--text-meta);color:var(--ui-fg-muted);max-width:60ch;margin:0}.pass-redeem{gap:var(--space-2);flex-direction:column;display:flex}.pass-redeem-row{gap:var(--space-2);align-items:stretch;display:flex}.pass-redeem-row input{min-width:0;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;flex:1}.pass-redeem-row .btn{flex:none}.pass-redeem-hint{min-height:1.2em;font-size:var(--text-meta);color:var(--ui-fg-muted);margin:0}.pass-request{gap:var(--space-3);flex-direction:column;display:flex}.pass-request-grid{gap:var(--space-3);flex-wrap:wrap;display:flex}.pass-request-grid>.field{flex:150px;min-width:0}.pass-request textarea{font:inherit;resize:vertical;min-height:5em}.pass-request-actions{justify-content:flex-end;gap:var(--space-2);display:flex}.pass-optional{color:var(--ui-fg-faint);font-weight:400}.pass-separator{align-items:center;gap:var(--space-3);color:var(--ui-fg-faint);font-size:var(--text-meta);display:flex}.pass-separator:before,.pass-separator:after{content:"";background:var(--ui-border);flex:1;height:1px}.pass-status{gap:var(--space-2);padding:var(--space-4);border:1px solid var(--ui-border);border-radius:var(--radius-md);background:var(--ui-bg-subtle);flex-direction:column;display:flex}.pass-status-pending{border-color:var(--status-warning)}.pass-status-refused{border-color:var(--status-danger)}.pass-status-title{font-size:var(--text-title);margin:0;font-weight:700}.pass-status-meta{font-size:var(--text-meta);color:var(--ui-fg-muted);margin:0}.pass-status-reason{padding-left:var(--space-3);border-left:2px solid var(--ui-border);color:var(--ui-fg);margin:0}#trainer .stat-tile{min-width:118px}.room-root{z-index:var(--z-modal);color:#fff;background:#0f1216;flex-direction:column;justify-content:center;align-items:center;font-family:inherit;display:flex;position:fixed;inset:0}.room-canvas{aspect-ratio:16/9;max-width:100vw;max-height:100vh}.room-idle{align-items:center;gap:var(--space-3);text-align:center;padding:var(--space-6);flex-direction:column;display:flex}.room-idle[hidden]{display:none}.room-idle-kicker{font-family:var(--font-mono);font-size:var(--text-eyebrow);letter-spacing:.14em;text-transform:uppercase;color:#ffffff80}.room-idle h1{text-wrap:balance;margin:0;font-size:40px;font-weight:700}.room-idle-hint{color:#fff9;max-width:46ch;margin:0}.room-code{font-family:var(--font-mono);letter-spacing:.16em;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);border:1px solid #ffffff40;font-size:22px;font-weight:700}.room-hud{left:var(--space-6);right:var(--space-6);bottom:var(--space-6);font-family:var(--font-mono);font-size:var(--text-meta);color:#ffffffbf;justify-content:space-between;align-items:center;display:flex;position:absolute}.room-hud[hidden]{display:none}.room-hud-progress{align-items:center;gap:var(--space-3);display:flex}.room-hud-bar{border-radius:var(--radius-full);background:#fff3;width:200px;height:2px;display:block;overflow:hidden}.room-hud-bar-fill{background:#fff;height:100%;display:block}.room-hud-room{align-items:center;gap:var(--space-3);display:flex}.room-hud-code{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);letter-spacing:.1em;border:1px solid #ffffff40}.room-message{text-align:center;max-width:46ch;padding:var(--space-6);color:#ffffffb3}.slide-focus-body{align-items:flex-start;gap:var(--space-5);flex-direction:row}.slide-focus-main{gap:var(--space-3);flex-direction:column;flex:2 1 0;min-width:0;display:flex}.slide-focus-canvas{border-radius:var(--radius-md);width:100%;height:auto;display:block}.slide-focus-notes{background:var(--ui-bg-subtle);border:1px solid var(--ui-border);border-radius:var(--radius-md);padding:var(--space-3)}.slide-focus-notes p{margin:var(--space-2) 0 0;white-space:pre-wrap}.slide-focus-side{gap:var(--space-3);flex-direction:column;flex:1 1 0;min-width:220px;display:flex}.slide-focus-room,.slide-focus-next,.slide-focus-deck{gap:var(--space-2);background:var(--ui-bg-subtle);border:1px solid var(--ui-border);border-radius:var(--radius-md);padding:var(--space-3);flex-direction:column;display:flex}.slide-focus-count{font-size:var(--text-title);font-weight:700}.slide-focus-thumb{border-radius:var(--radius-sm);width:100%;height:auto;display:block}@media (width<=720px){.slide-focus-body{flex-direction:column}}.slide-focus-main{position:relative}.poll-barres,.poll-vote{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.poll-question{font-weight:700;font-size:var(--text-title);overflow-wrap:anywhere}.poll-consigne,.poll-pied,.poll-message{font-size:var(--text-meta);color:var(--ui-fg-muted)}.poll-message:empty{display:none}.poll-message{color:var(--status-danger)}.poll-liste{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.poll-ligne{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.poll-libelle{overflow-wrap:anywhere;flex:140px;min-width:0}.poll-barre{background:var(--ui-bg-sunken);border-radius:var(--radius-full);flex:2 160px;height:14px;overflow:hidden}.poll-barre-remplie{background:var(--ui-accent);border-radius:var(--radius-full);height:100%;transition:width .3s;display:block}.poll-ligne.is-mine .poll-barre-remplie{background:var(--status-success,var(--ui-accent))}.poll-ligne.is-mine .poll-libelle{font-weight:700}.poll-valeur{text-align:right;font-variant-numeric:tabular-nums;flex:none;min-width:7ch}.poll-choix{gap:var(--space-2);flex-direction:column;display:flex}.poll-choix-bouton{font:inherit;color:inherit;text-align:left;cursor:pointer;overflow-wrap:anywhere;padding:var(--space-3);background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--radius-sm)}.poll-choix-bouton:hover{border-color:var(--ui-border-strong)}.poll-choix-bouton.is-choisi{border-color:var(--ui-accent);box-shadow:0 0 0 1px var(--ui-accent);background:var(--ui-accent-soft)}.poll-choix-bouton:focus-visible{outline:2px solid var(--ui-accent);outline-offset:2px}.poll-barres.is-grand .poll-question{font-size:2rem}.poll-barres.is-grand .poll-ligne{gap:var(--space-4,16px);font-size:1.5rem}.poll-barres.is-grand .poll-barre{height:28px}.poll-barres.is-grand .poll-pied{font-size:1.25rem}.slide-focus-poll{gap:var(--space-2);flex-direction:column;display:flex}.slide-focus-poll[hidden],.live-slide-poll[hidden],.room-poll[hidden]{display:none}.live-slide-poll{padding:var(--space-3);border-top:1px solid var(--ui-border)}.room-poll{padding:var(--space-4,16px) var(--space-5,24px);color:#fff;border-radius:var(--radius-md);z-index:5;background:#0a121eeb;position:absolute;bottom:10%;left:4%;right:4%}.room-poll .poll-pied{color:#ffffffbf}.room-poll .poll-barre{background:#ffffff2e}.room-poll .poll-barre-remplie{background:#5fa8ff}
