*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
img{max-width:100%;height:auto;display:block}

:root{
  --primary:#6750A4; --on-primary:#fff;
  --primary-c:#EADDFF; --on-primary-c:#21005D;
  --surface:#fff; --surface-v:#ECE6F0;
  --on-surface:#1C1B1F; --on-surface-v:#49454F;
  --bg:#F6F8FB; --outline:#79747E;
  --shadow-1:0 2px 6px rgba(0,0,0,.08);
  --shadow-2:0 12px 30px rgba(0,0,0,.16);
  --r-xl:18px; --r-md:12px; --r-sm:10px;
  --pad:24px; --gap:16px;
  --card-gap:12px;
  --appbar-h:72px; --superbar-h:56px;
  --footer-h:52px;
  --outline-soft:rgba(0,0,0,.12);
  --site-scale:.65;
}

html[data-theme="dark"]{
  --primary:#7AD1FF; --on-primary:#003244;
  --primary-c:#003B4E; --on-primary-c:#C6F2FF;
  --surface:#16181D; --surface-v:#23262C;
  --on-surface:#E6EAF0; --on-surface-v:#B8C0CC;
  --bg:#0F1114; --outline:#8A93A1;
  --outline-soft:rgba(255,255,255,.16);
  --shadow-1:0 2px 10px rgba(0,0,0,.5);
  --shadow-2:0 18px 40px rgba(0,0,0,.65);
}

