:root{
  --ink:#22103d;--ink-2:#3e3352;--muted:#625c73;--line:rgba(255,255,255,.62);
  --green:#4c1d95;--green-2:#3b1f6b;--green-3:#6d3fc0;--mint:#ece6f7;--orange:#ffa94d;--peach:#ffe3c4;
  --glass:rgba(255,255,255,.46);--glass-strong:rgba(255,255,255,.72);--sheet:rgba(213,203,229,.58);
  --shadow:0 18px 48px rgba(40,33,52,.16),0 2px 6px rgba(40,33,52,.08);
  --radius:18px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{font:14px/1.45 Inter,system-ui,sans-serif;color:var(--ink);background:#b98d61;overflow-x:hidden}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
[hidden]{display:none!important}

/* ---------- scrivania sotto il vetro ---------- */
.desk{position:fixed;inset:0;z-index:0;overflow:hidden;
  background:
    repeating-linear-gradient(176deg,rgba(92,54,22,.10) 0 2px,transparent 2px 11px),
    repeating-linear-gradient(179deg,rgba(255,236,205,.07) 0 1px,transparent 1px 23px),
    radial-gradient(120% 90% at 20% 10%,#d9b98f 0,#c59a6c 45%,#a77a4d 100%)}
.desk .paper{position:absolute;left:12%;top:4%;width:360px;height:470px;background:#f4f1ea;transform:rotate(-7deg);box-shadow:0 10px 30px rgba(60,40,20,.25)}
.desk .paper:after{content:'';position:absolute;inset:40px 32px;background:repeating-linear-gradient(180deg,transparent 0 22px,rgba(90,110,140,.18) 22px 23px)}
.desk .pen{position:absolute;left:21%;bottom:-40px;width:16px;height:300px;border-radius:8px;background:linear-gradient(90deg,#2a2c31,#545861 45%,#25272b);transform:rotate(24deg);box-shadow:6px 8px 14px rgba(40,25,10,.35)}
.desk .pen:before{content:'';position:absolute;top:-18px;left:4px;width:8px;height:22px;border-radius:4px 4px 0 0;background:#c9ccd1}
.desk .pen2{left:24%;bottom:-60px;background:linear-gradient(90deg,#d8d9dc,#fff 45%,#c5c7cb);transform:rotate(30deg)}
.desk .notebook{position:absolute;right:-30px;top:44%;width:150px;height:240px;border-radius:8px;background:#f3f1ec;transform:rotate(14deg);box-shadow:0 12px 28px rgba(60,40,20,.3)}
.desk .notebook:before{content:'';position:absolute;left:-6px;top:14px;bottom:14px;width:12px;background:repeating-linear-gradient(180deg,#6a6c72 0 4px,transparent 4px 13px);border-radius:3px}
.desk .plant{position:absolute;right:16px;top:-4px;width:150px;height:170px}
.desk .plant:before{content:'';position:absolute;left:30px;bottom:0;width:92px;height:86px;border-radius:0 0 40px 40px/0 0 24px 24px;background:linear-gradient(90deg,#d9d6cf,#f6f4ef 50%,#cfcbc2);box-shadow:0 14px 24px rgba(60,40,20,.3)}
.desk .plant i{position:absolute;bottom:70px;left:68px;width:20px;height:90px;border-radius:50% 50% 40% 40%;background:linear-gradient(90deg,#3f7046,#73a463);transform-origin:bottom center}
.desk .plant i:nth-child(1){transform:rotate(-40deg)}.desk .plant i:nth-child(2){transform:rotate(-15deg);height:100px}.desk .plant i:nth-child(3){transform:rotate(8deg);height:108px}.desk .plant i:nth-child(4){transform:rotate(30deg)}.desk .plant i:nth-child(5){transform:rotate(55deg);height:70px}

/* ---------- struttura ---------- */
.shell{position:relative;z-index:1;display:grid;grid-template-columns:232px 1fr;gap:14px;padding:14px;min-height:100vh;max-width:1480px;margin:0 auto}
.glass,.glass-sheet,.glass-soft{backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15)}
.glass{background:var(--glass);border:1px solid var(--line);box-shadow:var(--shadow)}
.glass-soft{background:rgba(255,255,255,.55);border:1px solid var(--line);border-radius:14px}
.glass-sheet{background:var(--sheet);border:1px solid rgba(255,255,255,.55);box-shadow:var(--shadow)}

.sidebar{border-radius:var(--radius);padding:18px 12px 14px;display:flex;flex-direction:column;gap:6px;position:sticky;top:14px;height:calc(100vh - 28px);overflow:auto}
.brand{display:flex;align-items:center;gap:10px;padding:2px 8px 14px;font-weight:600;font-size:16px;letter-spacing:-.2px}
.logo{width:30px;height:30px;display:block;border-radius:8px}
.navlabel{padding:10px 10px 6px;color:#5b5369;text-transform:uppercase;letter-spacing:.9px;font-size:10px;font-weight:600}
.nav{display:grid;gap:2px}
.nav button{border:0;background:transparent;display:flex;align-items:center;gap:11px;text-align:left;padding:9px 10px;border-radius:10px;color:var(--ink-2);font-size:13px}
.nav button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.nav button:hover{background:rgba(255,255,255,.45)}
.nav button.active{background:rgba(255,255,255,.75);box-shadow:0 1px 3px rgba(40,33,52,.1);color:var(--ink);font-weight:500}
.sessions{display:grid;gap:9px;padding:0 2px}
.session{display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:center;text-align:left;padding:9px;border-radius:13px;border:1px solid var(--line);background:rgba(255,255,255,.62);box-shadow:0 4px 12px rgba(40,33,52,.08)}
.session:hover{background:rgba(255,255,255,.85)}
.session .ico{width:44px;height:44px;border-radius:10px;display:grid;place-items:center;font-size:24px;background:linear-gradient(145deg,#f3efe6,#e2dee8)}
.session strong{display:block;font-size:12px;font-weight:600;line-height:1.3}
.session small{display:block;font-size:10.5px;color:var(--muted);margin-top:3px}
.sidebottom{margin-top:auto;display:grid;gap:9px;padding-top:12px}
.plan{padding:13px}
.plan strong{font-size:12px}
.plan p{font-size:10.5px;color:var(--muted);line-height:1.5;margin:6px 0}
.tiny{font-size:10px;color:var(--muted)}
.profile{display:flex;gap:10px;align-items:center;padding:9px 10px}
.avatar{height:30px;width:30px;border-radius:50%;background:#efe5da;display:grid;place-items:center;font-size:16px}
.profile strong{font-size:12px}.profile small{display:block;color:var(--muted);font-size:10px}

.main{border-radius:var(--radius);min-width:0;overflow:visible}
.topbar{display:flex;align-items:center;gap:16px;padding:14px 22px;border-bottom:1px solid rgba(255,255,255,.45)}
.crumb{font-size:12px;color:var(--muted);margin-right:auto}.crumb b{color:var(--ink);font-weight:500}.crumb .sep{margin:0 9px;opacity:.6}
.search{position:relative;width:min(320px,34vw)}
.search svg{position:absolute;left:11px;top:50%;width:15px;height:15px;transform:translateY(-50%);fill:none;stroke:var(--muted);stroke-width:2}
.search input{width:100%;border:1px solid var(--line);background:rgba(255,255,255,.58);border-radius:10px;padding:8px 12px 8px 33px;font-size:12px;outline:none}
.search input:focus{background:#fff;border-color:#aa97c8}
.search-results{position:absolute;right:0;left:0;top:calc(100% + 6px);background:#fff;border-radius:12px;box-shadow:var(--shadow);padding:6px;z-index:20;max-height:320px;overflow:auto}
.search-results button{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;border-radius:8px;font-size:12px}
.search-results button:hover,.search-results button:focus{background:var(--mint);outline:none}
.search-results small{display:block;color:var(--muted);font-size:10.5px}
.streak{background:#fff;border-radius:9px;padding:7px 11px;font-size:11px;box-shadow:0 2px 8px rgba(40,33,52,.12);white-space:nowrap}
.content{padding:20px 24px 34px}
.view{display:none}.view.active{display:block}

/* ---------- dashboard ---------- */
.hero-row{position:relative;padding-left:150px;margin-bottom:16px}
.dial{position:absolute;left:-14px;top:4px;width:148px;height:148px;border-radius:50%;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:radial-gradient(circle,rgba(255,255,255,.9) 0 58%,rgba(255,255,255,.55) 59% 100%);border:1px solid #fff;box-shadow:0 12px 30px rgba(40,33,52,.18),inset 0 0 0 9px rgba(255,255,255,.35)}
.dial:before{content:'';position:absolute;inset:7px;border-radius:50%;background:repeating-conic-gradient(from -1deg,rgba(61,49,80,.38) 0 2deg,transparent 2deg 30deg);-webkit-mask:radial-gradient(circle,transparent 61px,#000 62px);mask:radial-gradient(circle,transparent 61px,#000 62px)}
.dial:after{content:'';position:absolute;top:-6px;width:16px;height:16px;border-radius:50%;background:#59605c;border:3px solid #d8dcd9}
.dial span{font-size:11px;letter-spacing:.8px;text-transform:uppercase;color:var(--ink-2)}
.dial b{font:600 38px/1 Inter;margin:3px 0 4px}
.banner{position:relative;min-height:150px;border-radius:20px 20px 46% 46%/20px 20px 34px 34px;background:linear-gradient(115deg,#5a339a 0%,#472086 55%,#3c1877 100%);color:#fff;padding:26px 30px 34px;overflow:hidden;box-shadow:0 14px 30px rgba(60,24,119,.28),inset 0 1px 0 rgba(255,255,255,.3)}
.banner-text{position:relative;z-index:1;max-width:44%}
.banner h1{font:400 clamp(22px,2.2vw,30px)/1.1 'DM Serif Display',Georgia,serif;text-transform:uppercase;letter-spacing:.4px;margin:4px 0 8px}
.banner p{margin:0;font-size:13px;opacity:.92}
.banner-art{position:absolute;right:0;top:0;height:100%;width:62%}
.quick-row{display:grid;grid-template-columns:1fr 1.45fr;gap:16px;margin-bottom:18px}
.quick-row>*,.progress-row>*,.lower-row>*,.workspace>*{min-width:0}
.new-session{border:0;border-radius:16px;min-height:96px;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:13px;font-weight:500;line-height:1.35;
  background:linear-gradient(160deg,#5b3499,#401c79);box-shadow:0 12px 24px rgba(60,24,119,.3),inset 0 1px 0 rgba(255,255,255,.3)}
.new-session .plus{font-size:28px;font-weight:300;line-height:1}
.new-session:hover{filter:brightness(1.06)}
.quick-tutor{border-radius:16px;display:flex;gap:12px;align-items:flex-start;padding:13px 16px}
.owl{width:44px;height:44px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:26px;background:linear-gradient(145deg,#fff,#e8e5ed);box-shadow:0 3px 8px rgba(40,33,52,.15)}
.owl.sm{width:26px;height:26px;font-size:15px;display:inline-grid;vertical-align:middle;margin-right:6px}
.qt-body{flex:1;min-width:0}.qt-body strong{display:block;font-size:13px;font-weight:600}.qt-body>span{font-size:12px;color:var(--ink-2)}
.qt-input{display:flex;align-items:center;gap:4px;margin-top:8px;background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:10px;padding:3px 6px 3px 12px}
.qt-input input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:12px;padding:6px 0}
.icon-btn{border:0;background:none;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:var(--muted)}
.icon-btn:hover{background:var(--mint);color:var(--ink)}.icon-btn.listening{color:#c0392b}
.icon-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.section-title{font-size:15px;font-weight:600;margin:0 0 10px;letter-spacing:-.2px}
.progress-row{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px;margin-bottom:20px}
.exam-card{position:relative;display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:16px;background:linear-gradient(135deg,#fff 0%,#f7f6f8 55%,#eae9ec 100%);border:1px solid #fff;box-shadow:0 10px 26px rgba(40,33,52,.14);overflow:hidden;min-height:132px}
.exam-card:after{content:'';position:absolute;right:-70px;bottom:-90px;width:260px;height:260px;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 12px,rgba(120,135,128,.14) 12px 13px);pointer-events:none}
.molecule{width:74px;flex:none;align-self:flex-end;margin-bottom:-4px}
.flask{position:absolute;left:66px;bottom:12px;width:26px}
.exam-info{flex:1;min-width:0;position:relative;z-index:1}
.exam-label{font-size:12px;color:var(--ink-2)}
.exam-info h3{font:800 25px/1.05 Inter;text-transform:uppercase;letter-spacing:-.5px;margin:3px 0 8px;overflow-wrap:anywhere}
.exam-info p{display:flex;align-items:center;gap:6px;margin:3px 0;font-size:11.5px;color:var(--ink-2)}
.exam-countdown{display:inline-block!important;margin:4px 0 6px!important;padding:3px 10px;border-radius:999px;background:var(--mint);color:var(--green-2)!important;font-weight:700;font-size:11.5px!important}
.exam-countdown:empty{display:none!important}
.exam-countdown.soon{background:#fdeee6;color:#b5532f!important}
.exam-when{font-weight:600;text-transform:uppercase;font-size:12px!important;color:var(--ink)!important}
.exam-info svg{width:13px;height:13px;flex:none;fill:none;stroke:currentColor;stroke-width:2}
.exam-side{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:8px}
.ring{position:relative;width:92px;height:92px}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring-track{fill:none;stroke:#e3e0e7;stroke-width:9}
.ring-fill{fill:none;stroke:var(--green-2);stroke-width:9;stroke-linecap:round;transition:stroke-dasharray .6s}
.ring-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring-label b{font:700 28px/1 Inter}.ring-label span{font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:var(--ink-2);margin-top:2px}
.ghost-btn{border:1px solid #d7d4dd;background:#f2f1f4;border-radius:8px;font-size:10.5px;padding:5px 12px}
.ghost-btn:hover{background:#fff}
.edit-exam{border:0;background:none;border-radius:6px;font-size:10.5px;padding:2px 6px;margin-left:4px;color:var(--green-2);font-weight:600}
.edit-exam:hover{color:var(--ink);background:#fff}
.gauge-card{border-radius:16px;padding:14px 16px;background:linear-gradient(160deg,rgba(255,250,240,.92),rgba(246,239,225,.85));border:1px solid #fff;box-shadow:0 10px 24px rgba(40,33,52,.12);display:flex;flex-direction:column}
.gauge-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ink-2)}
.mini-add{width:22px;height:22px;border-radius:6px;border:1px solid #e3dccd;background:#f7f2e8;color:var(--muted);line-height:1;font-size:15px;padding:0}
.mini-add:hover{background:#fff;color:var(--ink)}
.gauge-body{display:flex;align-items:flex-end;justify-content:space-between;gap:6px;padding-top:10px}
.gauge-body small{display:block;margin-top:5px}
.gauge-value{font:600 24px/1 Inter}
.gauge{width:84px;display:block}
.gauge-wrap{position:relative;cursor:help}
.gauge-center{position:absolute;left:0;right:0;bottom:2px;text-align:center;font-size:11px;font-weight:700;color:var(--ink-2)}
.gauge-card:hover .gauge-fill{stroke:var(--green-2)}
.spark{display:flex;align-items:flex-end;gap:5px;height:46px;margin:12px 0 8px}
.spark .bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:3px;cursor:default}
.spark .bar i{display:block;width:100%;max-width:18px;border-radius:4px 4px 2px 2px;background:#cec7d8;transition:height .5s,background .2s}
.spark .bar.on i{background:linear-gradient(180deg,#6841a6,#401d79)}
.spark .bar.ok i{background:linear-gradient(180deg,#6c35c4,#401388)}.spark .bar.ko i{background:linear-gradient(180deg,#e6927f,#c4513d)}
.spark .bar.today em{color:var(--green-2);font-weight:700}
.spark .bar:hover i{filter:brightness(1.12)}
.spark em{font-style:normal;font-size:9px;color:var(--muted);text-transform:uppercase;line-height:1}
.spark-empty{font-size:10.5px;color:var(--muted);align-self:center;width:100%;text-align:center;border:1px dashed #ddd3c0;border-radius:8px;padding:10px 6px}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chip{font-size:10px;padding:3px 8px;border-radius:999px;background:rgba(255,255,255,.75);border:1px solid #ebe3d2;color:var(--ink-2)}
.goals-card{grid-column:1/-1;border-radius:16px;padding:14px 16px;background:var(--glass-strong);border:1px solid #fff;box-shadow:0 8px 20px rgba(40,33,52,.1)}
.goals-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.goals-head h3{font-size:13px;margin:0}.goals-head small{font-size:10.5px;color:var(--muted)}
.goals-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.goal{border-radius:12px;background:rgba(255,255,255,.7);border:1px solid #fff;padding:10px 12px;transition:transform .15s,box-shadow .15s}
.goal:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(40,33,52,.1)}
.goal-main{display:grid;grid-template-columns:30px 1fr 22px;gap:8px;align-items:center;width:100%;border:0;background:none;padding:0;text-align:left}
.goal-ico{font-size:20px;text-align:center}
.goal-main strong{display:block;font-size:12px;font-weight:600}.goal-main small{display:block;font-size:10.5px;color:var(--muted)}
.goal-check{width:22px;height:22px;border-radius:50%;border:1.5px solid #cbc6d2;display:grid;place-items:center;font-size:12px;color:#fff;transition:.25s}
.goal.done .goal-check{background:var(--green-2);border-color:var(--green-2);animation:pop .35s}
.goal-bar{height:6px;border-radius:9px;background:#e5e2ea;margin-top:9px;overflow:hidden}
.goal-bar i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,#7145b8,#3c1875);transition:width .6s cubic-bezier(.2,.8,.2,1)}
.stepper{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:8px;font-size:12px;font-weight:600}
.stepper button{width:24px;height:24px;border-radius:7px;border:1px solid #d9d5df;background:#fff;line-height:1}
.stepper button:hover{background:var(--mint)}
@keyframes pop{0%{transform:scale(.6)}70%{transform:scale(1.15)}100%{transform:scale(1)}}
.gauge-track{fill:none;stroke:#e5ddcd;stroke-width:9;stroke-linecap:round}
.gauge-fill{fill:none;stroke:#8a958f;stroke-width:9;stroke-linecap:round;transition:stroke-dasharray .6s}
.gauge-card small{font-size:10.5px;color:var(--muted)}
.lower-row{display:grid;grid-template-columns:1.25fr 1fr;gap:16px}
.row-head{display:flex;justify-content:space-between;align-items:baseline}
.link{border:0;background:none;font-size:11px;color:var(--muted)}.link:hover{color:var(--ink)}
.activities{display:grid;gap:8px}
.activity{display:grid;grid-template-columns:38px 1fr auto;gap:12px;align-items:center;padding:9px 14px 9px 10px;border-radius:12px;background:var(--glass-strong);border:1px solid #fff;box-shadow:0 4px 12px rgba(40,33,52,.08)}
.activity .ico{width:38px;height:38px;border-radius:9px;display:grid;place-items:center;font-size:21px;background:linear-gradient(145deg,#f6f1e6,#e6e3ec)}
.activity strong{display:block;font-size:12.5px;font-weight:500}.activity small{display:block;font-size:10.5px;color:var(--muted);margin-top:2px}
.activity.done strong{color:var(--ink-2)}
.check{border:1.5px solid #ada8b4;height:18px;width:18px;border-radius:5px;background:#fff;flex:none;padding:0;display:grid;place-items:center}
.check.checked{background:var(--green-2);border-color:var(--green-2)}
.check.checked:after{content:'';width:8px;height:4px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}
.subjects-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.subject-tile{display:grid;grid-template-columns:40px 1fr 22px;gap:10px;align-items:center;text-align:left;padding:9px 10px;border-radius:12px;border:1px solid #fff;background:var(--glass-strong);box-shadow:0 4px 12px rgba(40,33,52,.08)}
.subject-tile:hover{background:#fff}
.subject-tile .ico{font-size:26px;text-align:center}
.subject-tile strong{display:block;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.subject-tile small{display:block;font-size:10.5px;color:var(--muted)}
.subject-tile .chev{width:22px;height:22px;border-radius:6px;background:#efeef1;display:grid;place-items:center;color:var(--muted);font-size:13px}
.subjects-grid .empty,.activities .empty{grid-column:1/-1;background:rgba(255,255,255,.5);border-radius:12px}

/* ---------- altre sezioni ---------- */
.page-head{margin:2px 0 18px}.page-head.row{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}
.page-head h1{font:400 30px/1.1 'DM Serif Display',Georgia,serif;margin:6px 0 4px}
.page-head p{margin:0;color:var(--ink-2);font-size:13px}
.eyebrow{color:var(--green-2);font-size:10.5px;font-weight:600;letter-spacing:.8px;text-transform:uppercase}
.panel{background:var(--glass-strong);border:1px solid #fff;border-radius:16px;padding:18px;box-shadow:0 8px 22px rgba(40,33,52,.1)}
.panel h3{font-size:14px;font-weight:600;margin:0 0 4px}
.panelhead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}
.panelhead h3{margin:0}
.hint{font-size:11px;color:var(--muted);margin:4px 0}
.workspace{display:grid;grid-template-columns:1.05fr .95fr;gap:14px}
.drop{border:1.5px dashed #bcb4c9;background:rgba(255,255,255,.6);border-radius:13px;padding:18px;text-align:center;margin-top:10px}
.drop input{display:none}
.drop label{display:inline-block;cursor:pointer;background:var(--mint);color:var(--green-2);padding:9px 14px;border-radius:9px;font-size:12px;font-weight:600}
.drop p{font-size:10.5px;color:var(--muted)}
.filenames{font-size:10.5px;color:var(--green-2)}
textarea,input[type=text],input[type=date],input[type=time]{width:100%;border:1px solid #e1dee6;border-radius:10px;padding:10px 11px;outline:none;background:#fff;font-size:12.5px}
textarea:focus,input:focus{border-color:#9f89c0}
.workspace textarea{height:150px;resize:vertical;margin-top:12px;line-height:1.6}
.subjectrow{display:flex;gap:8px;margin-top:10px}.subjectrow input{flex:1}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 4px;align-items:center}.toolbar.center{justify-content:center}
.btn{border:0;border-radius:10px;padding:10px 15px;font-size:12px;font-weight:600}
.btn.lime{background:linear-gradient(160deg,#5b3499,#401c79);color:#fff;box-shadow:0 6px 14px rgba(60,24,119,.25)}
.btn.lime:hover{filter:brightness(1.06)}
.pill{border:1px solid #dddae3;border-radius:9px;background:#fff;padding:8px 12px;font-size:11.5px}
.pill:hover{border-color:#beb6ca}
.result{margin-top:14px}
.slide{padding:18px 20px;border-radius:14px;background:linear-gradient(135deg,#472086,#351668);color:#fff;margin-bottom:10px;box-shadow:0 8px 18px rgba(60,24,119,.22)}
.slide small{color:#d8cceb;font-size:9.5px;text-transform:uppercase;letter-spacing:1px}
.slide h3{font-size:16px;margin:10px 0 6px;color:#fff}
.slide li{font-size:12px;color:#eee9f5;line-height:1.7}
.cardbox{background:var(--glass-strong);border:1px solid #fff;border-radius:16px;padding:18px;margin-top:12px;box-shadow:0 8px 22px rgba(40,33,52,.1)}
.cardbox h3{font-size:14px;margin:0 0 6px}
.cardbox p,.cardbox li{font-size:12.5px;color:var(--ink-2);line-height:1.65}
.subjectlist{display:grid;gap:9px}
.subject{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.7);border:1px solid #fff}
.subjectico{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-size:21px;background:linear-gradient(145deg,#f6f1e6,#e6e3ec)}
.subject strong{font-size:13px}.subject small{display:block;color:var(--muted);font-size:10.5px;margin-top:3px}
.flashcard{min-height:190px;perspective:1200px;cursor:pointer;border-radius:16px;outline:none}
.flashcard:focus-visible .fc-face{box-shadow:0 0 0 3px #9f89c0}
.fc-inner{position:relative;min-height:190px;height:100%;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.3,.9,.3,1.05)}
.flashcard.flipped .fc-inner{transform:rotateY(180deg)}
.flashcard:hover .fc-inner{transform:translateY(-2px)}.flashcard.flipped:hover .fc-inner{transform:rotateY(180deg) translateY(-2px)}
.fc-face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:26px;text-align:center;border-radius:16px;border:1px solid #fff;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 10px 24px rgba(40,33,52,.12)}
.fc-front{background:linear-gradient(145deg,#f5f4f8,#e1daed)}
.fc-back{background:linear-gradient(145deg,#4c258c,#351668);color:#fff;transform:rotateY(180deg)}
.fc-back .eyebrow{color:#d8cceb}
.fc-hint{font-size:10px;color:var(--muted)}.fc-back .fc-hint{color:#d8cceb}
.flashcard>.empty{min-height:190px;display:grid;place-items:center;background:rgba(255,255,255,.55);border-radius:16px}
.flashcard strong{font-size:17px;line-height:1.4}.flashcard p{font-size:14px;line-height:1.6;margin:0}
.chat{height:380px;overflow:auto;background:rgba(255,255,255,.55);border-radius:13px;padding:14px;border:1px solid #fff}
.bubble{max-width:85%;padding:10px 13px;border-radius:13px;font-size:12.5px;line-height:1.65;margin:7px 0;white-space:pre-wrap}
.bubble.bot{background:#fff;border:1px solid #e7e4ec}
.bubble.user{background:#e0d7ee;margin-left:auto}
.chat-wrap{position:relative}
.chat{scroll-behavior:auto;overscroll-behavior:contain}
.jump-btn{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);border:1px solid rgba(255,255,255,.8);border-radius:999px;padding:6px 14px;font-size:11.5px;font-weight:600;color:#fff;background:rgba(57,22,113,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 6px 16px rgba(40,33,52,.25);animation:fadein .2s}
.jump-btn:hover{background:var(--green-2)}
.bubble.is-typing{display:inline-flex;align-items:center;min-height:38px;padding:10px 14px}
.dots{display:inline-flex;gap:5px;align-items:center}
.dots i{width:7px;height:7px;border-radius:50%;background:var(--green-3);opacity:.35;animation:dot 1.2s infinite ease-in-out}
.dots i:nth-child(2){animation-delay:.18s}.dots i:nth-child(3){animation-delay:.36s}
@keyframes dot{0%,80%,100%{opacity:.3;transform:translateY(0) scale(.85)}40%{opacity:1;transform:translateY(-4px) scale(1)}}
.bubble.bot{animation:fadein .2s}
.suggestions{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.suggestion{border:1px solid rgba(255,255,255,.85);background:rgba(255,255,255,.6);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:999px;padding:6px 12px;font-size:11.5px;color:var(--ink-2);box-shadow:0 2px 8px rgba(40,33,52,.08);transition:background .15s,transform .12s,box-shadow .15s}
.suggestion:hover:not(:disabled){background:#fff;color:var(--green-2);transform:translateY(-1px);box-shadow:0 5px 12px rgba(40,33,52,.12)}
.suggestion:disabled{opacity:.5;cursor:not-allowed}
.chatinput{display:flex;gap:8px;margin-top:10px}.chatinput input{flex:1;border:1px solid #e1dee6;border-radius:10px;padding:10px 12px;outline:none;background:#fff}
.empty{padding:22px;text-align:center;color:var(--muted);font-size:12px}
.empty.small{padding:10px;font-size:11px;background:rgba(255,255,255,.45);border-radius:12px}
.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;background:#20192a;color:#fff;padding:12px 17px;border-radius:11px;font-size:12px;transition:.2s;z-index:50}
.toast.show{opacity:1;transform:translate(-50%,0)}
.spinner{display:inline-block;width:13px;height:13px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}
.empty .spinner{border-color:#c1b6d2;border-top-color:var(--green-2)}
@keyframes spin{to{transform:rotate(360deg)}}
button:disabled{opacity:.6;cursor:wait}
.quiz-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:11px;color:var(--muted)}
.quiz-dots{display:flex;gap:5px}.quiz-dots i{width:8px;height:8px;border-radius:50%;background:#dad6e0}.quiz-dots i.cur{background:var(--green-2);transform:scale(1.2)}.quiz-dots i.ok{background:#3c9a62}.quiz-dots i.ko{background:#d0563f}
.quiz-q{font-size:13.5px;font-weight:600;line-height:1.55;margin:0 0 10px}
.quiz-option{display:flex;align-items:center;gap:10px;width:100%;text-align:left;margin:7px 0;padding:10px 12px;border-radius:11px;border:1.5px solid #dddae3;background:#fff;font-size:12.5px;transition:background .2s,border-color .2s,transform .12s,opacity .2s}
.quiz-option:hover:not(:disabled){border-color:#9f89c0;transform:translateX(2px)}
.quiz-option .letter{flex:none;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;background:#efeef2;font-weight:700;font-size:11px;transition:.2s}
.quiz-option:disabled{cursor:default;opacity:1}
.quiz-option.is-correct{background:#e3f5e9;border-color:#3c9a62;color:#1f5a37;animation:pop .35s}
.quiz-option.is-correct .letter{background:#3c9a62;color:#fff}
.quiz-option.is-wrong{background:#fdeceb;border-color:#d0563f;color:#8d2f20;animation:shake .4s}
.quiz-option.is-wrong .letter{background:#d0563f;color:#fff}
.quiz-option.is-dim{opacity:.55}
.quiz-feedback{border-radius:11px;padding:10px 12px;font-size:12px;line-height:1.6;margin-top:10px;animation:fadein .25s}
.quiz-feedback:empty{display:none}
.quiz-feedback.ok{background:#e3f5e9;color:#1f5a37}.quiz-feedback.ko{background:#fdeceb;color:#8d2f20}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}
@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.quiz-result{text-align:center;padding:10px 0}.quiz-result .big{font:700 40px/1 Inter;color:var(--green-2);margin:6px 0}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.typing:after{content:' ';display:inline-block;width:5px;height:12px;background:var(--green-3);animation:blink .8s steps(2) infinite}
@keyframes blink{50%{opacity:0}}

.glass-dialog{border:1px solid rgba(255,255,255,.75);border-radius:20px;padding:24px;width:min(460px,calc(100vw - 32px));background:linear-gradient(150deg,rgba(255,255,255,.72),rgba(231,224,241,.55));backdrop-filter:blur(22px) saturate(1.3);-webkit-backdrop-filter:blur(22px) saturate(1.3);box-shadow:0 30px 80px rgba(21,15,31,.35),inset 0 1px 0 rgba(255,255,255,.8)}
.glass-dialog[open]{animation:fadein .2s}
.dialog-sub{font-size:12px;color:var(--ink-2);margin:-6px 0 4px}
.glass-dialog input{background:rgba(255,255,255,.8)}
.exam-preview{margin:14px 0 0;padding:10px 12px;border-radius:11px;background:rgba(255,255,255,.65);font-size:12.5px;font-weight:600;color:var(--green-2)}
.exam-preview:empty{display:none}
.exam-preview.warn{color:#b5532f}
.glass-dialog::backdrop{background:rgba(26,20,35,.35);backdrop-filter:blur(6px)}
.glass-dialog h2{font:400 24px 'DM Serif Display',Georgia,serif;margin:0 0 12px}
.glass-dialog label{display:block;font-size:11px;font-weight:600;color:var(--ink-2);margin-top:10px}
.glass-dialog label input{margin-top:4px;font-weight:400}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dialog-actions{display:grid;grid-template-columns:auto 1fr auto auto;gap:8px;margin-top:18px}

/* ---------- schermi stretti ---------- */
@media (max-height:840px) and (min-width:901px){.sessions .session:nth-child(3){display:none}.sidebar{gap:4px}.brand{padding-bottom:8px}}
@media (max-width:1180px){.progress-row{grid-template-columns:1fr 1fr}.exam-card{grid-column:1/-1}.banner-art{width:56%}}
@media (max-width:1180px){.goals-list{grid-template-columns:repeat(3,1fr)}}
@media (max-width:900px){
  .shell{grid-template-columns:68px 1fr;gap:10px;padding:10px}
  .sidebar{padding:14px 8px}.brand span,.navlabel,.nav .label,.sessions,.sidebottom{display:none}
  .brand{justify-content:center;padding:0 0 10px}.nav button{justify-content:center;padding:11px}
  .quick-row,.lower-row,.workspace{grid-template-columns:1fr}
  .hero-row{padding-left:0}.dial{display:none}
}
@media (max-width:600px){
  .shell{grid-template-columns:1fr}.sidebar{position:static;height:auto;flex-direction:row;align-items:center;overflow:auto}
  .brand{padding:0 6px 0 0}.nav{display:flex}
  .topbar{flex-wrap:wrap;padding:12px 16px}.search{order:3;width:100%}
  .content{padding:16px}
  .shell{width:100%}.main{width:100%}
  .banner{padding:22px 20px 30px}.banner-text{max-width:100%}.banner-art{opacity:.3;width:100%}
  .banner h1{font-size:24px}
  .progress-row,.subjects-grid,.goals-list{grid-template-columns:1fr}
  .exam-card{flex-wrap:wrap}.molecule,.flask{display:none}
  .page-head.row{flex-direction:column;align-items:flex-start}
}

/* ---------- autenticazione ---------- */
.profile{position:relative}
.profile-text{min-width:0;flex:1}.profile-text strong,.profile-text small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.profile-btn{padding:5px 9px;font-size:10.5px;flex:none}
.account-top{display:none;border:0;background:none;padding:0;border-radius:50%}
.account-top .avatar{width:32px;height:32px;box-shadow:0 2px 8px rgba(40,33,52,.15)}
@media (max-width:900px){.account-top{display:block}}
.avatar.initial{background:linear-gradient(145deg,#5b3499,#391671);color:#fff;font-weight:700;font-size:13px}
.auth-dialog{width:min(420px,calc(100vw - 32px));padding:26px 26px 22px}
.auth-close{position:absolute;top:12px;right:14px;width:30px;height:30px;border-radius:50%;border:0;background:rgba(255,255,255,.6);font-size:18px;line-height:1;color:var(--muted)}
.auth-close:hover{background:#fff;color:var(--ink)}
.auth-brand{display:flex;align-items:center;gap:9px;font-weight:600;font-size:15px;margin-bottom:14px}.auth-brand img{border-radius:9px}
.auth-dialog h2{margin:0 0 6px}
.auth-reason{font-size:12.5px;color:var(--ink-2);margin:0 0 14px;line-height:1.55}
.auth-tabs{display:flex;width:100%;margin-bottom:6px}.auth-tabs button{flex:1}
.auth-dialog label{margin-top:12px}
.auth-dialog input[type=email],.auth-dialog input[type=password],.auth-dialog input[type=text]{width:100%;border:1px solid #e1dee6;border-radius:11px;padding:11px 12px;font-size:13px;background:rgba(255,255,255,.85);outline:none;transition:border-color .15s,box-shadow .15s}
.auth-dialog input:focus{border-color:#9f89c0;box-shadow:0 0 0 3px rgba(91,52,153,.15)}
.pw-field{position:relative;display:block;margin-top:4px}.pw-field input{padding-right:42px!important}
.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;border:0;background:none;border-radius:8px;color:var(--muted);display:grid;place-items:center}
.pw-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8}
.pw-toggle[aria-pressed=true]{color:var(--green-2)}
.pw-rules{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:3px;font-size:11px;color:var(--muted)}
.pw-rules li:before{content:'○';margin-right:6px}.pw-rules li.ok{color:var(--green-2)}.pw-rules li.ok:before{content:'●'}
.auth-error{min-height:0;margin:10px 0 0;font-size:12px;color:#a33a2a}.auth-error:empty{display:none}
.auth-error.ok{color:var(--green-2)}
.auth-submit{width:100%;margin-top:16px;padding:12px;font-size:13px}
.auth-foot{text-align:center;font-size:12px;color:var(--muted);margin:12px 0 0}
.auth-foot .link{color:var(--green-2);font-weight:600;font-size:12px;padding:0}
.auth-foot .link:disabled{color:var(--muted);font-weight:400;cursor:default}
.otp-boxes{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:6px}
.otp-box{width:100%;aspect-ratio:1/1.15;text-align:center;font:600 22px Inter;border:1.5px solid #d9d5e0;border-radius:12px;background:rgba(255,255,255,.9);outline:none;transition:border-color .15s,transform .12s,box-shadow .15s}
.otp-box:focus{border-color:var(--green-2);box-shadow:0 0 0 3px rgba(91,52,153,.18);transform:translateY(-1px)}
.otp-boxes.error .otp-box{border-color:#d0563f;animation:shake .4s}
.otp-boxes.done .otp-box{border-color:#3c9a62;background:#eee7f8}

/* ---------- limite di richieste AI ---------- */
.rate-banner{display:flex;align-items:center;gap:10px;margin:12px 24px 0;padding:10px 14px;border-radius:12px;font-size:12.5px;color:#7a4b0c;background:linear-gradient(135deg,rgba(255,243,214,.92),rgba(255,236,200,.8));border:1px solid rgba(255,255,255,.85);box-shadow:0 6px 16px rgba(120,80,20,.12);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:fadein .25s}
.rate-banner b{font-variant-numeric:tabular-nums}
@media (max-width:600px){.rate-banner{margin:10px 16px 0}}

/* ---------- generazione AI di flashcard e quiz ---------- */
.ai-gen{margin-bottom:14px;background:linear-gradient(140deg,rgba(255,255,255,.82),rgba(232,225,242,.7));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.ai-gen-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.ai-gen-head h3{margin:4px 0 2px}
.ai-gen-head select{max-width:280px}
.ai-gen-row{display:grid;grid-template-columns:auto 1fr 1fr;gap:14px;align-items:end}
.ai-opt{display:flex;flex-direction:column;gap:6px;min-width:0}
.ai-label{font-size:10.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}
.ai-act{display:flex;gap:6px;align-items:center}
.ai-act .btn{flex:1;white-space:nowrap}
.ai-status{margin:12px 0 0;font-size:12px;border-radius:10px;padding:9px 12px;background:rgba(255,255,255,.7)}
.ai-status:empty{display:none}
.ai-status.ok{background:#e3f5e9;color:#1f5a37}.ai-status.ko{background:#fdeceb;color:#8d2f20}.ai-status.busy{color:var(--ink-2)}
.ai-status button{border:0;background:none;color:inherit;font-weight:700;text-decoration:underline;padding:0;margin-left:4px}
.alt-gen{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0 6px;font-size:11px;color:var(--muted)}
.alt-gen .pill{padding:6px 10px;font-size:11px}
.ai-badge{position:absolute;top:12px;right:12px;font-size:10px;font-weight:700;color:#344a7a;background:#e9eef9;border-radius:999px;padding:3px 8px}
.fc-back .ai-badge{display:none}
.quiz-pool{font-size:10.5px;color:#344a7a;background:#e9eef9;border-radius:999px;padding:2px 8px;margin-left:6px}
@media (max-width:900px){.ai-gen-row{grid-template-columns:1fr}.ai-gen-head select{max-width:none;width:100%}}

/* ---------- calendario ---------- */
.cal-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;margin-bottom:14px;align-items:start}
.cal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.cal-nav{display:flex;align-items:center;gap:6px}
.cal-nav h3{margin:0 4px;min-width:150px;text-align:center;font:400 20px/1.2 'DM Serif Display',Georgia,serif}
.cal-nav h3::first-letter,.day-head h3::first-letter{text-transform:uppercase}
.cal-nav .icon-btn{font-size:20px;line-height:1;border:1px solid #dddae3;background:#fff}
.seg{display:inline-flex;background:rgba(255,255,255,.6);border:1px solid #fff;border-radius:10px;padding:3px;gap:2px}
.seg button,.seg label span{border:0;background:none;border-radius:8px;padding:6px 12px;font-size:11.5px;color:var(--ink-2);cursor:pointer;display:block}
.seg button.active,.seg label input:checked+span{background:#fff;color:var(--green-2);font-weight:600;box-shadow:0 1px 4px rgba(40,33,52,.12)}
.seg label input{position:absolute;opacity:0;pointer-events:none}
.seg label input:focus-visible+span{outline:2px solid #9f89c0}
.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}
.cal-weekdays span{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);text-align:center}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-day{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:4px;min-height:86px;padding:6px;border-radius:11px;border:1px solid rgba(255,255,255,.85);background:rgba(255,255,255,.55);text-align:left;transition:background .15s,transform .12s,box-shadow .15s;overflow:hidden}
.cal-grid.week .cal-day{min-height:250px}
.cal-day:hover{background:rgba(255,255,255,.9);box-shadow:0 4px 12px rgba(40,33,52,.1)}
.cal-day.other{opacity:.45}
.cal-day .num{font-size:12px;font-weight:600;width:24px;height:24px;border-radius:50%;display:grid;place-items:center}
.cal-day.today .num{background:var(--green-2);color:#fff}
.cal-day.selected{outline:2px solid var(--green-2);outline-offset:-2px;background:#fff}
.cal-day.has-exam{background:linear-gradient(160deg,rgba(255,240,232,.95),rgba(255,255,255,.7))}
.cal-items{display:flex;flex-direction:column;gap:3px;min-width:0}
.cal-chip{display:block;font-size:10px;line-height:1.3;padding:2px 6px;border-radius:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-grid.week .cal-chip{white-space:normal}
.cal-chip.esame{background:#fde6db;color:#9a3f1f;font-weight:600}
.cal-chip.scadenza{background:#fff1cc;color:#7a5608}
.cal-chip.ripasso{background:#e5def1;color:#2f0e65}
.cal-chip.task{background:#e9eef9;color:#344a7a}
.cal-chip.done{text-decoration:line-through;opacity:.6}
.cal-more{font-size:10px;color:var(--muted);padding-left:4px}
.cal-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;font-size:10.5px;color:var(--muted)}
.cal-legend span{display:inline-flex;align-items:center;gap:5px}
.lg{width:9px;height:9px;border-radius:3px;display:inline-block}.lg.esame{background:#e98a64}.lg.scadenza{background:#e8bd4c}.lg.ripasso{background:#6841a6}.lg.task{background:#7e93c9}
.day-panel{position:sticky;top:14px;max-height:calc(100vh - 28px);overflow:auto}
.day-head h3{font:400 20px/1.2 'DM Serif Display',Georgia,serif;margin:4px 0 10px}
.day-add{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.day-add .pill{padding:6px 9px;font-size:11px}
.day-list{display:grid;gap:8px;margin-bottom:12px}
.day-event{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:10px;border-radius:12px;background:rgba(255,255,255,.75);border:1px solid #fff;border-left:4px solid #6841a6}
.day-event.esame{border-left-color:#e98a64}.day-event.scadenza{border-left-color:#e8bd4c}
.day-event.done strong{text-decoration:line-through;color:var(--muted)}
.day-event .ico{font-size:20px;text-align:center}
.day-event strong{display:block;font-size:12.5px}.day-event small{display:block;font-size:10.5px;color:var(--muted);margin-top:2px}
.day-event .exam-countdown{margin:6px 0 0!important}
.day-actions{display:flex;align-items:center;gap:4px}
.day-sub{font-size:11.5px;font-weight:600;color:var(--ink-2);margin:4px 0 8px}
.plan-stale{font-size:11.5px;color:var(--ink-2);background:rgba(255,255,255,.6);border:1px dashed #cdc8d4;border-radius:10px;padding:9px 12px}
.plan-stale .link{color:var(--green-2);font-weight:600;padding:0}
.plan-panel{margin-bottom:0}
.exam-only[hidden]{display:none!important}
.type-seg{display:flex;margin:4px 0 2px}.type-seg label{flex:1;margin:0!important;position:relative}.type-seg label span{text-align:center}
@media (max-width:1180px){.cal-layout{grid-template-columns:1fr}.day-panel{position:static;max-height:none}}
@media (max-width:600px){
  .cal-day{min-height:52px;padding:4px;align-items:center}
  .cal-grid{gap:4px}.cal-weekdays{gap:4px}
  .cal-grid.month .cal-items{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:3px}
  .cal-grid.month .cal-chip{font-size:0;width:7px;height:7px;padding:0;border-radius:50%}
  .cal-grid.month .cal-chip.esame{background:#e98a64}.cal-grid.month .cal-chip.scadenza{background:#e8bd4c}.cal-grid.month .cal-chip.ripasso{background:#6841a6}.cal-grid.month .cal-chip.task{background:#7e93c9}
  .cal-grid.month .cal-more{display:none}
  .cal-grid.week{grid-template-columns:1fr}.cal-grid.week .cal-day{min-height:0;align-items:stretch;flex-direction:row;flex-wrap:wrap}
  .cal-weekdays:has(+.cal-grid.week){display:none}
  .cal-nav h3{min-width:0;font-size:17px}
}

/* ---------- esportazione PDF ---------- */
.export-btn{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--green-2)}
.btn-ico{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round;flex:none}
.subject .actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.print-view{display:none}

@page{size:A4;margin:18mm 16mm 18mm}
@media print{
  html,body{background:#fff!important;color:#1c1625}
  body>*:not(.print-view){display:none!important}
  .print-view{display:block!important;font:10.5pt/1.55 Inter,system-ui,sans-serif;color:#1c1625}
  .print-view *{box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
  .pv-cover{border-bottom:2px solid #391671;padding-bottom:12pt;margin-bottom:16pt;display:flex;justify-content:space-between;align-items:flex-end;gap:16pt}
  .pv-brand{display:flex;align-items:center;gap:6pt;font-size:9pt;font-weight:600;color:#391671;letter-spacing:.3pt;margin-bottom:10pt}
  .pv-brand img{width:16pt;height:16pt;border-radius:4pt}
  .pv-cover h1{font:400 26pt/1.1 'DM Serif Display',Georgia,serif;margin:0 0 6pt}
  .pv-meta{font-size:9.5pt;color:#524a60}
  .pv-stats{display:flex;gap:6pt;flex:none}
  .pv-stat{border:1px solid #d4cdde;border-radius:6pt;padding:5pt 9pt;text-align:center;font-size:8pt;color:#524a60}
  .pv-stat b{display:block;font-size:14pt;color:#391671}
  .pv-section{margin:0 0 16pt}
  .pv-section>h2{font:400 15pt/1.2 'DM Serif Display',Georgia,serif;color:#391671;margin:0 0 8pt;padding-bottom:3pt;border-bottom:1px solid #e2dee8;break-after:avoid}
  .pv-key{background:#f0edf6;border-left:3pt solid #391671;padding:8pt 11pt;border-radius:0 5pt 5pt 0;font-weight:600;margin:0 0 8pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .print-view ul{margin:4pt 0;padding-left:15pt}.print-view li{margin:2pt 0}
  .pv-slide{break-inside:avoid;margin:0 0 9pt}
  .pv-slide h3{font-size:11pt;margin:0 0 2pt}.pv-slide h3 span{color:#391671;margin-right:5pt}
  .pv-cards{width:100%;border-collapse:collapse;font-size:10pt}
  .pv-cards th{text-align:left;font-size:8pt;text-transform:uppercase;letter-spacing:.5pt;color:#524a60;border-bottom:1.5px solid #391671;padding:4pt 6pt}
  .pv-cards td{border-bottom:1px solid #e5e2ea;padding:6pt;vertical-align:top}
  .pv-cards tr{break-inside:avoid}
  .pv-cards td:first-child{width:4%;color:#391671;font-weight:700}.pv-cards td:nth-child(2){width:42%;font-weight:600}
  .pv-q{break-inside:avoid;margin:0 0 10pt}
  .pv-q p{margin:0 0 4pt;font-weight:600}
  .pv-q ol{list-style:upper-alpha;margin:0;padding-left:18pt}
  .pv-answers{break-before:auto;break-inside:avoid;border:1px dashed #beb6ca;border-radius:6pt;padding:9pt 12pt}
  .pv-answers h2{font:400 13pt/1.2 'DM Serif Display',Georgia,serif;color:#391671;margin:0 0 4pt}
  .pv-answers li{margin:3pt 0}
  .pv-foot{margin-top:18pt;padding-top:6pt;border-top:1px solid #e2dee8;font-size:8pt;color:#7a877f;display:flex;justify-content:space-between}
  .pv-note{font-size:8.5pt;color:#8d4a2f}
}

/* ---------- footer e note legali ---------- */
.site-footer{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:6px 18px;padding:12px 18px;border-radius:14px;background:var(--glass);border:1px solid rgba(255,255,255,.6);box-shadow:0 8px 24px rgba(40,33,52,.10);font-size:11.5px;color:var(--ink-2)}
.foot-brand{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--ink)}.foot-brand img{border-radius:6px}
.foot-note{flex:1 1 320px;margin:0;color:var(--muted);line-height:1.5}
.foot-links{display:flex;align-items:center;gap:8px;color:var(--muted)}
.foot-link{border:0;background:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.7);border-radius:999px;padding:5px 11px;font-size:11.5px;color:var(--green-2);font-weight:600;transition:background .15s}
.foot-link:hover,.foot-link:focus-visible{background:#fff}
.legal-dialog{width:min(640px,calc(100vw - 32px));max-height:min(86vh,820px);padding:26px 26px 20px;display:none;flex-direction:column}
.legal-dialog[open]{display:flex}
.legal-tabs{display:flex;width:100%;margin:2px 0 12px}.legal-tabs button{flex:1}
.legal-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:4px 14px 6px 2px;margin-right:-8px;font-size:13px;line-height:1.6;color:var(--ink-2)}
.legal-body:focus-visible{outline:2px solid rgba(91,52,153,.4);border-radius:8px}
.legal-body h3{font-size:13.5px;color:var(--ink);margin:16px 0 4px}
.legal-body p{margin:6px 0}.legal-body ul{margin:6px 0;padding-left:20px}.legal-body li{margin:4px 0}
.legal-body code{font-size:12px;background:rgba(255,255,255,.7);border-radius:5px;padding:1px 5px}
.legal-meta{font-size:11.5px;color:var(--muted)}
.legal-body a{color:var(--green-2);font-weight:600}
.legal-actions{display:flex;justify-content:flex-end;padding-top:12px;border-top:1px solid rgba(255,255,255,.7);margin-top:8px}
.terms-check{display:flex!important;align-items:flex-start;gap:9px;font-weight:400!important;font-size:12px!important;line-height:1.5;color:var(--ink-2)!important;margin-top:14px!important;cursor:pointer}
.terms-check[hidden]{display:none!important}
.terms-check input{flex:none;width:16px;height:16px;margin:2px 0 0;accent-color:var(--green)}
.terms-check .link{font-size:12px;padding:0;color:var(--green-2);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.terms-check.error{color:#a33a2a!important}.terms-check.error input{outline:2px solid #e0a59b;outline-offset:1px}
@media (max-width:600px){.site-footer{flex-direction:column;align-items:flex-start;padding:12px 14px}.foot-note{flex:none}.legal-dialog{padding:22px 18px 16px;max-height:90vh}}

/* ---------- stato della sincronizzazione cloud */
.sync-badge{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px 0 10px;border-radius:999px;border:1px solid rgba(255,255,255,.7);background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);font-size:11.5px;font-weight:500;color:var(--ink-2);white-space:nowrap;transition:background .2s,color .2s}
.sync-badge:hover{background:rgba(255,255,255,.75)}
.sync-badge:focus-visible{outline:2px solid rgba(91,52,153,.45);outline-offset:2px}
.sync-ico{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.sync-ico .tick,.sync-ico .spin,.sync-ico .dot{display:none}
.sync-badge[data-state=ok]{color:var(--green-2)}.sync-badge[data-state=ok] .tick{display:block}
.sync-badge[data-state=syncing] .cloud,.sync-badge[data-state=pending] .cloud{opacity:.55}
.sync-badge[data-state=syncing] .spin{display:block;transform-origin:12px 12.8px;animation:syncspin 1.1s linear infinite}
.sync-badge[data-state=pending] .spin{display:block}
.sync-badge[data-state=offline],.sync-badge[data-state=notready]{color:var(--muted)}.sync-badge[data-state=offline] .cloud{stroke-dasharray:2.4 2.2}
.sync-badge[data-state=error]{color:#9a5a1c}.sync-badge[data-state=error] .dot{display:block}
@keyframes syncspin{to{transform:rotate(360deg)}}
@media (max-width:1180px){.sync-badge{width:34px;padding:0;justify-content:center}.sync-badge span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}}

/* ---------- ripetizione dilazionata */
.srs-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:-4px 0 12px}
.srs-mode b{display:inline-block;min-width:18px;padding:0 5px;margin-left:4px;border-radius:999px;background:var(--mint);color:var(--green-2);font-size:10.5px;line-height:17px;text-align:center}
.srs-help{font-size:11px;color:var(--muted);cursor:help}
.srs-chip{position:absolute;top:12px;left:14px;display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:600;color:var(--ink-2);background:rgba(255,255,255,.7);border:1px solid #fff;border-radius:999px;padding:3px 9px}
.srs-dots{display:inline-flex;gap:2px}.srs-dots i{width:6px;height:6px;border-radius:50%;background:#d8d4de}.srs-dots i.on{background:var(--green)}
.fc-front .ai-badge{position:absolute;top:12px;right:14px}
.srs-rate{display:grid;grid-template-columns:auto repeat(3,1fr);align-items:stretch;gap:8px;margin-top:12px;animation:fadein .2s}
.srs-rate[hidden]{display:none}
.srs-ask{align-self:center;font-size:11.5px;color:var(--muted);padding-right:2px}
.rate{position:relative;border:1px solid rgba(255,255,255,.85);border-radius:12px;padding:9px 8px 8px;background:rgba(255,255,255,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;flex-direction:column;align-items:center;gap:1px;transition:transform .12s,background .15s,box-shadow .15s}
.rate b{font-size:12.5px}.rate small{font-size:10.5px;color:var(--muted)}
.rate kbd{position:absolute;top:5px;right:7px;font:600 9px/1 Inter,sans-serif;color:var(--muted);opacity:.7}
.rate:hover,.rate:focus-visible{transform:translateY(-1px);box-shadow:0 6px 16px rgba(40,33,52,.12);outline:none}
.rate.hard b{color:#b0412f}.rate.hard:hover,.rate.hard:focus-visible{background:#fbe9e5}
.rate.medium b{color:#9a6a12}.rate.medium:hover,.rate.medium:focus-visible{background:#fbf1dc}
.rate.easy b{color:var(--green-2)}.rate.easy:hover,.rate.easy:focus-visible{background:#e8e1f3}
.srs-note{min-height:16px;margin:8px 0 0;font-size:11.5px;color:var(--ink-2);text-align:center}.srs-note:empty{margin:0;min-height:0}
.srs-done{min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:22px;border-radius:16px;border:1px solid #fff;background:linear-gradient(145deg,#f5f4f8,#e1daed);cursor:default}
.srs-done-ico{font-size:28px}.srs-done b{font-size:15px}.srs-done p{margin:0 0 6px;font-size:12px;color:var(--ink-2)}
@media (max-width:600px){.srs-rate{grid-template-columns:repeat(3,1fr)}.srs-ask{grid-column:1/-1;text-align:center}}

/* ---------- analisi dei progressi */
.insights{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:22px}
.ins-card{grid-column:span 2;position:relative;background:var(--glass-strong);border:1px solid #fff;border-radius:16px;padding:16px 18px;box-shadow:0 8px 22px rgba(40,33,52,.1);display:flex;flex-direction:column;gap:8px;min-width:0}
.ins-card h3{font-size:13px;font-weight:600;margin:0}.ins-card small{font-size:11px;color:var(--muted)}
.ins-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.ins-retention{flex-direction:row;align-items:center;gap:14px}.ins-retention p{margin:4px 0 0;font-size:11.5px;color:var(--ink-2);line-height:1.5}
.ins-ring-wrap{position:relative;width:96px;height:96px;flex:none}.ins-ring{width:96px;height:96px;transform:rotate(-90deg)}
.ins-ring-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ins-ring-label b{font:700 22px/1 Inter}.ins-ring-label span{font-size:9px;letter-spacing:.7px;text-transform:uppercase;color:var(--ink-2);margin-top:3px}
.ins-big{display:flex;align-items:baseline;gap:7px}.ins-big b{font:700 30px/1 Inter;letter-spacing:-.5px}.ins-big span{font-size:12px;color:var(--ink-2)}
.ins-flame{font-size:16px}
.ins-heat{display:grid;grid-template-columns:repeat(14,1fr);gap:3px;margin-top:auto}.ins-heat i{aspect-ratio:1;border-radius:3px;background:#e5e2ea}.ins-heat i.h1{background:#c5b5df}.ins-heat i.h2{background:#7548be}.ins-heat i.h3{background:var(--green-2)}
.ins-boxes{display:flex;height:10px;border-radius:999px;overflow:hidden;background:#e5e2ea;gap:2px}.ins-boxes span{min-width:4px}
.ins-boxes .b0{background:#d8d5de}.ins-boxes .b1{background:#e7a08f}.ins-boxes .b2{background:#e8c27c}.ins-boxes .b3{background:#ae93da}.ins-boxes .b4{background:#7c4fc5}.ins-boxes .b5{background:var(--green-2)}
.ins-btn{margin-top:auto;align-self:flex-start}.ins-btn:disabled{opacity:.6;cursor:default;filter:saturate(.4)}
.ins-mastery,.ins-chart{grid-column:span 3}
.mastery-list{display:flex;flex-direction:column;gap:6px}
.mastery-row{display:grid;grid-template-columns:minmax(0,1.3fr) 1fr 40px;align-items:center;gap:12px;border:0;background:rgba(255,255,255,.55);border-radius:10px;padding:8px 10px;text-align:left;transition:background .15s}
.mastery-row:hover,.mastery-row:focus-visible{background:#fff;outline:none}
.mastery-name{min-width:0}.mastery-name b{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mastery-name small{display:block;font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mastery-bar{height:8px;border-radius:999px;background:#e5e2ea;overflow:hidden}.mastery-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#7c4fc5,var(--green-2));transition:width .5s}
.mastery-pct{font-size:12px;font-weight:700;text-align:right;color:var(--green-2)}
.ins-chart-svg{width:100%;height:auto;display:block}.ins-chart-svg text{font:600 8px Inter,sans-serif;fill:var(--muted)}
.ins-chart-svg .bar-bg{fill:#eeedf1}.ins-chart-svg .bar-easy{fill:var(--green-2)}.ins-chart-svg .bar-medium{fill:#e3b65c}.ins-chart-svg .bar-hard{fill:#df8a77}
.ins-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin:0 4px 0 8px;vertical-align:-1px}.ins-legend .lg-easy{background:var(--green-2)}.ins-legend .lg-medium{background:#e3b65c}.ins-legend .lg-hard{background:#df8a77}
.export-btn.is-busy{opacity:.6;pointer-events:none}
@media (max-width:1180px){.insights{grid-template-columns:repeat(2,1fr)}.ins-card,.ins-mastery,.ins-chart{grid-column:span 1}.ins-mastery,.ins-chart{grid-column:1/-1}}
@media (max-width:600px){.insights{grid-template-columns:1fr}.ins-card{grid-column:1/-1}}

/* ---------- condivisione e importazione */
.head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.share-dialog,.import-dialog{width:min(480px,calc(100vw - 32px));padding:26px 26px 22px}
.share-dialog h2,.import-dialog h2{margin:4px 0 2px}
.share-name{margin:0 0 6px;font-size:12.5px;color:var(--ink-2)}
.share-block{margin-top:14px;padding-top:14px;border-top:1px solid rgba(255,255,255,.8)}
.share-block h3{font-size:13px;margin:0 0 4px}.share-block .hint{font-size:11.5px;color:var(--muted);margin:0 0 10px;line-height:1.5}
.share-link{display:flex;gap:8px}.share-link input{flex:1;min-width:0;border:1px solid #e1dee6;border-radius:11px;padding:10px 12px;font-size:12.5px;background:rgba(255,255,255,.85)}
.share-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}
.link.danger{color:#a33a2a;font-size:12px;margin-left:auto}
#shareSourceRow{margin:0 0 12px!important}
.import-counts{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.import-counts span{background:rgba(255,255,255,.7);border:1px solid #fff;border-radius:999px;padding:5px 11px;font-size:12px}.import-counts b{color:var(--green-2)}
.share-row .pill{display:inline-flex;align-items:center;gap:6px}
.share-dialog h2,.import-dialog h2,.share-dialog .eyebrow,.import-dialog .eyebrow{padding-right:40px}
.import-origin{font-size:12px;color:var(--ink-2);margin:0}
.import-dialog .hint{font-size:11.5px;color:var(--muted);line-height:1.5}

/* ======================================================================
   Layout 2: barra laterale più ordinata e flusso "Crea sessione" a tutta larghezza
   ====================================================================== */
.shell{grid-template-columns:248px minmax(0,1fr)}
.sidebar{padding:18px 14px 14px;gap:4px;overflow:hidden}
.brand{padding:2px 8px 16px}
.side-recent{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.side-recent .sessions{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:2px 2px 8px;align-content:start;scrollbar-width:thin}
.sidebottom{margin-top:0;padding-top:10px;flex:none}
.side-card{padding:6px;border-radius:16px;display:grid;background:rgba(255,255,255,.58);box-shadow:0 8px 20px rgba(40,33,52,.08)}
.side-card .plan.ai-state{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 10px;align-items:start;padding:10px 10px 11px;margin:0 2px;border-bottom:1px solid rgba(40,33,52,.08);background:none;border-radius:0}
.ai-state-text strong{display:block;font-size:12px;line-height:1.3}
.ai-state-text p{margin:2px 0 0;font-size:11px;color:var(--ink-2);line-height:1.4}
.ai-state-text .tiny{display:block;margin-top:1px;font-size:10px;color:var(--muted)}
.ai-state .meter{grid-column:1/-1}
.status-dot{width:8px;height:8px;border-radius:50%;margin-top:4px;background:#bdb8c4;box-shadow:0 0 0 3px rgba(189,184,196,.25)}
.ai-state[data-state=ok] .status-dot{background:#3f9a63;box-shadow:0 0 0 3px rgba(63,154,99,.18);animation:statuspulse 2.6s ease-in-out infinite}
.ai-state[data-state=off] .status-dot{background:#d39a3a;box-shadow:0 0 0 3px rgba(211,154,58,.2)}
@keyframes statuspulse{50%{box-shadow:0 0 0 6px rgba(63,154,99,.06)}}
.side-card .profile{background:none;border:0;box-shadow:none;padding:10px 8px 6px;gap:10px;backdrop-filter:none;-webkit-backdrop-filter:none}
.side-card .avatar{width:34px;height:34px;flex:none}
.side-card .profile-text strong{font-size:12.5px}.side-card .profile-text small{font-size:10.5px}
.side-card .profile-btn{border-radius:8px;padding:6px 10px;font-size:11px;font-weight:500}
@media (max-height:700px) and (min-width:901px){.side-recent .navlabel{padding-top:6px}.side-recent .sessions .session:nth-child(n+2){display:none}}
@media (max-width:900px){.side-recent{display:none}.shell{grid-template-columns:68px minmax(0,1fr)}}
@media (max-width:600px){.shell{grid-template-columns:1fr}}

/* ---------- Crea sessione: composizione */
.create-head p{max-width:640px}
.composer{padding:22px 24px 20px;border-radius:18px}
.step-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px}
.step-head h3{font-size:15px;font-weight:600;margin:1px 0 2px}.step-head .hint{margin:0;font-size:11.5px}
.step-num{flex:none;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-weight:700;font-size:13px;color:#fff;background:linear-gradient(160deg,#5b3499,#391671);box-shadow:0 6px 14px rgba(60,24,119,.25)}
.composer-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(250px,1fr);gap:20px;align-items:stretch}
.composer-main{display:flex;flex-direction:column;min-width:0}
.field-label{display:block;font-size:11px;font-weight:600;color:var(--ink-2);margin-bottom:6px;letter-spacing:.1px}
.composer textarea{flex:1;min-height:250px;height:auto;resize:vertical;margin:0;padding:14px 16px;font-size:13.5px;line-height:1.65;border-radius:13px;background:rgba(255,255,255,.92);box-shadow:inset 0 1px 2px rgba(40,33,52,.04)}
.composer textarea:focus,.composer input:focus,.composer select:focus{border-color:#9f89c0;box-shadow:0 0 0 3px rgba(91,52,153,.14)}
.composer #sourceCount{margin:7px 2px 0}
.composer-side{display:flex;flex-direction:column;gap:14px;min-width:0}
.composer .drop{margin:0;padding:18px 14px 14px;display:flex;flex-direction:column;align-items:center;gap:6px;border-radius:13px;transition:border-color .2s,background .2s}
.composer .drop:hover{border-color:#9f89c0;background:rgba(255,255,255,.8)}
.drop-ico{width:26px;height:26px;fill:none;stroke:var(--green-2);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.composer .drop p{margin:0}
.composer .subjectrow{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}
.field{display:flex;flex-direction:column;min-width:0}
.composer .field input,.composer .field select{width:100%;height:40px;border:1px solid #e1dee6;border-radius:10px;padding:0 12px;font-size:12.5px;background:rgba(255,255,255,.92)}
.composer .field select{appearance:auto}
.composer-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px 18px;margin-top:18px;padding-top:16px;border-top:1px solid rgba(40,33,52,.08)}
.btn-xl{padding:13px 24px;font-size:13.5px;border-radius:12px;letter-spacing:.1px}
.composer-actions .alt-gen{margin:0}
.secure-note{display:inline-flex;align-items:center;gap:6px;margin:0 0 0 auto!important;font-size:10.5px}
.secure-note svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8}

/* ---------- Crea sessione: risultato a tutta larghezza */
.kit-output{margin-top:28px;animation:outputin .4s ease}
@keyframes outputin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.kit-output[hidden]{display:none}
.output-head{align-items:center;margin-bottom:14px}.output-head .new-kit-btn{margin-left:auto;white-space:nowrap}
.kit-output .result{margin-top:0;display:grid;gap:16px}
.kit-output .result .cardbox{margin-top:0}
.kit-hero{padding:24px 26px}
.kit-hero-top{display:flex;align-items:center;gap:16px}
.kit-ico{flex:none;width:56px;height:56px;border-radius:16px;display:grid;place-items:center;font-size:30px;background:linear-gradient(145deg,#f6f2ea,#e0d9ea);border:1px solid #fff;box-shadow:0 6px 14px rgba(40,33,52,.08)}
.kit-hero-title{min-width:0}
.kit-hero h2{font:400 30px/1.15 'DM Serif Display',Georgia,serif;margin:4px 0 0;letter-spacing:-.2px;overflow-wrap:anywhere}
.kit-stats{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 2px}
.kit-stats span{background:rgba(255,255,255,.75);border:1px solid #fff;border-radius:999px;padding:6px 12px;font-size:12px;color:var(--ink-2)}
.kit-stats b{color:var(--green-2);font-size:13px}
.kit-actions{margin:16px 0 0}
.kit-actions .btn{padding:11px 18px;font-size:12.5px}
.kit-warning{margin:12px 0 0;font-size:12px;color:#8a3c2d;background:#fbece8;border:1px solid #f3d3cb;border-radius:10px;padding:8px 12px}
.kit-summary{padding:22px 26px}
.kit-summary h3{font-size:16px;margin:0 0 12px}
.kit-concept{display:block;margin:0 0 14px;padding:16px 20px;border-radius:14px;background:linear-gradient(135deg,rgba(231,226,240,.95),rgba(255,255,255,.75));border:1px solid #fff;border-left:4px solid var(--green)}
.kit-concept .eyebrow{display:block;margin-bottom:5px}
.kit-concept b{font-size:16px;line-height:1.55;color:var(--ink);font-weight:600}
.kit-points{list-style:none;counter-reset:pt;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.kit-points li{counter-increment:pt;display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:rgba(255,255,255,.65);border:1px solid #fff;font-size:13px!important;line-height:1.55!important;color:var(--ink-2)}
.kit-points li:before{content:counter(pt);flex:none;width:22px;height:22px;border-radius:7px;display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--green-2);background:var(--mint)}
.kit-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:6px 4px 0}
.kit-section-head h3{font-size:16px;font-weight:600;margin:0}
.kit-section-head span{font-size:11px;font-weight:600;color:var(--green-2);background:rgba(255,255,255,.7);border:1px solid #fff;border-radius:999px;padding:2px 9px}
.cardbox .kit-section-head{margin:0 0 12px}
.slides-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.slides-grid .slide{position:relative;overflow:hidden;margin:0;min-height:210px;padding:22px 24px 20px;border-radius:16px;background:linear-gradient(140deg,#4d2490 0%,#391671 60%,#301064 100%);box-shadow:0 12px 26px rgba(60,24,119,.22);transition:transform .2s,box-shadow .2s}
.slides-grid .slide:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgba(60,24,119,.28)}
.slides-grid .slide:after{content:'';position:absolute;right:-60px;top:-60px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.12),transparent 70%);pointer-events:none}
.slide-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.slide-num{font:400 30px/1 'DM Serif Display',Georgia,serif;color:rgba(255,255,255,.28)}
.slides-grid .slide h3{font-size:19px;line-height:1.3;margin:12px 0 10px;letter-spacing:-.1px}
.slides-grid .slide ul{margin:0;padding-left:18px}
.slides-grid .slide li{font-size:13.5px;line-height:1.7;color:#f1edf7;margin:2px 0}
.slides-grid .slide li::marker{color:#b9a3dc}
.kit-preview{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.kit-preview .cardbox{padding:20px 22px;display:flex;flex-direction:column}
.fc-preview{list-style:none;margin:0 0 4px;padding:0;display:grid;gap:8px}
.fc-preview li{display:grid;gap:3px;padding:10px 13px;border-radius:11px;background:rgba(255,255,255,.65);border:1px solid #fff}
.fc-preview b{font-size:12.5px;color:var(--ink);font-weight:600}.fc-preview span{font-size:12px;color:var(--muted)}
.quiz-teaser{font-size:14px!important;font-weight:600;color:var(--ink)!important;margin:0 0 6px;padding:12px 14px;border-radius:11px;background:rgba(255,255,255,.65);border:1px solid #fff}
.more-link{margin-top:auto;align-self:flex-start;padding:8px 0 0!important;font-size:12px!important;font-weight:600;color:var(--green-2)!important}
.kit-loading{display:flex;align-items:center;gap:16px;padding:20px 24px}.kit-loading b{font-size:14px}.kit-loading .hint{margin:4px 0 0;font-size:12px}
.kit-loading .spinner{width:22px;height:22px;flex:none;border-color:#c1b6d2;border-top-color:var(--green-2)}
.skeleton-grid i{display:block;height:190px;border-radius:16px;background:linear-gradient(100deg,rgba(255,255,255,.35) 30%,rgba(255,255,255,.75) 50%,rgba(255,255,255,.35) 70%);background-size:220% 100%;animation:shimmer 1.4s linear infinite;border:1px solid rgba(255,255,255,.7)}
@keyframes shimmer{from{background-position:120% 0}to{background-position:-120% 0}}
.kit-error{border-left:4px solid #d07a66}.kit-error .pill{margin-top:6px}
@media (min-width:1640px){.slides-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:1100px){.composer-grid{grid-template-columns:1fr}.composer textarea{min-height:200px}.composer-side{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.composer-side .drop{grid-row:span 2;height:100%}}
@media (max-width:760px){.slides-grid{grid-template-columns:1fr}.composer-side{display:flex}.composer{padding:18px 16px}.kit-hero,.kit-summary{padding:18px}.kit-hero h2{font-size:24px}.secure-note{margin-left:0!important}.composer-actions .btn-xl{width:100%}.output-head{flex-wrap:wrap}.output-head .new-kit-btn{margin-left:42px}}
@media (max-width:420px){.composer .subjectrow{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.kit-output,.skeleton-grid i,.ai-state[data-state=ok] .status-dot{animation:none}}
.composer .subjectrow input{flex:none}
.pill:has(.btn-ico){display:inline-flex;align-items:center;gap:6px}
.slides-grid .slide:last-child:nth-child(odd){grid-column:1/-1;min-height:0}
@media (min-width:1640px){.slides-grid .slide:last-child:nth-child(odd){grid-column:auto;min-height:210px}}
@media (max-width:760px){.slides-grid .slide:last-child:nth-child(odd){grid-column:auto}}
@media (max-width:760px){.composer-side{align-items:stretch}.composer .field select{width:100%}.composer .drop{width:100%}}

/* ---------- barra laterale: la card in basso non supera mai la colonna */
.sidebottom,.side-card{min-width:0;max-width:100%}
.side-card{grid-template-columns:minmax(0,1fr)}
.side-card>*{min-width:0}
.side-card .profile{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;padding:10px 6px 6px 8px}
.side-card .profile-text{min-width:0}
.side-card .profile-text strong,.side-card .profile-text small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side-card .ai-state-text{min-width:0}
.side-card .ai-state-text strong,.side-card .ai-state-text p,.side-card .ai-state-text .tiny{overflow-wrap:anywhere}

/* ---------- flashcard: mazzo fisico e passaggio 3D */
.flashcard{position:relative;isolation:isolate}
.flashcard:has(.fc-stage){margin-bottom:14px}
.flashcard:has(.fc-stage)::before,.flashcard:has(.fc-stage)::after{content:'';position:absolute;z-index:-1;border-radius:16px;border:1px solid rgba(255,255,255,.85);pointer-events:none}
.flashcard:has(.fc-stage)::before{left:12px;right:12px;top:8px;bottom:-7px;background:linear-gradient(145deg,rgba(239,235,245,.9),rgba(220,212,233,.85));box-shadow:0 6px 14px rgba(40,33,52,.08)}
.flashcard:has(.fc-stage)::after{left:26px;right:26px;top:16px;bottom:-14px;background:rgba(230,224,240,.7);box-shadow:0 4px 10px rgba(40,33,52,.06);z-index:-2}
.fc-stage{position:relative;min-height:190px;height:100%;transform-style:preserve-3d;will-change:transform}
.fc-face{box-shadow:0 10px 24px rgba(40,33,52,.10)}
.fc-ghost{position:absolute;inset:0;z-index:3;pointer-events:none}
@media (prefers-reduced-motion:reduce){.fc-ghost{display:none}}

/* ======================================================================
   Premium: badge nella barra laterale e finestra dei piani
   ====================================================================== */
.plan-row{display:flex;align-items:center;gap:8px;min-width:0;padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.8)}
.plan-badge{flex:none;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:999px;background:#eae7ef;color:var(--ink-2)}
.plan-badge[data-plan=premium]{background:linear-gradient(135deg,#f3d27a,#d9a640);color:#4a3510;box-shadow:0 2px 6px rgba(160,110,20,.25)}
.plan-badge[data-plan=warn]{background:#f6dcd3;color:#8a3220}
.plan-cta{margin-left:auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:var(--green-2)}
.plan-cta.nudge{animation:planNudge 1.2s ease 2}
@keyframes planNudge{0%,100%{transform:none}30%{transform:scale(1.06);box-shadow:0 0 0 4px rgba(91,52,153,.2)}}
.premium-dialog{width:min(500px,calc(100vw - 32px));padding:26px 26px 22px}
.premium-dialog h2,.premium-dialog .eyebrow{padding-right:40px}
.plan-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0 4px}
.glass-dialog label.plan-option{position:relative;display:flex;flex-direction:column;gap:2px;margin:0;padding:14px 14px 12px;border-radius:14px;background:rgba(255,255,255,.7);border:1.5px solid #fff;cursor:pointer;font-size:12px;font-weight:400;color:var(--ink);transition:border-color .15s,box-shadow .15s,transform .15s}
.plan-option input{position:absolute;opacity:0;pointer-events:none}
.plan-option:hover{transform:translateY(-1px)}
.plan-option:has(input:checked){border-color:var(--green);box-shadow:0 0 0 3px rgba(76,37,140,.16),0 8px 18px rgba(45,27,74,.12)}
.plan-option:has(input:focus-visible){outline:2px solid var(--green-2);outline-offset:2px}
.po-name{font-weight:700;font-size:13px}
.po-price{font-size:12px;color:var(--ink-2)}.po-price b{font:400 22px 'DM Serif Display',Georgia,serif;color:var(--ink)}
.po-note{font-size:11px;color:var(--muted)}
.po-tag{position:absolute;top:-9px;right:10px;font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--green);color:#fff}
.premium-perks{list-style:none;margin:14px 0;padding:0;display:grid;gap:8px}
.premium-perks li{position:relative;padding-left:24px;font-size:12.5px;line-height:1.45;color:var(--ink-2)}
.premium-perks li::before{content:'';position:absolute;left:2px;top:3px;width:14px;height:14px;border-radius:50%;background:var(--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E") center/10px no-repeat}
.premium-perks b{color:var(--ink)}
.premium-go{width:100%;justify-content:center;padding:12px}
.premium-go[disabled]{opacity:.6;cursor:progress}
.premium-fine{font-size:11px;color:var(--muted);line-height:1.5;margin:10px 0 0}
.premium-status{margin:12px 0 0;padding:12px 14px;border-radius:12px;background:rgba(255,255,255,.7);font-size:13px;line-height:1.5}
.premium-status.warn{background:#fbe9e3;color:#7a2d1d}
@media (max-width:420px){.plan-options{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.plan-cta.nudge{animation:none}.plan-option:hover{transform:none}}

/* ======================================================================
   Octy: marchio viola e arancio (logo, banner, tutor, pulsanti, titoli)
   Palette: viola fondo #4C1D95 · arancio polpo #FFA94D · pesca #FFE3C4 · cacao #22103D
   Font: Sora per il marchio, Archivo per i titoli in maiuscolo, Inter per i testi
   ====================================================================== */
.brand{gap:10px}
.brand-tile{width:36px;height:36px;border-radius:10px;background:var(--green);display:grid;place-items:center;flex:none;box-shadow:0 4px 10px rgba(76,29,149,.28)}
.brand-tile .logo{width:30px;height:auto;display:block}
.brand-name{font:600 21px/1 Sora,Inter,system-ui,sans-serif;letter-spacing:-.05em;color:var(--ink)}
.navlabel{color:var(--muted)}
.nav button.active{background:#fff;box-shadow:0 1px 3px rgba(34,16,61,.1)}

/* banner */
.banner{background:var(--green);border-radius:26px 26px 26px 26px/26px 26px 46px 46px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:24px 34px 26px 44px}
.banner-text{max-width:none;flex:1 1 260px}
.banner h1{font:800 clamp(22px,2.3vw,30px)/1.1 Archivo,Inter,sans-serif;letter-spacing:.01em;text-transform:uppercase;margin:0 0 8px}
.banner p{color:#e4d9ff;opacity:1;font-size:14px}
.banner-brand{position:relative;z-index:1;display:flex;align-items:center;gap:12px;flex:none}
.banner-octy{width:clamp(96px,9vw,132px);height:auto;display:block;filter:drop-shadow(0 6px 10px rgba(20,6,45,.25))}
.banner-word b{display:block;font:600 clamp(44px,4.6vw,64px)/.95 Sora,Inter,sans-serif;letter-spacing:-.05em;color:#fff}
.banner-word span{display:flex;align-items:center;gap:8px;margin:8px 0 0 4px;font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:#e4d9ff}
.banner-word span:before{content:'';width:18px;height:2px;background:var(--orange);border-radius:2px}
.dial:after{background:var(--green);border-color:#e4d9ff}

/* azioni rapide */
.new-session{background:var(--orange);color:var(--ink);box-shadow:0 6px 16px rgba(200,110,30,.3),inset 0 1px 0 rgba(255,255,255,.35)}
.new-session:hover{filter:brightness(1.04)}
.owl{background:var(--green);box-shadow:0 3px 8px rgba(76,29,149,.3)}
.owl img{width:34px;height:auto;display:block}
.owl.sm{width:28px;height:28px}
.owl.sm img{width:22px}
.quick-tutor strong{color:var(--green)}
.quick-tutor strong:before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--orange);margin-right:8px;vertical-align:1px}

/* titoli e card */
.section-title{color:var(--ink)}
.exam-info h3{font:800 clamp(26px,2.4vw,34px)/1.08 Archivo,Inter,sans-serif;letter-spacing:-.005em;color:var(--green)}
.gauge-head span{color:var(--green);font-weight:700}
.goals-head h3{color:var(--green)}
.streak{display:inline-flex;align-items:center;gap:8px}
.streak:before{content:'';width:9px;height:9px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 3px rgba(255,169,77,.25)}

/* card del piano nella barra laterale */
.plan-cta{background:var(--green);border-color:var(--green);color:#fff}
.plan-cta:hover{background:var(--green-2)}
.plan-badge[data-plan=free]{background:#ece6f7;color:var(--green)}
.edit-exam,.link{color:#b4531a}

@media (max-width:760px){.banner{padding:22px 20px 26px}.banner-brand{display:none}}
.gauge-value{font:800 30px/1 Archivo,Inter,sans-serif;color:var(--green)}
