:root { --bg:#f5f7fb; --card:#fff; --text:#172033; --muted:#667085; --blue:#1a73e8; --blue2:#174ea6; --border:#d8dee9; --red:#b42318; --green:#067647; --yellow:#b54708; --nav:#eef3ff; --shadow:0 1px 3px rgba(16,24,40,.08); }
* { box-sizing: border-box; }
body { margin:0; font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; background:var(--bg); color:var(--text); }
a { color:var(--blue); text-decoration:none; }
a:hover { text-decoration:underline; }
.topbar { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem 1.25rem; background:#fff; border-bottom:1px solid var(--border); }
.institutional { background:linear-gradient(90deg,#fff,#f8fbff); }
.brand { display:flex; align-items:center; gap:.85rem; min-width:0; }
.logo { width:58px; height:58px; object-fit:contain; }
.school-name { font-weight:800; font-size:1.05rem; letter-spacing:.01em; }
.school-subtitle { color:var(--muted); font-size:.95rem; margin-top:.15rem; }
.userbox { color:var(--muted); font-size:.95rem; text-align:right; white-space:nowrap; }
.nav { display:flex; gap:.5rem; padding:.75rem 1.25rem; background:#fff; border-bottom:1px solid var(--border); flex-wrap:wrap; }
.nav a { padding:.55rem .8rem; border-radius:.55rem; background:var(--nav); color:#1b4fb7; font-weight:650; }
.nav a.active, .nav a:hover { background:#dbe8ff; text-decoration:none; }
.primary-nav { position:relative; z-index:2; }
.context-nav { padding-top:.55rem; padding-bottom:.55rem; background:#f8faff; }
.container { max-width:1320px; margin:1.25rem auto; padding:0 1rem; }
.card { background:var(--card); border:1px solid var(--border); border-radius:.8rem; padding:1.25rem; margin-bottom:1rem; box-shadow:var(--shadow); }
.hero { padding:2rem; }
.hero h1 { font-size:2rem; margin-top:0; }
.note-card { border-left:5px solid var(--blue); }
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:1rem; }
.filters { align-items:end; }
.two-col { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:1rem; }
.stats-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:1rem; margin-bottom:1rem; }
.stat-card { background:#fff; border:1px solid var(--border); border-radius:.8rem; padding:1rem; box-shadow:var(--shadow); }
.stat-number { font-size:1.8rem; font-weight:800; color:var(--blue2); }
.stat-label { color:var(--muted); font-size:.95rem; }
label { display:block; font-weight:650; margin:.8rem 0 .25rem; }
input, select, textarea { width:100%; padding:.65rem; border:1px solid var(--border); border-radius:.5rem; font:inherit; background:#fff; }
input[type="checkbox"] { width:auto; }
textarea { min-height:110px; }
button, .btn { display:inline-block; border:0; border-radius:.5rem; padding:.65rem .95rem; background:var(--blue); color:#fff; font-weight:700; cursor:pointer; text-decoration:none; }
button.secondary, .btn.secondary { background:#475467; }
button.danger, .btn.danger { background:var(--red); }
button.success, .btn.success { background:var(--green); }
.actions { display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; }
.table-card { overflow-x:auto; }
table { width:100%; border-collapse:collapse; background:#fff; }
th, td { padding:.65rem; border-bottom:1px solid var(--border); text-align:left; vertical-align:top; }
th { background:#f2f4f7; font-weight:800; }
tr:hover td { background:#fcfdff; }
.badge { display:inline-block; padding:.2rem .48rem; border-radius:999px; font-size:.85rem; font-weight:700; background:#eef3ff; white-space:nowrap; }
.badge.Inviato { color:#1b4fb7; background:#eef3ff; }
.badge.Validato { color:var(--green); background:#ecfdf3; }
.badge.Respinto { color:var(--red); background:#fef3f2; }
.flash { padding:.8rem 1rem; border-radius:.5rem; margin-bottom:1rem; }
.flash.ok { background:#ecfdf3; color:var(--green); }
.flash.error { background:#fef3f2; color:var(--red); }
.flash.warning { background:#fffaeb; color:var(--yellow); }
.small { font-size:.9rem; color:var(--muted); }
.footer { color:var(--muted); font-size:.85rem; text-align:center; padding:2rem; }
code { background:#f2f4f7; border-radius:.35rem; padding:.1rem .25rem; }
@media print { .nav, .userbox, .actions, button, .btn { display:none !important; } body { background:#fff; } .card { box-shadow:none; border:1px solid #ccc; } }
@media (max-width: 760px) { .topbar { flex-direction:column; align-items:flex-start; } .userbox { text-align:left; white-space:normal; } table { font-size:.9rem; } .hero h1 { font-size:1.55rem; } }
.full { grid-column: 1 / -1; }
.danger-zone { border-left: 5px solid var(--red); }
.badge.Annullato { color:#344054; background:#eaecf0; }
.muted-row td { color:#667085; background:#f8f9fb; }
.muted-row td strong { color:#475467; }
.form-mini { display:inline-flex; gap:.35rem; align-items:center; flex-wrap:wrap; }
.form-mini input[type="text"] { min-width:160px; }
.table-card .actions form { margin:0; }
.nav a { white-space: nowrap; }
select { max-width: 100%; }
@media (max-width: 900px) { .nav { overflow-x:auto; flex-wrap:nowrap; } .nav a { flex:0 0 auto; } }

/* v0.7 - Intranet e Biblioteca */
.section-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; flex-wrap:wrap; }
.section-heading h1, .section-heading h2 { margin-top:0; }
.pagination { display:flex; gap:.4rem; justify-content:center; flex-wrap:wrap; margin:1rem 0; }
.pagination a { min-width:2.4rem; padding:.55rem .7rem; border:1px solid var(--border); border-radius:.45rem; background:#fff; text-align:center; font-weight:700; }
.pagination a.active { color:#fff; background:var(--blue); border-color:var(--blue); }
.availability { display:inline-flex; align-items:center; justify-content:center; min-width:2rem; min-height:2rem; padding:.25rem .55rem; border-radius:999px; font-weight:800; }
.availability.available { color:var(--green); background:#ecfdf3; }
.availability.unavailable { color:#475467; background:#eaecf0; }
.warning-text { color:var(--yellow); }
.library-status { display:inline-block; padding:.25rem .55rem; border-radius:999px; font-weight:750; font-size:.85rem; white-space:nowrap; background:#eef3ff; }
.library-status.disponibile { color:var(--green); background:#ecfdf3; }
.library-status.prestato { color:#1b4fb7; background:#eef3ff; }
.library-status.da_verificare { color:var(--yellow); background:#fffaeb; }
.library-status.danneggiato, .library-status.smarrito { color:var(--red); background:#fef3f2; }
.library-status.dismesso { color:#475467; background:#eaecf0; }
.detail-list { display:grid; grid-template-columns:minmax(130px,auto) 1fr; gap:.55rem 1rem; margin:0; }
.detail-list dt { color:var(--muted); font-weight:700; }
.detail-list dd { margin:0; }
.loan-action { margin-top:.55rem; align-items:flex-end; }
.loan-action input[type="date"] { min-width:145px; }
.loan-action input[type="text"] { min-width:220px; }
button:disabled, input:disabled, select:disabled, textarea:disabled { opacity:.58; cursor:not-allowed; }
.calendar-card .section-heading { margin-bottom:1rem; }
.calendar-card .section-heading h2 { margin-bottom:.35rem; }
.calendar-card .section-heading p { margin:0; }
.school-calendar-frame { display:block; width:100%; height:min(720px,72vh); min-height:560px; border:0; border-radius:.55rem; background:#fff; }
.notices-card .section-heading { margin-bottom:.65rem; }
.notices-card .section-heading h1 { margin-bottom:.35rem; }
.notices-card .section-heading p { margin:0; }
.notices-help { margin:.25rem 0 1rem; }
.notices-view-switch .btn[aria-current="page"] { cursor:default; box-shadow:0 0 0 3px rgba(26,115,232,.16); }
.school-notices-frame { display:block; width:100%; height:min(900px,78vh); min-height:640px; border:1px solid var(--border); border-radius:.55rem; background:#fff; }
/* v0.6 */
@media print {
  .no-print, .nav, .userbox, .actions, button, .btn { display:none !important; }
  .topbar { border-bottom:1px solid #999; }
  .container { max-width:none; margin:0; padding:0; }
  .stats-grid { grid-template-columns: repeat(4, 1fr); }
  a { color:#000; text-decoration:none; }
  body { font-size: 11pt; }
  th, td { padding:.35rem; }
}
@media (max-width: 760px) {
  .school-calendar-frame { height:640px; min-height:0; }
  .school-notices-frame { height:720px; min-height:0; }
}

/* Risorse docenti */
.resource-folders .card { display:flex; flex-direction:column; align-items:flex-start; }
.resource-folders h3 { margin-top:0; }
.resource-folders .btn { margin-top:auto; }
.resource-list { list-style:none; margin:0; padding:0; border:1px solid var(--border); border-radius:.55rem; }
.resource-row { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem; }
.resource-row + .resource-row { border-top:1px solid var(--border); }
.resource-row > div { min-width:0; }
.resource-title { font-weight:700; overflow-wrap:anywhere; }
.resource-row .small { margin:.35rem 0 0; }
.resource-row .btn { flex-shrink:0; }
@media (max-width:600px) { .resource-row { flex-direction:column; align-items:flex-start; } }

/* v0.7.6 - Carte della scuola, stanze virtuali e navigazione attestati */
.eyebrow { margin:0 0 .65rem; font-size:.8rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--blue2); }
.notebook-card { border-left:5px solid #6750a4; background:linear-gradient(110deg,#f5f2ff,#fff 75%); }
.notebook-card .eyebrow { color:#6750a4; }
.notebook-card .section-heading { align-items:center; }
.notebook-card h2 { margin-bottom:.5rem; }
.rooms-hero { background:linear-gradient(120deg,#edf4ff,#fff); border-top:4px solid var(--blue); }
.rooms-hero p { max-width:850px; }
.room-filters { display:grid; grid-template-columns:1fr 1fr auto; gap:1rem; align-items:end; }
.room-filters label { margin-top:0; }
.room-jumps a { border:1px solid var(--border); padding:.4rem .8rem; border-radius:2rem; font-weight:650; }
.school-rooms { margin:2rem 0; scroll-margin-top:1rem; }
.school-rooms > h2 { padding-bottom:.6rem; border-bottom:1px solid var(--border); }
.room-group { --accent:#174ea6; margin-bottom:1.5rem; }
.room-group.infanzia { --accent:#8a4700; }
.room-group.primaria { --accent:#087563; }
.room-group > h3 { font-size:1.05rem; color:var(--accent); }
.room-group > h3 .small { font-weight:400; }
.rooms-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:1rem; }
.room-card { border:1px solid var(--border); border-top:3px solid var(--accent); border-radius:.75rem; background:#fff; padding:1.1rem; display:grid; grid-template-columns:auto 1fr; gap:.8rem; align-items:center; box-shadow:var(--shadow); }
.room-card h4 { font-size:1.1rem; margin:0; }
.room-card p { margin:.25rem 0; }
.room-card .btn { grid-column:1/-1; text-align:center; background:var(--accent); }
.room-symbol { display:flex; align-items:center; justify-content:center; width:2.8rem; height:2.8rem; border-radius:.7rem; background:var(--bg); color:var(--accent); font-weight:800; }
.page-summary { text-align:center; }
.page-gap { padding:.55rem .3rem; }
.page-size { max-width:240px; margin-bottom:1rem; }
a:focus-visible,button:focus-visible,select:focus-visible { outline:3px solid #b54708; outline-offset:3px; }
@media (max-width:760px) { .room-filters { grid-template-columns:1fr; } .rooms-grid { grid-template-columns:1fr; } .room-group > h3 .small { display:block; margin-top:.3rem; } .room-filters .actions { margin-top:.4rem; } }
@media print { .pagination,.room-filters,.room-jumps { display:none; } }