.section[data-area="medicina"]{ --area:#7C4DFF; }
.section[data-area="giurisprudenza"]{ --area:#2962FF; }
.section[data-area="einaudi"]{ --area:#1565C0; }
.section[data-area="viaeroi"]{ --area:#5E35B1; }
.section[data-area="sangiovanni"]{ --area:#8D6E63; }
.section{ --area:var(--primary); }

body{
  background:linear-gradient(180deg, rgba(246,248,251,1) 0%, #fff 40%);
  color:var(--on-surface);
  font:500 16px/1.45 Inter, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

html[data-theme="dark"] body{
  background:linear-gradient(180deg, var(--bg) 0%, var(--surface) 40%);
}

.container{
  width:100%;
  max-width:none;
  margin:0;
  padding-inline:var(--pad);
}

.material-symbols-outlined{vertical-align:-5px}

@supports (zoom:1){
  body{zoom:var(--site-scale);}
}
@supports not (zoom:1){
  html{font-size:85%;}
  :root{
    --pad:calc(24px * .85);
    --gap:calc(16px * .85);
    --card-gap:calc(12px * .85);
  }
}

.app-bar{
  margin-bottom: 0;
  position:sticky;
  top:0;
  z-index:1050;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(10px) saturate(1.05);
  border-bottom:1px solid rgba(121,116,126,.22);
}

html[data-theme="dark"] .app-bar{
  background:rgba(22,24,29,.92);
  border-bottom-color:rgba(138,147,161,.28);
}

.appbar-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:10px 0;
}

  .brand{
    padding-left: 4px;
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  color:inherit;
  margin-right:6px;
}

.brand-logo{height:28px}
.brand-name{font-weight:900;letter-spacing:.2px}

.nav-main{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-right:auto;
}

.nav-link{
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  padding:.45rem .7rem;
  border-radius:999px;
  text-decoration:none;
  color:var(--on-surface);
  background:var(--surface);
  border:1px solid rgba(121,116,126,.22);
  box-shadow:var(--shadow-1);
  transition:.15s;
}

.nav-link.is-selected{
  background:var(--primary-c);
  color:var(--on-primary-c);
}

.nav-link:hover{
  transform:translateY(-1px);
  box-shadow:var(--shadow-2);
}

.appbar-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  justify-content:end;
}

.date-form{
  display:flex;
  align-items:center;
  gap:.45rem;
  padding:.35rem .6rem;
  border-radius:999px;
  background:var(--surface);
  border:1px solid rgba(121,116,126,.22);
  box-shadow:var(--shadow-1);
  position:relative;
  z-index:2;
  cursor:text;
}

.date-ico{opacity:.8;pointer-events:none}

.date-input{
  border:0;
  outline:0;
  background:transparent;
  color:var(--on-surface);
  font:600 14px/1 Inter;
  padding:.25rem .2rem;
  min-width:175px;
  height:32px;
  width:175px;
  position:relative;
  z-index:3;
  cursor:pointer;
  appearance:none;
  -webkit-appearance:none;
}

.date-input::-webkit-calendar-picker-indicator{
  display:none;
  opacity:0;
  width:0;
  height:0;
  padding:0;
  margin:0;
}
.date-input::-moz-calendar-picker-indicator{display:none;}
.date-input::-webkit-clear-button,
.date-input::-webkit-inner-spin-button{display:none;}

html[data-theme="dark"] .date-form{
  background:var(--surface-v);
  border-color:rgba(138,147,161,.35);
}

.seg-btn,.icon-pill,.btn-primary-m3{border-radius:999px}

.icon-pill{
  width:40px;
  height:40px;
  border:1px solid var(--outline-soft);
  display:grid;
  place-items:center;
  background:var(--surface);
  color:var(--on-surface);
  box-shadow:var(--shadow-1);
  transition:.15s;
}

.icon-pill:hover{
  transform:translateY(-1px);
  box-shadow:var(--shadow-2);
}

.btn-primary-m3{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding:.48rem .85rem;
  border:0;
  background:var(--primary);
  color:var(--on-primary);
  box-shadow:var(--shadow-2);
  transition:.15s;
  font-size:14px;
}

.btn-primary-m3:hover{
  transform:translateY(-1px);
  filter:saturate(1.05);
}

.search-pill{
  display:flex;
  align-items:center;
  gap:.5rem;
  background:var(--surface);
  border:1px solid rgba(121,116,126,.22);
  border-radius:999px;
  padding:.2rem .35rem;
  box-shadow:var(--shadow-1);
  min-width:240px;
}

.search-pill input{
  flex:1;
  border:0;
  outline:0;
  padding:.4rem .5rem;
  background:transparent;
  color:var(--on-surface);
  font:500 14px/1 Inter;
}

/* nascondi keyword/filters ovunque */
.filters-toolbar-container,.chips-row,.m3-chip{display:none!important}

.superbar{
  position:sticky;
  top:var(--appbar-h);
  z-index:1040;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(12px) saturate(1.02);
  border-bottom:1px solid rgba(121,116,126,.18);
  padding:8px var(--pad) 8px;
}

html[data-theme="dark"] .superbar{
  background:rgba(22,24,29,.9);
  border-bottom-color:rgba(138,147,161,.28);
}

.superbar-row{
  margin: top 0; ;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  flex-wrap:wrap;
}

.superbar .left,
.superbar .right{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}

.superbar .center{
  flex:1;
  display:flex;
  align-items:center;
  min-width:220px;
}

.segmented{
  display:flex;
  border-radius:999px;
  overflow:hidden;
}

.seg-btn{
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  padding:.48rem .72rem;
  border:0;
  background:var(--surface);
  color:var(--on-surface);
  cursor:pointer;
  text-decoration:none;
  transition:.15s;
  font-size:14px;
}

.seg-btn.is-selected{
  background:var(--primary-c);
  color:var(--on-primary-c);
}

.seg-btn:hover{transform:translateY(-1px)}

.section-tabs{
  display:flex;
  gap:8px;
  overflow:auto;
  scrollbar-width:none;
}

.section-tabs::-webkit-scrollbar{display:none}

.section-tab{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  white-space:nowrap;
  padding:.42rem .72rem;
  border-radius:999px;
  text-decoration:none;
  background:var(--surface);
  color:var(--on-surface);
  border:1px solid rgba(121,116,126,.20);
  box-shadow:var(--shadow-1);
  transition:transform .15s, background .2s, color .2s, box-shadow .15s;
  font-size:14px;
}

.section-tab .ms{
  font-family:"Material Symbols Outlined";
  font-size:18px;
  line-height:1;
}

.section-tab.active{
  background:var(--primary-c);
  color:var(--on-primary-c);
  box-shadow:var(--shadow-2);
}

.section-tab:hover{transform:translateY(-1px)}

.page-title{
  margin:12px 0 4px;
  padding-inline:var(--pad);
  font-size:clamp(19px,2vw,26px);
  font-weight:900;
  letter-spacing:.2px;
}

.sections{
  display:flex;
  flex-direction:column;
  gap:20px;
  padding-bottom:calc(var(--footer-h) + 24px + max(0px, env(safe-area-inset-bottom)));
}

.section-title{
  position:sticky;
  top:calc(var(--appbar-h) + var(--superbar-h) + 6px);
  z-index:2;
  display:flex;
  align-items:center;
  gap:.7rem;
  margin:12px 0 10px;
  padding:12px 14px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--on-surface);
  font-size:clamp(22px,2.6vw,32px);
  background:rgba(255,255,255,.98);
  border:2px solid rgba(121,116,126,.30);
  backdrop-filter:blur(10px);
  border-radius:16px;
  box-shadow:var(--shadow-1);
}

.section-title span{
  border-left:8px solid var(--area);
  padding-left:.75rem;
  line-height:1;
}

html[data-theme="dark"] .section-title{
  background:rgba(22,24,29,.95);
  border-color:rgba(138,147,161,.45);
}

.grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  gap:var(--card-gap);
}

@media (max-width:640px){
  .grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
}

.card{
  border:1.6px solid var(--outline-soft);
  background:var(--surface);
  border-radius:16px;
  box-shadow:none;
  overflow:hidden;
  transform:translateZ(0);
  transition:transform .18s, border-color .18s, background .18s, box-shadow .18s;
}

.card:hover{
  transform:translateY(-2px);
  box-shadow:var(--shadow-1);
  border-color:rgba(30,35,45,.34);
}

.card-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:10px 12px;
  border-bottom:1px solid rgba(121,116,126,.18);
  background:transparent;
}

.card .events{padding:10px 10px}

.room-name{
  margin-top:3px;
  margin-bottom:6px;
  display:flex;
  align-items:center;
  gap:.45rem;
  font-weight:1000;
  font-size:1.14rem;
  letter-spacing:.01em;
  color:#0A0A0D;
  text-wrap:balance;
}

html[data-theme="dark"] .room-name{color:var(--on-surface)}
.room-name .material-symbols-outlined{opacity:.9}

.icon-btn,.copy-btn{
  width:34px;
  height:34px;
  border-radius:10px;
  border:1px solid var(--outline-soft);
  background:transparent;
  display:grid;
  place-items:center;
  color:var(--on-surface);
  box-shadow:none;
  transition:.15s;
}

.icon-btn:hover,.copy-btn:hover{transform:translateY(-1px)}

.event{background:transparent;border:0;padding:8px 0}
.event + .event{
  margin-top:10px;
  padding-top:10px;
  border-top:1px solid var(--outline-soft);
}

.time .material-symbols-outlined,
.time .ms,
.time [class*="material"],
.time svg,
.time i,
.time .live-dot{display:none!important;}

.time{
  display:block;
  margin:0 0 4px;
  padding:0;
  background:transparent;
  border:0;
  color:#0A0A0D;
  font-weight:1000;
  font-size:1.12rem;
  font-variant-numeric:tabular-nums;
}

html[data-theme="dark"] .time{color:var(--on-surface)}

.desc{
  font-size:1.06rem;
  line-height:1.58;
  letter-spacing:.003em;
  color:#14161A;
  word-break:break-word;
  overflow-wrap:anywhere;
  hyphens:auto;
  text-wrap:pretty;
}

html[data-theme="dark"] .desc{color:var(--on-surface)}

mark,mark.kw{
  background:rgba(255,235,120,.6);
  color:inherit;
  padding:0 .15em;
  border-radius:.15em;
}

body.view-list .grid{grid-template-columns:1fr!important}

footer.footer{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  min-height:52px;
  height:auto;
  z-index:3000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:8px var(--pad) calc(8px + max(0px, env(safe-area-inset-bottom)));
  background:rgba(255,255,255,.94);
  border-top:1px solid rgba(121,116,126,.18);
  color:var(--on-surface-v);
  backdrop-filter:blur(8px);
}

html[data-theme="dark"] footer.footer{
  background:rgba(22,24,29,.92);
  border-top-color:rgba(138,147,161,.32);
}

.footer-container{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
}

.only-mobile{display:none!important}

@media (max-width:980px){
  :root{--pad:16px}

  .appbar-inner{
    display:flex;
    align-items:center;
    gap:8px;
    padding:8px 0;
  }

  .appbar-inner > .nav-main{display:none!important}
  .appbar-actions .search-pill,
  .appbar-actions #themeToggle{display:none!important}

  .date-form{margin:0}
  .date-input{min-width:0;width:auto}

  #superbar{padding:6px var(--pad) 6px}
  .superbar-row{gap:6px}

  .superbar-row.slots{display:none!important}
  .segmented[data-group="view"]{display:none!important}
  .segmented[data-group="order"]{display:none!important}
  .density{display:none!important}
  .sb-print{display:none!important}
  #superbar .sb-allsections{display:none!important}

  #superbar .center{order:1;flex:1 1 auto;min-width:0}
  #superbar .right{order:2}
  #superbar .left{order:3}

  .page-title{margin:6px 0 4px;padding-inline:var(--pad)}
  .only-mobile{display:inline-grid!important}

  .brand{
    padding-left: 4px;
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  color:inherit;
  margin-right:6px;
}
}

/* ===== FAB MENU ===== */
.fab-cluster{
  position:fixed;
  right:var(--pad);
  bottom:calc(var(--footer-h) + 14px);
  z-index:3200;
  display:none;
}

.fab-main{
  width:56px;
  height:56px;
  border-radius:999px;
  border:0;
  display:grid;
  place-items:center;
  background:var(--primary);
  color:var(--on-primary);
  box-shadow:var(--shadow-2);
  transition:transform .18s ease;
}

.fab-main .material-symbols-outlined{
  font-size:26px;
  transition:transform .18s;
}

.fab-cluster.open .fab-main .material-symbols-outlined{
  transform:rotate(45deg);
}

.fab-list{
  position:absolute;
  right:8px;
  bottom:70px;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:12px;
  transform:translateY(14px);
  opacity:0;
  pointer-events:none;
  transition:transform .18s ease, opacity .18s ease;
}

.fab-cluster.open .fab-list{
  transform:translateY(0);
  opacity:1;
  pointer-events:auto;
}

.fab-dot{
  min-width:48px;
  width:auto;
  height:48px;
  min-height:48px;
  max-width:min(320px, calc(100vw - (var(--pad) * 2) - 12px));
  padding:0 14px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  white-space:nowrap;
  text-decoration:none;
  border:0;
  background:var(--primary);
  color:var(--on-primary);
  box-shadow:var(--shadow-2);
  cursor:pointer;
  overflow:hidden;
}

.fab-dot .material-symbols-outlined{
  font-size:22px;
  line-height:1;
  flex:0 0 auto;
}

.fab-label{
  display:inline-block;
  line-height:1;
  white-space:nowrap;
  font-size:14px;
  font-weight:700;
  overflow:hidden;
  text-overflow:ellipsis;
}

.fab-scrim{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.35);
  z-index:3195;
  display:block;
  opacity:1;
}

[hidden].fab-scrim{display:none!important;opacity:0}

@supports(padding:max(0px)){
  .fab-cluster{
    bottom:calc(var(--footer-h) + 14px + max(0px, env(safe-area-inset-bottom)));
  }
}

/* ===== FAB CERCA (sx) ===== */
.fab-search{
  position:fixed;
  left:var(--pad);
  bottom:calc(var(--footer-h) + 14px);
  z-index:3200;
  width:56px;
  height:56px;
  border-radius:999px;
  border:0;
  display:none;
  place-items:center;
  background:var(--primary);
  color:var(--on-primary);
  box-shadow:var(--shadow-2);
}

.fab-search .material-symbols-outlined{font-size:26px}

.search-backdrop{
  position:fixed;
  inset:0;
  z-index:3190;
  transition:opacity .18s ease;
}

.search-sheet{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  transform:translateY(110%);
  z-index:3200;
  background:var(--surface);
  border-top-left-radius:18px;
  border-top-right-radius:18px;
  box-shadow:0 -18px 40px rgba(0,0,0,.24);
  transition:transform .22s cubic-bezier(.2,.6,.2,1);
}

html[data-theme="dark"] .search-sheet{background:var(--surface-v)}

.search-sheet.open{transform:translateY(0)}
.search-sheet .sheet-content{padding:14px var(--pad) 18px}
.search-sheet .search-pill{width:100%}

@supports(padding:max(0px)){
  .search-sheet{padding-bottom:max(10px, env(safe-area-inset-bottom))}
  .fab-search{bottom:calc(var(--footer-h) + 14px + max(0px, env(safe-area-inset-bottom)))}
}

@media (max-width:980px){
  html.has-touch .fab-cluster{display:grid}
  html.has-touch .fab-search{display:grid}
}

@media (hover:none) and (pointer:coarse){
  .fab-cluster{display:grid}
  .fab-search{display:grid}
}

/* ===== PRINT ===== */
@page{size:A3 landscape;margin:3mm}

@media print{
  .app-bar,
  .superbar,
  #superbar,
  .filters-toolbar-container,
  footer.footer,
  .search-pill,
  .date-form,
  .icon-btn,
  .copy-btn,
  .fab-cluster,
  .fab-search,
  #searchBackdrop,
  #searchSheet{
    display:none!important;
  }

  .sections{padding:0!important}
  .section{padding:5mm 6mm 0!important;break-inside:avoid;page-break-inside:avoid}
  .section[data-print-include="0"]{display:none!important}
  .section:not([data-print-include="1"]){display:none!important}

  .section[data-area="medicina"][data-section-title*="CORPO C"],
  .section.section-corpo-c[data-area="medicina"],
  #section-corpo-c[data-area="medicina"]{
    display:none!important;
  }

  .section-title,
  .section .section-title{
    position:static!important;
    top:auto!important;
    margin:0 0 3mm!important;
    padding:0!important;
    border:none!important;
    background:transparent!important;
    font-size:13pt!important;
    letter-spacing:.06em!important;
    box-shadow:none!important;
    color:#000!important;
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
    page-break-after:avoid;
    break-after:avoid;
  }

  .section-title span{
    border:0!important;
    padding:0!important;
  }

  :root{--print-cols:10}

  .grid,
  .section .grid{
    display:grid!important;
    grid-template-columns:repeat(var(--print-cols),1fr)!important;
    gap:2.5mm!important;
    break-inside:avoid;
    page-break-inside:avoid;
  }

  .card{
    border:0!important;
    background:transparent!important;
    box-shadow:none!important;
    break-inside:avoid;
    page-break-inside:avoid;
  }

  .card-top{
    padding:0!important;
    margin:0 0 1.2mm!important;
    border:0!important;
    background:transparent!important;
  }

  .events{padding:0!important}

  .room-name{
    margin-top:4mm!important;
    margin-bottom:4mm!important;
    font-weight:900!important;
    font-size:10pt!important;
    color:#000!important;
    line-height:1.15!important;
  }

  .room-name .material-symbols-outlined{display:none!important}

  .event{
    background:transparent!important;
    border:0!important;
    padding:0 0 1mm!important;
  }

  .event + .event{
    margin-top:0!important;
    padding-top:0!important;
    border-top:0!important;
  }

  .time .material-symbols-outlined,
  .time .ms,
  .time [class*="material"],
  .time svg,
  .time i,
  .time .live-dot{
    display:none!important;
  }

  .time{
    display:block!important;
    color:#000!important;
    font-weight:900!important;
    font-size:9.6pt!important;
    margin:1.4mm 0 .6mm!important;
    padding-top:0!important;
    background:transparent!important;
    border:0!important;
  }

  .events .event:first-child .time{margin-top:0!important}

  .desc{
    display:block!important;
    margin:0!important;
    font-size:9.2pt!important;
    line-height:1.25!important;
    hyphens:none!important;
    -webkit-hyphens:none!important;
    color:#000!important;
  }

  mark,mark.kw{
    background:#FFF56D!important;
    color:inherit!important;
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
    padding:0 .08em!important;
    border-radius:.1em!important;
  }
}

