/* ===== Panell del docent · Numi Mates =====
   Eina de treball: neutres amb un toc lila, pesos normals, vores d'1 px, cap emoji.
   El color només vol dir estat (bé / atenció / cal reforçar). */
:root{
  --bg:#F7F6F9;--surface:#FFFFFF;--surface-2:#F2F0F5;--surface-3:#E9E6EE;--border:#E4E0EA;--border-strong:#CFC9D8;
  --text:#1E1724;--text-2:#574E62;--text-3:#6F6679;
  --accent:#602B7A;--accent-hover:#4E2264;--accent-soft:#F2EBF6;--accent-line:#D9C7E4;--gold:#FFC93C;
  --good:#1F7A4D;--good-bg:#E7F4EC;--good-fill:#2E9E64;
  --warn:#8A5A00;--warn-bg:#FFF3D6;--warn-fill:#E0A100;
  --crit:#B42318;--crit-bg:#FDECEA;--crit-fill:#D92D20;
  --none:#857C90;--none-bg:#F2F0F5;--none-fill:#D6D1DD;
  --focus:0 0 0 3px rgba(96,43,122,.28);
  --pop:0 4px 12px rgba(30,23,36,.08),0 1px 2px rgba(30,23,36,.06);--float:0 16px 48px rgba(30,23,36,.16);
  --mono:ui-monospace,"SF Mono",Menlo,monospace;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font:400 14px/20px "Nunito Sans",system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
.num,table,.kpi-v{font-variant-numeric:tabular-nums}
.i{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.i20{width:20px;height:20px}
.mono{font-family:var(--mono)}
.t2{color:var(--text-2)}.t3{color:var(--text-3)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- botons i camps ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:32px;padding:0 12px;border-radius:6px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-weight:600;font-size:13.5px;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}
.btn:hover{background:var(--surface-2)}
.btn:focus-visible,.nav a:focus-visible,.ib:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,tr[tabindex]:focus-visible{outline:none;box-shadow:var(--focus)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-hover)}
.btn.ghost{border-color:transparent;background:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--surface-2)}
.btn.danger{color:var(--crit)}.btn.danger.solid{background:var(--crit);border-color:var(--crit);color:#fff}
.btn.sm{height:28px;padding:0 10px;font-size:13px}.btn.lg{height:40px;padding:0 16px;font-size:14.5px}.btn.full{width:100%}
.ib{width:32px;height:32px;display:inline-grid;place-items:center;border-radius:6px;border:0;background:transparent;color:var(--text-2);cursor:pointer}
.ib:hover{background:var(--surface-2);color:var(--text)}.ib.sm{width:28px;height:28px}.ib.on{background:var(--accent-soft);color:var(--accent)}.ib:disabled{opacity:.35;cursor:default;background:none}
.field{display:grid;gap:6px}.field>span{font-size:13px;font-weight:600}.field small{font-size:12px;color:var(--text-3)}
input,select,textarea{height:36px;border:1px solid var(--border-strong);border-radius:6px;padding:0 12px;background:var(--surface);width:100%}
textarea{height:auto;min-height:80px;padding:8px 12px;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--accent)}
.err-msg{color:var(--crit);font-size:12.5px;min-height:18px}
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:2px;gap:2px}
.seg button{height:26px;padding:0 10px;border:0;border-radius:4px;background:transparent;color:var(--text-2);font-weight:600;font-size:13px;cursor:pointer}
.seg button.on{background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border)}
.seg button b{font-weight:600;color:var(--text-3);margin-left:4px}
.kbd{font:600 11px var(--mono);color:var(--text-3);border:1px solid var(--border);border-radius:4px;padding:0 5px}

