@font-face{font-family:"Plus Jakarta Sans";font-weight:500;font-display:swap;src:url(/fonts/jakarta/plus-jakarta-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-weight:600;font-display:swap;src:url(/fonts/jakarta/plus-jakarta-sans-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-weight:700;font-display:swap;src:url(/fonts/jakarta/plus-jakarta-sans-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-weight:800;font-display:swap;src:url(/fonts/jakarta/plus-jakarta-sans-latin-800-normal.woff2) format("woff2")}
@font-face{font-family:"Instrument Sans";font-weight:400;font-display:swap;src:url(/fonts/instrument/instrument-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Instrument Sans";font-weight:500;font-display:swap;src:url(/fonts/instrument/instrument-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Instrument Sans";font-weight:600;font-display:swap;src:url(/fonts/instrument/instrument-sans-latin-600-normal.woff2) format("woff2")}
:root{
  --ink:#1c1320; --ink2:#2a1e2f; --cream:#f7f2ee; --card:#fffdfb; --line:#e8dfd8; --muted:#8a7d86; --text:#2b2229;
  --rose:#c4547a; --rose-soft:#f6e3ea;
  --ok:#2f8a66; --ok-soft:#e1f2ea; --wait:#c58a1c; --wait-soft:#fbefd6; --move:#4466c8; --move-soft:#e3e9fa;
  --no:#8b8b8b; --no-soft:#ececec; --alert:#c2412f; --alert-soft:#fbe2dd; --g:#1a73e8;
  color-scheme:light
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:"Instrument Sans",system-ui,sans-serif;--head:"Plus Jakarta Sans","Instrument Sans",system-ui,sans-serif;color:var(--text);background:var(--cream);font-size:14px}
button{font:inherit;cursor:pointer;color:var(--text)}
input,select,textarea{font:inherit;color:var(--text);background:#fff}
.shell{display:flex;flex-direction:column;height:100vh}
.top{height:62px;flex-shrink:0;background:var(--ink);color:#fff;display:flex;align-items:center;gap:14px;padding:0 20px;position:relative;z-index:5}
.burger{width:38px;height:38px;border-radius:10px;border:1px solid #3a2a40;background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.burger:hover{background:var(--ink2)}
.brand{font-family:var(--head);font-weight:800;font-size:22px;letter-spacing:-.5px;color:#fff;margin-right:12px;white-space:nowrap}
.brand span{color:var(--rose)}
.brand .ver{font-family:var(--head);font-size:11px;font-weight:600;color:#c9b8c3;border:1px solid #3a2a40;border-radius:6px;padding:1px 6px;margin-left:6px;letter-spacing:0;vertical-align:3px}
.topnav{display:flex;gap:2px;overflow:hidden}
.topnav a{margin:0;padding:8px 11px;white-space:nowrap}
.top-status{margin-left:auto;display:flex;gap:12px;align-items:center;font-size:12.5px;color:#c9b8c3;white-space:nowrap}
.top-status a{color:#c9b8c3;text-decoration:none}
.top-status a:hover{color:#fff}
.app{display:grid;grid-template-columns:1fr;flex:1;min-height:0}
.side{display:none;background:var(--ink);color:#e9dfe6;flex-direction:column;padding:18px 14px;border-top:1px solid #3a2a40}
body.side-mode .app{grid-template-columns:232px 1fr}
body.side-mode .side{display:flex}
body.side-mode .topnav{display:none}
.nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:#d7cad3;text-decoration:none;margin-bottom:2px}
.nav a:hover{background:var(--ink2)}
.nav a.on{background:#3a2a40;color:#fff}
.nav .ic{width:18px;text-align:center;opacity:.9}
.nav .badge{margin-left:auto;background:var(--rose);color:#fff;border-radius:20px;font-size:11px;padding:1px 7px}
.side-foot{margin-top:auto;font-size:12px;color:#a8949f;padding:10px;border-top:1px solid #3a2a40;line-height:1.5}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#3bd18a;margin-right:6px}
.main{overflow:auto;display:flex;flex-direction:column}
.info-bar{background:var(--rose-soft);color:#7d2f4b;font-size:12.5px;padding:7px 28px;border-bottom:1px solid #efd0dc}
.info-bar.off{background:var(--alert-soft);color:var(--alert);border-color:#f1c9c1}
.page{padding:26px 28px 40px;max-width:1280px;width:100%;margin:0 auto}
h1{font-family:var(--head);font-weight:700;font-size:28px;letter-spacing:-.6px;margin:0 0 4px}
.sub{color:var(--muted);margin:0 0 22px}
h2{font-family:var(--head);font-weight:700;font-size:17px;letter-spacing:-.2px;margin:0 0 12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px}
.row{display:flex;gap:16px;flex-wrap:wrap}
.grid2{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}
.grid2.even{grid-template-columns:1fr 1fr}
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin:16px 0}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px}
.kpi .n{font-family:var(--head);font-weight:700;font-size:28px;letter-spacing:-.5px;line-height:1.1}
.kpi .l{color:var(--muted);font-size:12px;margin-top:3px}
.btn{border:1px solid var(--line);background:#fff;color:var(--text);border-radius:9px;padding:8px 13px;display:inline-flex;align-items:center;gap:6px}
.btn:hover{border-color:#cdbfc6}
.btn.pri{background:var(--rose);border-color:var(--rose);color:#fff}
.btn.pri:hover{background:#ad4569}
.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.sm{padding:5px 9px;font-size:12.5px}
.btn.danger{color:var(--alert)}
.btn:disabled{opacity:.45;cursor:default}
.hero{background:var(--ink);color:#f3e9ef;border-radius:16px;padding:22px 24px;display:flex;gap:20px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.hero h2{color:#fff;font-size:20px;margin-bottom:4px}
.hero p{margin:0;color:#c9b8c3}
.hero .btn{border-color:#4a3850;background:#2e2133;color:#fff}
.hero .btn.pri{background:var(--rose);border-color:var(--rose)}
.pill{display:inline-block;border-radius:20px;padding:2px 9px;font-size:12px;font-weight:500;white-space:nowrap}
.st-nuovo{background:#f1ebf0;color:#6b5a66}
.st-in_attesa{background:var(--wait-soft);color:#8a5d0a}
.st-confermato{background:var(--ok-soft);color:#1f6b4d}
.st-spostato{background:var(--move-soft);color:#2f4da3}
.st-disdetto{background:var(--no-soft);color:#666}
.st-nessuna_risposta{background:var(--alert-soft);color:var(--alert)}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-weight:500;color:var(--muted);font-size:12px;padding:8px 10px;border-bottom:1px solid var(--line)}
td{padding:10px;border-bottom:1px solid #f0e9e4;vertical-align:middle}
tr:last-child td{border-bottom:none}
.gtag{display:inline-block;font-size:10px;font-weight:600;color:#fff;background:var(--g);border-radius:4px;padding:0 4px;margin-left:5px;vertical-align:1px}
.flag{color:var(--alert);font-weight:600}
.feed{list-style:none;margin:0;padding:0;max-height:380px;overflow:auto}
.feed li{padding:8px 0;border-bottom:1px solid #f0e9e4;font-size:13px;display:flex;gap:10px}
.feed .t{color:var(--muted);font-size:12px;min-width:74px}
.flow{display:flex;align-items:stretch;gap:0;margin-top:14px;flex-wrap:wrap}
.step{flex:1;min-width:150px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;position:relative;margin-right:22px}
.step:last-child{margin-right:0}
.step:not(:last-child):after{content:"→";position:absolute;right:-18px;top:50%;transform:translateY(-50%);color:var(--muted)}
.step b{display:block;margin-bottom:3px}
.step small{color:var(--muted)}
.muted{color:var(--muted)}
.ag-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.legend{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}
.cal{display:grid;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.cal .dh{padding:9px 6px;text-align:center;border-bottom:1px solid var(--line);border-left:1px solid var(--line);font-size:12.5px;background:#fbf7f4}
.cal .dh.today{color:var(--rose);font-weight:600}
.cal .dh .staffs{display:flex;justify-content:space-around;color:var(--muted);font-size:11px;margin-top:3px}
.cal .dh .staffs span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.times{position:relative}
.times div{height:28px;font-size:11px;color:var(--muted);text-align:right;padding-right:6px;transform:translateY(-7px)}
.daycol{position:relative;border-left:1px solid var(--line);display:flex;min-width:0}
.daycol.closed{background:repeating-linear-gradient(45deg,#efe8e3 0 5px,#f8f4f1 5px 10px)}
.subcol{position:relative;flex:1;min-width:0}
.subcol+.subcol{border-left:1px dashed #eadfd8}
.subcol .ev{left:2px;right:2px}
.off{position:absolute;left:0;right:0;background:repeating-linear-gradient(45deg,#efe8e3 0 5px,#f8f4f1 5px 10px);pointer-events:none;display:flex;align-items:center;justify-content:center}
.off span{font-size:11px;color:var(--muted);writing-mode:vertical-rl}
.slot{height:28px;border-bottom:1px dashed #f0e8e3}
.slot.hour{border-bottom:1px solid #ece3dd}
.slot.past{background:#f6f1ed;cursor:default}
.slot:not(.past):hover{background:#fbf3f6;cursor:copy}
.ev{position:absolute;border-radius:7px;padding:3px 6px;font-size:11.5px;overflow:hidden;cursor:pointer;border-left:3px solid;line-height:1.25}
.ev b{font-weight:600}
.ev.st-nuovo{border-color:#a8949f}.ev.st-in_attesa{border-color:var(--wait)}.ev.st-confermato{border-color:var(--ok)}
.ev.st-spostato{border-color:var(--move)}.ev.st-disdetto{border-color:#aaa;text-decoration:line-through;opacity:.7}.ev.st-nessuna_risposta{border-color:var(--alert)}
.rule-h{font-family:var(--head);font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--rose);margin-bottom:4px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);border-radius:20px;padding:4px 10px;font-size:12.5px;display:inline-flex;gap:6px;align-items:center;cursor:pointer;background:#fff}
.chip input{margin:0;accent-color:var(--rose)}
.team{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.tm h3{font-family:var(--head);font-size:17px;margin:0}
.tm .days{display:flex;gap:4px;margin:10px 0}
.tm .days span{width:30px;text-align:center;font-size:11.5px;border-radius:6px;padding:3px 0;background:#f1ebf0;color:#b3a6ae}
.tm .days span.on{background:var(--ok-soft);color:#1f6b4d;font-weight:600}
.av{width:36px;height:36px;border-radius:50%;background:#e9d9e1;color:#7d2f4b;display:flex;align-items:center;justify-content:center;font-weight:600;flex-shrink:0}
.empty{display:flex;align-items:center;justify-content:center;min-height:240px;color:var(--muted);text-align:center;padding:30px}
label.f{display:block;font-size:12.5px;color:var(--muted);margin-bottom:12px}
label.f input,label.f select,label.f textarea{display:block;width:100%;margin-top:4px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff}
label.f textarea{min-height:74px;resize:vertical}
label.f input:disabled,label.f select:disabled,label.f textarea:disabled{background:#f6f1ed}
.tog{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #f0e9e4}
.tog:last-child{border-bottom:none}
.tog .tx{flex:1}
.tog .tx small{display:block;color:var(--muted)}
.sw{position:relative;width:40px;height:22px;flex-shrink:0}
.sw input{opacity:0;width:0;height:0}
.sw span{position:absolute;inset:0;background:#d8ccd3;border-radius:20px;transition:.15s}
.sw span:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s}
.sw input:checked+span{background:var(--ok)}
.sw input:checked+span:before{transform:translateX(18px)}
.sw input:disabled+span{opacity:.5}
.vars{font-size:12px;color:var(--muted);margin-bottom:12px}
.vars code{background:#f1e8ed;border-radius:4px;padding:1px 5px;color:#7d2f4b}
.ov{position:fixed;inset:0;background:rgba(28,19,32,.45);display:flex;align-items:center;justify-content:center;z-index:20}
.modal{background:var(--card);border-radius:16px;padding:22px;width:460px;max-width:94vw;max-height:90vh;overflow:auto}
.modal .acts{display:flex;gap:8px;justify-content:flex-end;margin-top:8px;flex-wrap:wrap}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.err{color:var(--alert);font-size:12.5px;margin:-4px 0 10px}
.err:empty{display:none}
.check{display:flex;gap:8px;align-items:flex-start;font-size:13px;margin-bottom:12px}
.check input{margin-top:3px;accent-color:var(--rose)}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;font-size:13px;z-index:30;box-shadow:0 6px 20px rgba(0,0,0,.2);max-width:90vw}
.toast.bad{background:var(--alert)}
.search{border:1px solid var(--line);border-radius:9px;padding:8px 12px;background:#fff;width:260px}
.loading{display:flex;align-items:center;justify-content:center;height:60vh;color:var(--muted)}
.soon{display:inline-block;font-size:11px;font-weight:600;border-radius:6px;padding:1px 7px;background:#f1ebf0;color:#6b5a66;margin-left:6px;vertical-align:2px}
@media (max-width:1360px){.topnav a{padding:8px 9px}.topnav .ic{display:none}}
@media (max-width:1180px){.top-status .who{display:none}.topnav a{padding:8px 7px;font-size:13px}}
@media (max-width:1000px){body:not(.side-mode) .topnav{display:none}}
@media (max-width:900px){
  .topnav,.top-status .who{display:none}body.side-mode .app{grid-template-columns:1fr}body.side-mode .side{position:fixed;top:62px;left:0;bottom:0;width:240px;z-index:10}.kpis{grid-template-columns:repeat(2,1fr)}.grid2,.grid2.even{grid-template-columns:1fr}
  .page{padding:20px 14px 40px}.cal{overflow-x:auto}
}
