
:root{--navy:#07182a;--navy2:#0b3554;--blue:#177db8;--gold:#c9a227;--text:#143047;--muted:#6e8292;--line:#dce6ed;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}.access-error{min-height:100dvh;display:grid;place-content:center;padding:24px;text-align:center;background:#eef4f8;color:#143047}.access-error h1{margin:0 0 8px}.access-error p{margin:0;color:#60798a}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#dceaf1;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent;cursor:pointer}.hidden{display:none!important}.app-shell{position:relative;width:100%;height:100dvh;min-height:100svh;overflow:hidden;background:#dceaf1}.map-region{position:absolute;inset:0;z-index:1;background:#dceaf1}.campus-map{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.leaflet-container{background:#dceaf1;will-change:transform}.leaflet-map-pane,.leaflet-tile-pane{will-change:transform}.leaflet-tile{image-rendering:auto}.leaflet-container img.leaflet-tile{mix-blend-mode:normal!important}.leaflet-control-zoom{display:none}.leaflet-control-scale{margin-left:10px!important;margin-bottom:calc(74px + var(--safe-bottom))!important}.leaflet-control-attribution{max-width:54%;opacity:.7;white-space:nowrap;overflow:hidden}
.app-header{position:absolute;z-index:1000;top:0;left:0;right:0;height:calc(56px + var(--safe-top));padding:var(--safe-top) 10px 0 12px;display:flex;align-items:center;justify-content:space-between;background:#071d31;border-bottom:1px solid rgba(255,255,255,.08);box-shadow:0 4px 14px rgba(3,22,38,.14)}.brand{display:flex;align-items:center;gap:8px;color:#fff;text-decoration:none}.brand img{width:37px;height:31px;object-fit:contain}.brand-divider{width:1px;height:19px;background:rgba(255,255,255,.28)}.brand strong{font-size:19px;letter-spacing:-.75px}.brand strong span{font-weight:500}.brand strong i{display:inline-block;width:6px;height:6px;margin-left:4px;border-radius:50%;background:#2fc9ec;vertical-align:middle}.header-actions{display:flex;gap:6px}.icon-button{width:38px;height:38px;border:1px solid rgba(255,255,255,.15);background:#10324e;color:#fff;border-radius:12px;font-size:20px;line-height:1}
.top-tools{position:absolute;z-index:900;top:calc(64px + var(--safe-top));left:10px;right:10px;pointer-events:none}.search-box{height:50px;padding:0 13px;display:flex;align-items:center;gap:9px;background:#fff;border:1px solid #e2e9ee;border-radius:16px;box-shadow:0 5px 16px rgba(9,42,65,.16);pointer-events:auto}.search-box>span{font-size:21px;color:#7f94a4}.search-box input{width:100%;height:100%;border:0;outline:0;background:transparent;color:#102a40;font-size:16px;font-weight:650}.search-box input::placeholder{color:#7b8f9f}.clear-search{width:28px;height:28px;border:0;border-radius:50%;background:#eaf1f5;color:#456176;font-size:20px;line-height:1}.category-strip{display:flex;gap:7px;margin-top:7px;padding:0 1px 2px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;pointer-events:auto}.category-strip::-webkit-scrollbar{display:none}.category{flex:0 0 auto;min-height:36px;padding:7px 10px;border:1px solid rgba(220,230,237,.95);border-radius:12px;background:#fff;color:#526b7d;font-size:11px;font-weight:800;box-shadow:0 3px 10px rgba(10,45,69,.12)}.category.active{border-color:#0a3556;background:#0b3656;color:#fff}
.map-loader{position:absolute;z-index:850;left:50%;top:50%;transform:translate(-50%,-50%);padding:12px 16px;border-radius:14px;background:#fff;box-shadow:0 8px 24px rgba(7,37,59,.16);font-size:13px}.map-badge{display:none}.map-actions{position:absolute;z-index:880;top:calc(164px + var(--safe-top));right:10px;display:flex;flex-direction:column;gap:8px}.map-actions button{width:44px;height:44px;border:1px solid #e0e8ee;background:#fff;border-radius:14px;color:#12324c;font-size:20px;box-shadow:0 5px 16px rgba(8,37,59,.16)}.map-actions button:active{transform:scale(.95);background:#f0f6f9}.manual-banner{position:absolute;z-index:920;top:calc(165px + var(--safe-top));left:10px;right:64px;padding:10px 12px;border-radius:13px;background:#08243c;color:#fff;font-size:12px;box-shadow:0 6px 18px rgba(4,27,47,.22)}
.explore-panel{position:absolute;z-index:950;left:8px;right:8px;bottom:calc(8px + var(--safe-bottom));height:58px;overflow:hidden;background:#fff;border:1px solid #e1e9ee;border-radius:22px;box-shadow:0 10px 30px rgba(5,28,47,.2);transition:height .22s ease}.explore-panel.open{height:min(56dvh,520px)}.mobile-panel-handle{width:100%;height:57px;padding:0 14px;border:0;background:#fff;display:grid;grid-template-columns:42px 1fr 30px;align-items:center;color:#4e6679}.mobile-panel-handle .grabber{width:34px;height:4px;border-radius:99px;background:#c8d3db}.mobile-panel-handle strong{justify-self:start;font-size:12px;font-weight:850}.mobile-panel-handle b{justify-self:end;color:#177db8;font-size:17px}.list-heading{display:none;margin:0 13px;padding:9px 2px 7px;border-top:1px solid #e8eef2;align-items:center;justify-content:space-between}.open .list-heading{display:flex}.list-heading h2{margin:0;font-size:13px}.list-heading span{padding:4px 8px;border-radius:99px;background:#eaf4fa;color:#1779b2;font-size:10px;font-weight:850}.place-list{display:none;height:calc(100% - 142px);padding:0 6px 8px;overflow-y:auto;-webkit-overflow-scrolling:touch}.open .place-list{display:block}.place-row{width:100%;min-height:66px;margin:2px 0;padding:9px 10px;display:grid;grid-template-columns:42px 1fr 18px;gap:10px;align-items:center;border:0;border-radius:15px;background:#fff;text-align:left;color:inherit}.place-row:active{background:#eef6fa}.place-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:#eef4f7;font-size:18px}.place-copy strong{display:block;font-size:13px;line-height:1.25}.place-copy small{display:block;margin-top:3px;color:#738797;font-size:10.5px}.place-arrow{color:#98a9b6}.empty-state{padding:18px;text-align:center;color:#74899a;font-size:12px}.origin-card{display:none;margin:4px 10px 8px;padding:9px 10px;align-items:center;gap:8px;border-radius:14px;background:#f0f6f9}.open .origin-card{display:flex}.origin-card>span{font-size:18px}.origin-card div{min-width:0;flex:1}.origin-card strong,.origin-card small{display:block}.origin-card small{margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#738697;font-size:10px}.origin-card button{border:0;border-radius:10px;background:#0d4166;color:#fff;padding:8px 10px;font-size:10.5px;font-weight:850}
.sheet{position:absolute;z-index:1100;left:8px;right:8px;bottom:calc(8px + var(--safe-bottom));max-height:72dvh;overflow:auto;-webkit-overflow-scrolling:touch;padding:20px 16px 16px;border:1px solid #e0e7ec;border-radius:24px;background:#fff;box-shadow:0 16px 46px rgba(4,27,47,.28)}.sheet-handle{width:40px;height:4px;margin:-9px auto 11px;border-radius:99px;background:#c7d2da}.sheet-close{position:absolute;top:12px;right:12px;width:34px;height:34px;border:0;border-radius:50%;background:#edf3f6;color:#29445a;font-size:23px}.detail-icon{width:50px;height:50px;display:grid;place-items:center;border-radius:15px;background:#eef5f8;font-size:23px}.detail-kicker{margin:11px 0 4px;color:#197eb8;font-size:10.5px;font-weight:850;text-transform:uppercase;letter-spacing:.55px}.sheet h2{margin:0 38px 6px 0;font-size:22px;line-height:1.08;letter-spacing:-.4px}.detail-meta,.muted{margin:0 0 11px;color:#718697;font-size:12px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:9px 0}.detail-grid div{padding:9px 10px;border-radius:12px;background:#f2f7fa}.detail-grid small{display:block;color:#7f93a2;font-size:9.5px}.detail-grid strong{display:block;margin-top:3px;font-size:11.5px}.detail-note{padding:10px 11px;border-radius:12px;background:#f7fafb;font-size:11.5px;line-height:1.45}.origin-options{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:9px 0}.origin-options button,.secondary-button,.editor-actions button,.import-label{min-height:42px;border:1px solid #dce6ed;border-radius:12px;background:#f1f6f9;color:#173249;font-weight:750}.primary-button{width:100%;min-height:49px;border:0;border-radius:14px;background:#0b3656;color:#fff;font-weight:850;box-shadow:0 6px 18px rgba(5,37,60,.18)}.external-link{display:block;margin:11px 0;color:#177db8;text-align:center;text-decoration:none;font-weight:800;font-size:12.5px}.secondary-button{width:100%}.route-summary{margin-top:9px;padding:10px 11px;border-radius:12px;background:#eaf6fb;color:#155b82;font-size:11.5px;font-weight:750}.info-sheet a{display:block;margin:9px 0;color:#177db8;text-decoration:none}.editor-sheet label{display:block;color:#5e7384;font-size:10.5px;font-weight:750}.editor-sheet select,.editor-sheet input,.editor-sheet textarea{width:100%;margin-top:4px;padding:9px 10px;border:1px solid #dce6ed;border-radius:11px;background:#f8fbfc;color:#173249}.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:11px 0}.editor-grid .wide{grid-column:1/-1}.editor-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin-top:9px}.editor-actions .danger{color:#a52b2b;background:#fff2f2;border-color:#f1cccc}.import-label{display:grid!important;place-items:center;text-align:center;padding:0 7px;cursor:pointer}.import-label input{display:none}.editor-status{min-height:18px;color:#1879b3;font-size:11.5px}.toast{position:absolute;z-index:1200;left:50%;bottom:calc(78px + var(--safe-bottom));transform:translateX(-50%);max-width:calc(100% - 28px);padding:10px 13px;border-radius:12px;background:#08243c;color:#fff;font-size:11.5px;box-shadow:0 7px 20px rgba(4,27,47,.22)}
.alfa-div-icon{border:0!important;background:transparent!important;overflow:visible!important}
.map-poi{position:relative;width:38px;height:38px;display:grid;place-items:center;border:2.5px solid #fff;border-radius:15px 15px 15px 5px;background:var(--poi);background:linear-gradient(145deg,color-mix(in srgb,var(--poi) 78%,#fff),var(--poi));box-shadow:0 6px 16px rgba(6,31,50,.28),inset 0 1px 0 rgba(255,255,255,.28);transform:rotate(-45deg);transition:transform .16s ease,filter .16s ease;isolation:isolate}
.map-poi::before{content:"";position:absolute;inset:3px;border-radius:10px;background:linear-gradient(145deg,rgba(255,255,255,.16),transparent 58%);z-index:-1}
.poi-symbol{display:grid;place-items:center;width:100%;height:100%;transform:rotate(45deg);font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;font-size:17px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2))}
.poi-count{position:absolute;top:-7px;right:-7px;min-width:19px;height:19px;padding:0 4px;display:grid;place-items:center;border:2px solid #fff;border-radius:10px;background:#07182a;color:#fff;font-size:9px;line-height:1;transform:rotate(45deg);box-shadow:0 3px 8px rgba(6,28,45,.25)}
.map-poi.selected{width:46px;height:46px;border-width:3px;border-color:#5ee3ff;box-shadow:0 0 0 5px rgba(47,201,236,.2),0 9px 24px rgba(4,28,47,.34);animation:poi-pop .24s ease-out}.map-poi.selected .poi-symbol{font-size:21px}
.leaflet-marker-icon:hover .map-poi{filter:brightness(1.06);transform:rotate(-45deg) translate(2px,-2px)}
@keyframes poi-pop{from{transform:rotate(-45deg) scale(.72)}to{transform:rotate(-45deg) scale(1)}}
.user-pin{width:18px;height:18px;border:4px solid #fff;border-radius:50%;background:#2a9fd6;box-shadow:0 0 0 2px #2a9fd6,0 3px 10px rgba(7,32,50,.2)}
.bus-sheet{padding-top:18px}.bus-sheet-icon{width:52px;height:52px;display:grid;place-items:center;border-radius:17px;background:#e5f5fb;font-size:25px}.bus-sheet-copy{margin:0 0 15px;color:#60798a;font-size:12px;line-height:1.45}.bus-direction-picker,.home-actions{display:grid;gap:9px}.direction-card,.home-actions button{width:100%;min-height:76px;display:grid;grid-template-columns:38px 1fr 22px;gap:10px;align-items:center;padding:11px;border:1px solid #c7e4f0;border-radius:16px;background:#f5fcff;color:#143047;text-align:left}.direction-card:active,.home-actions button:active{transform:scale(.985);background:#eaf8fd}.direction-card .direction-icon{width:37px;height:37px;display:grid;place-items:center;border-radius:12px;background:#0e668f;color:#fff;font-size:22px;font-weight:900}.direction-card strong,.direction-card small{display:block}.direction-card strong{font-size:14px}.direction-card small{margin-top:3px;color:#617b8b;font-size:10.5px;line-height:1.3}.direction-card>b{justify-self:end;color:#177db8;font-size:23px}.bus-sheet-note{margin:12px 0 0;padding:9px 10px;border-radius:12px;background:#f2f7fa;color:#60798a;font-size:10.5px;line-height:1.42}.home-actions button{display:block;min-height:48px;text-align:center;font-weight:850}.home-actions .danger{border-color:#f2cbd2;background:#fff6f7;color:#9a2544}.poi-logo{width:31px;height:31px;object-fit:contain;border-radius:9px;background:#fff}.map-poi.association{width:46px;height:46px;border-radius:15px;border-color:#fff;box-shadow:0 6px 17px rgba(0,61,112,.34)}

/* V3: filtri leggibili, marker casa e logo ALFA diritto/centrato. */
.filter-toggle{width:100%;height:42px;margin-top:7px;padding:0 12px;display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:7px;border:1px solid #dce7ed;border-radius:14px;background:#fff;color:#18364e;box-shadow:0 4px 12px rgba(10,45,69,.12);pointer-events:auto;text-align:left}.filter-toggle>span{width:26px;height:26px;display:grid;place-items:center;border-radius:9px;background:#e6f4fa;color:#0e6c9b;font-size:17px}.filter-toggle b{font-size:12px}.filter-toggle small{padding:5px 8px;border-radius:99px;background:#edf5f8;color:#587083;font-size:10px;font-weight:800}.filter-sheet{max-height:min(72dvh,570px)}.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding-bottom:2px}.filter-option{min-height:61px;display:grid;grid-template-columns:34px 1fr;gap:8px;align-items:center;padding:8px;border:1px solid #dce7ed;border-radius:15px;background:#f8fbfc;color:#214057;text-align:left}.filter-option-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#e9f3f7;font-size:18px}.filter-option strong{font-size:11.5px;line-height:1.15}.filter-option.active{border-color:#0c5680;background:#e9f7fc;box-shadow:inset 0 0 0 1px #0c5680}.filter-option.active .filter-option-icon{background:#0b587f}.home-map-action{padding:7px!important}.home-map-action img,.home-detail-icon img{width:100%;height:100%;object-fit:contain}.home-div-icon{border:0!important;background:transparent!important}.home-map-marker{width:42px;height:42px;padding:5px;border:3px solid #fff;border-radius:50% 50% 50% 12px;background:#eaf7fd;box-shadow:0 6px 16px rgba(6,31,50,.3);transform:rotate(-45deg);overflow:hidden}.home-map-marker img{width:100%;height:100%;display:block;transform:rotate(45deg)}.map-poi.association{display:grid!important;place-items:center!important;overflow:hidden!important;transform:none!important;border-radius:15px!important;background:#fff!important}.map-poi.association::before{display:none}.map-poi.association .poi-logo{width:58px!important;height:58px!important;max-width:none!important;max-height:none!important;object-fit:cover!important;object-position:center!important;border-radius:0!important;background:transparent!important;transform:none!important}.map-poi.association.selected{animation:none!important}.leaflet-marker-icon:hover .map-poi.association{transform:scale(1.04)!important}.home-detail-icon{padding:8px}

.guide-list{display:grid;gap:8px;margin:12px 0}.guide-card{display:grid;grid-template-columns:30px 1fr;gap:9px;align-items:start;padding:10px;border:1px solid #dce7ed;border-radius:14px;background:#f8fbfc}.guide-card>b{width:28px;height:28px;display:grid;place-items:center;border-radius:10px;background:#0b587f;color:#fff;font-size:12px}.guide-card strong,.guide-card small{display:block}.guide-card strong{font-size:12px}.guide-card small{margin-top:3px;color:#617889;font-size:10.5px;line-height:1.35}
.bus-timetable{margin:11px 0;padding:12px;border:1px solid #b9dceb;border-radius:16px;background:#f5fcff}.bus-timetable h3{margin:0;color:#073f61;font-size:14px;letter-spacing:-.15px}.bus-timetable>p{margin:4px 0 9px;color:#5e7888;font-size:10.5px}.next-buses{margin:10px 0 12px;padding:9px;border:1px solid #c9e7f2;border-radius:14px;background:#e5f7fd}.next-buses h4,.all-services-title{margin:0 0 6px;color:#105b7e;font-size:11px}.departure-card{display:grid;grid-template-columns:48px 1fr auto;gap:8px;align-items:center;min-height:55px;padding:7px 0;border-top:1px solid rgba(41,120,155,.18)}.departure-card time{color:#063f61;font-size:16px;font-weight:900;letter-spacing:-.45px}.departure-copy{min-width:0}.departure-copy strong,.departure-copy small{display:block}.departure-copy strong{font-size:11px}.departure-copy small{overflow:hidden;margin-top:2px;white-space:nowrap;text-overflow:ellipsis;color:#557183;font-size:9.5px}.departure-status{align-self:center;padding:4px 5px;border-radius:7px;background:#fff;color:#12749d;font-size:8px;white-space:nowrap}.all-services-title{margin-top:13px}.bus-disclosure{font-weight:650}.service-card{margin:5px 0;border:1px solid #d5e8f0;border-radius:12px;background:#fff;overflow:hidden}.service-card summary{display:grid;grid-template-columns:1fr 18px;gap:8px;align-items:center;list-style:none;cursor:pointer;padding:10px}.service-card summary::-webkit-details-marker{display:none}.service-title strong,.service-title small{display:block}.service-title strong{font-size:11.5px}.service-title small{margin-top:2px;color:#577284;font-size:9.5px;line-height:1.25}.service-chevron{color:#14688f;font-size:16px;transition:transform .16s ease}.service-card[open] .service-chevron{transform:rotate(180deg)}.bus-no-times{display:block;padding:0 10px 10px;color:#5e7888;font-size:10px}.service-times,.bus-times{display:flex;flex-wrap:wrap;gap:5px;padding:0 10px 10px}.service-times span,.bus-times span{padding:4px 6px;border-radius:7px;background:#eaf6fb;color:#105e85;font-size:10px;font-weight:850}.bus-line{padding:8px 0;border-top:1px solid #d5e8f0}.bus-line strong,.bus-line small{display:block}.bus-line strong{font-size:11px}.bus-line small{margin-top:2px;color:#577284;font-size:9.5px}.bus-timetable a{display:block;margin-top:9px;color:#0b6f9f;font-size:11px;font-weight:800;text-decoration:none}.gps-stop-select{display:block;width:100%;margin:10px 0 12px;padding:11px 12px;border:1px solid #c9d7e4;border-radius:12px;background:#fff;color:#112442;font:700 14px/1.25 Inter,system-ui,sans-serif}.transit-row .place-icon{background:#e4f5fc;color:#0d658c}.transit-count{display:inline-grid;min-width:18px;height:18px;padding:0 4px;place-items:center;border:2px solid #fff;border-radius:10px;background:#07182a;color:#fff;font-size:9px;font-weight:900}
@media (max-width:700px){.map-actions{top:calc(164px + var(--safe-top))}.manual-banner{top:calc(165px + var(--safe-top))}}
@media (max-width:370px){.top-tools{left:7px;right:7px}.category{padding:7px 8px}.map-actions{right:7px}.app-header{padding-left:9px}.brand strong{font-size:18px}.map-poi{width:34px;height:34px;border-radius:13px 13px 13px 4px}.poi-symbol{font-size:15px}.poi-count{top:-6px;right:-6px}}
@media (min-width:430px) and (max-width:700px){.top-tools{left:14px;right:14px}.search-box{height:54px}.category{min-height:39px;padding:8px 12px}.map-poi{width:40px;height:40px}.poi-symbol{font-size:18px}.explore-panel{left:12px;right:12px}}
@media (max-height:560px) and (orientation:landscape){.app-header{height:48px}.brand img{width:32px;height:27px}.icon-button{width:34px;height:34px}.top-tools{top:55px;right:62px}.search-box{height:42px}.category-strip{margin-top:5px}.map-actions{top:55px}.explore-panel{left:auto;width:min(310px,46vw)}.explore-panel.open{height:calc(100dvh - 58px)}.sheet{left:auto;width:min(390px,48vw);max-height:calc(100dvh - 16px)}}
@media (min-width:701px){.app-header{position:relative;height:68px;padding:0 22px}.map-region{left:360px}.top-tools{position:absolute;top:18px;left:18px;right:18px}.search-box{width:min(520px,60%)}.category-strip{width:min(760px,78%)}.explore-panel{top:84px;left:18px;right:auto;bottom:18px;width:324px;height:auto;border-radius:22px}.explore-panel.open{height:auto}.mobile-panel-handle{display:none}.list-heading{display:flex}.place-list{display:block;height:calc(100% - 88px)}.origin-card{display:flex}.map-actions{top:18px}.map-badge{display:block;top:18px}.leaflet-control-scale{margin-bottom:10px!important}.sheet{left:auto;right:18px;width:390px;bottom:18px}.toast{bottom:25px}}