/* ---------- entrada ---------- */
.login-wrap{min-height:100vh;display:grid;grid-template-columns:1fr}
.login-card{width:min(400px,100% - 32px);margin:12vh auto 0;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:32px;display:grid;gap:16px}
.login-card img{height:28px;width:auto;justify-self:start}
.login-card h1{font-size:20px;line-height:28px;margin:8px 0 0;font-weight:700}
.login-card p{margin:0}
.pw{position:relative}.pw input{padding-right:40px}.pw .ib{position:absolute;right:2px;top:2px}
.login-foot{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-3)}
@media (min-width:1280px){
  .login-wrap{grid-template-columns:1fr 1fr}
  .login-side{background:#602B7A;color:#fff;display:flex;flex-direction:column;justify-content:center;padding:64px;gap:18px}
  .login-side h2{font-size:30px;line-height:36px;margin:0;font-weight:700;max-width:18ch}
  .login-side p{margin:0;color:#E3D2F0;max-width:40ch}
  .login-wrap>div:first-child{display:grid;align-items:center}.login-card{margin:0 auto}
  .login-side .mini{margin-top:18px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:10px;padding:18px 20px;display:grid;gap:10px;max-width:380px}
  .login-side .mini b{font-size:12px;font-weight:600;color:#E3D2F0;margin-bottom:2px}
  .login-side .mini div{display:grid;grid-template-columns:88px 1fr 38px;gap:10px;align-items:center;font-size:12.5px}
  .login-side .mini i{height:6px;border-radius:3px;background:rgba(255,255,255,.18);overflow:hidden;display:block}.login-side .mini i s{display:block;height:100%;background:#FFC93C;text-decoration:none}
  .login-side .mini span:last-child{text-align:right;font-variant-numeric:tabular-nums}
}
@media (max-width:1279px){.login-side{display:none}}

/* ---------- carcassa ---------- */
.app{display:grid;grid-template-columns:240px 1fr;min-height:100%}
.side{position:sticky;top:0;height:100vh;background:var(--surface);border-right:1px solid var(--border);padding:12px;display:flex;flex-direction:column;gap:2px}
.side .brand{padding:8px 8px 14px;display:flex;align-items:center;gap:10px}.side .brand img{height:34px;width:34px;border-radius:9px}.side .brand b{display:block;font-size:17px;letter-spacing:-.01em}.side .brand span{display:block;font-size:12px;color:var(--text-2);line-height:1.3}
.nav a{display:flex;align-items:center;gap:12px;height:36px;padding:0 10px;border-radius:8px;color:var(--text-2);font-weight:500;text-decoration:none}
.nav a:hover{background:var(--surface-2);color:var(--text)}
.nav a.on{background:var(--accent-soft);color:var(--accent);font-weight:600}
.nav a .badge{margin-left:auto}
.nav .lbl{font-size:11px;color:var(--text-3);padding:16px 10px 6px;font-weight:600}
.nav hr{border:0;border-top:1px solid var(--border);margin:10px 4px}
.side .me{margin-top:auto;border-top:1px solid var(--border);padding:12px 6px 4px;display:grid;gap:8px}
.side .me b{font-weight:600;display:block}.side .me small{color:var(--text-3)}
.side .me .row{display:flex;gap:4px;align-items:center}
.badge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--surface-3);color:var(--text-2);font:700 11px/18px "Nunito Sans";text-align:center}
.badge.new{background:var(--accent);color:#fff}
.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:5;height:56px;display:flex;align-items:center;gap:12px;padding:0 24px;background:var(--bg);border-bottom:1px solid var(--border)}
.top h1{font-size:20px;line-height:28px;font-weight:700;margin:0}
.top .sep{width:1px;height:20px;background:var(--border-strong)}
.top .acts{margin-left:auto;display:flex;gap:8px;align-items:center}
.menu-btn{display:none}.tabbar,.side-scrim,.only-sm{display:none}
.content{padding:24px;width:100%;max-width:1200px;margin:0 auto;display:grid;gap:32px}
.content.fluid{max-width:none}
.content>*,.grid12>*{min-width:0}
@media (min-width:1440px){.content{padding:32px}}

/* selector de grup i menús */
.gsw{position:relative}
.gsw>button{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--border-strong);background:var(--surface);border-radius:6px;cursor:pointer;font-weight:600}
.gsw>button span{color:var(--text-3);font-weight:400}
.pop{position:absolute;top:calc(100% + 4px);left:0;z-index:30;min-width:260px;max-height:60vh;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:var(--pop);padding:4px}
.pop.right{left:auto;right:0}
.pop .h{font-size:11px;font-weight:600;color:var(--text-3);padding:8px 10px 4px}
.pop button,.pop a{display:flex;width:100%;align-items:center;gap:10px;padding:0 10px;height:34px;border:0;background:transparent;border-radius:6px;cursor:pointer;text-align:left;color:var(--text);text-decoration:none;font-size:13.5px}
.pop button:hover,.pop a:hover{background:var(--surface-2)}
.pop button.on{color:var(--accent);font-weight:600}
.pop button .n{margin-left:auto;color:var(--text-3);font-size:12px}
.pop .danger{color:var(--crit)}
.pop hr{border:0;border-top:1px solid var(--border);margin:4px 0}

/* ---------- blocs ---------- */
.card{background:var(--surface);border:1px solid var(--border);border-radius:8px}
.card.pad{padding:20px}
.sec-h{display:flex;align-items:baseline;gap:10px;margin:0 0 12px}.sec-h h2{font-size:15px;line-height:22px;font-weight:700;margin:0}.sec-h small{font-size:13px;color:var(--text-3)}
.sec-h .r{margin-left:auto;font-size:13px}
.grid12{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}
.c8{grid-column:span 8}.c4{grid-column:span 4}.c7{grid-column:span 7}.c5{grid-column:span 5}.c12{grid-column:span 12}.c6{grid-column:span 6}
.kpis{display:grid;grid-template-columns:repeat(4,1fr)}
.kpi{padding:18px 20px;display:grid;gap:4px}.kpi+.kpi{border-left:1px solid var(--border)}
.kpi-l{font-size:13px;font-weight:600;color:var(--text-2)}.kpi-v{font-size:28px;line-height:32px;font-weight:700}.kpi-m{font-size:12px;color:var(--text-3);display:flex;gap:4px;align-items:center}
.kpi-v.crit{color:var(--crit)}
.up{color:var(--good)}.down{color:var(--crit)}
.dot{width:6px;height:6px;border-radius:50%;display:inline-block;flex:none;background:var(--none-fill)}
.dot.crit{background:var(--crit-fill)}.dot.warn{background:var(--warn-fill)}.dot.good{background:var(--good-fill)}.dot.gold{background:var(--gold)}
.chip{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:6px;font-size:12px;font-weight:600}
.chip.good{background:var(--good-bg);color:var(--good)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.crit{background:var(--crit-bg);color:var(--crit)}.chip.none{background:var(--none-bg);color:var(--none)}
.av{width:28px;height:28px;border-radius:50%;display:inline-grid;place-items:center;font-size:11.5px;font-weight:700;flex:none;color:#3A2E45}
.av.lg{width:40px;height:40px;font-size:14px}

/* llista d'atenció */
.alist{list-style:none;margin:0;padding:0}
.alist li{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 16px;border-top:1px solid var(--border);cursor:pointer}
.alist li:first-child{border-top:0}.alist li:hover{background:var(--surface-2)}
.alist .who{min-width:0;flex:1;display:grid}.alist .who b{font-weight:600}
.alist .why{display:flex;gap:14px;flex-wrap:wrap;color:var(--text-2);font-size:13px}.alist .why span{display:inline-flex;gap:6px;align-items:center}
.alist .when{color:var(--text-3);font-size:12.5px;white-space:nowrap}
.card-foot{border-top:1px solid var(--border);padding:10px 16px;font-size:13px}

/* barres */
.sbar{display:flex;height:10px;border-radius:4px;overflow:hidden;background:var(--surface-3)}
.sbar i{display:block;height:100%}
.sbar .good{background:var(--good-fill)}.sbar .warn{background:var(--warn-fill)}.sbar .crit{background:var(--crit-fill)}.sbar .none{background:var(--none-fill)}
.srow{display:grid;grid-template-columns:150px 1fr 56px;gap:12px;align-items:center;min-height:36px;cursor:pointer;border-radius:6px;padding:0 6px}
.srow:hover{background:var(--surface-2)}
.srow b{text-align:right;font-weight:600}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--text-2);margin-bottom:8px}.legend span{display:inline-flex;gap:6px;align-items:center}
.bars14{display:grid;grid-template-columns:repeat(14,1fr);gap:4px;align-items:end;height:120px;margin-top:6px}
.bars14 i{display:block;background:#B98FD0;border-radius:3px 3px 0 0;min-height:2px;position:relative}
.bars14 i.we{background:var(--surface-3)}.bars14 i.today{background:var(--accent)}
.bars14-x{display:grid;grid-template-columns:repeat(14,1fr);font-size:11px;color:var(--text-3);margin-top:4px}
.bars14-x span:nth-child(7){text-align:center}.bars14-x span:last-child{text-align:right}

/* ---------- taula ---------- */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.search{position:relative;flex:0 1 280px;min-width:180px;max-width:100%}.search .i{position:absolute;left:10px;top:10px;color:var(--text-3)}.search input{padding-left:34px;padding-right:34px}.search .kbd{position:absolute;right:8px;top:9px}
.toolbar .count{color:var(--text-3);font-size:13px}.toolbar .r{margin-left:auto;display:flex;gap:8px}
.tw{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:auto;max-height:calc(100vh - 56px - 48px - 96px)}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px}
th{position:sticky;top:0;z-index:2;background:var(--surface-2);height:36px;padding:0 12px;text-align:left;font-size:12px;font-weight:600;color:var(--text-3);border-bottom:1px solid var(--border);white-space:nowrap;user-select:none}
th.s{cursor:pointer}th.s:hover{color:var(--text-2)}th .i{width:12px;height:12px;vertical-align:-1px;opacity:0}th.s:hover .i,th.on .i{opacity:1}
td{height:44px;padding:0 12px;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--surface)}
tr:last-child td{border-bottom:0}
tbody tr{cursor:pointer}tbody tr:hover td{background:var(--surface-2)}
tbody tr.sel td{background:var(--accent-soft)}tbody tr.sel td:first-child{box-shadow:inset 2px 0 0 var(--accent)}
.compact td{height:36px}
td.r,th.r{text-align:right}
td:first-child,th:first-child{padding-left:16px}
.stick{position:sticky;left:0;z-index:1}th.stick{z-index:3}
.nm{display:flex;align-items:center;gap:10px}.nm b{font-weight:600}.nm small{display:block;color:var(--text-3);font-size:12px;line-height:14px}
.d14{display:inline-flex;gap:2px;vertical-align:middle;margin-right:8px}.d14 i{width:6px;height:12px;border-radius:1px;background:var(--surface-3)}.d14 i.on{background:var(--accent)}
td .rowmenu{opacity:0}tbody tr:hover .rowmenu,tbody tr:focus-within .rowmenu{opacity:1}
@media (hover:none){td .rowmenu{opacity:.5}}
.gate{display:inline-flex;align-items:center;gap:6px}.gate .i{width:14px;height:14px}.gate .ok{color:var(--good)}.gate .ko{color:var(--crit)}
.empty{padding:48px;text-align:center;display:grid;justify-items:center;gap:6px;color:var(--text-2)}
.empty .i{width:24px;height:24px;color:var(--text-3)}.empty b{color:var(--text);font-weight:600}

