/* ClicksVecto — espace enseignant + « Ma classe » */
.modal-card.cv-modal{max-width:min(880px,94vw);}
.cv-head{display:flex; flex-wrap:wrap; align-items:center; gap:.5rem .7rem; margin-bottom:.4rem;}
.cv-head h2{margin:0;}
.cv-free{padding:.3rem .7rem; border-radius:999px; font-weight:800; font-size:.78rem; color:#fff; background:linear-gradient(135deg,var(--emerald),var(--turquoise)); box-shadow:var(--shadow-sm);}
.cv-founder{padding:.3rem .7rem; border-radius:999px; font-weight:800; font-size:.78rem; color:#5a3b00; background:linear-gradient(135deg,#ffe28a,var(--sun)); animation:cvGlow 2.6s ease-in-out infinite;}
@keyframes cvGlow{50%{box-shadow:0 0 0 6px rgba(240,185,11,.18);}}
.cv-hint{color:var(--ink-soft); font-weight:600; font-size:.9rem;}
.cv-sub{margin:.8rem 0 .5rem; font-family:'Fredoka',sans-serif;}
.cv-login p{font-weight:700;}
.cv-classes{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:.7rem;}
.cv-class{display:flex; flex-direction:column; align-items:flex-start; gap:.25rem; padding:1rem; border-radius:var(--radius); border:1px solid var(--panel-line); background:linear-gradient(160deg,var(--panel-solid),var(--field)); color:var(--ink); text-align:start; cursor:pointer; font:inherit; box-shadow:var(--shadow-sm);
  animation:cvIn .45s calc(var(--i,0) * 60ms) cubic-bezier(.2,.9,.25,1.15) backwards; transition:transform .18s, box-shadow .18s;}
.cv-class:hover{transform:translateY(-3px); box-shadow:var(--shadow);}
.cv-class b{font-family:'Fredoka',sans-serif; font-size:1.15rem;}
.cv-class small{color:var(--ink-soft); font-weight:700;}
.cv-class.add{align-items:center; justify-content:center; border:2px dashed var(--field-line); background:transparent; color:var(--sky); font-size:1.1rem;}
.cv-code-sm{font-family:ui-monospace,Consolas,monospace; font-weight:800; letter-spacing:.18em; color:var(--indigo);}
@keyframes cvIn{from{opacity:0; transform:translateY(10px) scale(.97);}}
.cv-f{display:flex; flex-direction:column; gap:.3rem; margin:.6rem 0; border:0; padding:0; font-weight:700;}
.cv-f legend{margin-bottom:.3rem; font-weight:800;}
.cv-f textarea,.cv-f .textarea{width:100%; box-sizing:border-box; resize:vertical; padding:.6rem; border-radius:12px; border:1px solid var(--field-line); background:var(--field); color:var(--ink); font:inherit;}
.cv-privacy{padding:.6rem .8rem; border-radius:12px; background:var(--sel-soft); color:var(--ink); font-weight:700; font-size:.88rem;}
.cv-backbtn{border:0; background:none; color:var(--sky); font-weight:800; cursor:pointer; padding:.2rem 0; font:inherit; font-weight:800;}
.cv-classhead{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:.6rem; margin:.3rem 0 .6rem;}
.cv-classhead h3{margin:0; font-family:'Fredoka',sans-serif; font-size:1.4rem;}
.cv-codebox{display:flex; flex-direction:column; align-items:center; padding:.45rem 1rem; border-radius:16px; color:#fff; background:linear-gradient(135deg,var(--sky),var(--indigo)); box-shadow:var(--shadow);}
.cv-codebox small{font-weight:700; opacity:.85; font-size:.72rem;}
.cv-codebox b{font-family:ui-monospace,Consolas,monospace; font-size:1.7rem; letter-spacing:.22em;}
.cv-tools{display:flex; flex-wrap:wrap; align-items:center; gap:.45rem; margin:.5rem 0;}
.cv-tools small{color:var(--ink-faint); font-weight:700;}
.cv-tabs{margin:.6rem 0;}
.cv-chs{display:flex; flex-direction:column; gap:.5rem;}
.cv-ch{display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; padding:.6rem .75rem; border-radius:14px; background:var(--field); border:1px solid var(--panel-line); animation:cvIn .4s calc(var(--i,0) * 45ms) ease backwards;}
.cv-ch.off{opacity:.55;}
.cv-ch-e{font-size:1.6rem; width:2.2rem; text-align:center;}
.cv-ch-t{flex:1 1 200px; min-width:0; display:flex; flex-direction:column;}
.cv-ch-t small{color:var(--ink-soft); font-weight:600; overflow:hidden; text-overflow:ellipsis;}
.cv-done{font-weight:800; color:var(--emerald); font-size:.85rem;}
.pbtn.danger{color:var(--rose);}
.cv-seats{display:flex; flex-wrap:wrap; gap:.4rem;}
.cv-seat{display:inline-flex; align-items:center; gap:.25rem; padding:.3rem .35rem .3rem .7rem; border-radius:999px; background:var(--field); font-weight:700; border:1px solid var(--panel-line);}
.cv-seat button{border:0; background:none; color:var(--ink-faint); cursor:pointer; font-size:1.05rem; line-height:1; padding:0 .3rem; border-radius:50%;}
.cv-seat button:hover{color:var(--rose);}
.cv-addn{width:5rem;}
.cv-board-wrap{overflow:auto; max-height:56vh; border-radius:14px; border:1px solid var(--panel-line);}
.cv-board{border-collapse:separate; border-spacing:0; font-size:.85rem; min-width:100%;}
.cv-board th,.cv-board td{padding:.35rem; border-bottom:1px solid var(--panel-line); text-align:center;}
.cv-board thead th{position:sticky; top:0; background:var(--panel-solid); z-index:1; max-width:120px;}
.cv-board thead th span{display:block; max-width:110px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.cv-board tbody th{position:sticky; inset-inline-start:0; background:var(--panel-solid); text-align:start; white-space:nowrap;}
.cv-cell.cv-none{color:var(--ink-faint); vertical-align:middle;}
.cv-board td.cv-cell{vertical-align:middle;}
.cv-cell button{display:flex; flex-direction:column; align-items:center; gap:.1rem; border:0; background:none; cursor:pointer; padding:.15rem; border-radius:10px; transition:transform .15s;}
.cv-cell button:hover{transform:scale(1.08); background:var(--sel-soft);}
.cv-cell img{width:54px; height:auto; border-radius:6px; box-shadow:var(--shadow-sm); background:#fff;}
.cv-st{color:var(--sun); font-size:.8rem; letter-spacing:.05em;}
.cv-picklist{display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:.45rem; max-height:48vh; overflow:auto; padding:.2rem;}
.cv-pick{display:flex; align-items:center; gap:.5rem; padding:.55rem .65rem; border-radius:12px; border:1px solid var(--panel-line); background:var(--field); color:var(--ink); font:inherit; font-weight:700; text-align:start; cursor:pointer;
  animation:cvIn .35s calc(var(--i,0) * 18ms) ease backwards; transition:transform .15s, box-shadow .15s;}
.cv-pick:hover{transform:translateY(-2px); box-shadow:var(--shadow-sm);}
.cv-pick span{font-size:1.35rem;}
.cv-types{display:flex; flex-wrap:wrap; gap:.3rem .9rem; margin:.3rem 0;}
.cv-crit{padding:.7rem; border-radius:14px; background:var(--field);}
.cv-subview{display:flex; justify-content:center;}
.cv-doc{width:100%; max-height:58vh; border-radius:10px; box-shadow:var(--shadow);}
/* Élève */
.cv-codein{font-family:ui-monospace,Consolas,monospace; font-size:2rem; text-align:center; letter-spacing:.35em; text-transform:uppercase; width:100%; box-sizing:border-box;}
.cv-codein.shake{animation:cvShake .4s;}
@keyframes cvShake{20%,60%{transform:translateX(-8px);}40%,80%{transform:translateX(8px);}}
.cv-seatgrid{display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:.45rem; max-height:55vh; overflow:auto; padding:.2rem;}
.cv-seatbtn{padding:.8rem .5rem; border-radius:14px; border:0; color:#fff; font:inherit; font-weight:800; cursor:pointer; background:linear-gradient(135deg,var(--emerald),var(--turquoise)); box-shadow:var(--shadow-sm);
  animation:cvIn .35s calc(var(--i,0) * 22ms) ease backwards; transition:transform .15s;}
.cv-seatbtn:nth-child(4n+2){background:linear-gradient(135deg,var(--sky),var(--indigo));}
.cv-seatbtn:nth-child(4n+3){background:linear-gradient(135deg,var(--coral),var(--marigold));}
.cv-seatbtn:nth-child(4n+4){background:linear-gradient(135deg,var(--violet),var(--pink));}
.cv-seatbtn:hover{transform:translateY(-3px) scale(1.03);}
.cv-chip{position:absolute; inset-block-end:4.4rem; inset-inline:0; margin-inline:auto; width:max-content; z-index:30; display:flex; align-items:center; flex-wrap:wrap; gap:.45rem; max-width:calc(100% - 1.6rem); padding:.4rem .5rem .4rem .7rem; border-radius:18px;
  background:var(--panel); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); border:1px solid var(--panel-line); box-shadow:var(--shadow); animation:cvIn .45s cubic-bezier(.2,.9,.25,1.15);}
.cvc-e{font-size:1.4rem;}
.cvc-t{display:flex; flex-direction:column; line-height:1.15;}
.cvc-t small{color:var(--ink-soft); font-weight:700; font-size:.72rem;}
.cvc-btn{border:0; border-radius:12px; padding:.45rem .7rem; font:inherit; font-weight:800; font-size:.82rem; cursor:pointer; color:var(--ink); background:var(--field); transition:transform .15s;}
.cvc-btn.hot{color:#fff; background:linear-gradient(135deg,var(--coral),var(--pink)); box-shadow:0 6px 16px -6px rgba(232,84,127,.6);}
.cvc-btn:hover{transform:translateY(-2px);}
.cvc-btn:disabled{opacity:.6; cursor:wait;}
/* Projection */
.cv-proj{position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; padding:4vmin; background:radial-gradient(circle at 30% 20%,#2b2560,#141327); color:#fff; animation:cvFade .3s ease;}
@keyframes cvFade{from{opacity:0;}}
.cv-proj-x{position:absolute; top:calc(1rem + env(safe-area-inset-top,0px)); inset-inline-end:1rem; border:0; border-radius:50%; width:52px; height:52px; display:grid; place-items:center; color:#fff; background:rgba(255,255,255,.12); cursor:pointer;}
.cv-proj-in{max-width:100%; max-height:100%; text-align:center;}
.cv-pj-code{display:flex; flex-direction:column; align-items:center; gap:2vmin;}
.cv-pj-code small{font-size:clamp(1rem,3vmin,2rem); font-weight:700; opacity:.85;}
.cv-pj-code b{font-family:ui-monospace,Consolas,monospace; font-size:clamp(3rem,18vmin,14rem); letter-spacing:.2em; background:linear-gradient(135deg,#7ee0ff,#ffd36e); -webkit-background-clip:text; background-clip:text; color:transparent; animation:cvIn .6s cubic-bezier(.2,.9,.25,1.15);}
.cv-pj-code span{font-family:'Fredoka',sans-serif; font-size:clamp(1.4rem,5vmin,3.5rem);}
.cv-pj-ch{display:flex; flex-direction:column; align-items:center; gap:2vmin; max-width:min(1100px,90vw);}
.cv-pj-ch span{font-size:clamp(3rem,14vmin,9rem); animation:cvIn .6s ease;}
.cv-pj-ch b{font-family:'Fredoka',sans-serif; font-size:clamp(2rem,7vmin,5rem);}
.cv-pj-ch p{font-size:clamp(1.1rem,3.6vmin,2.4rem); font-weight:600; line-height:1.4; white-space:pre-line;}
.cv-pj-ch small{opacity:.7; font-size:clamp(1rem,2.6vmin,1.6rem); font-weight:800; letter-spacing:.08em;}
.cv-pj-doc{display:flex; flex-direction:column; align-items:center; gap:2vmin;}
.cv-pj-doc b{font-family:'Fredoka',sans-serif; font-size:clamp(1.2rem,3.6vmin,2.4rem);}
.cv-pj-doc .cv-doc{width:auto; height:82vh; max-width:92vw; max-height:none;}
/* Cartes imprimables */
#cvPrint{display:none;}
@media print{
  body.cv-printing{background:#fff !important;}
  body.cv-printing > *:not(#cvPrint){display:none !important;}
  body.cv-printing #cvPrint{display:grid !important; grid-template-columns:repeat(2,1fr); gap:6mm; padding:0;}
  .cv-pcard{break-inside:avoid; border:1.5px dashed #888; border-radius:4mm; padding:6mm; text-align:center; font-family:'Nunito',sans-serif; color:#000;}
  .cv-pc-top{font-weight:800; font-size:10pt;}
  .cv-pc-seat{font-family:'Fredoka',sans-serif; font-size:22pt; margin:3mm 0;}
  .cv-pc-code{font-family:Consolas,monospace; font-size:26pt; font-weight:800; letter-spacing:.25em; border:2px solid #000; border-radius:3mm; display:inline-block; padding:1mm 4mm;}
  .cv-pc-help{font-size:8.5pt; margin-top:3mm; color:#333;}
}
@media (max-width:600px){
  .cv-chip{inset-block-end:4.2rem;}
  .cv-codebox b{font-size:1.35rem;}
}
@media (prefers-reduced-motion:reduce){
  .cv-class,.cv-ch,.cv-pick,.cv-seatbtn,.cv-chip,.cv-founder,.cv-pj-code b{animation:none;}
}
