*{box-sizing:border-box;margin:0;padding:0}
body,#app{font-family:Arial,sans-serif;background:#f0f0ed;color:#1a1a1a;min-height:100vh}
.screen{display:none!important}.screen.active{display:block!important}
#login-screen.active{display:flex!important;align-items:stretch;justify-content:center;min-height:100vh;background:#f0f0ed}
.login-left{flex:1;max-width:380px;background:linear-gradient(155deg,#1a1a2e 0%,#2d1b4e 40%,#8b2252 75%,#c0394a 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2.5rem 2rem;gap:16px;position:relative;overflow:hidden}
.login-left::before{content:'';position:absolute;top:-60px;right:-60px;width:200px;height:200px;border-radius:50%;background:rgba(255,255,255,0.04)}
.login-left::after{content:'';position:absolute;bottom:-80px;left:-40px;width:240px;height:240px;border-radius:50%;background:rgba(255,255,255,0.03)}
.logo-wrap{display:flex;flex-direction:column;align-items:center;gap:14px;z-index:1}
.ausl-box{width:90px;height:90px;border-radius:14px;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 24px rgba(0,0,0,0.25)}
.login-divider{width:40px;height:1px;background:rgba(255,255,255,0.2)}
.logo-name{font-size:22px;font-weight:700;color:#fff;letter-spacing:0.04em}
.logo-sub{font-size:11px;color:rgba(255,255,255,0.5);letter-spacing:0.1em;text-transform:uppercase}
.login-desc{font-size:12px;color:rgba(255,255,255,0.4);text-align:center;line-height:1.6;z-index:1;max-width:240px}
.ausl-label{font-size:10px;color:rgba(255,255,255,0.35);letter-spacing:0.06em;text-transform:uppercase;text-align:center}
.login-right{flex:1;max-width:340px;background:#fff;display:flex;flex-direction:column;justify-content:center;padding:2.5rem 2rem;border-left:none;border:1px solid #e0e0e0}
.login-right h2{font-size:17px;font-weight:600;color:#1a1a1a;margin-bottom:6px}
.login-right p{font-size:12px;color:#888;margin-bottom:24px;line-height:1.5}
.field-wrap{display:flex;flex-direction:column;gap:5px;margin-bottom:16px}
.field-wrap label{font-size:11px;font-weight:500;color:#555;text-transform:uppercase;letter-spacing:.05em}
.field-wrap input{padding:10px 12px;border:1px solid #ddd;border-radius:8px;font-size:13px;background:#fafafa;color:#1a1a1a;outline:none;transition:border-color .15s}
.field-wrap input:focus{border-color:#8b2252;background:#fff}
.btn-login{width:100%;padding:11px;background:linear-gradient(135deg,#2d1b4e,#8b2252,#c0394a);color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:opacity .15s;margin-top:4px}
.btn-login:hover{opacity:0.88}
.err{font-size:11px;color:#c0392b;margin-top:8px;display:none}
.topbar{display:flex;align-items:center;padding:0 14px;height:48px;background:#fff;border-bottom:1px solid #ddd;gap:10px;position:sticky;top:0;z-index:100}
.topbar-logo{display:flex;align-items:center;gap:8px;min-width:120px}
.topbar-logo span{font-size:13px;font-weight:700;color:#1a1a1a;letter-spacing:.03em}
.nav-center{flex:1;display:flex;align-items:center;justify-content:center;gap:4px}
.nav-arr{background:none;border:1px solid #ccc;border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:14px;color:#333;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nav-arr:hover{background:#f0f0ed;border-color:#aaa}
.nav-lbl{font-size:13px;font-weight:500;color:#1a1a1a;min-width:90px;text-align:center}
.nav-yr{font-size:13px;font-weight:500;color:#1a1a1a;min-width:38px;text-align:center}
.nav-sep{width:1px;height:20px;background:#ddd;margin:0 6px}
.topbar-right{display:flex;align-items:center;gap:8px}
.role-badge{font-size:11px;padding:2px 9px;border-radius:10px;background:#e8e8e4;color:#555}
.btn-logout{font-size:12px;color:#666;cursor:pointer;border:1px solid #ddd;border-radius:6px;background:#fff;padding:4px 10px}
.btn-logout:hover{background:#f0f0ed}
.bell-wrap{position:relative}
.bell-btn{background:#fff;border:1px solid #ddd;border-radius:6px;cursor:pointer;padding:4px 9px;font-size:13px;display:flex;align-items:center;gap:3px;color:#333}
.bell-btn:hover{background:#f0f0ed}
.bell-badge{position:absolute;top:-4px;right:-4px;background:#c0394a;color:#fff;font-size:9px;font-weight:600;border-radius:50%;width:16px;height:16px;display:flex;align-items:center;justify-content:center}
.notif-panel{position:absolute;top:36px;right:0;background:#fff;border:1px solid #ccc;border-radius:10px;width:280px;z-index:300;box-shadow:0 4px 16px rgba(0,0,0,0.12);display:none}
.notif-panel.show{display:block}
.notif-hdr{padding:8px 12px;font-size:11px;font-weight:500;color:#888;border-bottom:1px solid #eee;text-transform:uppercase;letter-spacing:.04em}
.notif-item{padding:9px 12px;font-size:12px;color:#1a1a1a;cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.notif-item:hover{background:#f5f5f2}
.notif-x{color:#bbb;font-size:14px;padding:0 4px}.notif-x:hover{color:#c0394a}
.notif-empty{padding:12px;font-size:12px;color:#aaa;text-align:center}
.tabs{display:flex;gap:6px;padding:8px 14px;background:#fff;border-bottom:1px solid #ddd;position:sticky;top:48px;z-index:99}
.tab{padding:4px 13px;border:1px solid #ddd;border-radius:7px;font-size:12px;cursor:pointer;background:#fff;color:#555}
.tab.active{background:linear-gradient(135deg,#2d1b4e,#8b2252);color:#fff;border-color:transparent}
.tab:hover:not(.active){background:#f0f0ed}
.section{display:none;padding:0}.section.active{display:block}
#section-admin,#section-agenda{padding:14px}
.table-wrap{overflow:auto;background:#f0f0ed;max-height:calc(100vh - 96px)}
table.t{border-collapse:collapse;font-size:11px;table-layout:fixed}
table.t th{border:1px solid #ccc;padding:4px 5px;text-align:center;background:#f7f7f5;color:#333;font-weight:500;font-size:10px;position:sticky;top:0;z-index:2;white-space:nowrap}
table.t th.hdip{}
table.t th.hday{text-align:left;min-width:80px;position:sticky;left:0;z-index:3;background:#f7f7f5}
table.t th.hrep{white-space:nowrap;background:#e1f5ee}
table.t th.hag{white-space:nowrap;background:#f0f0ee}
table.t td{border:1px solid #ddd;padding:0;height:28px;text-align:center;vertical-align:middle;position:relative}
table.t td.cdip{}
table.t td.cday{text-align:left;min-width:80px;padding:3px 7px;font-size:10px;position:sticky;left:0;z-index:1}
.lav{background:#fff;color:#1a1a1a}.chiu{background:#2a2a28;color:#c8c8c4}.chiu-cell{background:#2a2a28!important}
.ci{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;width:100%;padding:1px 3px;font-size:10px;color:#1a1a1a;position:relative}
.ci .or{font-size:10px;line-height:1.3;color:#1a1a1a}.ci .cd{font-size:9px;font-weight:600;line-height:1.2;margin-top:1px}.ci .rf{font-size:8px;font-weight:500;line-height:1.1;margin-top:1px}
td.ed{cursor:pointer}td.ed:hover{outline:2px solid #8b2252}
.ci input.or-inp{border:none;outline:none;background:transparent;text-align:center;font-size:10px;width:100%;color:#1a1a1a;padding:0}
.rep-col{background:#e1f5ee!important;white-space:nowrap}.ag-col{background:#f0f0ee!important;white-space:nowrap}
.th-ri{border-top:5px solid #1d9e75}.th-hd{border-top:5px solid #378add}.th-ti{border-top:5px solid #2568a8}.th-fo{border-top:5px solid #e24b4a}.th-ra{border-top:5px solid #ba7517}
.orario-drop{position:absolute;top:100%;left:0;min-width:130px;background:#fff;border:1px solid #ccc;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,0.13);z-index:500;padding:3px 0;display:none}
.orario-drop.show{display:block}
.od-item{padding:5px 12px;font-size:11px;color:#1a1a1a;cursor:pointer;white-space:nowrap;display:flex;align-items:center;gap:6px}
.od-item:hover{background:#f5f5f2}
.od-item.manual{color:#8b2252;font-weight:500;border-top:1px solid #f0f0f0;margin-top:2px}
.od-item.danger{color:#c0392b;border-top:1px solid #f0f0f0;margin-top:2px}
.od-dot{width:6px;height:6px;border-radius:50%;background:#378add;flex-shrink:0}
.note-marker{position:absolute;top:0;left:0;width:0;height:0;border-style:solid;border-width:10px 10px 0 0;border-color:#378add transparent transparent transparent;cursor:pointer;z-index:5}
.rec-marker{position:absolute;top:0;right:0;width:0;height:0;border-style:solid;border-width:0 10px 10px 0;border-color:transparent #1a1a1a transparent transparent;cursor:pointer;z-index:5}
.rec-tooltip{position:fixed;background:#1a1a1a;color:#fff;font-size:10px;padding:5px 9px;border-radius:6px;z-index:1000;max-width:200px;line-height:1.4;pointer-events:none;display:none;white-space:normal}
.rec-tooltip.show{display:block}
.note-tooltip{position:fixed;background:#1a5276;color:#fff;font-size:10px;padding:5px 9px;border-radius:6px;z-index:1000;max-width:220px;line-height:1.4;pointer-events:none;display:none;white-space:normal}
.note-tooltip.show{display:block}
.ctx{position:fixed;background:#fff;border:1px solid #ccc;border-radius:10px;box-shadow:0 4px 18px rgba(0,0,0,0.13);z-index:999;min-width:215px;padding:4px 0;display:none;max-height:80vh;overflow-y:auto}
.ctx.show{display:block}
.cxi{display:flex;align-items:center;gap:8px;padding:6px 14px;cursor:pointer;font-size:12px;color:#1a1a1a}
.cxi:hover{background:#f5f5f2}.cxi.danger{color:#c0392b}.cxi.danger:hover{background:#fff5f5}
.cxdot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.cxsep{border-top:1px solid #eee;margin:3px 0}
.cxbadge{margin-left:auto;font-size:9px;font-weight:600;padding:1px 5px;border-radius:5px}
.rec-popup{position:fixed;background:#fff;border:1px solid #ccc;border-radius:10px;box-shadow:0 6px 24px rgba(0,0,0,0.15);z-index:1000;width:240px;padding:14px;display:none}
.rec-popup.show{display:block}
.rec-popup h4{font-size:12px;font-weight:600;color:#1a1a1a;margin-bottom:12px}
.rec-section{margin-bottom:10px}
.rec-section label{font-size:10px;color:#888;font-weight:500;text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:6px}
.rec-opts{display:flex;gap:6px}
.rec-opt{flex:1;padding:6px 8px;border:1px solid #ddd;border-radius:7px;font-size:11px;cursor:pointer;background:#fff;color:#555;text-align:center;transition:all .12s}
.rec-opt:hover{border-color:#8b2252;color:#8b2252}
.rec-opt.sel{background:#ede7f6;border-color:#7b1fa2;color:#4a148c;font-weight:500}
.rec-preview{margin:10px 0;padding:7px 10px;background:#ede7f6;border-radius:7px;font-size:11px;color:#4a148c;text-align:center;font-weight:500;min-height:28px}
.rec-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:10px}
.btn-rec{padding:5px 12px;border-radius:6px;font-size:11px;font-weight:500;cursor:pointer;border:1px solid #ddd;background:#fff;color:#333}
.btn-rec:hover{background:#f0f0ed}
.btn-rec-save{background:#4a148c;color:#fff;border-color:#4a148c}
.btn-rec-save:hover{opacity:.88}
.note-popup{position:fixed;background:#fff;border:1px solid #ccc;border-radius:10px;box-shadow:0 6px 24px rgba(0,0,0,0.15);z-index:1000;width:260px;padding:14px;display:none}
.note-popup.show{display:block}
.note-popup h4{font-size:12px;font-weight:600;color:#1a1a1a;margin-bottom:10px}
.note-popup textarea{width:100%;height:70px;border:1px solid #ccc;border-radius:6px;padding:6px 8px;font-size:12px;font-family:Arial,sans-serif;color:#1a1a1a;resize:vertical;outline:none}
.note-popup textarea:focus{border-color:#1a5276}
.note-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:10px}
.btn-note{padding:5px 12px;border-radius:6px;font-size:11px;font-weight:500;cursor:pointer;border:1px solid #ddd;background:#fff;color:#333}
.btn-note:hover{background:#f0f0ed}
.btn-note-save{background:#1a5276;color:#fff;border-color:#1a5276}
.btn-note-save:hover{opacity:.88}
.btn-note-del{color:#c0392b;border-color:#f5c4b3}
.btn-note-del:hover{background:#fcebeb}
.tag-popup{position:fixed;background:#fff;border:1px solid #ccc;border-radius:10px;box-shadow:0 6px 24px rgba(0,0,0,0.15);z-index:1000;width:250px;padding:14px;display:none}
.tag-popup.show{display:block}
.tag-popup h4{font-size:12px;font-weight:600;color:#1a1a1a;margin-bottom:12px}
.tag-field{display:flex;flex-direction:column;gap:3px;margin-bottom:9px}
.tag-field label{font-size:10px;color:#888;font-weight:500;text-transform:uppercase;letter-spacing:.04em}
.tag-field input[type=text]{padding:5px 8px;border:1px solid #ccc;border-radius:6px;font-size:12px;color:#1a1a1a;background:#fff;outline:none;width:100%}
.tag-field input[type=text]:focus{border-color:#8b2252}
.color-row{display:flex;gap:8px}
.color-block{flex:1;display:flex;flex-direction:column;gap:3px}
.color-block label{font-size:10px;color:#888;font-weight:500;text-transform:uppercase;letter-spacing:.04em}
.color-block input[type=color]{width:100%;height:28px;border:1px solid #ccc;border-radius:6px;cursor:pointer;padding:1px 2px;background:#fff}
.tag-preview{margin:10px 0 12px;display:flex;align-items:center;gap:8px}
.tag-preview-lbl{font-size:10px;color:#888}
.tag-preview-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;width:70px;height:28px;border-radius:4px;border:1px solid #ddd}
.tag-preview-or{font-size:9px;color:#555}.tag-preview-cd{font-size:9px;font-weight:600;margin-top:1px}
.tag-actions{display:flex;gap:6px;justify-content:flex-end}
.btn-tag{padding:5px 12px;border-radius:6px;font-size:11px;font-weight:500;cursor:pointer;border:1px solid #ddd;background:#fff;color:#333}
.btn-tag:hover{background:#f0f0ed}
.btn-tag-save{background:linear-gradient(135deg,#2d1b4e,#8b2252);color:#fff;border-color:transparent}
.btn-tag-save:hover{opacity:.88}
.sec-lbl{font-size:10px;font-weight:600;color:#888;letter-spacing:.06em;text-transform:uppercase;margin-bottom:9px}
.dip-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:10px}
.dip-card{background:#fff;border:1px solid #ddd;border-radius:10px;padding:10px 12px;display:flex;align-items:center;gap:10px}
.av{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex-shrink:0}
.av-ri{background:#e1f5ee;color:#0f6e56}.av-hd{background:#e6f1fb;color:#185fa5}.av-ti{background:#dae8f5;color:#0c447c}.av-fo{background:#fcebeb;color:#a32d2d}.av-ra{background:#faeeda;color:#854f0b}.av-su{background:#f0f0f0;color:#666}
.dip-nm{font-size:13px;font-weight:500;color:#1a1a1a}.dip-ct{font-size:11px;color:#666}.dip-tk{font-size:10px;color:#aaa;font-family:monospace;margin-top:2px}
.form-row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:14px}
.form-row label{font-size:12px;color:#555;display:flex;flex-direction:column;gap:4px}
.form-row input,.form-row select{padding:7px 10px;border:1px solid #bbb;border-radius:7px;font-size:13px;background:#fff;color:#1a1a1a}
.btn-add{padding:7px 14px;background:linear-gradient(135deg,#2d1b4e,#8b2252);color:#fff;border:none;border-radius:7px;font-size:12px;font-weight:500;cursor:pointer}
.btn-add:hover{opacity:.88}
.btn-del{padding:3px 8px;font-size:13px;color:#c0392b;border:1px solid #eee;border-radius:6px;background:#fff;cursor:pointer}
.btn-del:hover{background:#fcebeb}
.btn-edit{padding:3px 8px;font-size:13px;color:#555;border:1px solid #eee;border-radius:6px;background:#fff;cursor:pointer;margin-right:4px}
.btn-edit:hover{background:#f0f0ed;color:#8b2252}
.leg-wrap{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;align-items:center}
.leg-item{display:flex;align-items:center;gap:6px;font-size:12px;color:#333;background:#fff;border:1px solid #eee;border-radius:7px;padding:5px 10px;position:relative;user-select:none}
.leg-item.editable-tag{cursor:context-menu}.leg-item.editable-tag:hover{border-color:#ccc;box-shadow:0 1px 4px rgba(0,0,0,0.07)}
.leg-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.leg-code{font-size:10px;font-weight:600;padding:1px 5px;border-radius:4px;margin-left:2px}
.leg-hint{font-size:9px;color:#ccc;margin-left:2px}
.leg-add{display:flex;align-items:center;justify-content:center;width:36px;height:32px;border:1.5px dashed #ccc;border-radius:7px;cursor:pointer;color:#aaa;font-size:18px;font-weight:300;background:#fff}
.leg-add:hover{border-color:#8b2252;color:#8b2252;background:#fdf5f8}
.city-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}
.city-item{display:flex;align-items:center;gap:6px;font-size:12px;color:#333}
.city-line{width:18px;height:4px;border-radius:2px}
.orari-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;margin-bottom:14px}
.orario-tag{display:flex;align-items:center;gap:5px;background:#fff;border:1px solid #ddd;border-radius:7px;padding:4px 10px;font-size:12px;font-family:monospace;color:#1a1a1a}
.orario-tag button{background:none;border:none;color:#bbb;cursor:pointer;font-size:13px;padding:0 2px;line-height:1}
.orario-tag button:hover{color:#c0392b}
.new-orario-row{display:flex;gap:8px;align-items:center}
.new-orario-row input{padding:6px 10px;border:1px solid #bbb;border-radius:7px;font-size:12px;font-family:monospace;background:#fff;color:#1a1a1a;width:140px}
.dip-group-lbl{font-size:11px;font-weight:600;color:#888;letter-spacing:.04em;text-transform:uppercase;margin:14px 0 6px;display:flex;align-items:center;gap:8px}
.dip-group-lbl .grp-line{height:3px;flex:1;border-radius:2px}
table.t th.hdip{cursor:grab;user-select:none}
table.t th.hdip.dragging{opacity:0.4}
table.t th.hdip.drag-over-left{box-shadow:inset 3px 0 0 #8b2252}
table.t th.hdip.drag-over-right{box-shadow:inset -3px 0 0 #8b2252}