/* ---------- calaix de l'alumne ---------- */
.scrim{position:fixed;inset:0 0 0 240px;background:rgba(30,23,36,.32);z-index:40;animation:fade .2s}
.drawer{position:fixed;top:0;right:0;bottom:0;width:560px;max-width:100%;background:var(--surface);z-index:41;border-radius:12px 0 0 12px;box-shadow:var(--float);display:flex;flex-direction:column;animation:slide .2s cubic-bezier(.2,.8,.2,1)}
@keyframes slide{from{transform:translateX(24px);opacity:0}}@keyframes fade{from{opacity:0}}
.dr-h{position:sticky;top:0;min-height:72px;display:flex;align-items:center;gap:12px;padding:12px 16px 12px 20px;border-bottom:1px solid var(--border);background:var(--surface);border-radius:12px 0 0 0}
.dr-h h2{font-size:18px;line-height:24px;margin:0;font-weight:700}.dr-h small{color:var(--text-2);font-size:13px}
.dr-h .acts{margin-left:auto;display:flex;gap:4px;align-items:center}
.dr-b{overflow:auto;padding:4px 20px 32px}
.dsec{padding:20px 0;border-bottom:1px solid var(--border)}.dsec:last-child{border-bottom:0}
.dsec h3{font-size:15px;line-height:22px;margin:0 0 12px;font-weight:700;display:flex;align-items:center;gap:8px}
.stats4{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--border);border-radius:8px}
.stats4>div{padding:12px}.stats4>div+div{border-left:1px solid var(--border)}.stats4 span{font-size:12px;color:var(--text-2);display:block}.stats4 b{font-size:20px;line-height:26px;font-weight:700}
.snt{display:grid;grid-template-columns:130px 1fr 44px 76px 92px;gap:10px;align-items:center;min-height:32px;font-size:13px}
.snt .bar{height:8px;border-radius:4px;background:var(--surface-3);overflow:hidden}.snt .bar i{display:block;height:100%}
.snt .p{text-align:right;font-weight:600}
.mini-t{width:100%;font-size:13px}.mini-t th{position:static;height:30px}.mini-t td{height:36px;cursor:default;background:none}
.dl{display:grid;grid-template-columns:180px 1fr;gap:8px 12px;font-size:13.5px;margin:0}.dl dt{color:var(--text-2)}.dl dd{margin:0}
.cal{display:grid;grid-template-columns:repeat(8,12px);grid-template-rows:repeat(7,12px);grid-auto-flow:column;gap:3px}
.cal i{border-radius:2px;background:var(--surface-3)}.cal i.on{background:var(--accent)}
.bullets{margin:0;padding-left:18px;display:grid;gap:6px}
.switch{display:flex;align-items:flex-start;gap:12px}.switch input{width:36px;height:20px;appearance:none;background:var(--surface-3);border:0;border-radius:10px;position:relative;cursor:pointer;flex:none;padding:0;margin-top:2px}
.switch input::after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:left .15s}
.switch input:checked{background:var(--accent)}.switch input:checked::after{left:18px}
.inline-form{display:grid;gap:10px;background:var(--surface-2);border-radius:8px;padding:12px;margin-top:10px}
details.more summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px}
details.more summary::-webkit-details-marker{display:none}
details.more[open] summary .i{transform:rotate(90deg)}