.search-pill input[type="search"]::-webkit-search-cancel-button,
.search-pill input[type="search"]::-webkit-search-decoration,
.search-pill input[type="search"]::-webkit-search-results-button,
.search-pill input[type="search"]::-webkit-search-results-decoration{
  -webkit-appearance:none;
  appearance:none;
  display:none;
}

.search-pill input[type="search"]::-ms-clear,
.search-pill input[type="search"]::-ms-reveal{
  display:none;
  width:0;
  height:0;
}

.equip-edit-btn{display:none!important}
body.equip-edit .equip-edit-btn{display:inline-flex!important}

body.equip-edit .equip-edit-btn .material-symbols-outlined{
  font-variation-settings:'FILL' 1;
}

.planning-card .events .event .time{
  display:block;
  margin-bottom:4px;
  font-weight:800!important;
  font-variant-numeric:tabular-nums;
}

.planning-card .events .event .time *{font-weight:inherit!important}

.planning-card .events .event .desc,
.planning-card .events .event .desc *{
  font-weight:400!important;
}

.planning-card .events .event .desc mark{
  font-weight:inherit!important;
}

.planning-card .events .event .desc .equip-auto strong,
.planning-card .events .event .desc .equip-manual strong{
  font-weight:700!important;
}


.placeholder-visible .desc {
  padding-left: 10px !important; 
  border-radius: 8px !important;
  background-color: lightgrey !important;
  opacity: .7 !important;
  font-style: italic !important
}