/* Identità condivisa con il pannello di gestione UniCatena. */
#app .side>.brand.student-side-brand{background:none;display:flex;height:auto;min-height:58px;padding:8px 10px;align-items:center;justify-content:flex-start;min-width:0}#app .side>.brand .student-logo-full{visibility:visible;display:block;width:calc(180px * var(--brand-scale,1));max-width:100%;height:auto}#app .side>.brand .student-logo-compact{display:none}.student-archive-brand{display:block;margin-bottom:16px}.student-archive-brand img{width:calc(180px * var(--brand-scale,1));max-width:100%;height:auto}@media(max-width:760px){#app .side>.brand.student-side-brand{width:auto;min-width:42px;min-height:42px;padding:0;background:none}#app .side>.brand .student-logo-full{display:none}#app .side>.brand .student-logo-compact{visibility:visible;display:block;width:calc(38px * var(--brand-scale,1));max-width:96px;height:auto}}
.student-top-identity{display:flex;align-items:center;gap:12px;margin-right:auto;min-width:0;flex:1}.student-top-avatar{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:50%;background:linear-gradient(105deg,#2567dc,#6635bc,#ed377a,#f8ac38);color:#fff;font-weight:800;box-shadow:0 0 0 3px #fff,0 6px 16px #6635bc26}.student-top-details{min-width:0}.student-top-name{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.student-top-name b{font-size:15px}.student-top-course{display:flex;flex-wrap:wrap;column-gap:10px;color:#56657f;font-size:12px;font-weight:400}.student-top-course span+span::before{content:'·';margin-right:10px}#app .student{padding:10px 12px}#app .student .program{margin:0}@media(max-width:760px){.student-top-identity{flex-basis:100%;margin-bottom:4px}.student-top-course{font-size:11px;column-gap:7px}.student-top-course span+span::before{margin-right:7px}}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:100 1000;font-display:swap;src:url("fonts/dm-sans-latin-wght-normal.woff2") format("woff2")}
@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url("fonts/manrope-latin-wght-normal.woff2") format("woff2")}
:root,:root[data-theme]{color-scheme:light;--bg:#f8faff;--surface:#fff;--surface-2:#eaf0ff;--ink:#15245c;--text:#15245c;--navy:#14276f;--navy-2:#344369;--muted:#56657f;--line:#e6eaf4;--blue:#2558d4;--accent:#2558d4;--accent-ink:#fff;--laurel:#14276f;--laurel-soft:#eaf0ff;--laurel-ink:#fff;--pink:#e83179;--purple:#6635bc;--orange:#f59c31;--hero:#14276f;--ok:#2f8f4e;--ok-soft:#e8f6ed;--warn:#a35c0b;--warn-soft:#fff3e3;--crit:#b42318;--crit-soft:#fdecea;--shadow:0 10px 35px rgba(11,31,110,.06);--r:20px;--radius:20px;--f-display:Manrope,system-ui,sans-serif;--f-body:"DM Sans",system-ui,sans-serif;--f-data:"DM Sans",system-ui,sans-serif;--grad:linear-gradient(105deg,#2567dc 8%,#6635bc 35%,#ed377a 62%,#f8ac38 88%)}
body{color:var(--ink);font:15px/1.6 var(--f-body);background:radial-gradient(ellipse at 100% 0%,#f9eaf4a6,transparent 55%),radial-gradient(ellipse at 0% 100%,#eaf0ff,transparent 60%),var(--bg)}
body::after{content:"";position:fixed;z-index:-1;pointer-events:none;right:-140px;top:-150px;width:440px;height:440px;border:64px solid #6635bc0d;border-radius:50%}
h1,h2,h3{font-family:var(--f-display);font-weight:800;letter-spacing:-.02em;color:var(--ink)}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
#app{grid-template-columns:264px minmax(0,1fr)}
#app .side{padding:24px 12px;background:#ffffffed;border-right:1px solid var(--line);overflow-y:auto;gap:16px}
#app .side>.band{display:none}
#app .side>.brand{height:58px;flex-shrink:0;background:url('/assets/img/polo-orientamento-loghi-v6.svg') no-repeat 10px center;background-size:180px auto;margin-bottom:4px}
#app .side>.brand>*{visibility:hidden}
#app .student{margin:0 8px;padding:14px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(135deg,#eaf0ff8c,#fff)}
#app .eyebrow{color:var(--purple);font-size:11px;font-weight:700;letter-spacing:.09em}
#app nav.menu{gap:4px}
#app nav.menu button{position:relative;border-radius:14px;padding:12px 14px;gap:12px;font-weight:600;color:#344369;min-height:46px}
#app nav.menu button:hover{background:#eaf0ffb3;color:var(--navy)}
#app nav.menu button.active{background:#eaf0ff;color:var(--navy);box-shadow:none}
#app nav.menu button.active::before{content:"";position:absolute;left:-12px;top:10px;bottom:10px;width:4px;border-radius:0 4px 4px 0;background:var(--grad)}
#app nav.menu .group{color:var(--muted)}
#app main{padding:0 32px 48px}
.student-web-tools{position:sticky;top:0;z-index:6;min-height:70px;margin:0 -32px 24px;padding:14px 32px;background:#f8faffed;backdrop-filter:blur(12px);border-bottom:1px solid var(--line);gap:20px;justify-content:flex-end;font-weight:600}
.student-web-tools button,.btn,button:not([role=tab]):not([data-view]),input,select{font-family:var(--f-body)}
.student-web-tools button,.btn{border-radius:999px;font-weight:600;padding:9px 17px;border:1px solid var(--line);background:#fff;color:var(--navy)}
.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}
.student-web-tools button:hover,.btn:hover{border-color:var(--blue);text-decoration:none}
.student-web-note{background:#fff;border-color:var(--line);color:var(--muted);border-radius:16px;box-shadow:var(--shadow);margin-bottom:24px}
#app .wrap{max-width:1280px;gap:22px;padding-inline:0}
#app .demo-bar{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 20px;box-shadow:var(--shadow)}
#app .head{position:relative;overflow:hidden;isolation:isolate;padding:26px 28px;border:1px solid var(--line);border-radius:20px;background:radial-gradient(ellipse at 100% 0%,#f9eaf4,transparent 70%),linear-gradient(120deg,#eaf0ff,#fff 70%);box-shadow:var(--shadow)}
#app .head::after{content:"";position:absolute;z-index:-1;right:-55px;top:-115px;width:260px;height:260px;border:42px solid #6635bc0c;border-radius:50%;pointer-events:none}
#app .head h1{font-size:clamp(26px,2.4vw,34px)}
#app .card{border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);background:#fff;overflow:hidden}
#app .stats .card.stat{position:relative;isolation:isolate;background:#fff;border:1px solid var(--line);border-radius:20px;padding:24px;min-height:162px;box-shadow:var(--shadow)}
#app .stats .card.stat::before{content:"";position:absolute;right:-15px;top:-55px;z-index:-1;width:145px;height:145px;border:20px solid #6635bc08;border-radius:50%}
#app .stats .card.stat::after{content:"";position:absolute;left:24px;right:24px;bottom:0;height:3px;background:var(--blue);border-radius:4px}
#app .stats .card.stat:nth-child(2)::after{background:var(--purple)}#app .stats .card.stat:nth-child(3)::after{background:var(--ok)}#app .stats .card.stat:nth-child(4)::after{background:var(--pink)}
#app .stats .card.stat .v,#app .stats .card.stat.hero .v,#app .stats .card.stat.hero .v small{color:var(--ink);font-family:var(--f-display);font-weight:800}
#app .stats .card.stat .eyebrow,#app .stats .card.stat.hero .eyebrow{color:var(--muted);text-transform:none;font-size:13px;letter-spacing:0}
#app .stats .card.stat .v{font-size:36px}
#app .stats .card.stat .v small{font-size:16px;color:var(--muted)}
#app .panel{padding:24px}#app .panel h2{font-size:18px}
#app .table-wrap table{border-color:var(--line);border-radius:16px}
#app th{background:#f8faff;color:var(--muted);border-bottom:1px solid var(--line);font-size:11px;letter-spacing:.06em;padding:14px 18px}
#app td{padding:15px 18px;border-color:var(--line)}
#app .bar{background:#eef2fa;border-radius:999px}#app .bar .b-ok{background:var(--grad)}
#app dialog{border:1px solid var(--line);border-radius:24px;box-shadow:0 22px 60px #14276f26}
body>.top,body>main{max-width:1280px;margin:24px auto;padding:24px;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}
body>.student-web-tools{margin:0;max-width:none}
body>.top .tabs{flex-wrap:wrap;gap:8px}body>.top .tabs button{border-radius:999px;font-weight:600}body>.top .tabs button.active{background:var(--navy);color:#fff}
@media(max-width:1100px){#app .stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){#app{grid-template-columns:minmax(0,1fr)}#app .side{position:sticky;top:0;flex-direction:row;overflow-x:auto;overflow-y:hidden;padding:8px 12px;gap:12px;z-index:8;max-width:100vw}#app .side>.brand{width:42px;min-width:42px;height:42px;background-image:url('/assets/img/polo-orientamento-mobile-v6.svg');background-size:38px;background-position:center;margin:0}#app nav.menu{display:flex;gap:6px}#app nav.menu button{padding:10px 12px;min-height:42px}#app nav.menu button.active::before{display:none}#app main{padding:0 16px 32px}.student-web-tools{position:static;margin:0 -16px 18px;padding:12px 16px;justify-content:flex-start;gap:14px;min-height:58px;font-size:13px}.student-web-note{margin:0 0 18px;padding:14px}#app .head{padding:22px 20px}#app .stats{gap:12px}#app .stats .card.stat{padding:18px;min-height:138px}#app .stats .card.stat .v{font-size:30px}#app .panel{padding:20px}body>.top,body>main{margin:16px;padding:18px;min-width:0}.table-wrap{max-width:100%;overflow:auto}#app .wrap>*{min-width:0}}
.student-login{position:relative;overflow:hidden;box-shadow:var(--shadow);border-radius:20px}.student-login::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--grad)}.student-login .student-logo{display:block;width:210px;margin:auto}.student-login h1{font-size:25px}.student-login button{background:var(--navy);border-radius:999px}.student-login input{border-color:var(--line);border-radius:14px}.student-login input:focus{outline:2px solid var(--blue);outline-offset:2px}
@media print{body{background:#fff}body::after{display:none}.student-web-tools{display:none}}
/* Sidebar studenti: rail, espansione e navigazione mobile come gestione. */
#app{grid-template-columns:76px minmax(0,1fr)}
#app .side{position:fixed;inset:0 auto 0 0;width:76px;height:100dvh;box-sizing:border-box;z-index:30;padding:18px 12px;gap:16px;overflow-x:hidden;overflow-y:auto;transition:width .2s;max-width:none;flex-direction:column}
#app .side>.brand.student-side-brand{position:relative;display:block;flex:none;width:100%;height:58px;padding:0;margin:0;background:none}
#app .side>.brand .student-logo-full{position:absolute;left:4px;top:50%;transform:translateY(-50%);width:calc(180px * var(--brand-scale,1));max-width:228px;max-height:58px;object-fit:contain;object-position:left;opacity:0;visibility:visible;display:block}
#app .side>.brand .student-logo-compact{position:absolute;left:0;top:50%;transform:translateY(-50%);display:block;visibility:visible;width:min(52px,calc(40px * var(--brand-scale,1)));height:min(52px,calc(40px * var(--brand-scale,1)));object-fit:contain;opacity:1}
#app nav.menu{display:flex;flex-direction:column;gap:4px;width:240px}
#app nav.menu button{width:240px;height:46px;padding:12px 15px;white-space:nowrap}
#app nav.menu button svg{width:22px;height:22px;flex:none}
#app .side .student,#app .side .side-foot{display:none}
#app .side .lbl,#app .side .group,#app .side .soon{opacity:0;transition:opacity .15s}
#app nav.menu .count{position:absolute;left:28px;top:2px;min-width:16px;margin:0;padding:0 4px;font-size:10px}
#app .side:is(:hover,:has(:focus-visible)),#app.student-nav-open .side{width:264px;box-shadow:0 20px 60px #14276f26}
#app .side:is(:hover,:has(:focus-visible)) .student-logo-full,#app.student-nav-open .student-logo-full{opacity:1}
#app .side:is(:hover,:has(:focus-visible)) .student-logo-compact,#app.student-nav-open .student-logo-compact{opacity:0}
#app .side:is(:hover,:has(:focus-visible)) :is(.lbl,.group,.soon),#app.student-nav-open .side :is(.lbl,.group,.soon){opacity:1}
#app .side:is(:hover,:has(:focus-visible)) .count,#app.student-nav-open .side .count{position:static;margin-left:auto;font-size:12px;padding:0 7px}
#app .student-menu-toggle{display:inline-flex;align-items:center;justify-content:center;flex:none;width:42px;height:42px;padding:8px;border-radius:12px;margin-right:0}
.student-nav-backdrop{display:none}
@media(max-width:760px){
 #app{grid-template-columns:minmax(0,1fr)}
 #app .side,#app .side:hover{width:264px;transform:translateX(-100%);transition:transform .2s;max-width:85vw;visibility:hidden}
 #app.student-nav-open .side{transform:none;visibility:visible}
 #app .side>.brand .student-logo-full{opacity:1}
 #app .side>.brand .student-logo-compact{opacity:0}
 #app .side :is(.lbl,.group,.soon){opacity:1}
 #app nav.menu .count{position:static;margin-left:auto;font-size:12px;padding:0 7px}
 #app.student-nav-open .student-nav-backdrop{display:block;position:fixed;inset:0;z-index:29;background:#14276f66;border:0;border-radius:0;width:100%;height:100%;padding:0}
 #app .student-web-tools{position:sticky;top:0;z-index:10;display:flex;flex-wrap:wrap}
 #app .student-menu-toggle{order:-2}
 #app .student-top-identity{flex:1;flex-basis:calc(100% - 60px);order:-1}
}
@media(prefers-reduced-motion:reduce){#app .side,#app .side *{transition:none}}
@media print{#app{display:block}#app .side,.student-nav-backdrop{display:none!important}}
#app .side:is(:hover,:has(:focus-visible)) :is(.student,.side-foot),#app.student-nav-open .side :is(.student,.side-foot){display:grid;width:224px;box-sizing:border-box;flex-shrink:0}
#app .side>.brand,#app .side nav.menu{flex-shrink:0}
@media(max-width:760px){#app .side :is(.student,.side-foot){display:grid;width:224px;box-sizing:border-box;flex-shrink:0}}

/* Il contenuto segue il rail espanso, come nel pannello di gestione. */
@media(min-width:761px){
 #app{transition:grid-template-columns .2s ease}
 #app:has(.side:hover),#app:has(.side :focus-visible),#app.student-nav-open{grid-template-columns:264px minmax(0,1fr)}
}
@media(prefers-reduced-motion:reduce){#app{transition:none}}
#app>main{grid-column:2;min-width:0}
@media(max-width:760px){#app>main{grid-column:1}}

/* Sidebar studenti senza riquadro Programma e senza barra di scorrimento visibile. */
#app .side .student,#app .side:is(:hover,:has(:focus-visible)) .student,#app.student-nav-open .side .student{display:none!important}
#app .side{scrollbar-width:none;-ms-overflow-style:none}#app .side::-webkit-scrollbar{display:none;width:0;height:0}
/* Su computer il menu si apre al passaggio del mouse: il pulsante con le tre linee resta solo su telefono. */
@media(min-width:761px){#app .student-menu-toggle{display:none!important}}
/* In fondo alla sidebar resta solo l'orario di aggiornamento: niente pulsanti. */
#app .side .side-foot :is(button,a){display:none!important}
/* Esci in fondo alla sidebar, con lo stesso aspetto delle voci del menu. */
#app .side .student-side-exit{margin-top:auto;padding-top:8px;border-top:1px solid var(--line);width:240px;flex-shrink:0}
#app .student-side-exit button{display:flex;align-items:center;gap:12px;width:240px;height:46px;padding:12px 15px;border:0;border-radius:14px;background:none;color:#b42318;font-weight:600;white-space:nowrap;cursor:pointer;box-shadow:none}
#app .student-side-exit button:hover{background:#fdecea}
#app .student-side-exit svg{width:22px;height:22px;flex:none}
/* Logo piccolo centrato sulla colonna delle icone del menu. */
#app .side>.brand .student-logo-compact{left:26px;transform:translate(-50%,-50%)}
/* Identita dello studente allineata a destra nella barra in alto, avatar sul lato esterno. */
#app .student-top-identity{flex:0 1 auto;margin-left:auto;margin-right:0;flex-direction:row-reverse;text-align:right}
#app .student-top-name,#app .student-top-course{justify-content:flex-end}