/* ---------- grups ---------- */
.gcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.gc{padding:20px;display:grid;gap:12px}
.gc .r1{display:flex;align-items:center;gap:8px}.gc .r1 b{font-size:16px;font-weight:700}.gc .r1 .ib{margin-left:auto;position:relative}
.gc .meta{color:var(--text-2);font-size:13px;margin-top:-6px}
.codebox{display:flex;align-items:center;gap:4px;height:52px;padding:0 6px 0 14px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px}
.codebox code{font:600 20px/28px var(--mono);letter-spacing:.06em;color:var(--text);flex:1}
.gc .foot{font-size:12px;color:var(--text-3)}
.gsep{border:0;border-top:1px solid var(--border);margin:2px 0}.gc .field small{font-size:12px;color:var(--text-3);line-height:16px}
.gopts summary small{font-weight:400;color:var(--text-3);margin-left:2px}.gopts .switch{margin-top:10px;font-size:13.5px}
.proj{position:fixed;inset:0;background:#fff;z-index:60;display:grid;grid-template-columns:1fr auto;align-items:center;gap:48px;padding:64px}
.proj h2{font-size:40px;line-height:48px;margin:0 0 24px}
.proj ol{margin:0 0 32px;padding-left:28px;font-size:20px;line-height:36px;color:var(--text-2)}
.proj code{font:700 96px/1 var(--mono);letter-spacing:.06em;color:var(--accent)}
.proj .qr{text-align:center}.proj .qr svg{width:min(34vw,380px);height:auto;display:block}.proj .qr p{margin:14px 0 0;font-size:16px;color:var(--text-2)}
.proj .cnt{margin-top:28px;font-size:18px;color:var(--text-2)}
.proj .close{position:absolute;top:20px;right:20px}

/* ---------- informes ---------- */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border)}
.tabs a{height:36px;display:inline-flex;align-items:center;padding:0 12px;color:var(--text-2);font-weight:600;text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.on{color:var(--accent);border-bottom-color:var(--accent)}
.heat td.h{width:64px;text-align:center;font-weight:600;padding:0}
.heat tr.avg td{font-weight:700;position:sticky;top:36px;z-index:1}
.exp-row{display:flex;gap:16px;align-items:center;padding:16px 20px;border-top:1px solid var(--border)}.exp-row:first-child{border-top:0}
.exp-row div{flex:1}.exp-row b{font-weight:600;display:block}.exp-row span{color:var(--text-2);font-size:13px}

/* ---------- modals, toasts ---------- */
.modal-s{position:fixed;inset:0;background:rgba(30,23,36,.32);z-index:70;display:grid;place-items:center;padding:16px;animation:fade .15s}
.modal{background:var(--surface);border-radius:12px;box-shadow:var(--float);width:440px;max-width:100%;padding:24px;display:grid;gap:16px}
.modal.w480{width:480px}
.modal h3{margin:0;font-size:17px;line-height:24px;font-weight:700}.modal p{margin:0;color:var(--text-2)}
.modal .acts{display:flex;justify-content:flex-end;gap:8px}
.creds{font:13px/22px var(--mono);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;white-space:pre-wrap}
.toasts{position:fixed;right:20px;bottom:20px;z-index:80;display:grid;gap:8px}
.toast{width:360px;max-width:calc(100vw - 40px);background:#1E1724;color:#fff;border-radius:12px;padding:12px 14px;display:flex;gap:10px;align-items:center;box-shadow:var(--float);animation:slide .2s}
.skel{background:linear-gradient(90deg,var(--surface-3),#F1EEF4,var(--surface-3));background-size:200% 100%;animation:sh 1.2s linear infinite;border-radius:6px}
@keyframes sh{to{background-position:-200% 0}}
.banner{display:flex;gap:10px;align-items:center;background:var(--crit-bg);color:var(--crit);border-radius:8px;padding:10px 14px}
.guide{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(440px,100%),1fr));gap:16px}
.guide .card h3{font-size:15px;margin:0 0 10px;font-weight:700}
.guide dl{display:grid;grid-template-columns:1fr 1.3fr;gap:6px 12px;margin:0;font-size:13.5px}.guide dt{color:var(--text-2)}.guide dd{margin:0}
.rowcard{display:grid;grid-template-columns:160px 1fr;gap:10px;padding:12px 0;border-top:1px solid var(--border)}.rowcard:first-of-type{border-top:0}
.rowcard span{color:var(--text-2)}

/* ---------- tauleta ---------- */
@media (max-width:1279px){.app{grid-template-columns:216px 1fr}.scrim{left:216px}.hide-lg{display:none}.drawer{width:520px}.c8,.c4,.c7,.c5{grid-column:span 12}}
@media (max-width:1023px){
  .app{grid-template-columns:64px 1fr}.scrim{left:0}
  .side{padding:8px}.side .brand span,.nav a span,.nav .lbl,.side .me .who,.nav a .badge{display:none}.side .brand img{height:18px;width:44px;object-fit:cover;object-position:left}
  .nav a{justify-content:center;padding:0}.side .me .row{flex-direction:column}
  .app.open .side{position:fixed;z-index:50;width:240px;box-shadow:var(--float)}.app.open .side .brand span,.app.open .nav a span,.app.open .nav .lbl,.app.open .side .me .who{display:initial}.app.open .nav a{justify-content:flex-start;padding:0 10px}
  .kpis{grid-template-columns:1fr 1fr}.kpi:nth-child(3){border-left:0}.kpi:nth-child(n+3){border-top:1px solid var(--border)}
  .hide-md{display:none}.drawer{width:100%;border-radius:0}
  td{height:48px}.ib{width:40px;height:40px}
}
@media (max-width:767px){
  .app{grid-template-columns:1fr}.side{display:none}.app.open .side{display:flex}
  .app.open .side .brand img{width:auto;height:22px;object-fit:contain}.app.open .side .me .row{flex-direction:row}.app.open .side{width:min(280px,84vw)}
  .app.open .side-scrim{display:block;position:fixed;inset:0;background:rgba(30,23,36,.36);z-index:45}
  /* barra de pestanyes inferior, com una app */
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}
  .tabbar a,.tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:58px;border:0;background:none;color:var(--text-3);font-size:11px;font-weight:600;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent}
  .tabbar .on{color:var(--accent)}.tabbar .on .i{stroke-width:2.2}
  .content{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .only-sm{display:inline-block}
  .tabs{overflow-x:auto;scrollbar-width:none}.tabs a{white-space:nowrap;flex:none}
  /* alumnes: cada fila és una targeta */
  .tw.al{max-height:none;overflow:visible;background:transparent;border:0;border-radius:0}
  .tw.al table,.tw.al tbody{display:block}.tw.al thead{display:none}
  .tw.al tbody tr{display:grid;grid-template-columns:1fr 1fr 1.3fr 40px;grid-template-areas:"n n n m" "l a g g";background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:8px;padding:12px 8px 12px 12px}
  .tw.al tbody tr:has(td[colspan]){display:block;padding:0}
  .tw.al td{display:block;height:auto;padding:0;border:0;background:transparent;white-space:normal;text-align:left}
  .tw.al td.c-name{grid-area:n;position:static;padding-left:0}.tw.al td.c-menu{grid-area:m;text-align:right}
  .tw.al td.c-last{grid-area:l}.tw.al td.c-acc{grid-area:a}.tw.al td.c-gate{grid-area:g;display:block}
  .tw.al td:not(.c-name,.c-last,.c-acc,.c-gate,.c-menu,[colspan]){display:none}
  .toolbar .seg{flex:1 1 100%}.toolbar select{flex:1 1 0;min-width:0}.toolbar .r{margin-left:0}.toolbar .r .btn{font-size:0;gap:0;width:40px;padding:0;justify-content:center}
  .tw.al td[data-l]{margin-top:10px;font-size:13px;line-height:18px}
  .tw.al td[data-l]::before{content:attr(data-l);display:block;font-size:11px;line-height:14px;color:var(--text-3);font-weight:500;margin-bottom:2px}
  .tw.al td .rowmenu{opacity:1}.tw.al tbody tr.sel{border-color:var(--accent);box-shadow:var(--focus)}
  .tw.al.compact tbody tr{padding:8px 8px 8px 12px}
  .content{padding:16px}.top{padding:0 16px}.snt{grid-template-columns:100px 1fr 40px}.snt .chip,.snt small{display:none}
  .stats4{grid-template-columns:1fr 1fr}.stats4>div:nth-child(3){border-left:0}.stats4>div:nth-child(n+3){border-top:1px solid var(--border)}
  .proj{grid-template-columns:1fr;padding:24px}.proj code{font-size:48px}
  .hide-sm{display:none}.top{gap:8px}.top h1{font-size:17px}.top .sep{display:none}
  .gsw>button span{display:none}.gsw>button{max-width:46vw}.gsw>button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .toolbar .search{flex:1 1 100%}.toolbar .seg{max-width:100%;overflow-x:auto}.toolbar .seg button{white-space:nowrap}
  .toolbar .r .btn{padding:0 10px}.toolbar .count{display:none}
  .guide dl{grid-template-columns:1fr}.guide dd{margin-bottom:6px}
  .dr-h{flex-wrap:wrap;row-gap:8px}.dr-h .acts{width:100%;justify-content:flex-end}
}

/* ---------- impressió de l'informe de tutoria ---------- */
#print{display:none}
@media print{
  @page{size:A4 portrait;margin:18mm}
  body.printing>*:not(#print){display:none!important}
  body.printing #print{display:block;font-size:11.5pt;color:#1E1724}
  #print .ph{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px solid var(--gold);padding-bottom:8px;margin-bottom:14px}
  #print .ph img{height:22px}#print .ph div{text-align:right;font-size:10pt;color:#574E62}
  #print h1{font-size:18pt;margin:0 0 10px}
  #print .dsec{break-inside:avoid;padding:10px 0}
  #print .pf{margin-top:16px;font-size:9pt;color:#857C90;border-top:1px solid #E4E0EA;padding-top:6px}
  #print *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.drawer:focus{outline:none}
/* ---- Usuaris i Premium (admin) ---- */
.kpis.k6{grid-template-columns:repeat(3,1fr)}.kpis.k6 .kpi:nth-child(4){border-left:0}.kpis.k6 .kpi:nth-child(n+4){border-top:1px solid var(--border)}
.chip.gold{background:#FFF3D0;color:#7A5200}.chip.purple{background:var(--accent-soft);color:var(--accent)}.chip.blue{background:#E6F1FB;color:#1D5F95}
.warn-t{color:var(--warn)}
.bars30{display:grid;grid-template-columns:repeat(30,1fr);gap:3px;align-items:end;height:130px;margin-top:6px}
.bars30 i{display:flex;flex-direction:column-reverse;height:100%;justify-content:flex-start;border-bottom:1px solid var(--border)}
.bars30 i b{display:block;min-height:3px}.bars30 i b:last-child{border-radius:3px 3px 0 0}
.bars30 b.p,.leg i.p{background:var(--gold)}.bars30 b.f,.leg i.f{background:#B98FD0}.bars30 b.e,.leg i.e{background:#5B9BD5}
.bars30 i.today{border-bottom:2px solid var(--accent)}
.bars30-x{display:flex;justify-content:space-between;font-size:11px;color:var(--text-3);margin-top:4px}
.leg{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--text-2)}.leg span{display:inline-flex;align-items:center;gap:6px}.leg i{width:10px;height:10px;border-radius:3px;display:inline-block}
.pdist{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--surface-3);margin:4px 0 12px}.pdist i{display:block;height:100%}
.pdist .gold,.plist i.gold{background:var(--gold)}.pdist .purple,.plist i.purple{background:#B98FD0}.pdist .none,.plist i.none{background:#D5D0DD}.pdist .blue,.plist i.blue{background:#5B9BD5}.plist i.crit{background:var(--crit-fill)}
.plist{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.plist li{display:grid;grid-template-columns:12px 1fr auto 48px;gap:10px;align-items:center;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13.5px}.plist li:hover{background:var(--surface-2)}
.plist li i{width:12px;height:12px;border-radius:4px}.plist li span{text-align:right;font-size:12.5px}
.tw.us td small.mono{display:block;font-size:11.5px;color:var(--text-3)}
.uinfo{display:grid;gap:4px;font-size:12.5px;color:var(--text-2);margin:2px 0 4px}.uinfo a{color:var(--accent);font-weight:600;display:inline-flex;gap:4px;align-items:center}.uinfo small{color:var(--warn);font-size:12px}
@media (max-width:767px){
  .kpis.k6{grid-template-columns:1fr 1fr}.kpis.k6 .kpi:nth-child(4){border-left:1px solid var(--border)}.kpis.k6 .kpi:nth-child(odd){border-left:0}.kpis.k6 .kpi:nth-child(n+3){border-top:1px solid var(--border)}
  .bars30{gap:2px;height:110px}
  .tw.us{max-height:none;overflow:visible;background:transparent;border:0;border-radius:0}
  .tw.us table,.tw.us tbody{display:block}.tw.us thead{display:none}
  .tw.us tbody tr{display:grid;grid-template-columns:1fr auto;grid-template-areas:"n p" "e e" "a u";gap:6px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:8px;padding:12px}
  .tw.us td{display:block;height:auto;padding:0;border:0;background:transparent;white-space:normal;text-align:left}
  .tw.us td.c-n{grid-area:n;position:static}.tw.us td.c-p{grid-area:p;text-align:right}.tw.us td.c-e{grid-area:e;font-size:13px}.tw.us td.c-a{grid-area:a}.tw.us td.c-u{grid-area:u}
  .tw.us td:not(.c-n,.c-p,.c-e,.c-a,.c-u){display:none}
  .tw.us td[data-l]{font-size:13px}.tw.us td.c-a::before,.tw.us td.c-u::before{content:attr(data-l);display:block;font-size:11px;color:var(--text-3);margin-bottom:2px}
}
.plist i.fam{background:#3CC46A}.famb{font-size:12px;font-weight:400}

.varb{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.06em;border-radius:6px;padding:1px 5px;vertical-align:2px;background:#1B1730;color:#E6D8FA}.varb.ment{background:#DDF4EF;color:#11705F}.varb.tech{background:#E3EAFF;color:#1C3FB8}
.usel{display:inline-flex;align-items:center;padding:4px 10px 4px 0;cursor:pointer}.usel input{width:18px;height:18px;cursor:pointer;accent-color:var(--crit,#C4362F)}
.tw.us .nm{display:flex;align-items:center}
.selbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px;position:sticky;top:8px;z-index:5}
.kpis.k3m{grid-template-columns:repeat(3,1fr)}
.modal.w640{width:640px;max-width:calc(100vw - 24px)}
/* batalles del docent */
.bproj{display:block;overflow:auto;padding:56px 64px}
.bpl-wrap{display:grid;grid-template-columns:1fr auto;gap:48px;align-items:center}
.bplayers-p{display:flex;flex-wrap:wrap;gap:8px;margin:28px 0;max-width:760px}.bplayers-p span{background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:18px;border-radius:999px;padding:8px 16px}
.btn.bbig{font-size:20px;height:56px;padding:0 28px}
.bcountp{font:800 220px/1 var(--mono);text-align:center;color:var(--accent);margin-top:12vh}
.blive{display:grid;gap:10px;max-width:980px;margin:24px auto 0}.blive>div{display:grid;grid-template-columns:200px 1fr 90px;gap:14px;align-items:center;font-size:20px}
.bbar{height:18px;border-radius:9px;background:var(--surface-2,#F1EEF4);overflow:hidden}.bbar i{display:block;height:100%;background:var(--accent);border-radius:9px;transition:width .6s}
.bpodium{display:flex;justify-content:center;align-items:flex-end;gap:18px;margin:36px 0 24px}.bpodium .pd{display:grid;justify-items:center;gap:4px;width:200px}
.bpodium .pd span{font-size:54px}.bpodium .pd b{font-size:22px;text-align:center}.bpodium .pd small{color:var(--text-2);font-size:15px}
.bpodium .pd i{display:block;width:100%;border-radius:12px 12px 0 0;background:var(--accent-soft)}.bpodium .p1 i{height:150px;background:#FFE7A3}.bpodium .p2 i{height:105px}.bpodium .p3 i{height:75px}
.brank{margin:0;padding:0;list-style:none;display:grid;gap:6px;max-width:640px}.brank li{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:6px 10px;border-radius:8px;background:var(--surface-2,#F7F5FA)}
.bproj .brank{margin:0 auto;font-size:18px}
.bgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.bch{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.bch small{display:block;margin-top:2px}
.dmeds{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px}.dmeds li{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:flex-start}.dmeds span{font-size:24px}.dmeds small{display:block;font-size:12.5px}
.dgive{margin-top:14px;display:grid;gap:8px}.mpick{display:flex;flex-wrap:wrap;gap:6px}.mpick button{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:5px 10px;font-size:13px;cursor:pointer}
.mpick button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}
@media (max-width:860px){.bproj{padding:24px}.bpl-wrap{grid-template-columns:1fr}.blive>div{grid-template-columns:120px 1fr 70px;font-size:16px}.bcountp{font-size:140px}}
.bpodium .pd span{line-height:1.15;display:block}.bproj code{white-space:nowrap;font-size:clamp(44px,8vw,96px)}
.modal.wide{max-width:780px;width:94vw}
.infcard{margin-bottom:14px}.infcard .chip{font-size:12px;vertical-align:middle}

/* assistent amb IA */
.pia{display:flex;flex-direction:column;min-height:60vh}
.pialog{flex:1;display:flex;flex-direction:column;gap:10px;max-height:62vh;overflow-y:auto;padding:4px 2px 12px}
.pm{max-width:min(720px,92%);padding:10px 14px;border-radius:14px;line-height:1.55;font-size:14.5px}
.pm.me{align-self:flex-end;background:#2F2448;color:#fff;border-bottom-right-radius:4px}
.pm.bot{align-self:flex-start;background:#F4F1F8;border:1px solid var(--line);border-bottom-left-radius:4px}
.pm.typing{color:#857C90}
.pquick{display:flex;flex-wrap:wrap;gap:8px}.pquick .btn{white-space:normal;text-align:left}
.piain{display:flex;gap:8px;align-items:flex-end;border-top:1px solid var(--line);padding-top:12px}
.piain textarea{flex:1;resize:vertical;min-height:52px}

/* grups de Numi Tech */
.tfield{display:flex;flex-direction:column;gap:10px;margin:4px 0 8px}
.tfield .flbl{font-weight:600;font-size:13px;color:var(--t2,#574E62)}
.tcourse{border:1px solid var(--line);border-radius:12px;padding:10px 12px}

/* material del professor (Numi Tech) */
.mtabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.mtabs a{padding:7px 12px;border-radius:999px;border:1px solid var(--line);text-decoration:none;color:inherit;font-weight:600;font-size:13.5px;background:#fff}.mtabs a.on{background:#1B2B6B;color:#fff;border-color:#1B2B6B}
.munit{margin-bottom:12px}.munit h3{margin:0 0 10px}
.mlist{display:grid;gap:6px}
.msess{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;border:1px solid var(--line);text-decoration:none;color:inherit}
.msess:hover{background:#F4F6FF}.msess.off{opacity:.55;cursor:default}
.msess .mn{flex:none;width:30px;height:30px;border-radius:50%;background:#2F5BEA;color:#fff;display:grid;place-items:center;font-weight:700}
.msess>span:nth-child(2){flex:1;display:flex;flex-direction:column}.msess small{color:var(--t3,#857C90)}
.mhead{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.mhead h2{margin:4px 0 0}
.macts{display:flex;gap:8px;flex-wrap:wrap}
.mgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width:900px){.mgrid{grid-template-columns:1fr}}
.msec{margin-bottom:12px}.msec h3{margin:0 0 10px}
.mbar{display:flex;height:12px;border-radius:6px;overflow:hidden;gap:2px;margin-bottom:14px}
.mblk{display:grid;grid-template-columns:90px 1fr;gap:14px;padding:12px 0;border-top:1px solid var(--line)}
.mblk .mt{display:flex;flex-direction:column;gap:2px;border-left:5px solid var(--fc);padding-left:10px}.mblk .mt span{color:var(--t3,#857C90);font-size:13px}
.mblk h4{margin:2px 0 6px;font-size:16px}.mblk p{margin:0 0 8px;line-height:1.55}
.mf{display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--fc)}
.mdiu{background:#F7F5FB;border-radius:10px;padding:8px 12px;margin-bottom:8px}.mdiu ul{margin:4px 0 0;padding-left:18px}
.mmeta{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--t2,#574E62)}

/* menú lateral: es pot desplaçar quan la pantalla és baixa (portàtils) */
.side .nav{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;margin:0 -4px;padding:0 4px}
.side .nav a{height:34px}
.side .me{flex:none}
@media (max-height:760px){.side .nav a{height:32px;font-size:13.5px}.side .brand{padding-bottom:8px}}
/* alta d'alumnes */
.ahead,.arow{display:grid;grid-template-columns:1.4fr 1fr 1fr 36px;gap:8px;align-items:center}
.ahead{font-size:12.5px;font-weight:600;color:var(--text-2);padding:0 2px 4px}
.arows{display:grid;gap:6px;max-height:44vh;overflow-y:auto;padding:2px}
.arow input{height:38px;width:100%}
.arow .aerr{grid-column:1/-1;color:var(--bad,#C2414A);font-size:12.5px;margin:-2px 0 0}.arow .aerr:empty{display:none}
.aacts{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
#al_pastebox{background:var(--surface-2);border-radius:10px;padding:10px 12px;margin-bottom:6px}
.err-box{background:#FDECEC;border-radius:10px;padding:10px 14px;color:#8E2A22;margin:10px 0}.err-box ul{margin:6px 0 0;padding-left:18px}
@media (max-width:620px){.ahead{display:none}.arow{grid-template-columns:1fr 1fr 36px}.arow .an{grid-column:1/-1}}
/* nou grup: tria d'app i cursos */
.seg2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.seg2 label{display:flex;flex-direction:column;gap:2px;border:1.5px solid var(--border);border-radius:12px;padding:10px 12px 10px 34px;position:relative;cursor:pointer}
.seg2 input{position:absolute;left:10px;top:12px}
.seg2 label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.seg2 small{color:var(--text-2);font-size:12px}
.chk{display:grid;gap:6px}.chk label{display:flex;gap:8px;align-items:center}
.modal-s.w720,.w720{max-width:720px}
.modal.w560{width:560px;max-width:calc(100vw - 24px)}.modal.w720{width:720px;max-width:calc(100vw - 24px)}
.seg2 input[type=radio]{width:16px;height:16px;margin:0;accent-color:var(--accent)}
.chk label{display:flex;gap:10px;align-items:center;justify-content:flex-start;border:1px solid var(--border);border-radius:10px;padding:8px 10px;cursor:pointer;font-weight:500}
.chk label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.chk input[type=checkbox]{width:18px;height:18px;flex:none;margin:0;accent-color:var(--accent)}
.chk small{margin-left:auto}
.modal{max-height:calc(100vh - 32px);overflow-y:auto}

.tfh{display:flex;justify-content:space-between;align-items:center;gap:8px}
/* solucionari de Numi Tech */
.msol summary{display:flex;align-items:baseline;gap:12px;cursor:pointer;list-style:none}.msol summary::-webkit-details-marker{display:none}
.msol summary h3{margin:0}.msol summary::after{content:"▾";margin-left:auto;color:#8E9BC4}.msol[open] summary::after{content:"▴"}
.sorow{display:grid;grid-template-columns:78px 1fr;gap:12px;padding:12px 0;border-top:1px solid #E6EBF7}
.son{display:flex;flex-direction:column;gap:2px}.son b{width:30px;height:30px;border-radius:50%;background:#2F5BEA;color:#fff;display:grid;place-items:center;font-size:14px}.son small{font-size:11.5px;color:#56628A;font-weight:700}
.soq{margin:0 0 6px;color:#56628A;font-size:13.5px}.soa{margin:0 0 4px}.soex{margin:4px 0 0;font-size:13.5px}.soop{margin:4px 0;font-size:13px;color:#56628A;font-style:italic}
.sorow ul,.sorow ol{margin:4px 0;padding-left:20px}
.sobins{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.sobins>div{background:#F5F7FD;border-radius:10px;padding:8px 10px}
.soprog{display:flex;flex-direction:column;gap:8px}.soh,.soprog .rdh{display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:#F5F7FD;border-radius:10px;padding:8px}
.soh>b,.soprog .rdh>b{width:100%;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:#56628A}
.sob,.soprog .rdb{--bc:#3D7BF4;display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:8px;background:var(--bc);color:#fff;font-size:13px;font-weight:700}
.sob b,.soprog .rdb b{background:rgba(255,255,255,.92);color:#14204A;border-radius:5px;padding:0 5px}
.sorow .c-loop{--bc:#1FA463}.sorow .c-cond{--bc:#F2B21B}.sorow .sob.c-cond,.sorow .rdb.c-cond{color:#3A2600}.sorow .c-act{--bc:#F08A24}.sorow .c-art{--bc:#C447A8}.sorow .c-snd{--bc:#14A3B8}.sorow .c-fn{--bc:#8B5CF6}.sorow .c-var{--bc:#E0533F}
.soin,.soprog .rdin{display:flex;flex-wrap:wrap;gap:6px;width:100%;padding-left:12px;border-left:5px solid #1FA463;margin-left:6px}
.soelse,.soprog .rdelse{font-size:12px;font-weight:800;background:#F2B21B;color:#3A2600;border-radius:6px;padding:1px 8px}
.sorow{--b-mov:#3D7BF4;--b-loop:#1FA463;--b-cond:#F2B21B;--b-art:#C447A8;--b-snd:#14A3B8;--b-var:#E0533F;--b-fn:#8B5CF6;--b-act:#F08A24}
.mstu{display:flex;align-items:center;gap:14px;justify-content:space-between;flex-wrap:wrap;margin-bottom:14px;background:linear-gradient(135deg,#F2F6FF,#E8EEFF)}
.mstu>div{flex:1;min-width:220px}
.gc .galum{margin-top:8px}
